将错误视为“未定义的变量”和“未定义的索引”

时间:2017-01-22 08:26:10

标签: php

<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['password'])) {$pass = $_POST['password'];}
require "init.php";

$query = "select * from userinfo where email like '".$email."";
$result = mysqli_query($con,$query);

if(mysqli_num_rows($result)>0)
{

$response = array();
$code = "reg_false";
$message = "User Already Exist !";
array_push($response,array("code"=>$code,"message"=>$message));
echo json_encode(array("server_response"=>$response));

}
   else
    {
    $query = "insert into userinfo     values('".$name."','".$email."','".$pass."');";
$result = mysqli_query($con,$query);

if(!$result)
{
    $response = array();
    $code = "reg_false";
    $message = "Registration Failed, Try Again!";
    array_push($response,array("code"=>$code,"message"=>$message));
    echo json_encode(array("server_response"=>$response));
}
else
{
    $response = array();
    $code = "reg_true";
    $message = "Registration Success, Login to Continue!";
    array_push($response,array("code"=>$code,"message"=>$message));
    echo json_encode(array("server_response"=>$response));
  } 
}
mysqli_close($con);
?>

我已经在Stack Overflow上尝试了几乎所有内容,但我仍然发现错误是未定义的变量,也是未定义的索引。#

检查此屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:-1)

Rifkan,您需要概述为什么这些错误不能自我解释以及suggested duplicate question无效的原因。这些错误意味着他们听起来像普通英语:

  • &#34;未定义的变量&#34;意味着您正在使用未定义的变量。除了说未初始化的变量不具有您期望的值(它不存在)之外,更难以明确表达。
  • &#34;未定义的索引&#34;表示您正在使用类似尚未初始化的数组条目。

在这两种情况下,原因是您需要在使用它之前初始化变量或数组条目。

从第7行的第一个$email开始,并计算出不会设置$email的情况。如果出现这种情况:

  1. 您访问表单以外的页面&#34; post&#34;操作
  2. 表单发布到此页面,其中不包含&#34;电子邮件&#34;表格元素
  3. 如果整个页面的目的是创建一个用户,那么将整个逻辑包装起来测试&#34; post&#34;是一个好主意。方法,因为如果用户没有尝试注册,您不希望运行任何此逻辑。

    请注意,您还需要考虑一些安全性错误:

    • 一个重大的SQL注入漏洞;
    • 以纯文本格式存储的密码,用于向用户公开二级密码重用攻击;
    • 不检查用户是否正确输入密码。

    添加为wiki,因为问题确实 是指示的重复,只需添加一些内容以帮助OP解决问题。