Мне нужна помощь с сессиями PHP - PullRequest
1 голос
/ 02 октября 2010

Я хочу создать персональную панель мониторинга для каждого пользователя и создал систему входа в систему.

Я использую этот код для перенаправления разных пользователей на разные страницы, но независимо от того, какое имя пользователя или пароль, этоберет меня в file1.php.

<?php
session_start();

if ($_SESSION['username'] == "google") {
    header("location:file1.php");
}
else if ($_SESSION['username'] == "apple") {
    header("location:page2.php");
}
else {
    header("location:default.php");
}
?>

Здесь Apple и Google - это имена пользователей.

Вот код, который устанавливает данные сеанса.

$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM $tbl_name WHERE username='$username' and password='$password' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==1) {
    session_register("username");
    session_register("passsword");
    header("location:dashboard.php");
} else {
    echo "Username/Password does not match. Try Again.";
}

<?php

$host = "localhost";
$username = "USERNAME OF PHPMYADMIN";
$password = "PASS OF PHPMYADMIN";
$db_name = "membership";
$tbl_name = "users";

$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT  * FROM $tbl_name WHERE username='$username' and password='$password' ";

$result = mysql_query($sql);

$count = mysql_num_rows($result);

if($count==1) {
    session_register("username");
    session_register("passsword");
    header("location:dashboard.php");
}
else
{
    echo "Username/Password does not match. Try Again.";
}


?>

Это другой код, который я использую.

Ответы [ 5 ]

3 голосов
/ 02 октября 2010

Разве вам не нужно session_start(); на странице, где вы запрашиваете имя пользователя?

Предполагается, что этот код находится на отдельной странице.

<?php

session_start();

$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM $tbl_name WHERE username='$username' and password='$password' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==1) {
    session_register("username");
    session_register("passsword");
    header("location:dashboard.php");
} else {
    echo "Username/Password does not match. Try Again.";
}
?>
1 голос
/ 02 октября 2010

убедитесь, что вы используете два знака =. один будет назначать в отличие от eval.

также переключатель будет лучше

switch ($ _SESSION ['username']) {
case 'google':
$ Файла = 'file1.php';
перерыв;
case 'google':
$ Файла = 'file2.php';
перерыв;
по умолчанию:
$ Файла = 'default.php';
перерыв;
}
заголовок ("location: $ file ');

0 голосов
/ 02 октября 2010

Вы должны позвонить session_start() перед вводом имени пользователя и пароля в сеанс, и не следует использовать session_register() (как устаревший), просто используйте глобальный $_SESSION, например,

session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

затем на следующей странице выполните start_session() и var_dump($_SESSION);, и вы увидите, что было установлено в сеансе

0 голосов
/ 02 октября 2010

Прежде всего, вы действительно не должны хранить пароли в базе данных в виде открытого текста.По крайней мере, md5() их или что-то.

Во-вторых, вам следует избегать значений, введенных в SQL-запрос (или, что еще лучше, использовать подготовленные операторы MySQLi , если на вашем сервере включен MySQLi), чтобы избежать инъекций SQL.

В-третьих, отладочные операторы делают чудеса.Вы пытались распечатать значение $_SESSION['username'] непосредственно перед условным условием?Мне трудно поверить, что условная обработка PHP или тесты на равенство испортятся, поэтому значение должно быть «google» по некоторым причинам.Я думаю, вам нужно отследить присвоения $_SESSION['username'] в своем коде, чтобы попытаться выяснить, почему.

0 голосов
/ 02 октября 2010

Попробуйте выполнить print_r для переменной сеанса, могут быть другие проблемы с вашими сеансами.

<?= print_r($_SESSION['username']) ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...