Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在使用页眉()重新加载页面后,使用echo()写入文本_Php_If Statement_Header_Echo - Fatal编程技术网

Php 在使用页眉()重新加载页面后,使用echo()写入文本

Php 在使用页眉()重新加载页面后,使用echo()写入文本,php,if-statement,header,echo,Php,If Statement,Header,Echo,我有一个名为account\u settings.php的页面,它包括更改密码、更改个人资料pic、更改用户详细信息(姓名、简历等)。我的问题是如何在使用标题()重定向页面后使用echo()编写消息 大概是这样的: if (true) { Do_Some_MySQL(); header("Location: account_settings.php"); echo "Success!"; } else { echo "Error!"; } 感谢您的回复。;-)

我有一个名为
account\u settings.php
的页面,它包括更改密码、更改个人资料pic、更改用户详细信息(姓名、简历等)。我的问题是如何在使用
标题()重定向页面后使用
echo()
编写消息

大概是这样的:

if (true) 
{
    Do_Some_MySQL();
    header("Location: account_settings.php");
    echo "Success!";
}
else
{
    echo "Error!";
}

感谢您的回复。;-)

我会使用会话变量: 在重定向页面上:

<?php
@session_start();

if(true){
   $_SESSION['success'] = 1;
   header("Location: account-settings.php");
}
?>

和on-account-settings.php:

<?php
@session_start();

if(isset($_SESSION['success'])){
   echo "Success!";
   unset($_SESSION['success']);
}

刚重定向后,您无法回显任何内容。浏览器已经在处理重定向到另一个页面的请求,因此不再需要显示消息。你似乎在寻找一种叫做闪光信息的东西。您可以在会话中设置临时消息,并将其显示在新页面上。例如,在您的
account\u settings.php
页面中:

// Make sure you have an actual session
if (!session_id()) {
    session_start();
}

if (true) {
    Do_Some_MySQL();
    $_SESSION['flashMessage'] = 'Success!';
    header('Location: account_settings.php');
}
然后在account_设置的模板文件中,检查是否有任何flash消息并相应地显示(并取消设置以避免循环):


在发送
位置
标题后,实际上无法执行某些操作-这是不可能的

相反,您可以使用
$\u SESSION
数组值来执行任务。比如:

if (true) 
{
  Do_Some_MySQL();
  $_SESSION['message'] = 'Error!';
  header("Location: account_settings.php");
}

else
{
  echo "Error!";
}
然后在您的帐户上_setting.php:

<?php echo $_SESSION['message'] ?>
在同一页上:

<?php if($error) echo $error; ?>


另外,如果您还没有在这两个页面上添加
session\u start()

这些人是正确的……重定向后不能发送标题。虽然我认为这是一个有益的选择。在标题中发送GET请求并在接收页面上处理。他们建议使用$会话变量,但您可以使用GET变量。例:

    if (true) 
{
    //Do_Some_MySQL();
    header("Location: account_settings.php?message=success");
    //above has GET var message = Success
}
else
{
    header("Location: account_settings.php?message=error");
}
在您的帐户_settings.php页面上有以下代码:

if (isset($_GET['message'])) {
    $message = $_GET['message'];
    if ($message == "success") {
         echo "Success";
    } else {
         echo "Error";
    }
}
这样就不需要常量会话变量。给你足够的灵活性

header("Location: account_settings.php?message=No%20results%20found");
//%20 are URL spaces. I don't know if these are necessary.
如果需要,可以添加多个

header("Location: account_settings.php?message=error&reason=No%20Results&timestamp=" . Date());
然后account_settings.php可以是:

if (isset($_GET['message'])) {
    $message = $_GET['message'];
    $reason = $_GET['reason'];
    $time = $_GET['timestamp'];
    if ($message == "success") {
         echo "Success";
    } else {
         echo "Error: <br/>";
         echo "Reason: $reason";
    }
}
if(isset($\u GET['message'])){
$message=$_GET['message'];
$reason=$_GET['reason'];
$time=$\u获取['timestamp'];
如果($message==“success”){
呼应“成功”;
}否则{
回显“错误:
”; 回应“原因:$Reason”; } }

但是记住GET会在浏览器URL中公开您的消息。所以不要发送敏感信息,除非你保护它。希望这能有所帮助。

如果重定向,则无法执行此操作!要显示什么标题?如果使用
位置
标题重定向到其他页面,则无法从原始页面生成任何进一步的输出。一种选择是使用JavaScript重定向方法。你不能
header()
位置一起使用:
会将您重定向到另一个页面,因此您不能在页面后面显示内容。第二种特殊情况是“位置:”标题。它不仅将此标头发送回浏览器,而且还将重定向(302)状态代码返回到浏览器,除非已设置201或3xx状态代码。如果我将成功和错误字符串保存到会话中也不起作用?此解决方案似乎不错,但当我离开此页面并返回时,成功或错误文本仍然存在。然后在加载页面后尝试刷新成功/错误消息变量。或者只需将它们设置为
$message=NULL
header("Location: account_settings.php?message=error&reason=No%20Results&timestamp=" . Date());
if (isset($_GET['message'])) {
    $message = $_GET['message'];
    $reason = $_GET['reason'];
    $time = $_GET['timestamp'];
    if ($message == "success") {
         echo "Success";
    } else {
         echo "Error: <br/>";
         echo "Reason: $reason";
    }
}