0

在此先感谢您,我想阻止未登录的访问者访问某些页面,我知道我可以通过检查 SESSION_ 中的值并显示 HTML 部分来做到这一点

<?php  echo '<html>...</html>'; ?>

但是我的 html 内容很长,带有 '' 和 "" 文本分隔符,因为它不仅是 HTML,还有一些 JavaScript,所以我正在寻找另一种方法,而不是使用 ECHO 打印代码,在这种情况下我可以' t 混合 PHP 和 HTML 代码。我有任何解决方案或其他想法来保护非会员的页面以查看它,

我可以使用此代码将它们带回希望页面吗(?:

 <?php  header("Refresh: 0;url=http://index.php/");  ?>

它安全吗?

4

4 回答 4

0

所以我正在寻找另一种方法,而不是使用 ECHO 打印代码,

使用 [heredocs] 样式或打印 php 标签外的所有 HTML:

1- [heredocs]

echo <<<HEREDOCS
any string here ' or "
HEREDOCS;

注意:符号应该在每行的开头,并以换行符结束,没有任何空格或缩进。

2-分离逻辑

<?php
//here is php
//close php
?>
<html>
<head>
</head>
<body>
<p>This will also be ignored by PHP and displayed by the browser.</p> 
....
</body>
<?php
//php again
?>
于 2013-07-28T09:05:34.937 回答
0

您可能会做的是在文件开头检查会话变量,如果用户未登录,请使用 header('Location: index.php'); 后跟一个 exit();。如果您确实需要根据 echo 语句之后出现的逻辑发送标头并且无法更改语句的顺序,请使用输出缓冲。

此外,不要在代码文件中包含 HTML 和 Javascript,而是考虑使用模板引擎、使用 include 或 file_get_contents 和 echo 的组合(如果您使用内容占位符,还可能使用字符串替换)。Heredocs 和 Nowdocs 将更容易在字符串中包含单引号和双引号。

编辑:如果您只想向未经身份验证的用户显示错误消息,您可以将他们重定向到错误页面,或使用 PHP die(''); 语句(类似于 echo 和 exit 的组合)。

于 2013-07-28T09:37:30.880 回答
0

当您回显同时使用 ' 和 " 的代码时,您会转义与您的开始和结束标签匹配的字符,如下所示:

echo '<p class="someclass">This can\'t be the end.</p>';

或者

echo "<p class=\"someclass\">This can't be the end.</p>";
于 2013-07-28T09:16:22.327 回答
0

如果你担心 "&' 文本参数,你应该使用文本编辑器比如 sublime 来替换所有 " 到 '

对于 " 在 textarea 中,您可以替换为 "

然后做

echo " <a href='#' value='{$var1}'>双引号的意思是"</a>其他一些海量代码";

因此,您可以从页面开始到页面末尾使用 <?php 和 ?>

于 2013-07-28T09:25:29.943 回答