0

我正在制作这个登录系统,但我的网站不会看到我$_SESSION在另一个页面上输入的值。

在我的标题代码(包含在每一页上)中,我得到了:

<?php
     session_start(); 
?>

和我的登录处理:

<?php

include("header.php");

$myusername= $_POST['naam2']; 
$mypassword= $_POST['wachtwoord']; 

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql = "SELECT * FROM winkel WHERE naam='$myusername' AND BINARY wachtwoord ='$mypassword'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);

if ($count == 1) {
    session_register($myusername);
    $inf = mysql_fetch_array($result);
    $_SESSION['winkelinfo'] = $inf;
    header("Location: mijntreinwinkeltje.php");
}
else {
    header("location:login.php?err=1");
}

?>

然后,当我填写正确的凭据时,它会重定向到mijntreinwinkeltje.php 。然后在mijntreinwinkeltje.php我放:

<?php
    include("header.php");
    $winkelinfo = $_SESSION['winkelinfo'];
    if ($winkelinfo)
        echo("derp".$winkelinfo['naam']);
    $voornaam = $winkelinfo['gebruikervoornaam'];
    $achternaam = $winkelinfo['gebruikerachternaam'];

?>

但它不会打印echo("derp".$winkelinfo['naam']);$voornaam并且$achternaam都是空的。

我究竟做错了什么?

4

1 回答 1

0

嗨,我认为主要问题是必须首先执行页面第一页才能设置会话。否则下一页将没有会话。

例如第一页是

<?php
session_start();
$_SESSION['userName'] = 'Root';

?>

和第二页

<?php
session_start();
if(isset($_SESSION['userName'])) {
  echo "Your session is running " . $_SESSION['userName'];
}
?>

如果您直接加载第二页,它将无法工作,因为尚未设置会话。首先执行第一页,然后执行第二页,不要使用session_register()

在我看来,使用 cookie 是因为它更广泛地用于无状态会话。

于 2013-02-16T13:39:33.320 回答