首页 > 解决方案 > 我收到此错误:解析错误:语法错误,C:\wamp\www 中出现意外的 'else' (T_ELSE)。我很难找到来源

问题描述

希望有新鲜眼光的人可以提供帮助。谢谢-R

检查提交按钮是否被点击---安全(signup.php 文件中的按钮类型)--/

  if (isset($_POST['submit'])) {

/*INCLUDE DATABASE FILE--*/

    include_once 'dbh.inc.php';

/ CREATE A VARIABLE--(CALLED FIRST)--(是注册表单中的第一个输入) (允许将代码转换为文本) [[无法将代码输入框}}-- /

    $first = mysqli_real_escape_string($conn, $_POST['first']);
    $last = mysqli_real_escape_string($conn, $_POST['last']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $uid = mysqli_real_escape_string($conn, $_POST['uid']); 
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']);



//ERROR HANDLERS

//CHECK FOR EMPTY FIELDS---(double pipes means or in php)
if  (empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) {

       header("Location: ../signup.php?signup=empty");
       exit();
} else {
    //CHECK IF INPUT CHARACTERS ARE VALID

  if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {

       header("Location: ../signup.php?signup=invalid");
       exit();


  } else {
    //CHECK IF EMAIL IS VALID
     if (!filter_var($email, FILTER_VALIDATE_EMAIL))  { 
       header("Location: ../signup.php?signup=email");
       exit();  
     } else {
        $sql = "SELECT * FROM users WHERE user_uid='$uid'";
        $result = mysqli_query($conn, $sql);
        $resultCheck = mysqli_num_rows($result);

       if ($resultCheck > 0){
           header("Location: ../signup.php?signup=usertaken");
           exit();

       } else {
        //HASHING PASSWORD---
        $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);

        //INSERT USER INTO DATABASE

        $sql= "INSERT INTO users (user_first, user_last, user_email, user_uid, user_pwd) VALUES ('$first','$last', '$email', '$uid','$hashedPwd' );";
         mysqli_query($conn, $sql);

         header("Location: ../signup.php?signup=success");
         exit();    

        }

     }

  } 

} else{
        /*COLON MUST NOT HAVE SPACE BETWEEN LOCATION---SPACE BETWEEN ../---(TAKES BACK A DIRECTORY)--PREVENTS GOING TO URL TO ACCESS FILE PAGE.--TAKES USER
        BACK TO SIGNUP PAGE*/
        header("Location: ../signup.php");
        /*exit--closes off script from running--(IF ANYTHING AFTER EXIT FUNCTION)*/
        exit();
 }

标签: php

解决方案


下次请正确格式化您的代码,以便将来避免此类错误:

<?php
if (isset($_POST['submit'])) {
    include_once 'dbh.inc.php';

    $first = mysqli_real_escape_string($conn, $_POST['first']);
    $last  = mysqli_real_escape_string($conn, $_POST['last']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $uid   = mysqli_real_escape_string($conn, $_POST['uid']);   
    $pwd   = mysqli_real_escape_string($conn, $_POST['pwd']);

    if(empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) {
        header("Location: ../signup.php?signup=empty");
        exit();
    }else{
        if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {
            header("Location: ../signup.php?signup=invalid");
            exit();     
        }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
            header("Location: ../signup.php?signup=email");
            exit();
        }else{
            $sql = "SELECT user_uid FROM users WHERE user_uid='$uid'";
            $result = mysqli_query($conn, $sql);
            $resultCheck = mysqli_num_rows($result);

            if($resultCheck > 0){
                   header("Location: ../signup.php?signup=usertaken");
                   exit();
            }else{
                $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
                $sql= "INSERT INTO users (user_first, user_last, user_email, user_uid, user_pwd) VALUES ('$first','$last', '$email', '$uid','$hashedPwd' );";
                mysqli_query($conn, $sql);
                header("Location: ../signup.php?signup=success");
                exit();     
            }
        }
    }
}else{
    header("Location: ../signup.php");
    exit();
}

我更改了这部分代码:

if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {

           header("Location: ../signup.php?signup=invalid");
           exit();


      } else {
        //CHECK IF EMAIL IS VALID
         if (!filter_var($email, FILTER_VALIDATE_EMAIL))  { 
           header("Location: ../signup.php?signup=email");
           exit();  
         } else {

因为您可以email在检查用户的firstlast名称后使用else if.

PS我不想成为这种网站的用户,因为每次输入错误时它都会重定向你。理想情况下,如果您可以在他们仍然处于表单中时告诉他们输入中的错误,那么他们不必在重定向后重新输入所有内容并每次都弄清楚他们做错了什么,这将是最好的。

HTML5 电子邮件输入将检查电子邮件是否具有有效格式,因此您也可以使用它。

你也可以读一读也是。

}您的代码中的问题是最终else语句之前的缺失


推荐阅读