所以我创建了一个有2个输入。用户可以输入用户名和文本框的文本框是他输入的密码。然后是PHP验证,如果Username的文本框为空,则给出错误消息或者如果其中有文本,请查看文本是否仅包含数字。如果它没有再次给出错误消息。密码的PHP验证是相同的主体。顺便说一下,表单加载到与创建它的位置相同的页面。但由于某些原因,当它加载到broswer(加载正常)并且我在用户名文本字段中键入sybols并点击提交时,错误不会出现。我真的希望你们能发现问题因为这让我发疯了。
<!DOCTYPE html>
<html>
<head>
<style>
.error {
color: red;
}
</style>
<title>Register</title>
</head>
<body>
<form action="#" method="POST">
<h1 id="Signup">Sign Up</h1>
<input type="text" name="Username" placeholder="Please Enter a Username">
<span class="error"><? echo $errorusername;?></span>
<br>
<input type="password" name="Password" placeholder="Please Enter a Password">
<span class="error"><? echo $errorpass;?></span>
<br>
<input type="Submit" id ="Submit">
</form>
</body>
</html>
<?php
$errorpass = "";
$errorusername = "";
if (isset($_POST['Submit']))
{
if (empty($_POST['Username']))
{
$errorusername = "name is required";
}
else
{
$Username = $_POST['Username'];
if (!preg_match("/^[a-zA-Z ]*$/", $Username))
{
$errorusername = "Only numbers allowed";
}
}
if (empty($_POST['password']))
{
$errorusername = " A password is required";
}
else
{
$password = $_POST['password'];
if (!preg_match("/^[a-zA-Z ]*$/", $password))
{
$errorpass = "Need to contain numbers and symbols";
?>
答案 0 :(得分:5)
确定。首先,if (isset($_POST['Submit'])){...}
内的任何内容都不会发生,因为您没有匹配的名称属性。
仅此一项就构成了未定义的索引提交通知。
然后你缺少了条件语句的大括号,而那些单独构成解析错误。
然后你有name="Password"
和$_POST['password']
另一个错误; letter-case和未定义的索引密码通知。
同时确保设置了短开标签,否则将所有<?
更改为<?php
或<? echo
更改为<?=
。
您还需要在PHP之后放置HTML表单,以便所有这些都能正常工作。
因此,鉴于这一切,这里是您的固定代码以及您可以查看的其他一些小错误,这些错误已被修改。
<?php
// For development purposes only
error_reporting(E_ALL);
ini_set('display_errors', 1);
$errorpass = "";
$errorusername = "";
if (isset($_POST['Submit']))
{
if (empty($_POST['Username']))
{
$errorusername = "name is required";
}
else
{
$Username = $_POST['Username'];
if (!preg_match("/^[a-zA-Z ]*$/", $Username))
{
$errorusername = "Only numbers allowed";
}
}
if (empty($_POST['Password']))
{
$errorpass = " A password is required";
}
else
{
$password = $_POST['Password'];
if (!preg_match("/^[a-zA-Z ]*$/", $password))
{
$errorpass = "Need to contain numbers and symbols";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
.error {
color: red;
}
</style>
<title>Register</title>
</head>
<body>
<form action="#" method="POST">
<h1 id="Signup">Sign Up</h1>
<input type="text" name="Username" placeholder="Please Enter a Username">
<span class="error"><? echo $errorusername;?></span>
<br>
<input type="password" name="Password" placeholder="Please Enter a Password">
<span class="error"><? echo $errorpass;?></span>
<br>
<input type="Submit" id ="Submit" name ="Submit">
</form>
</body>
</html>
<强>脚注:强>
这里
if (!preg_match("/^[a-zA-Z ]*$/", $Username))
的
$errorusername = "Only numbers allowed";
preg_match检查字母而不是数字。
if (!preg_match("/^[a-zA-Z ]*$/", $password))
和$errorpass = "Need to contain numbers and symbols";
并超出了此问题的范围。您需要自行修复这些问题,以便为您要检查的内容获取正确的语法。