如何使用可选输入检查多个字段

时间:2019-05-23 01:45:07

标签: php html

我正在构建一个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来运行测试服务器),但是如果有资源,我会进行更新。

0 个答案:

没有答案