我正在构建一个PHP登录系统,用户可以在其中将其信息输入为HTML表单。其中两个输入框是半可选的(电话和电子邮件),但是用户必须将数据输入到这些字段中的至少一个中(两者都可以,两者都不可以)。这是我已经拥有的基本形式和PHP代码(该形式将在index.php中,但是我无法弄清楚如何将php和html分开,并且仍然在此处正确显示它们)-
<?php
if (isset($_POST['signup-submit'])) { // so the user has to click the signup button on the signup page to join
require 'dbh.php'; //just used to log into the database
$1name = $_POST['fname'];
$2name = $_POST['lname'];
$email = $_POST['mail'];
$phone = $_POST['tphone'];
$password = $_POST['pw1'];
$passwordRepeat = $_POST['pw2'];
if (empty($1name)) || (empty($2name)) || (empty($password)) || (empty($passwordRepeat)) || ((empty($email)) && (empty($phone))){
header("Location: ../signup.php?error=emptyfields&fname=".$ffname."&lname=".$llname."&email=".$mail."&tphone=".$phone);
exit();
}
else if (!filter_var($email, FILTER_VALIDATE_EMAIL) && (!this_is_where_phone_validate_function_will_go($phone)) && (!preg_match("/^[a-zA-Z]*$/", $1name ) || (!preg_match("/^[a-zA-Z]*$/", $2name ) && ($pw1 !== $pw2)header("Location: ../signup.php?error=invalidfields;
exit();
}
else if (!()) && (!preg_match("/^[a-zA-Z]*$/", $fname) || !preg_match("/^[a-zA-Z]*$/", $lname) {
header("Location: ../signup.php?error=invalidmail&1name=".$fname."&2name=".$lname."&phone=".$tphone);
exit();
}
else if (!preg_match("/^[a-zA-Z]*$/", $fname) && !preg_match("/^[a-zA-Z]*$/", $lname) {
header("Location: ../signup.php?error=invalidfname&lname=".$llname."&mail=".$email."&phone=".tphone)
exit();
}
else if (!preg_match("/^[a-zA-Z]*$/", $fname)) {
header("Location: ../signup.php?error=invalidfname&2name=".$llname."&email=".$email."&phone=".tphone);
exit();
}
else if (!preg_match("/^[a-zA-Z]*$/", $lname)) {
header("Location: ../signup.php?error=invalidlname&1name=".$fname."&email=".$email."&phone=".tphone);
exit();
}
else if ($pw1 !== $pw2) {
header header("Location: ../signup.php?error=passwordcheck&1name=".$fname."&2name=".$lname."&email=".$email."&tphone=".phone);
}
else {
}
mysqli_stmt_close($stmt);
mysqli_close($conn);
}
else {
header("Location: ../signup.php");
exit();
}
<html>
<body>
<form method="POST" action="/signup.php">
<input id="fname" type="text" required>
<input id="lname" type="text" required>
<input id="email" type="text">
<input id="phone" type="tel">
<input id="pw1" type="password" required>
<input id="pw2" type="password" required>
<input id="signup-submit" type="submit">
</form>
</body>
</html>
我最近才意识到Cake PHP的存在。我不熟悉它的用法,但是如果它是解决此问题的唯一方法,那么我不介意使用Cake PHP给出答案,尽管我怀疑我可以仅使用PHP和MYSQLi来解决它。
我希望php代码检查是否有任何空字段(确实如此),然后检查所有字段是否无效(应该返回除错误消息以外的任何信息,例如,不要重新填充表格),然后检查如果每个输入字段(电话和电子邮件都是一个条件)有效(并重新填充每个有效字段),则按该顺序。
我知道signup.php代码不完整/不正确,但是我希望我提供了足够的代码供大家了解我要完成的工作。我尚无测试资源(我要买一台笔记本电脑,明天要安装WAMP来运行测试服务器),但是如果有资源,我会进行更新。