从一个页面跳转到另一个页面时提交的php验证

从一个页面跳转到另一个页面时提交的php验证,php,html,Php,Html,在这个程序中,当我单击submit按钮时,页面直接转到另一个页面2222.php。错误消息不会弹出。。我只想点击提交按钮时出现错误信息 php_validation.php <?php // Initialize variables to null. $nameError =""; $emailError =""; $genderError =""; $name = $email = $gender =""; // On submitting form below function wil

在这个程序中,当我单击submit按钮时,页面直接转到另一个页面2222.php。错误消息不会弹出。。我只想点击提交按钮时出现错误信息

php_validation.php

<?php
// Initialize variables to null.
$nameError ="";
$emailError ="";
$genderError ="";
$name = $email = $gender ="";
// On submitting form below function will execute.
if(isset($_POST['submit']))
{
if (empty($_POST["name"]))  //----------------------------------------------       -------------------------
{
$nameError = "Name is required";
} 
else 
{
$name = test_input($_POST["name"]);  
// check name only contains letters and whitespace
 if (!preg_match("/^[a-zA-Z ]*$/",$name)) 
 {
 $nameError = "Only letters and white space allowed";
 }
 //-----------------------------------------------------------------------

 }
if (empty($_POST["email"])) //----------------------------------------------    -------------------------
{
$emailError = "Email is required";
} 
else 
 {
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid or not
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) 
 {
 $emailError = "Invalid email format";
}
}
//-----------------------------------------------------------------------
if (empty($_POST["gender"])) 
{
$genderError = "Gender is required";
} 
else 
 {
 $gender = test_input($_POST["gender"]);
 }
 }
function test_input($data) 
{     
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
 }
?>

<h2>PHP Form Validation Example</h2>

<p><span class="error">* required field.</span></p>

<form method="post" name="myForm" action="2222.php"> 

 <p>First Name:
  <input type="text" name="fname"  id="fname" />
  <span class="error">* <?php echo $nameError;?></span>
 </p>
 <br><br>
 <p>
 Email: 
 <input type="text" name="email" id="email">
 <span class="error">* <?php echo $emailError;?></span>
 </p>
 <br><br> 
 <p>  
 Gender:
 <input type="radio" name="gender" value="female">Female
 <input type="radio" name="gender" value="male">Male
 <span class="error">*<?php echo $genderError;?></span><br><br />  
 </p>
 <input class="submit" type="submit" name="submit" value="Submit" >

 </form>
 </body>

PHP表单验证示例
*必填字段

名字: *



电邮: *



性别: 女性 男性 *

2222.php

 <?php
 $name =  $_POST['fname'];
 $email =  $_POST['email'];
 $radio =  $_POST['gender'];

 echo "<h2>Your Input:</h2>";
 echo "user name is: ".$name;
 echo "<br>";
 echo "user email is: ".$email;
 echo "<br>";
 echo "user is ".$radio;
 ?>

由于表单的操作是“2222.php”,在执行任何操作之前,单击submit按钮将自动重定向到2222.php


