所以我有两个文件,一个是 index.php
和 register.php
。 Index 是表单,register 是处理表单的 PHP。所以这里是 index.php
<!DOCTYPE html>
<html lang="en">
<body>
<div class="container">
<form class="form-signin" role="form" action="register.php" method="post">
<h2 class="form-signin-heading">Please sign up</h2>
<input type="text" class="form-control" placeholder="Name" name="name" autofocus style="border-color:#<?php ?>;">
<input type="text" class="form-control" placeholder="Username" name="username" autofocus>
<input type="text" class="form-control" placeholder="Email" name="email" autofocus>
<input type="password" class="form-control" placeholder="Password" name="password">
<input type="password" class="form-control" placeholder="Password, Again" name="passwordconf" >
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
</form>
</div>
</body>
</html>
还有我的register.php
<?php
try {
$handler = new PDO('mysql:host=localhost;dbname=s','root', '*');
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
exit($e->getMessage());
}
//Post
$name = $_POST['name'];
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$password1 = $_POST['passwordconf'];
$ip = $_SERVER['REMOTE_ADDR'];
//Verifcation
if (empty($name) || empty($username) || empty($email) || empty($password) || empty($password1))
{
echo "Complete all fields";
}
// Password match
if ($password != $password1)
{
echo $passmatch = "Passwords don't match";
}
// Email validation
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo $emailvalid = "Enter a valid email";
}
// Password length
if (strlen($password) <= 6){
echo $passlength = "Choose a password longer then 6 character";
}
if(empty($passmatch) && empty($emailvalid) && empty($passlength)) {
//Securly insert into database
$sql = 'INSERT INTO userinfo (name ,username, email, password, ip) VALUES (:name,:username,:email,:password,:ip)';
$query = $handler->prepare($sql);
$query->execute(array(
':name' => $name,
':username' => $username,
':email' => $email,
':password' => $password,
':ip' => $ip
));
}
?>
但这就是我想要做的,我想在表单旁边显示 PHP 错误,而不是将它们显示在 register.php
上,但我也想使用两个单独的文件。而不是将两个文件合并在一起。有任何想法吗?
最佳答案
我真的不明白你使用服务器端来进行所有这些验证。在客户端本身执行此操作是明智且经济的。如果您是这样的话,有很多用于客户端表单验证的插件。
一些脚本是:
- jQuery Form Validator
- jQuery Validation Plugin
- jQuery plugin: Validation
- 10 jQuery Form Validation Techniques and Tutorials
找到最后一个链接来自己完成这项工作。
就您的情况而言,请尝试将 View 和逻辑分开。遵循当今许多 PHP Web 应用程序和 JavaScript 应用程序中遵循的模型- View - Controller 架构也是明智的。
<小时/>或者,如果您需要在服务器端完成逻辑,请将 HTML 放入 form.php
中来分隔表单。在验证过程中,通过添加一个标志来进行一些小更改,当表单未经过验证时,该标志设置为 false
。
现在,如果验证不成功,即标志 $valid = false
,则包含 form.inc
,否则包含 success。公司
。
if ($valid)
include 'success.inc';
else
include 'form.inc';
由于它将位于同一个文件中,因此在 form.inc
中添加以下行:
if (!$valid)
echo '<p class="error">You have errors in your form! Please correct them!</p>';
关于表单上的 PHP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305711/