重定向到同一页面后显示成功消息的最佳方法是什么?我一直在考虑用javascript做这个,但也许有办法用Php做到这一点?用户从 profile.php 提交并被重定向到同一页面。我想抓一个变量......我可以在$_SERVER['HTTP_REFERER']
之后连接吗?什么是最好的方法?
这里有一段代码:query.php
$stmt->execute() or die(mysqli_error($db));
if($stmt){
// echo "Data Submitted succesfully";
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
}
$stmt->close();
$db->close();
}
答案 0 :(得分:1)
您可以使用会话。只需启动会话,将消息保存在全局数组$_SESSION
中,然后在profile.php
中检查$_SESSION
是否设置了您的密钥并且它不为空显示它。之后,您可以在$_SESSION
中取消设置密钥。
<强> query.php 强>
<?php
session_start();
//your code
if($stmt) {
$_SESSION['myMessage'] = 'Some message';
//your code
}
//rest of your code
<强> profile.php 强>
<?php
session_start();
//your code
if(isset($_SESSION['myMessage']) && $_SESSION['myMessage'] !== '') {
//display message or do with it what you want
}
//rest of code
答案 1 :(得分:1)
您可以跳过会话,并将url查询参数作为代码或消息传递。
$stmt->execute() or die(mysqli_error($db));
if($stmt){
// echo "Data Submitted succesfully";
header('Location: ' . $_SERVER['HTTP_REFERER'] . '?message=success1');
exit;
}
$stmt->close();
$db->close();
}
然后有代码检查$ _GET ['message] ...... etc
答案 2 :(得分:0)
如果您在同一页面处理表单,则无需进行任何重定向。 达到预期结果的解决方案将是这样的:
->execute()
语句的状态,并在代码的稍后位置使用相同的变量。所以代码就像这样:
// Declare a boolean variable at the beginning
$status = false;
// your code
$status = $stmt->execute();
$stmt->close();
$db->close();
}
if($status){
// Data submitted succesfully
}else{
// Data couldn't get submitted
}
答案 3 :(得分:0)
如果要在同一文件中处理表单,则无需再次重定向到同一页面。
正如其他答案所述,您处理页面顶部的表单。
要在成功或失败后显示消息,请将消息存储在变量中。稍后如果设置了,则回显消息变量。
// Check if form was submitted
if(isset($_POST['submit'])) { // I name the submit button "submit"
// process the form
if ($stmt->execute()) {
$message = "<div> Success </div>";
} else {
$message = "<div> Failed </div>";
}
}
// Display The form and the message if not empty
if (! empty($message)) {
echo $message;
}
// Form