我的php变量有问题

时间:2013-01-16 14:20:21

标签: php

我不断获得以下内容的“未定义索引”:

$username = $_POST['username'];
$email = $_POST['email'];
$email1 = "@";
$email_check = strpos($email,$email1);
$pwd = $_POST['pwd'];
$pwd_conf = $_POST['pwd_conf'];
$uLength = strlen($username);
$pLength = strlen($pwd);

我已经尝试过if(isset())但错误只改为“Undefined Variable”

if (isset($_POST['username'])) {
    $username = $_POST['username'];
}
if (isset($_POST['email'])) {
    $email = $_POST['email'];
}
$email1 = "@";
$email_check = strpos($email, $email1);
if (isset($_POST['pwd'])) {
    $pwd = $_POST['pwd'];
}
if (isset($_POST['pwd_conf'])) {
    $pwd_conf = $_POST['pwd_conf'];
}
$uLength = strlen($username);
$pLength = strlen($pwd);

4 个答案:

答案 0 :(得分:1)

使用此

if(isset($_POST['username'])) {
    $username = $_POST['username'];
    $uLength = strlen($username);
}
if(isset($_POST['email'])) {
    $email = $_POST['email'];
    $email1 = "@";
    $email_check = strpos($email,$email1);
}

if(isset($_POST['pwd'])) {
    $pwd = $_POST['pwd'];
    $pLength = strlen($pwd);
}
if(isset($_POST['pwd_conf'])) {
    $pwd_conf = $_POST['pwd_conf'];
}

答案 1 :(得分:1)

发生这种情况的原因是因为你的一个$ _POST变量没有进入该页面。

在您第一次尝试时,您会收到未识别的索引,因为索引部分[' xxxx']不存在。在第二个版本中,您的if语句正在运行,因此永远不会设置$username$email。当您尝试执行$email_check = strpos($email,$email1);时,$ email不存在(当您尝试使用$username$pwd时,可能会发生这种情况)并且您会收到" Unidentified Variable"。

有几种方法可以解决这个问题,但我会从检查您的帖子数据开始,看看您的网页有什么问题。可能有多种方法可以做到这一点,包括我不知道的php中的一个,但我喜欢使用wireshark并检查正在发送的post数据包;然后从那里调试。

答案 2 :(得分:0)

我的工作方式:

$errors = array();

if (!isset($_POST['username']))
    $errors[] = 'Please enter a username';

if (!isset($_POST['email']))
    $errors[] = 'Please enter an e-mailaddress';

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
    $errors[] = 'Please enter a valid e-mailaddress';

if (!isset($_POST['pwd']))
    $errors[] = 'Please enter a password';

if (!isset($_POST['pwd_conf']))
    $errors[] = 'Please confirm your password';

if ($_POST['pwd'] != $_POST['pwd_conf'])
    $errors[] 'Passwords do not match';

if (count($errors) <= 0) {
    $username = $_POST['username'];
    $email = $_POST['email'];
    $pwd = $_POST['pwd'];
    $pwdConfirmation = $_POST['pwd_conf'];

    // Other logic
} else {
    foreach ($errors as $error)
        echo $error;
}

答案 3 :(得分:0)

您很可能使用GET方法调用代码,因此$ _POST变量显然是空的。

您需要将所有处理程序代码放在此条件

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
...
}

同时针对isset()检查单独的字段没有多大意义

如果您仍然遇到这些错误 - 请检查您的表单