php - 有问题的 PHP-MySQL 注册表单

标签 php mysql forms mysqli

表单提交后浏览器只显示空白页面。没有其他的。我启用了错误报告。 php 日志中没有错误。也试过(如你所见)echo $sql;死亡();。还是没有结果。如何解决?我的代码有什么问题?我的 php 代码(处理注册表单数据)看起来像这样

<?php
require '../includes/db.php';
require '../includes/ipurl.php';
require '../includes/common.php';
$page = 'signup';
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit( );
}


if ($_POST['submit'] == 'Tamam') {
    $err = array( );
    foreach ($_POST as $key => $value) {
        $data[$key] = filter($value);
    }
    if (empty($data['fname']) || strlen($data['fname']) < 2 || empty($data['mname']) || strlen($data['mname']) < 2 || empty($data['lname']) || strlen($data['lname']) < 2) {
        $err[ ] = 1;
    }

    if (!isUserID($data['login'])) {
        $err[ ] = 2;
    }

    if (!isEmail($data['email'])) {
        $err[ ] = 3;
    }

    if (!checkPwd($data['pwd'], $data['pwd2'])) {
        $err[ ] = 4;
    }

    $pwd = PwdHash($data['pwd']);

    $host       = $_SERVER['HTTP_HOST'];
    $host_upper = strtoupper($host);
    $path       = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');

    $activ_code = rand(1000, 9999);

    $email = $data['email'];
    $login = $data['login'];
    $dob   = date('Y-m-d', strtotime($data['dob']));
    $age   = date("Y") - date('Y', strtotime($data['dob']));
    $type  = $data['type'];


    $rs_duplicate = $db->query("select count(*) as total from users where email='$email' OR login='$login'") or die($db->error);
    list($total) = $rs_duplicate->fetch_row();

    if ($total > 0) {
        $err[ ] = 5;
    }

    if (isset($type)) {
        if ($type == 1) {
            $region     = $data['region'];
            $school     = $data['school'];
            $class      = $data['class'];
            $group      = 0;
            $subject    = 0;
            $university = 0;
            $profession = 0;
        }
        if ($type == 2) {
            $group      = $data['group'];
            $region     = $data['region'];
            $school     = $data['school'];
            $class      = $data['class'];
            $subject    = 0;
            $university = 0;
            $profession = 0;

        }
        if ($type == 3) {
            $group      = 0;
            $region     = 0;
            $school     = 0;
            $class      = 0;
            $subject    = 0;
            $university = $data['university'];
            $profession = $data['profession'];
        }
        if ($type == 4) {
            $group      = 0;
            $region     = 0;
            $school     = 0;
            $class      = 0;
            $university = 0;
            $profession = 0;
            $subject    = $data['subject'];
        }
    }
    if (!isset($type)) {
        $err[ ] = 9;
    }
    if (empty($err)) {
        $sql = "INSERT INTO users
(level,fname, mname, lname, dob, age, reg_date, phone, email, login, pwd, type, `group`, region, school, class, ip, subject, ban, university, profession, activation_code) 
VALUES 
('1','$data[fname]', '$data[mname]', '$data[lname]', '$dob', '$age', now(), '$data[phone]', '$email', '$login', '$pwd', '$type', '$group', '$region', '$school', '$class',  '$ip', '$subject', NULL, '$university', '$profession', '$activ_code')";
        echo $sql; die();
        $result = $db->query($sql) or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error));
        $id     = $db->insert_id;
        $md5_id = md5($id);
        $db->query("update users set md5_id='$md5_id' where id='$id'") or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error));
        include "../includes/success.php";
    }

} else if (!empty($err)) {
    include "../includes/error.php";
}
?>

顺便说一下 common.php 中的函数 filter 清理所有帖子

function filter($data) {
    $data = trim(htmlentities(strip_tags($data)));

    if (get_magic_quotes_gpc())
        $data = stripslashes($data);

    $data = mysql_real_escape_string($data);

    return $data;
}

最佳答案

我认为您对非空错误数组的检查应该在检查是否有任何错误之后向上移动一个步骤。

    ...
    if (empty($err)) {
        $sql = "INSERT INTO users
(level,fname, mname, lname, dob, age, reg_date, phone, email, login, pwd, type, `group`, region, school, class, ip, subject, ban, university, profession, activation_code) 
VALUES 
('1','$data[fname]', '$data[mname]', '$data[lname]', '$dob', '$age', now(), '$data[phone]', '$email', '$login', '$pwd', '$type', '$group', '$region', '$school', '$class',  '$ip', '$subject', NULL, '$university', '$profession', '$activ_code')";
        echo $sql; die();
        $result = $db->query($sql) or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error));
        $id     = $db->insert_id;
        $md5_id = md5($id);
        $db->query("update users set md5_id='$md5_id' where id='$id'") or die(printf("Bazaya daxiletmə zamanı səhv: %s\n", $db->error));
        include "../includes/success.php";
    } else if (!empty($err)) {
        include "../includes/error.php";
    }
}

关于php - 有问题的 PHP-MySQL 注册表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242958/

相关文章:

javascript - 通过 HTML 表单字段名称获取具有内部对象的 JSON 对象的值,无需 eval

html - 如何使用 Revel Golang 处理来自 html 表单的动态输入数量

MySQL 向外键添加注释

mysql - 如何使用mysql存储过程存储返回结果

javascript - 在 PHP 中为 Javascript 生成小而有效的变量名的算法

php - MySQL PDO - 设置默认获取模式?

php - 安装 XAMPP 的端口问题

javascript - 表单提交无需重定向和重新加载

php - 可能一次多次写入 PHP 中的同一个文件?

php - 如何在日志文件中保存xml错误消息?