【问题标题】:I have this 3 undefined index error我有这 3 个未定义的索引错误
【发布时间】:2013-10-01 18:26:20
【问题描述】:

我有这个错误,我无法解决:

注意:未定义索引:id in C:\xampp\htdocs\store\header.php on 第 10

注意:未定义索引:C:\xampp\htdocs\store\header.php中的用户 第 11

注意:未定义索引:C:\xampp\htdocs\store\header.php 中的密码 上线12


我有一个登录页面,我在其中登录,设置会话的id、用户和密码。当我登录时,一切正常,除了不断显示的错误。

这是header.php

    <?php
    session_start();
            if (isset($_SESSION["user"])) {
            $msg_logout = '<br />
               <div>                                              
                  <a href="logout.php">Log out</a>              
                </div>';        
            }
          // checking if this SESSION is in the DB
            $userID = preg_replace('#[^0-9]#i', '', $_SESSION["id"]); 
            $user = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["user"]);
            $password = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["password"]); 
                        // Connect to the MySQL database  
            include "conx_to_db.php"; 
            $result = mysqli_query($db_1,"SELECT * FROM fans WHERE username='$user' AND password='$password' LIMIT 1"); // query the person
                        // confirm user in DB
            $existCount = mysqli_num_rows($result);
            if ($existCount == 0) { // evaluate the count
            $msg_login = "<div>
                     <a href='login.php' style='text-decoration:none; color: #000;'>Login</a> </div>
                 <div id='bt_registar'>
                     <a href='registo.php' style='text-decoration:none; color: #000;'>Registar</a>
                 </div>";
                 }
     ?>
     <div id="head">
    <div id="logo">
        <a href="index.php"><img src="img/logo34.png" height="80" border="0">
    </div>      
    <div>
    <?php echo $msg_login; $msg_logout; ?>
        <br /><a href="cart.php"><img   src="img/cart.png" height="56" width="56" style="vertical-align:middle;"><strong>Cart</strong></a>

    </div>
</div>

这是index.php

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>Store test</title>

    <link rel="stylesheet" href="estilo/style.css" type="text/css" media="screen" />

    </head>
    <body>

    <?php include_once("header.php");?>

    <div id="main"> 

<hr>

    <table border="0" cellspacing="10" cellpadding="10">
        <tr>
        <td width="35%" valign="top" style="border-right:3px solid green">     <h3>&#8226; Service</h3><br /><br />
        <p>Benvindo .</p>
        <p>gets some god stuff.<br /><br />

        <p>&eacute; A store bla bla! <br />
        <br />
            Isto &eacute;  test!</p></td>
        <td width="65%" valign="top"><h3>&#8226; Os mais comprados</h3><br   />
     <p><?php echo $List; ?><br /></p>
                  </td>
    <br />
    <br />
        </tr>
      </table>
      </div>

      <?php include_once("footer.php");?>
      </div>
      </body>
      </html>

我希望有人能解释我出了什么问题。 谢谢

【问题讨论】:

  • $_SESSION["id"]$_SESSION["user"]$_SESSION["password"] 未设置
  • 嗨,Afzal,欢迎来到 SO。
  • 嗯,我在我的登录页面上设置了会话,带有 ID、用户和密码。登录时一切正常。我忘了告诉..我将编辑问题以添加此信息。 ...对不起
  • @Afzal - 您的登录页面在$_SESSION 中设置ID、用户和密码。在调用页面之前,这些索引不会存在。我已将此添加到我的答案中。

标签: php session indexing undefined-index


【解决方案1】:

一切都很简单,PHP 已经告诉你错误是什么。

您所需要的只是阅读。它告诉你,iduserpassword 未定义。

所以$_SESSION["id"]$_SESSION["user"]$_SESSION["password"] 没有定义。

让您的生活更简单的几句话:不要粘贴 2 页代码。尝试定位问题,因为我认为你会被严重否决。

【讨论】:

    【解决方案2】:

    正如错误提示,这三行

    $userID = preg_replace('#[^0-9]#i', '', $_SESSION["id"]);
    $user = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["user"]);
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["password"]);
    

    是问题所在。该脚本正在$_SESSION 数组中查找id 地址,但由于某种原因它不存在,因此它报告该索引未定义。

    要修复它,您可以使用

    if (isset($_SESSION['id']) { ... }
    

    或确保在需要之前设置它。

    编辑

    您的登录页面在 $_SESSION 中设置 ID、用户和密码。在调用页面之前,这些索引不会存在。

    header.php 需要知道这些值,所以要么提前设置它们,要么使用 isset

    【讨论】:

      【解决方案3】:

      过了一段时间,我明白了。

      解决办法是:

         if(isset($_SESSION['id'])){
            if(isset($_SESSION['user'])){
              if(isset($_SESSION['password'])){
              $log = 1;
              }
            }
         }
      

      感谢大家的帮助,我知道它看起来很基础,但我是初学者,正在学习!

      “请注意,这些不是错误!它们是通知。”由詹姆斯 ->检查

      【讨论】:

        【解决方案4】:

        初始化变量的正常方式:

        $userID = isset($_SESSION["id"]) ? $_SESSION["id"] : NULL;
        

        当你要对$userID 进行任何操作后,你可以检查这是否为空

        if(!empty($userID)){
           //do something
        }
        

        Assigning a default value using Ternary operator

        empty()

        【讨论】:

          【解决方案5】:

          请用给定的代码检查你的会话是否为空

          var_dump($_SESSION);
          

          无论它的节目对此做出什么回复,我都会让你知道问题出在哪里。

          【讨论】:

            猜你喜欢
            • 2011-12-12
            • 2015-02-19
            • 2016-06-17
            • 2014-01-17
            • 2011-02-21
            • 2016-08-17
            • 1970-01-01
            • 2012-05-23
            • 2014-05-08
            相关资源
            最近更新 更多