2

可能重复:
_SESSION 变量不起作用

您好,我知道这是一个常见问题,但我认为我的代码没有问题,但我想知道为什么我的$_SESSION['myusername']; 不显示当前登录的用户。

下面是我的main.php:

<?php
session_start();
if(isset($_SESSION['myusername'])){
header("location: index.php");
}
echo "Hello " .$_SESSION['myusername'];
?>

我的 checklogin.php

<?php
session_start();
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="dbscholaris"; // Database name 
$tbl_name="users"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form 
$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);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$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){

// Register $myusername, $mypassword and redirect to file "main.php"
$_SESSION["myusername"] = $myusername;
$_SESSION["mypassword"] = $mypassword; 
header("location:main.php");
}
else {
echo "Wrong Username or Password";
}
?>

请帮我找到我所缺少的。谢谢

4

3 回答 3

0

我会解释它不允许你看到你的页面,因为你正在做 if(isset($_SESSION['myusername'])) 而不是 if(!isset($_SESSION['myusername'])) 这告诉php 如果会话 myusername 不存在转到 index.php 否则忽略

于 2012-12-23T19:12:34.503 回答
0

试试这个第一个代码

    <?php
     session_start();
     if(isset($_POST['myusername'])){
    $_POST['myusername'] = $_SESSION['myusername'];
      header("location: index.php");
       }
      echo "Hello " .$_SESSION['myusername'];
    ?>
于 2012-12-23T18:49:33.760 回答
0

您必须将 $myusername 和 $mypassword 导出到$_SESSION如下:

$_SESSION["myusername"] = stripslashes($myusername);
$_SESSION["mypassword"] = stripslashes($mypassword);

你忘记了任务。此外,您还必须撤消该mysql_real_esacpe_string()变量。(或者更早存储未转义的版本)。

此外,您应该确保会话已启动。这可以通过

session_start();

在任何读取或写入之前$_SESSION或通过设置 php ini 指令

session.auto_start = 1
于 2012-12-23T18:21:55.673 回答