-1 php forms validation
所以我创建了一个有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";
?>
Run Code Online (Sandbox Code Playgroud)
好.首先,这里面什么if (isset($_POST['Submit'])){...}
都不会发生,因为你没有匹配的name属性.
仅这一点就构成了未定义的索引提交通知.
然后你缺少条件的括号,而那些单独的括号将构成解析错误.
然后,你必须name="Password"
和$_POST['password']
其他的错误; letter-case和Undefined index password notice.
另外,还要确保短开放标记设置,否则所有更改<?
到<?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>
Run Code Online (Sandbox Code Playgroud)
脚注:
这里
if (!preg_match("/^[a-zA-Z ]*$/", $Username))
Run Code Online (Sandbox Code Playgroud)
对于
$errorusername = "Only numbers allowed";
Run Code Online (Sandbox Code Playgroud)
preg_match检查字母而不是数字.
同样的if (!preg_match("/^[a-zA-Z ]*$/", $password))
和$errorpass = "Need to contain numbers and symbols";
并且超出了这个问题的范围.您需要自己修复这些内容,以便为要检查的内容获取正确的语法.