<?php
  $name=$_POST['name'];
  $password=$_POST['password'];
  if ((!isset($name)) || (!isset($password))) {
?>
    <h1>Please Log In</h1>
    <p>This page is secret.</p>
    <form method="post" action="logindb.php">
    <p>Username: <input type="text" name="name"></p>
    <p>Password: <input type="password" name="password"></p>
    <p><input type="submit" name="submit" value="Log In"></p>
    </form>
<?php
  } else {
    $mysql = mysqli_connect("localhost", "webauth", "123456");
    if(!$mysql) {
      echo "Cannot connect to database.";
      exit;
    }
    $selected = mysqli_select_db($mysql, "auth");
    if(!$selected) {
      echo "Cannot select database.";
      exit;
    }
    $query = "select count(*) from authorised_users where
              name = '".$name."' and
              password = '".$password."'";    $result = mysqli_query($mysql, $query);
    if(!$result) {
      echo "Cannot run query.";
      exit;
    }
    $row = mysqli_fetch_row($result);
    $count = $row[0];
    if ($count > 0) {
      echo "<h1>Here it is!</h1>
            <p>I bet you are glad you can see this secret page.</p>";
    } else {
      echo "<h1>Go Away!</h1>
            <p>You are not authorized to use this resource.</p>";
    }
  }
?>报错如下:Notice: Undefined index: name in C:\wamp\www\logindb.php on line 2
          Notice: Undefined index: password in C:\wamp\www\logindb.php on line 3
以前貌似没这个问题,重新装了个版本的WAMP,出现了这个问题,奇怪

解决方案 »

  1.   

    不是错误
    修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE
      

  2.   

    在最上面加上
    $name=“”;
    $password=“”;
    就不报了
      

  3.   

    哦,我刚说的不对
    应该是你要加个判断,
    if(!empty($_POST['submit']))
    {
       $name=$_POST['name'];
       $password=$_POST['password'];
    }
      

  4.   

    修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE  问题解决了加下面的代码貌似没必要吧
    if(!empty($_POST['submit']))
    {
      $name=$_POST['name'];
      $password=$_POST['password'];
    }
      

  5.   

    修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE 问题解决了这种只是屏蔽了 E_NOTICE的显示,实际问题还是存在的,就好像掩耳盗铃一样,问题出现了,但你假装不知道而已。if(!empty($_POST['submit']))
    {
      $name=$_POST['name'];
      $password=$_POST['password'];
    }这才是正确的方法,在使用POST数据之前,事先就要对数据的正确性进行判断,连input是否存在都不知道,就贸然使用,在生产环境是不可接受的。