验证我的表单和标题到另一个成功页面

时间:2014-08-18 09:11:24

标签: php validation

我正在尝试验证表单字段并将用户重定向到成功页面

所以这是PHP代码

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);


$experiences = $courses = $careerObjective = $availability = $typeOfJob = $rank = $jTitle = $otherJobTitle
    = $salaryRange = $currency = $workIn = "";

$experiencesErr = $coursesErr = $careerObjectiveErr = $availabilityErr = $typeOfJobErr = $rankErr = $jTitleErr
    = $otherJobTitleErr = $salaryRangeErr = $currencyErr = $workInErr = "";


$id = "";
$uid = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $error = array(
        "coursesErr"=>"",
        "careerObjectiveErr"=>"",
        "otherJobTitleErr"=>"",
        "experiencesErr"=>"",
        "availabilityErr"=>"",
        "typeOfJobErr"=>"",
        "rankErr"=>"",
        "jTitleErr"=>"",
        "salaryRangeErr"=>"",
        "currencyErr"=>"",
    );

    if (empty($_POST['experiences'])) {
        $error['experiencesErr'] = "Experiences Required";
    } else {
        $experiences = check_input($_POST['experiences']);
        if (!preg_match("/^[0-9_a-zA-Z ]*$/", $experiences)) {
            $error['experiencesErr'] = "Only letters, numbers and '_' allowed";
        }
    }

    $courses = check_input($_POST['courses']);
    if (!preg_match("/^[0-9_a-zA-Z ]*$/", $courses)) {
        $error['coursesErr'] = "Only letters, numbers and '_' allowed";
    }

    $careerObjective = check_input($_POST['careerObjective']);
    if (!preg_match("/^[0-9_a-zA-Z ]*$/", $careerObjective)) {
        $error['careerObjectiveErr'] = "Only letters, numbers and '_' allowed";
    }

    if (empty($_POST['availability'])) {
        $error['availabilityErr'] = "Availability Required";
    } else {
        $availability = check_input($_POST['availability']);
    }

    if (empty($_POST['typeOfJob'])) {
        $error['typeOfJobErr'] = "Full/Part Time Required";
    } else {
        $typeOfJob = check_input($_POST['typeOfJob']);
    }

    if (empty($_POST['typeOfJob'])) {
        $error['typeOfJobErr'] = "Full/Part Time Required";
    } else {
        $typeOfJob = check_input($_POST['typeOfJob']);
    }

    if (empty($_POST['rank'])) {
        $error['rankErr'] = "Self-assessment Required";
    } else {
        $rank = check_input($_POST['rank']);
    }

    if (empty($_POST['jTitle'])) {
        $error['jTitleErr'] = "Job Field Required";
    } else {
        $jTitle = check_input($_POST['jTitle']);
    }

    $otherJobTitle = check_input($_POST['otherJobTitle']);
    if (!preg_match("/^[0-9_a-zA-Z ]*$/", $otherJobTitle)) {
        $error['otherJobTitleErr'] = "Only letters, numbers and '_' allowed";
    }

    if (empty($_POST['salaryRange'])) {
        $error['salaryRangeErr'] = "Salary Range Required";
    } else {
        $salaryRange = check_input($_POST['salaryRange']);
    }

    if (empty($_POST['currency'])) {
        $error['currencyErr'] = "Currency Required";
    } else {
        $currency = check_input($_POST['currency']);
    }

    $workIn = check_input($_POST['workIn']);

    if(!$error){
        $putData = $db->prepare("INSERT INTO hired_ts_info (id, uid, experiences, courses, career_objective,
        availability, type_of_job, rank, job_title, other_job_title, salary_range, currency, workIn)
        VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

        $putData->bind_param('iisssssssssss', $id, $uid, $experiences, $courses, $careerObjective, $availability,
        $typeOfJob, $rank, $jTitle, $otherJobTitle, $salaryRange, $currency, $workIn);

        if($putData->execute()){
            header("Location:?pid=4&pp=2&pps=technicalSummary&m=g");
        }else{
            echo "Error on executing";
        }
    }
}
?>

这是HTML代码的第一行

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" id="personRegestrationPage4">


<div class="f_left width100percent">
    <div class="TwoLine">
        <label for="experiences" class="requiredFields">experiences and qualifications</label>
        <textarea name="experiences" id="experiences"></textarea>
        <span class="notAllowed"><?php if (isset($error)) {
                echo $error['experiencesErr'];
            }?></span>
    </div>

    <div class="TwoLine">
        <label for="courses">Previous Courses</label>
        <textarea name="courses" id="courses"></textarea>
        <span class="notAllowed"><?php if (isset($error)) {
                echo $error['coursesErr'];
            } ?></span>
    </div>
</div>

这是提交按钮代码

<input type="submit" name="subTs" id="subTs" value="Save Changes" class="submitBtn4">

问题 现在,当我提交表单时,它返回而不向数据库插入任何内容并且没有收到错误消息

更新

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);


$experiences = $courses = $careerObjective = $availability = $typeOfJob = $rank = $jTitle = $otherJobTitle
    = $salaryRange = $currency = $workIn = "";

$experiencesErr = $coursesErr = $careerObjectiveErr = $availabilityErr = $typeOfJobErr = $rankErr = $jTitleErr
    = $otherJobTitleErr = $salaryRangeErr = $currencyErr = $workInErr = "";


