Форум программистов, компьютерный форум, киберфорум
Perl: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
1

Редирект в Dancer2

18.12.2013, 17:16. Показов 1398. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Имеется вот такое автономное приложение на Dancer2:

app.pl

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/env perl
use Dancer2;
 
use Data::Section::Simple qw/get_data_section/;
use DBI;
use utf8;
 
my $index = get_data_section('index.html');
 
# Settings
#---------------------
set appname    => "LovelyIO::And::AJAX::In::Dancer2";
set charset    => "UTF-8";
set serializer => 'JSON';
#---------------------
 
get '/' => sub { 'hello' };
 
any ['get', 'post'] => '/login' => sub {
  if (request->method() eq 'POST') {
    my $username = param 'username';
    my $password = param 'password';
 
    my $dbfile = 'mydb.db';
    my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","") or die $DBI::errstr;
 
    my $statement = qq{SELECT id FROM users WHERE username=? and password=?};
 
    my $sth = $dbh->prepare($statement) or die $dbh->errstr;
    my $rv = $sth->execute($username, $password) or die $sth->errstr;
 
    my ($userID) = $sth->fetchrow_array;
 
    if ($userID) {
      redirect '/';
    } else {
      if (request->is_ajax) {
        response->content_type('application/json');
        return {error => 'username or password is wrong'}; 
      }
    }
  }
 
  return $index;
};
 
 
dance;
 
__DATA__
@@ index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Very simple login using Perl, Lovely.IO, Ajax, JSON and SQLite</title>
    <link rel="stylesheet" type="text/css" media="screen, projection" href="http://www.blueprintcss.org/blueprint/screen.css" />
    <link rel="stylesheet" type="text/css" media="screen, projection" href="http://www.blueprintcss.org/blueprint/plugins/buttons/screen.css" />
    <link rel="stylesheet" type="text/css" media="print" href="http://www.blueprintcss.org/blueprint/print.css" />
 
    <!--[if IE]><link rel="stylesheet" type="text/css" media="screen, projection" href="http://www.blueprintcss.org/blueprint/ie.css"><![endif]-->
      <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>  
 
    <script type="text/javascript"> 
      $(document).ready(function(){
        $("#loginForm").submit(function() { // loginForm отправлена
 
          $.post('/login', { "username": $('#username').val(), "password": $('#password').val() }, function(data, textStatus, jqXHR){
            if (data.error) { // сценарий возвратил ошибку
              $('#loginResult').text("data.error: " + data.error).addClass("error");
            }
          });
 
          $('#loginResult').fadeIn();
          return false;
        });
      }); 
    </script>
 
    <style type="text/css">
      #loginContent { width: 350px; margin: 100px auto; }
      button[type] { margin: 0.5em 0; }
      dd {margin: 0; padding: 0; }
    </style>
  </head>
  <body>
    <div id="loginContent" class="container">
      <div id="loginResult" style="display:none;"></div>
      <form id="loginForm" name="loginForm" method="post" action="/login">
        <fieldset>
          <legend>Enter information</legend>
 
          <dl>
            <dt><label for="username">Username</label></dt>
              <dd><input type="text" id="username" name="username" class="text" size="20" /></dd>
            <dt><label for="password">Password</label></dt>
              <dd><input type="password" id="password" name="password" class="text" size="20" /></dd>
          </dl>
 
          <button type="submit" class="button positive"><img alt="ok" src="http://www.blueprintcss.org/blueprint/plugins/buttons/icons/tick.png" /> Login</button>
        </fieldset>
      </form>
    </div>
  </body>
</html>
Запускаю с помощью
$ plackup app.pl

Подскажите пожайлуста, как сделать редирект на роут '/', чтобы на выходе появилось 'hello':
get '/' => sub { 'hello' };

Сейчас никакого редиректа не происходит, хотя в лог пишется, что он прошел:

127.0.0.1 - - [18/Dec/2013:14:01:41 +0200] "GET /login HTTP/1.1" 200 4694 "-" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16"
127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "POST /login HTTP/1.1" 302 0 "http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16"
127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "GET / HTTP/1.1" 200 5 "http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16"

Подскажите, в чем может быть проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2013, 17:16
Ответы с готовыми решениями:

Нужно создать редирект сайта случайным образом, Случайный редирект на 1 из 3 сайтов
Мне нужно написать код или скрипт чтобы при переходе на сайт сразу происходил редирект на 1 из 3...

Нужно создать редирект сайта случайным образом, Случайный редирект на 1 из 3 сайтов
Мне нужно написать код или скрипт чтобы при переходе на сайт сразу происходил редирект на 1 из 3...

Редирект
Здравствуйте! У меня есть сайт с 6000 посещаемостью в сутки. И есть второй с несколькими...

редирект
Как сделать редирект с сайта на сайт. Не могу понять куда вставлять код. У меня взят шаблон в Word...

3
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
16.05.2014, 13:54 2
воспроизвёл -
и в самом деле не редиректит.

Что-нибудь прояснилось за это время?
0
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
17.05.2014, 12:16  [ТС] 3
Уже решил. Редирект проходит, это видно по строке
127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "GET / HTTP/1.1" 200 5 "http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16"

но т.к. это AJAX запрос, то ничего не видно. Для того, чтобы увидеть, нужно в JavaScript сделать редирект:
Javascript
1
2
3
4
5
$.post('/login', { "username": $('#username').val(), "password": $('#password').val() }, function(data, textStatus, jqXHR){
  data.error 
    ? $('#loginResult').text("data.error: " + data.error).addClass("error") 
     : $(window).attr('location', '/');
});
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
17.05.2014, 16:36 4
о как...

получается тогда, что у нас два контроллера?
не MVC, а MVCC ? )
0
17.05.2014, 16:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2014, 16:36
Помогаю со студенческими работами здесь

редирект
проблема в очистке $_POST - никак не могу розобраться с редиректом. почему постоянно появляеться...

Редирект
Решил отказаься от использования любых JS на странице) А формы сделать только средствами HTML/CSS....

Редирект
привет! подскажите новичку, что конкретно и где прописать).. циска перебрасывает запрос к сайту...

Редирект
Вот сменил движок с joomla на wp. Раньше ссылки выглядели так:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru