我不断获得以下内容的“未定义索引”:
$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);
答案 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()检查单独的字段没有多大意义
如果您仍然遇到这些错误 - 请检查您的表单