Возникла проблема с регистрационной формой PHP-MySQL - PullRequest
1 голос
/ 30 августа 2011

После отправки формы браузер показывает только пустую страницу. Ничего больше. Я включил сообщение об ошибках. Нет ошибок в журналах php. Также попробовал (как видите) echo $sql; die();. По-прежнему нет результата. Как это исправить? Что не так с моим кодом? Мой 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";
}
?>

Кстати функция filter из common.php дезинфекция всех сообщений

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;
}

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Я бы настоятельно рекомендовал установить XDebug на ваш компьютер для разработки и использовать IDE, такую ​​как NetBeans, Eclipse PDT или, что еще лучше, PHPStorm, чтобы попытаться установить точки останова внутри вашего кода и посмотреть, в какой момент он ломается.

Вы можете получить XDebug здесь: http://xdebug.org

Либо сделайте шаг назад и добавьте следующую строку

exit("i was here!");

в строке 1, чтобы сначала определить, действительно ли скрипт запущен, и, если вы видите результат, шаг за шагом, переместите его на одну строку вниз, сохраните и повторно запустите скрипт, промойте и повторяйте, пока он не сломается.

Полагаю, что, хотя у вас включен отчет об ошибках, в любом из трех включаемых вами файлов может быть строка кода, которая снова отключает его, как в следующем фрагменте:

error_reporting(0);

или даже:

ini_set('display_errors','Off');
2 голосов
/ 30 августа 2011

Я думаю, что ваша проверка для непустого массива ошибок должна быть перемещена вверх на шаг сразу после того места, где вы проверяете наличие ошибок.

    ...
    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";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...