Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按submit后,isset的PHP my if函数给出假值_Php_Html_Mysql - Fatal编程技术网

按submit后,isset的PHP my if函数给出假值

按submit后,isset的PHP my if函数给出假值,php,html,mysql,Php,Html,Mysql,我有一个问题,我的网站的注册页面以前是工作的,但没有任何改变,现在它开始给出错误,在我按下“注册”按钮后,在我的“if(isset($\u POST['signup')))”功能中给出错误值。下面是我注册过程中的所有代码,因此错误应该在某个地方,但找不到它 signup.php: <?php include 'includes/session.php'; ?> <?php if(isset($_SESSION['user'])){ header('location:

我有一个问题,我的网站的注册页面以前是工作的,但没有任何改变,现在它开始给出错误,在我按下“注册”按钮后,在我的“if(isset($\u POST['signup')))”功能中给出错误值。下面是我注册过程中的所有代码,因此错误应该在某个地方,但找不到它

signup.php:

<?php include 'includes/session.php'; ?>
<?php
  if(isset($_SESSION['user'])){
    header('location: cart_view.php');
  }

 

?>
<?php include 'includes/header.php'; ?>
<body class="hold-transition register-page" style="background-image:url('images/log-bg.png'); background-repeat:no-repeat; background-position: center; background-size: cover;">
<div class="register-box">
    <?php
      if(isset($_SESSION['error'])){
        echo "
          <div class='callout callout-danger text-center'>
            <p>".$_SESSION['error']."</p> 
          </div>
        ";
        unset($_SESSION['error']);
      }

      if(isset($_SESSION['success'])){
        echo "
          <div class='callout callout-success text-center'>
            <p>".$_SESSION['success']."</p> 
          </div>
        ";
        unset($_SESSION['success']);
      }
    ?>
    <div class="register-box-body" style="box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);">
        <p class="login-box-msg">Register a new membership</p>

        <form action="register.php" method="POST">
          <div class="form-group has-feedback">
            <input type="text" class="form-control" name="firstname" placeholder="Firstname" value="<?php echo (isset($_SESSION['firstname'])) ? $_SESSION['firstname'] : '' ?>" required>
            <span class="glyphicon glyphicon-user form-control-feedback"></span>
          </div>
          <div class="form-group has-feedback">
            <input type="text" class="form-control" name="lastname" placeholder="Lastname" value="<?php echo (isset($_SESSION['lastname'])) ? $_SESSION['lastname'] : '' ?>"  required>
            <span class="glyphicon glyphicon-user form-control-feedback"></span>
          </div>
            <div class="form-group has-feedback">
                <input type="email" class="form-control" name="email" placeholder="Email" value="<?php echo (isset($_SESSION['email'])) ? $_SESSION['email'] : '' ?>" required>
                <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
            </div>
          <div class="form-group has-feedback">
            <input type="password" class="form-control" name="password" placeholder="Password" required>
            <span class="glyphicon glyphicon-lock form-control-feedback"></span>
          </div>
          <div class="form-group has-feedback">
            <input type="password" class="form-control" name="repassword" placeholder="Retype password" required>
            <span class="glyphicon glyphicon-log-in form-control-feedback"></span>
          </div>
          <div class="form-group has-feedback">
            <input type="text" class="form-control" name="contact" placeholder="Phone Number" required>
            <span class="glyphicon glyphicon-phone form-control-feedback"></span>
          </div>
          
          <div class="form-group has-feedback">
            <input type="text" class="form-control" name="address" placeholder="Address" required>
            <span class="glyphicon glyphicon-home form-control-feedback"></span>
          </div>
          
          <hr>
            <div class="row">
                <div class="col-xs-4">
                    <button style="background-color: rgb(39, 39, 39); color:white; width:100px;" type="submit" class="btn btn-block btn-flat" name="signup"><i class="fa fa-pencil"></i> Sign Up</button>
                </div>
            </div>
        </form>
      <br>
      <a style="color: rgb(39, 39, 39);" href="login.php">I already have a membership</a><br>
      <a style="color: rgb(39, 39, 39);" href="index.php"><i class="fa fa-home"></i> Home</a>
    </div>
</div>
    
<?php include 'includes/scripts.php' ?>
</body>
</html>

注册新会员

register.php:

<?php
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    include 'includes/session.php';

    if(isset($_POST['signup'])){
        $firstname = $_POST['firstname'];
        $lastname = $_POST['lastname'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $repassword = $_POST['repassword'];
        $contact = $_POST['contact'];
        $address = $_POST['address'];

        $_SESSION['firstname'] = $firstname;
        $_SESSION['lastname'] = $lastname;
        $_SESSION['email'] = $email;
        $_SESSION['contact'] = $contact;
        $_SESSION['address'] = $address;
        

        

        if($password != $repassword){
            $_SESSION['error'] = 'Passwords did not match';
            header('location: signup.php');
        }
        else{
            $conn = $pdo->open();

            $stmt = $conn->prepare("SELECT COUNT(*) AS numrows FROM users WHERE email=:email");
            $stmt->execute(['email'=>$email]);
            $row = $stmt->fetch();
            if($row['numrows'] > 0){
                $_SESSION['error'] = 'Email already taken';
                header('location: signup.php');
            }
            else{
                $now = date('Y-m-d');
                $password = password_hash($password, PASSWORD_DEFAULT);

                //generate code
                $set='123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                $code=substr(str_shuffle($set), 0, 12);

                try{
                    $stmt = $conn->prepare("INSERT INTO users (email, password, firstname, lastname, activate_code, created_on, contact_info, address) VALUES (:email, :password, :firstname, :lastname, :code, :now, :contact, :address)");
                    $stmt->execute(['email'=>$email, 'password'=>$password, 'firstname'=>$firstname, 'lastname'=>$lastname, 'code'=>$code, 'now'=>$now, 'contact'=>$contact, 'address'=>$address]);
                    $userid = $conn->lastInsertId();

                    $message = "
                        <h2>Thank you for Choosing .</h2>
                        <p>Your Account Details:</p>
                        <p>Email: ".$email."</p>
                        <p>Password: ".$_POST['password']."</p>
                        <p>Please click the link below to activate your account.</p>
                        <a href='http://localhost/activate.php?code=".$code."&user=".$userid."'>Activate Account</a>
                    ";

                    //Load phpmailer
                    require 'vendor/autoload.php';

                    $mail = new PHPMailer(true);                             
                    try {
                        //Server settings
                        $mail->isSMTP();                                     
                        $mail->Host = 'tls://smtp.gmail.com:25';                      
                        $mail->SMTPAuth = true;                               
                        $mail->Username = 'mymail';     
                        $mail->Password = 'pass';                    
                        $mail->SMTPOptions = array(
                            'ssl' => array(
                            'verify_peer' => false,
                            'verify_peer_name' => false,
                            'allow_self_signed' => true
                            )
                        );                         
                        $mail->SMTPSecure = 'ssl';                           
                        $mail->Port = 25;                                   

                        $mail->setFrom('mymail');
                        
                        //Recipients
                        $mail->addAddress($email);              
                        $mail->addReplyTo('mymail');
                       
                        //Content
                        $mail->isHTML(true);                                  
                        $mail->Subject = 'Sign Up';
                        $mail->Body    = $message;

                        $mail->send();

                        unset($_SESSION['firstname']);
                        unset($_SESSION['lastname']);
                        unset($_SESSION['email']);

                        $_SESSION['success'] = 'Account created. Check your email to activate.';
                        header('location: signup.php');

                    } 
                    catch (Exception $e) {
                        $_SESSION['error'] = 'Message could not be sent. Mailer Error: '.$mail->ErrorInfo;
                        header('location: signup.php');
                    }


                }
                catch(PDOException $e){
                    $_SESSION['error'] = $e->getMessage();
                    header('location: register.php');
                }

                $pdo->close();

            }

        }

    }
    else{
        $_SESSION['error'] = 'Fill up signup form first';
        header('location: signup.php');
    }

?>

给你的按钮一个
属性

<button style="background-color: rgb(39, 39, 39); color:white; width:100px;" type="submit" class="btn btn-block btn-flat" name="signup" value="xxx"><i class="fa fa-pencil"></i> Sign Up</button>
这是因为
isset()
还检查空值:


.

一定有什么改变了,因为如果输入和环境仍然相同,脚本没有理由改变其行为。我一眼就没发现有什么不对劲。您是否尝试过转储
$\u POST
变量来检查内容?我的意思是我记得的唯一变化是我的o.s,但我怀疑这是因为,@El_Vanja抱歉,我不知道这是因为我的主要语言不同还是我不知道转储意味着什么?您是否尝试添加
而不是将名称添加到按钮?我第一次看到给按钮起名字。@DefinitelynotRafal也试过了,没有任何变化仍然会给if中的else值
if (array_key_exists('signup', $_POST)){ ...