如果您想检查表单收到的内容,可以在“2222.php”中进行检查,然后将其重定向到php_validation.php,您可以执行以下操作之一:

  • 执行所有签入Javascript“onClick”函数

  • 对处理程序页面进行Ajax调用“onClick”,从该页面获取验证消息

  • 在“2222.php”页面上进行验证

  • 操作返回到同一页面(因为您在这里进行一些验证),并在“2222.php”页面上进行验证后重定向


  • 现在只取决于适合您的程序。

    所以我为您编写了一个快速代码:

    这是您的“php_validation.php”:

    
    
    我没有改变表格

    这就是您的“2222.php”:

    
    
    也没有更改此页面上的输出

    正如我之前所说,当你点击提交按钮时,这里是发生的事情:

  • 提交点击
  • 表单作为$u POST发送到2222.php,您将被重定向到此页面

  • 如果您的表单在进行检查的页面之外的其他页面上发布,则无法正常工作。

    如果您希望保持在同一页面上,可以将表单提交到iframe,因为处理脚本的结果将显示在iframe本身中

    例如:

    档案:

    • file-with-form.php
    • form-submit-processing-file.php
    代码示例:

    file-with-form.php

    
    [您的页面标题]
    PHP表单验证示例
    *必填字段

    名字: * 电邮: * 性别: 女性

    男性

    *

    作为:

    • [表单提交流程的路径]-用文件/控制器的URL替换的占位符->将处理传递的表单数据的操作
    • [*]-应替换为案例值的占位符
    form-submit-processing-file.php


    如果在没有重定向到
    2222.php的情况下出现错误,可以重定向回表单页面并显示错误。就像PHPmyadmin所做的那样,正在发生的事情和你期望发生的事情形成对比?当你说
    时,直接转到另一页2222.php
    ,你希望你的工作像ajax吗?当我点击提交按钮时,它会重定向到另一个页面,因为我的所有字段都是空的,并且没有显示任何错误。可能的重复事实上,我的问题是当任何字段为空或错误时,点击提交按钮时不会显示内联错误消息。。页面重定向到2222.phpYeah,正如我所说的,表单已提交,您的错误检查不会执行,因为页面会自动重定向到2222.php,并且除了发送$u POST var之外,不会从“php\u validation.php”执行任何其他操作,尝试将您的支票切换到2222.php,您应该会收到错误提示,但在2222.pagethanx上使用验证代码时不会发生任何事情。抱歉,在2222.pagethanx上使用验证代码时不会发生任何事情,以获取您的建议@Plamen Boychev。。我肯定会使用您建议的框架…非常欢迎@DineshGawande,如果您面临一些问题,并且无法找到解决方案,我很乐意提供帮助,如果这是我力所能及的:)
    <?php
    
    //Init error var
    $nameError = '';
    $emailError = '';
    $genderError = '';
    
    //Did we have an error ?
    if(isset($_GET['error'])){
    
        //Split error return into an array
        $errorList = explode('_', $_GET['error']);
    
        //Verify every possible error
        if(in_array('name',$errorList)){
            $nameError = 'Please enter your name<br>';
        }
    
        if(in_array('email',$errorList)){
            $emailError = 'Please enter your email<br>';
        }
    
        if(in_array('gender',$errorList)){
            $genderError = 'Please enter your gender';
        }
    }
    
    
    ?>
    
    <?php
    $error ='';
    
    function test_input($data) 
        {     
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
     }
    
    
    //When we receive data
    if(isset($_POST)){
    
        //Verify all possible data and set error
         if(!empty($_POST['fname'])){
            $name =  test_input($_POST['fname']);
         }else{
            $error .= 'name_'; 
         }
    
         if(!empty($_POST['email'])){
            $email =  test_input($_POST['email']);
         }else{
            $error .= 'email_';
         }
         if(!empty($_POST['gender'])){
            $radio =  test_input($_POST['gender']);
         }else{
            $error .= 'gender_';
         }
    
         //if we have an error then redirect to form with error
         if(!empty($error)){
            header("Location:php_validation.php?error=".$error);
         }
    }
     ?>
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>[Your page title]</title>
    </head>
    <body>
        <h2>PHP Form Validation Example</h2>
        <p><span class="error">* required field.</span></p>
    
        <!-- Form -->
        <form action="[path-to-form-submit-process]" method="[GET|POST]" 
              target="form-processor">
            <div>
                <label>First Name:
                    <input type="text" name="fname"  id="fname" />
                    <span class="error">* <?php echo $nameError ?></span>
                </label>
            </div>
            <div>
                <label>Email:
                    <input type="text" name="email" id="email">
                    <span class="error">* <?php echo $emailError ?></span>
                </label>
            </div>
            <div>
                <label>Gender:
                    <p><input type="radio" name="gender" value="female"> Female</p>
                    <p><input type="radio" name="gender" value="male"> Male</p>
                    <p><span class="error">*<?php echo $genderError ?></span></p>
                </label>
            <input class="submit" type="submit" name="submit" value="Submit" >
            </div>
        </form>
    
        <!-- The iframe to submit the form to -->
        <iframe name="form-processor" id="form-processor" 
                src="[path-to-form-submit-process]"></iframe>
    
        <!-- 
        NOTE: The error message spans are left there just because you had them 
        in your code, those will not work here at this point, actually depending 
        on your php configuration will most probably throw errors/warnings, 
        because such variables were not defined at all...
        -->
    </body>
    </html>
    
    <?php 
    
    # Processing the form fields and displaying the messages
    $post = $_POST;
    
    # Preprocessing the passed data
    // Here you would filter out data from the $_POST superglobal variable
    
    # Validating the passed data
    // Check if the data entries, e.g.
    // Flag for error risen - does not let the process to be completed
    $invalidFormData = false;
    $messages = [];
    
    function addErrorMessage($message, &$messages, &$errorFlag)
    {
        $errorFlag = true;
        $errorMessageTemplate = '<p class="error-message">{message}</p>';
        array_push($messages, str_replace('{message}', $message, 
            $errorMessageTemplate));
    }
    
    // Validating the email
    $email = array_key_exists('email', $post) 
        ? $post['email']
        : null;
    
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        // Raising the flag for an error on validation
        addErrorMessage("$email is not a valid email address", $messages, $invalidFormData);
    }
    
    // ........
    // validation of rest of fields
    // ........
    
    $internalError = false;
    # Some business logic after the validation, recording more messages etc.
    try {
        // ........
    } catch (Exception $e) {
        $internalError = true;
    }
    
    # Stop execution on internal error
    if ($internalError === true) 
    { 
        ?>
        <h2>Sorry, there's an error on our side... we'll do all in our 
            powers to fix it right away!</h2>
        <?php
        exit;
    }
    
    # Displaying the results
    if ($invalidFormData === true) {
        // Building errors message
        $messagesHeading = '<h2>There were problems submitting your data. :/</h2>';
    } else {
        $messagesHeading = '<h2>Your data was successfully submitted! Yay!</h2>';
    }
    
    // Placing the heading in front of other messages
    array_unshift($messages, $messagesHeading);
    
    // Displaying the messages:
    echo implode('', $messages);