$id = "";
$uid = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $error = array();

    if (empty($_POST['experiences'])) {
        $error['experiencesErr'] = "Experiences Required";
    } else {
        $experiences = check_input($_POST['experiences']);
        if (!preg_match("/^[0-9_a-zA-Z ]*$/", $experiences)) {
            $error['experiencesErr'] = "Only letters, numbers and '_' allowed";
        }
    }

    $courses = check_input($_POST['courses']);
    if (!preg_match("/^[0-9_a-zA-Z ]*$/", $courses)) {
        $error['coursesErr'] = "Only letters, numbers and '_' allowed";
    }

    $careerObjective = check_input($_POST['careerObjective']);
    if (!preg_match("/^[0-9_a-zA-Z ]*$/", $careerObjective)) {
        $error['careerObjectiveErr'] = "Only letters, numbers and '_' allowed";
    }

    if (empty($_POST['availability'])) {
        $error['availabilityErr'] = "Availability Required";
    } else {
        $availability = check_input($_POST['availability']);
    }

    if (empty($_POST['typeOfJob'])) {
        $error['typeOfJobErr'] = "Full/Part Time Required";
    } else {
        $typeOfJob = check_input($_POST['typeOfJob']);
    }

    if (empty($_POST['typeOfJob'])) {
        $error['typeOfJobErr'] = "Full/Part Time Required";
    } else {
        $typeOfJob = check_input($_POST['typeOfJob']);
    }

    if (empty($_POST['rank'])) {
        $error['rankErr'] = "Self-assessment Required";
    } else {
        $rank = check_input($_POST['rank']);
    }

    if (empty($_POST['jTitle'])) {
        $error['jTitleErr'] = "Job Field Required";
    } else {
        $jTitle = check_input($_POST['jTitle']);
    }

    $otherJobTitle = check_input($_POST['otherJobTitle']);
    if (!preg_match("/^[0-9_a-zA-Z ]*$/", $otherJobTitle)) {
        $error['otherJobTitleErr'] = "Only letters, numbers and '_' allowed";
    }

    if (empty($_POST['salaryRange'])) {
        $error['salaryRangeErr'] = "Salary Range Required";
    } else {
        $salaryRange = check_input($_POST['salaryRange']);
    }

    if (empty($_POST['currency'])) {
        $error['currencyErr'] = "Currency Required";
    } else {
        $currency = check_input($_POST['currency']);
    }

    $workIn = check_input($_POST['workIn']);

    if (!$error) {
        $putData = $db->prepare("INSERT INTO hired_ts_info (id, uid, experiences, courses, career_objective,
        availability, type_of_job, rank, job_title, other_job_title, salary_range, currency, workIn)
        VALUE(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

        $putData->bind_param('iisssssssssss', $id, $uid, $experiences, $courses, $careerObjective, $availability,
            $typeOfJob, $rank, $jTitle, $otherJobTitle, $salaryRange, $currency, $workIn);

        if ($putData->execute()) {
            header("Location:?pid=4&pp=2&pps=technicalSummary&m=g");
        } else {
            echo "Error on executing";
        }
    } else {
        $error = array(
            "coursesErr" => "",
            "careerObjectiveErr" => "",
            "otherJobTitleErr" => "",
            "experiencesErr" => "",
            "availabilityErr" => "",
            "typeOfJobErr" => "",
            "rankErr" => "",
            "jTitleErr" => "",
            "salaryRangeErr" => "",
            "currencyErr" => "",
        );
    }
}
?>

仍然没有解决问题 1-现在代码正确提交并gos到我的数据库。 2-如果字段为空或不允许输入,则消息不再出现在字段下面 任何想法

1 个答案:

答案 0 :(得分:0)

您的脚本背后的原因是没有显示任何错误

你在else语句中为你的错误再次设置值为空;在这些行

else {
        $error = array(
            "coursesErr" => "",
            "careerObjectiveErr" => "",
            "otherJobTitleErr" => "",
            "experiencesErr" => "",
            "availabilityErr" => "",
            "typeOfJobErr" => "",
            "rankErr" => "",
            "jTitleErr" => "",
            "salaryRangeErr" => "",
            "currencyErr" => "",
        );
    }

在这一行中设置$ error Arrray的值,并将它们设置为空。 事情就是这样,即使您之前设置了数组值,但是当php到达这些行时,它会将这些值更改为您定义的空值,

例如,如果你有这样的代码

$x=4; 
$x=5;

即使你有相同的变量,但如果你echo $x;它会给你总是5因为这是$ x的最后一个值;

要更清楚地了解你应该做什么在else语句中的任何$ error数组中给出一些值,它会显示$ error

像这样

$error = array(
            "coursesErr" => "my name is spider man",
            "careerObjectiveErr" => "",
            "otherJobTitleErr" => "",
            "experiencesErr" => "",
            "availabilityErr" => "",
            "typeOfJobErr" => "",
            "rankErr" => "",
            "jTitleErr" => "",
            "salaryRangeErr" => "",
            "currencyErr" => "",
        );
    }

并且运行代码,它会向您显示该特定错误,而不是任何其他错误,因为您设置了它的值,

那么你现在应该怎么做,简单的选择是完全删除else语句,