сеанс входа в систему php - PullRequest
1 голос
/ 29 ноября 2011

У меня есть система входа для моей веб-страницы.Вы создаете имя пользователя и пароль, а затем возвращаетесь на домашнюю страницу, чтобы войти с правильными данными для входа.Я ввожу свои данные, он впускает меня и выводит окно с предупреждением «Welcome Back».Когда я нажимаю кнопку ОК, веб-страница кратко отображается, но затем возвращается на страницу входа.Я начал сеанс, потому что страница регистрации работает правильно.Любые идеи о том, почему страница входа в систему делает это?

Код показан ниже:

if( empty( $_POST['client_username'] ) || empty( $_POST['client_password'] ) ) {
    die('You did not fill in a required field');
    }


    $qry = sprintf( "SELECT client_username, client_password FROM client WHERE client_username = '%s' LIMIT 1", mysql_real_escape_string( $_POST['client_username'] ) );
    $result = mysql_query( $qry );

    if( $result ) {
        if( mysql_num_rows( $result ) == 0 ) {
            die('That username does not exist in our database.');
        }
    }



    $info = mysql_fetch_assoc( $result );

    if( md5( $_POST['client_password'] ) != $info['client_password'] ) {
        die('Incorrect password, please try again.');
    }


    $client_id = mysql_query("SELECT* FROM client WHERE client_id = '$client_id'"); 

    $qry = sprintf( "UPDATE client SET client_last_access = NOW() WHERE client_username = '%s'", $info['client_username'] );
    if( !mysql_query( $qry ) ) {
        die('Error: ' . mysql_error() );
    } else {

        $_SESSION['client_username'] = $info['client_username'];
        $_SESSION['client_password'] = $info['client_password'];

        $_SESSION['client_id'] = $client_id;


        echo '<script>alert("Welcome Back");</script>';
        echo '<meta http-equiv="Refresh" content="0;URL=pv.php">';
    }

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Удалить последнюю строку целиком.

0 голосов
/ 29 ноября 2011

Является ли pv.php вашей страницей входа?Если это так, удалите строку ниже:

    echo '<meta http-equiv="Refresh" content="0;URL=pv.php">';

Если нет, убедитесь, что session_start(); находится вверху других страниц, где вы используете сеансы.

РЕДАКТИРОВАТЬ

Читайте ваши комментарии.Как вы проверяете сеансы на следующей странице?

session_start();
if(!isset($_SESSION['client_username']) && !isset($_SESSION['client_password']) && !isset($_SESSION['client_id']))
{
    header("Location: login.php");
    exit;
}
0 голосов
/ 29 ноября 2011

Пожалуйста, следуйте этим образцам кодов. Конечно, это поможет вам.

login.php

<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>

<body>
<?php
if(isset($_POST['login']))
{
    $_SESSION['username'] = 'test';
    echo '<script type="text/javascript">alert("Welcome Back!");</script>';
    echo '<meta http-equiv="Refresh" content="0;URL=suc.php">';
}
?>
<form name="loginform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="submit" name="login" value="Login" />
</form>
</body>
</html>

и suc.php

<?php
session_start();
if($_SESSION['username'] != '')
{
    echo "success";
}
?>

Проверьте это.

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