会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]

Posted

技术标签:

【中文标题】会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]【英文标题】:Session id is not showing with an error message Notice: Undefined index: UserID [duplicate] 【发布时间】:2015-11-01 06:10:12 【问题描述】:

会话 ID 未显示错误消息注意:未定义的索引:用户 ID 如果我重定向未登录的用户,我也不会登录主页。这是我的文件,任何人都可以告诉我我要去哪里错了。

这里是主页:

<?php 
require ("insert.php"); 
session_start();
if (isset($_SESSION["UserID"]))

else 
    echo "session not transferring";

?>



<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>AMSadler</title>
    <meta charset="utf-8">
    <meta name="description" content="description of webpage">
    <meta name="keywords" content="keywords go here">
    <meta name="author" content="Anthony">
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/home.css">
    <link rel="icon" href="img/favicon.png" sizes="16x16" type="image/png">
</head>
<body>

        <div class="header">

            <div id="logo">
                <a href="index.html"><img src="img/logo.png"  title="AMSadler.com"/></a>
            </div>

            <div id="headertop">
                <div id="pagetitle">
                    <a href="home.php">HOME</a>
                </div>

                <div id="pagetitle2">
                    <a href="profile.php">PROFILE</a>
                </div>
                <div id="pagetitle3">
                    <h4>Welcome:<?php echo $_SESSION"UserID";?>to your page</h4>
                </div>
            </div>

        </div>

            <div class="wrapper">

                <div class="leftsidebar">
                    <ul>
                        <li><a href="home.php">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                        <li><a href="#">blah</a></li>
                    </ul>
                </div>

                <div class="main">
                    <div id="maintop">
                        <div id="textboxwrap">
                            <textarea name="text" id="styled"rows="5" cols="80" placeholder="Write something here.">
                            </textarea> 
                        </div>

                        <div id="postbutton">
                            <input type="submit" name="post" value="Post" />
                        </div>
                    </div>

                    <div id="mainbottom1">
                        <div ="mainbottomwrap">
                            Your posts will go here.<br>Your posts will go here.<br>Your posts will go here.<br>Your posts will go here.<br>
                            Your posts will go here.<br>Your posts will go here.<br>Your posts will go here.<br>Your posts will go here.<br>
                            Your posts will go here.<br>Your posts will go here.<br>Your posts will go here.<br>Your posts will go here.<br>
                            Your posts will go here.<br>Your posts will go here.<br>

                        </div>
                    </div>
                </div>

                <div class="rightsidebar">
                    <div id="profilecontainer">
                        <img src="img/profile.png"  title="profile pic" />
                    </div>

                    <div id="box">
                        <a href="#">blah</a><br>
                        <a href="#">blah</a><br>
                        <a href="#">blah</a><br>
                        <a href="#">blah</a><br>
                        <a href="#">blah</a><br>
                        <a href="#">blah</a><br>
                        <a href="#">blah</a><br>
                        <a href="#">blah</a>
                    </div>
                </div>
            </div>

</body>
</html>

================================================ ==================== 这是到达那里的登录页面。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++

<?php require ("insert.php"); ?>
<?php
    if(isset($_POST[ 'Login' ]))
    
    $email= mysqli_real_escape_string($con, $_POST ['email']);
    $pswrd= mysqli_real_escape_string($con, $_POST ['pswrd']);

    $result = $con->query (" select * from users where email='$email' AND pswrd='$pswrd' ");

    $row = $result->fetch_array(MYSQLI_BOTH);

    session_start();

    $_SESSION["User ID"] = $row['UserID'];
    header ('Location: home.php');
    
?>
<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>AMSadler login</title>
    <meta charset="utf-8">
    <meta name="description" content="description of webpage">
    <meta name="keywords" content="keywords go here">
    <meta name="author" content="Anthony">
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/login.css">
    <link rel="index" href="index.php">
    <link rel="icon" href="img/favicon.png" sizes="16x16" type="image/png">
</head>
<body>

        <div class="header">
            <div id="logo">
                <a href="index.html"><img src="img/logo.png"  title="AMSadler.com"/></a>
            </div>

            <div id="signup">
                <button type="button"><a href="signup.php">Sign up</a></button>
            </div>
        </div>

        <div id="login">
            <form action="home.php" method="post">
                <input type="text" name="email" placeholder="Email address">
                <br>
                <input type="password" name="password" placeholder="Password">
                <br>
                <input id="Login" type="submit" name="Login" value="Login">
            </form>
        </div>

        <footer>
            <div id="copyright">
                <p>&copy Copyright 2015</p>
            </div>
        </footer>

</body>
</html>

【问题讨论】:

他们是拼写错误。他们是表单页面中User ID 中的空格,但主页上UserID 中没有空格。 【参考方案1】:

我当然希望您只是发布一个示例,并且您没有存储明文密码值...无论如何...

我没有足够的代表向@Bono 添加评论,但除了他的发现之外,您还在使用以下 POST:

$_POST ['pswrd']

但是在你的表单上,你有:

<input type="password" name="password" placeholder="Password">

需要更改密码的表单名称或您要查找的 POST。

【讨论】:

【参考方案2】:

在您的登录页面中,您将变量分配如下:

$_SESSION["User ID"] = $row['UserID'];

但是在主页上你正在寻找UserID

变化:

$_SESSION["User ID"] = $row['UserID'];

$_SESSION["UserID"] = $row['UserID'];

您得到错误的关键在于您在 HTML 中的使用情况:

<h4>Welcome:<?php echo $_SESSION"UserID";?>to your page</h4>

在第一个实例中,您使用的是isset(),但在这里您突然假设它就在那里并且可以使用了。无论哪种方式,您都应该编辑 User ID 变量,这样就不会引发错误。您可能还想在此处添加 isset() 声明。

附:还要注意 Victor Perez 关于密码的回答。 不要将它们存储为纯文本。您实际上只是将POST 密码检查到数据库中的密码,这不好。此外,我可能会建议您停止使用此类查询并开始使用 prepared statements。

【讨论】:

以上是关于会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]的主要内容,如果未能解决你的问题,请参考以下文章

未定义索引:用户 ID 错误

未定义索引:用户注销时的用户名错误

php会话错误未定义索引

Kohana3 - ErrorException [注意]:未定义索引:id - 调用 Auth::instance() 时出错

错误的未定义索引将图像上传到服务器

数据未保存在会话变量中