繁体   English   中英

HTML div中的PHP输出

[英]PHP Output in HTML div

我有一个包含以下代码段的PHP脚本:

function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}

function show_error($myError)
{
header('Location: http://provectium.com/error.html');
exit();
}

我有一个HTML代码(error.html),其中带有<div>来显示$myError 我怎样才能做到这一点?

我正在使用<?php echo $myError; ?> <?php echo $myError; ?>PHP脚本中,但是我想要一个单独的页面,因为它无法正常运行。

编辑

function show_error($myError)
{
?>
<!DOCTYPE html>
<html lang="en">
...
<?php echo $myError; ?>
...
</html>

<?php
exit();
}

这种方法也可以使用吗?

使用html文件,您可以在query_string上传递值:

header('Location: http://provectium.com/error.html?error_message=' . $myError);

并使用javascript在任意位置显示错误如果您使用php错误文件,则可以执行上述重定向之类的操作,并使用php进行显示

error.php

echo '<html><body><div>'.$_GET["error_message"].'</div></body></html>';

试图变得简单..

如果您希望遵循最佳实践,我强烈建议您坚持使用“模型-视图-控制器”方法。 然后,您的控制器会将数据传递到视图以处理呈现错误消息。

您可以为这些功能实现许多模板引擎。 TwigSmarty提供了简单的方法。 然后,您将创建简单的error.html作为模板(取决于模板语言)。

例如,使用twig,您可以编写模板文件:

//error.html.twig ...
<body>
    <div>
        {{ myError }}
    </div>
</body>
//...

在您的控制器中,您要求它呈现一个错误:

//index.php ...
if ($problem && strlen($data) == 0)
{
    render('error.html.twig', array("myError" => $myError));
}
//...

使用模板引擎提供了一种强大的方式来控制页面的外观以及它们如何随着动态数据而变化。

如果您想更好地了解模板引擎,或者想创建一个简单的模板引擎来实现自己的目标,那么也有很多有关模板引擎如何工作的信息丰富的教程。

对于诸如您这样的情况,通常使用一种称为Flash消息的机制。 它们的含义很容易将值传递给另一页,并且在第一次读取后将其删除。 Flash消息是使用会话或cookie实现的一种机制。

<?php

/**
 * This function set flash message
 * return true if messege set is succesed and false failed
 * 
 * @var string $message
 * @var int $expire -  default 1 hour 
 * return bool 
 */ 
function set_flash_message($message, $expire= 3600) 
{

  return  setcookie("message", $message, time()+ $expire); 

}

function get_flash_message()
{
  $result = isset($_COOKIE['message']) ? $_COOKIE['message'] : null);
  if($result){
    unset($_COOKIE['message']); // clear
  }
  return $result;
}

现在您可以设置名为函数set_flash_message($ problem)的消息并获取名为get_flash_message()的消息

UPDATE

function check_input($data, $problem='')
{
 $data = trim($data);
 $data = stripslashes($data);
 $data = htmlspecialchars($data);

 if ($problem && strlen($data) == 0)
 {
    set_flash_message($problem);
    show_error($problem);
 }
  return $data;
 }

function show_error($myError)
{
  header('Location: http://provectium.com/error.html');
  exit();
}

在文件error.php中

<!DOCTYPE html>
<html lang="en">
 ...
<?php echo get_flash_message(); // make sure this file must contain implement this function ?>
...
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM