【问题标题】:How to redirect user to the same HTML page, but with an error message [php]?如何将用户重定向到相同的 HTML 页面,但出现错误消息 [php]?
【发布时间】:2014-10-18 14:05:55
【问题描述】:

我有一个有两个输入的表单。用户填写表单并单击提交后,这些输入将与 MySQL 表数据进行比较。

我想要做的是:当用户在表单中点击提交时,它会将用户重定向到THE SAME PAGE,但带有一条消息。

如果用户的输入与表中的数据匹配,那么Message应该是

“您的输入与数据库匹配”

如果用户的输入不匹配,则消息应该是相反的。

到目前为止,这是我的代码。同样,我需要知道的是,在按下提交按钮后,我如何保持在同一页面中。

$sql1 = " SELECT `Numero Cedula` FROM Teste WHERE `Numero Cedula`=$numero_cedula
and `Id`=$integer "   ;

$objGet = mysqli_query($con, $sql1);


if( mysqli_num_rows($objGet) > 0 ) {
    echo "Your input matches the database";
} else {
    echo "Your input does not match the database";` 
}

【问题讨论】:

标签: php mysql


【解决方案1】:

不要重定向使用 AJAX。这是一个示例,您可以将其扩展为包括错误的字段(不建议)或包括剩余的尝试次数等。无论您需要什么。

AJAX;

$.post('yourUrl', $('yourForm').serialize(), function (data) {
$result = parseJSON(data);
//append your message somewhere
$('body').append($result.message);
$('body').append('You have ' + $result.numberOfTries + ' Left');   
}

PHP;

if (//your validation is good!)
{  
 //redirect to your stuffs
}
else
{ 
  echo json_encode(array(
                         'successful'=>false, 
                         'message'=>'Sorry, Those Details Are Incorrect',
                         'numberOfTries'=>$triesLeft,
                         )
                   ); 
};

【讨论】:

    【解决方案2】:

    或者,您可以在这种情况下设计(某种)闪存会话行为。提交后,在会话中设置消息。然后在重定向后回显它,然后简单地取消设置它。

    粗略的例子:

    session_start();
    $current_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    
    if(isset($_POST['submit'])) { // upon submission
        $sql1 = "SELECT `Numero Cedula` FROM Teste WHERE `Numero Cedula` = $numero_cedula and Id = $integer";
        $objGet = mysqli_query($con, $sql1);
        if( mysqli_num_rows($objGet) > 0 ) {
            $_SESSION['msg'] = "Your input matches the database";
        } else {  
             $_SESSION['msg'] = "Your input does not match the database";  
        }
    
        header('Location: ' . $current_url);
         exit;
    }
    
    
    if(isset($_SESSION['msg'])) {
        echo '<div class="message">' . $_SESSION['msg'] . '</div>';
        unset($_SESSION['msg']);
    }
    

    旁注:也使用准备好的语句。

    【讨论】:

    • OP 没有正确缩进代码。它被重新编辑,我把它改成了它应该的样子。 交叉手指 ;)
    • @Fred-ii- 哦,好吧,我明白了,列名,谢谢,实际上,在回答这个问题时,我不知道该空间是否真的是它的一部分。谢谢弗雷德
    • 不客气。是的,我知道因为 OP 昨天发布了另一个问题,其中 OP 没有对包含空格 stackoverflow.com/q/26435616 的列名使用反引号 - 我给出了答案;这就是我记得的原因。
    • @Fred-ii- ahh,继续。好的,我现在明白了,确实是反引号
    【解决方案3】:
    if( mysqli_num_rows($objGet) > 0 ) {
        echo "<script>alert('Your input matches the database')</script>";
    }
    else {
        echo "<script>alert('Your input does not match the database')</script>";` 
    }
    

    【讨论】:

    • 请添加解释解决方案的描述
    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 2014-03-05
    • 2013-04-14
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2014-08-27
    • 2012-01-02
    相关资源
    最近更新 更多