PHP成员登录系统(再次是)

PHP成员登录系统(再次是),php,Php,嘿,我正在为一个简单的会员制而挣扎。我已经用php(主要是java)编写了一段时间的代码,但不太多,因此如果您能提供帮助或建议,我将不胜感激。我似乎总是检查一些简单的错误,虽然我已经在语法检查器中检查过了,但我确信这是非常次要的 这是 如果用户有用户名和密码,我的login.php文件允许用户登录,如果没有,则发送适当的响应。但是,当我使用现有用户名和密码登录时,它会转到下一页,该页显示您的姓名和链接以转到“成员”部分,但当单击链接时,“成员”部分似乎无法识别我的$\u会话值,因此会要求用户再次

嘿,我正在为一个简单的会员制而挣扎。我已经用php(主要是java)编写了一段时间的代码,但不太多,因此如果您能提供帮助或建议,我将不胜感激。我似乎总是检查一些简单的错误,虽然我已经在语法检查器中检查过了,但我确信这是非常次要的

这是

如果用户有用户名和密码,我的login.php文件允许用户登录,如果没有,则发送适当的响应。但是,当我使用现有用户名和密码登录时,它会转到下一页,该页显示您的姓名和链接以转到“成员”部分,但当单击链接时,“成员”部分似乎无法识别我的$\u会话值,因此会要求用户再次登录

<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['$userid'];
$username = $_SESSION['$username'];
?>
<html>
<head>
<title>Member system - login</title>
</head>
<body>
<?php
    $form = "<form action='./login.php' method='post'>
    <table>
    <tr>
        <td>username :</td>
        <td><input type='text' name='user'/></td>
    </tr>
    <tr>
        <td>password :</td>
        <td><input type='password' name='password'/></td>
    </tr>
    <tr>
        <td></td>
        <td><input type='submit' name='loginbtn' value='Login'/></td>
    </tr>
    </table>
    </form>";

if($_POST['loginbtn']) {
    $user = $_POST['user'];
    $password = $_POST['password'];

    if($user) {
        if($password) {
            require("connect.php");

            $password = md5(md5("12345".$password."54321"));
            //make sure login info correct
            $query = mysql_query("SELECT * FROM user WHERE username='$user'");
            $numrows = mysql_num_rows($query);

            if($numrows == 1) {
                $row = mysql_fetch_assoc($query);
                $dbid = $row['id'];
                $dbuser = $row['username'];
                $dbpass = $row['password'];
                $dbactive = $row['active'];

                if($password == $dbpass) {
                    if($dbactive == 1) {
                        //set seesion info
                        $_SESSION['userid'] = $dbid;
                        $_SESSION['username'] = $dbuser;

                        echo "you have been logged in as <b>$dbuser</b> <a href='./member.php'>click here</a> to go to the member page";
                    }
                    else 
                        echo "You must be an active member. $form";
                }
                else
                    echo "you did not enter the correct password. $form";
            }
            else                    
                echo "The user name you entered was not found. $form";

            mysql_close();
        }
        else
            echo "you must enter your password. $form";
    }
    else
        echo "you must enter a user name. $form";
    }
else
 echo $form;
?>

会员系统-登录

这是我的登录表单,它完成了大部分工作

<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['$userid'];
$username = $_SESSION['$username'];
?>
<html>
<head>
<title> Member system : Members</title>
</head>
<body>
<?php
    if($username && $userid) {
        echo "Welcome <b>$username</b>, <a href='./logout.php'>logout</a>";
    }
    else 
        echo "Please login in to veiw this page <a href='./login.php'>Login in</a>";

?>
</body>
</html>

成员制度:成员
这是我的会员表,它似乎无法识别会话,并要求用户再次登录

我知道这对某人来说是显而易见的尴尬,我为我的无知道歉,但我会从中吸取教训,因此如果有人能帮助我,我将非常感激

问候
迈克首先,有一个小错误。在第一个脚本中使用$_会话['userid'],在第二个脚本中使用$_会话['$userid](键中有一美元)

我不知道这是否能解决您的问题,但请尝试替换:

if($username && $userid) {
为此:

if(isset($_SESSION['userid'],$_SESSION['username'])) {

问候我们

首先,有一个小错误。在第一个脚本中使用$_会话['userid'],在第二个脚本中使用$_会话['$userid](键中有一美元)

我不知道这是否能解决您的问题,但请尝试替换:

if($username && $userid) {
为此:

if(isset($_SESSION['userid'],$_SESSION['username'])) {

问候我们

为什么要使用包含美元符号的会话变量?这很混乱,可能会导致错误<代码>$\u会话['$userid']==坏乔乔。你的密码系统让我很害怕。我想这比明文要好!检查:[为什么像md5()和sha1()这样的常用哈希函数不适合密码?]()这又是一件愚蠢的事情是的,为什么我使用了$_SESSION['$userid'];,谢谢你的快速回复,人们不敢相信事情会这么简单。谢谢你,钱花得真快。谢谢你的提示,mkaatman,我打字的时候正在查看。帮了大忙,我想我会被杀的。@Mike-你应该把公布的答案标记为已接受的答案,因为它解决了你的问题。你为什么要使用包含美元符号的会话变量?这很混乱,可能会导致错误<代码>$\u会话['$userid']==坏乔乔。你的密码系统让我很害怕。我想这比明文要好!检查:[为什么像md5()和sha1()这样的常用哈希函数不适合密码?]()这又是一件愚蠢的事情是的,为什么我使用了$_SESSION['$userid'];,谢谢你的快速回复,人们不敢相信事情会这么简单。谢谢你,钱花得真快。谢谢你的提示,mkaatman,我打字的时候正在查看。非常好的帮助,我想我会被杀的。@Mike-你应该将发布的答案标记为已接受的答案,因为它解决了你的问题。是的,虽然没有if(isset($\u SESSION['userid',$\u SESSION['username'))也能工作,但它们都很好{.再次非常感谢你的爱.是的,它们都很好用,尽管没有if(isset($\u SESSION['userid',$\u SESSION['username')){.再次非常感谢你的爱。