【问题标题】:PHP form not writing to sqlPHP表单不写入sql
【发布时间】:2014-01-29 05:06:48
【问题描述】:

帮助,我已经被这个问题困扰了一段时间了。我关注的这个 php 注册码不起作用。提交表单后,代码应该写入 sql 数据库,但不会。请帮忙。谢谢。 php进程的文件名为registration-process2.php

        <?php

        require_once('functions.inc');

        if (!isset($_POST['submit']))
            {
                die(header("Location: register.php"));
            }

        $_SESSION['formAttempt'] = true;

        if (isset($_SESSION['error'])) {
            unset($_SESSION['error']);}

        $_SESSION['error']=array();

        $required = array("lname","fname","email","password1","password2");

        //Check required fields
        foreach ($required as $requiredField) {
        if (!isset($_POST[$requiredField])||$_POST[$requiredField]=="") {
            $_SESSION['error'][] = $requiredField." is required.";
            }
        }

        if (!preg_match('/^[\w .]+$/',$_POST['fname'])) {
            $_SESSION['error'][]="First Name must be letters and numbers only.";
            }

        if (!preg_match('/^[\w .]+$/',$_POST['lname'])) {
            $_SESSION['error'][]="Last Name must be letters and numbers only.";
            }

        if (!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
            $_SESSION['error'][]="Invalid e-mail address";
            }

        if($_POST['password1'] != $_POST['password2']) {
            $_SESSION['error'][]="Passwords don't match";
            }

        //final disposition

        if(count($_SESSION['error']) > 0) {
            die(header("Location: register.php"));
            } else {
                if(registerUser($_POST)) {
                    unset($_SESSION['formAttempt']);
                    die(header("Location: success.php"));
                    } else {
                        error_log("Problem registering user: {$_POST['email']}");
                        $_SESSION['error'][]="Problem registering account";
                        die(header("Location: register.php"));
                        }
                    }

        function registerUser($userData) {
            $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
            if($mysqli->connect_errno) {
                error_log("Cannot connect to MySql: ".$mysqli->connect_error);
                return false;
                }
            $email=$mysqli->real_escape_string($_POST['email']);

            //check for an existing user
            $findUser="SELECT id from Customer where email = '{$email}'";
            $findResult=$mysqli->query($findUser);
            $findRow=$findResult->fetch_assoc();
            if (isset($findRow['id']) && $findRow['id'] != "") {
                $_SESSION['error'][]="A user with that e-mail address already exists";
                return false;
                }

            $lastName=$mysqli->real_escape_string($_POST['lname']);
            $firstName=$mysqli->real_escape_string($_POST['fname']);

            $cryptedPassword=crypt($_POST['password1']);
            $password=$mysqli->real_escape_string($cryptedPassword);

            $query="INSERT INTO customer (email,create_date,password,last_name,first_name) VALUES ('{$email}',NOW(),'{$password}','{$lastName}','{$firstName}')";

            if($mysqli->query($query)) {
                $id=$mysqli->insert_id;
                error_log("Inserted {$email} as ID {$id}");
                return true;
                } else {
                    error_log("Problem inserting {$query}");
                    return false;
                    }

            } //end function registerUser

        ?>

和 html 代码。

<form id="userForm" method="POST" action="register-process2.php">

【问题讨论】:

  • 请具体说明您卡在哪里。你在$_POST 数组中获取数据吗?

标签: php sql forms


【解决方案1】:

您遇到了范围问题。

查看此功能..

function registerUser($userData) {
    $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);   

常量DBHOST,DBUSER,DBPASS,DB 在此处无法访问。您需要将它们作为参数传递,并且永远不要在此处使用 global 关键字。

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 2014-12-24
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2016-03-30
    • 2020-03-25
    相关资源
    最近更新 更多