0

我正在为我的分类广告注册(通过教程),但我遇到了问题。出于某种原因,只需访问此页面:http ://classifieds.your-adrenaline-fix.com/register.php 将生成 2 个自定义错误,您将在注册表上方的红色框中看到,但表单没有甚至还没有提交,所以我不知道为什么会这样。如果有人能对此有所了解,我将不胜感激,并在此先感谢大家!!

(我已经盯着它看了好几个小时)

这是验证和提交表单数据的代码;

<?php
    if(empty($_POST) === false) {
        $VisitorsFirstName = $_POST['First_Name'];
        $VisitorsLastName = $_POST['Last_Name'];
        $VisitorsEmail = $_POST['E_mail'];
        $VisitorsPassword = $_POST['Pass'];
        $RequiredFlds = array('First_Name', 'Last_Name', 'E_mail', 'Pass', 'PassAgain');

        foreach($_POST as $key=>$value) {
            if(empty($value) && in_array($key, $RequiredFlds) === true) {
                $Err[] = 'All Fields Are Required';
                break 1;
            }
        }

        if(empty($Err) === true) {
            if(email_exists($VisitorsEmail) === true) {
                $Err[] = 'The Email Address \''. $VisitorsEmail. '\' Is Already In Use.';           
            }
            if(strlen($VisitorsPassword) < 4) {
                $Err[] = 'Please Select A Password of At Least 4 Characters.';
            }
            if($_POST['Pass'] !== $_POST['PassAgain']) {
                $Err[] = 'Passwords Do Not Match.';
            }
            if(filter_var($VisitorsEmail, FILTER_VALIDATE_EMAIL) === false) {
                $Err[] = 'A Valid Email Address is Required';
            }
        }
    }

    if(isset($_GET['success']) && empty($_GET['success'])) {
        echo 'You Have Now Been Registered and Can Proceed to <a href="add.php">Creating Your First Ad</a><br>(Use the Email and Password That You Registered With to Login)';
    } else {    
    if(empty($_POST) === false && empty($Err) === true) {
        $register_data = array (
            'VisitorsFirstName' => $_POST['First_Name'],
            'VisitorsLastName' => $_POST['Last_Name'],
            'VisitorsPassword' => $_POST['Pass'],
            'VisitorsEmail' => $_POST['E_mail'],
            'Notify' => $_POST['Notify']
            );

            register_func($register_data);
            header('Location: register.php?success');
            exit();

    } else if(empty($Err) === false) {
        echo output_error($Err);
        }
    } 
?>
4

3 回答 3

0

您可以改为检查是否按下了提交按钮。像这样:

if (isset($_POST['submit']) {
  // get the post values
}

这样,您可以在表单实际提交之前消除脚本启动。现在它似乎在我访问该页面后立即运行。

于 2013-04-22T13:55:45.413 回答
0

只要将您提供的代码单独放在我自己的服务器上,它就可以按设计工作。它没有运行最上面的代码块,因为 $_POST 变量是空的。尝试在文件顶部输出 $_POST 的内容,以便找出它不为空的原因。

print_r($_POST);
于 2013-04-22T13:36:11.533 回答
0

试试这个: if(!empty($_POST['First_Name']) && !empty($_POST['Last_Name']) && !empty($_POST['E_mail']) && !empty($_POST['Pass' ])){

……

}

或者

尝试 isset($_POST['First_Name'])......

这对我来说很好!

于 2013-04-22T13:38:16.867 回答