войти с помощью сессии в php - PullRequest
       1

войти с помощью сессии в php

3 голосов
/ 21 сентября 2010
<?php
ob_start();
include("db_connect.php");
$tbl_name='login';
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
 $myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$encrypted_mypassword = crypt($mypassword,'ctk'); 

 $sql="SELECT * FROM $tbl_name WHERE u_name='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
session_register("myusername");
session_register("encrypted_mypassword");
header("location:edit-grid.php");
}
else {header("location:main_login.php?a=Login Failed Try Again!!");
//echo "Wrong Username or Password";
}
ob_end_flush();
?>

У меня есть страница входа, показанная выше, в localhost она работает нормально, но показывает ошибку в firebug: Не удалось загрузить источник для: http://localhost/emp_tracker/main/checklogin.php

На сервере, на котором он размещен, он не перенаправляет сервер на неудачу (сеанс не проходит),

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Обновленный ответ

Этот код должен работать:

session_start();
include("db_connect.php");

$myusername = mysql_real_escape_string($_POST['myusername']);
$mypassword = crypt($_POST['mypassword'], 'ctk'); 
$mypassword = mysql_real_escape_string($mypassword);

$sql = "SELECT * FROM `login` WHERE `u_name` = '$myusername' and `password` = '$encrypted_mypassword'";
$result = mysql_query($sql);

if(mysql_num_rows($result) == 1)
{
    $_SESSION['myusername'] = $myusername;
    $_SESSION['encrypted_mypassword'] = $encrypted_mypassword;
    header("Location: http://servername/folder/edit-grid.php");
}
else
{
    header("Location: http://servername/folder/main_login.php?a=Login Failed Try Again!!");
}

Оригинальный ответ

Строка ниже не имеет смысла. Вы уже начали сеанс в начале вашего сценария. Также session_start не принимает никаких аргументов. Удаление может решить вашу проблему.

session_start('myusername');

Кроме того, вы должны использовать полный URL при перенаправлении:

HTTP / 1.1 требует абсолютного URI как Аргумент к »Расположение: в том числе схема, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI. Вы можете обычно использовать $ _SERVER [ 'HTTP_HOST'], $ _SERVER ['PHP_SELF'] и dirname () для сделать абсолютный URI из родственника один сам.

Источник: http://www.php.net/manual/en/function.header.php

Edit: В вашем сценарии есть еще одна ошибка. Это в этой строке:

$_SESSION['myusername']=$result['myusername'];

Вы используете $result['myusername'];, но вы должны сначала получить результаты. Как это:

$row = mysql_fetch_assoc($result);
$_SESSION['myusername'] = $row['u_name'];
0 голосов
/ 21 сентября 2010

Даже у меня была та же проблема, но я не мог выяснить настоящую причину.Вот некоторые моменты, которые могут помочь: 1) Перед заголовком не должно быть выходных данных.то есть.нет эха или HTML 2) Также проверьте, есть ли правильная точка с запятой в конце каждого оператора php, где это необходимо.3) После поиска в Google проблема может появиться только в более старой версии Firebug.(Не уверен) 4) Попробуйте запускать каждую строку кода за раз.то есть посмотрите, правильно ли размещены имя пользователя и пароль, передав эхо.Также соединение с базой данных является правильным, и результаты запроса соответствуют ожидаемым

Получаете ли вы 500 внутренних ошибок сервера на сервере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...