我正在编写一个必须与 SO 具有相同功能的网站。我的服务器使用 Litespeed,它提高了运行 php 文件的速度。
当我尝试以常规形式发送 php 代码时,一切似乎都很好,数据被发送到操作文件而不解释变量内的代码。但是,当我尝试使用 jQuery$.post
方法在评论文本区域中发送相同的数据时,我收到了Forbidden 403错误。Litespeed 服务器在路上阻止了数据。我不知道为什么会发生这种情况,为什么$_POST
在使用 ajax 时会自动评估数据?
这种情况并不是每次都会出现,只是在某些情况下才会出现,例如:
this is a new message which presents this php code: <?php mysql_query("SELECT * FROM my_table"); ?>
请注意,如果我从我的消息中删除<?php
and ,就可以了。?>
我已经尝试过使用encodeURI()
方法,但这并没有改变任何东西。
是否有任何设置必须应用于.htaccess
不自动评估 $_POST 数据?
或者我应该在发送评论之前替换打开和关闭标签?
稍后编辑
这就是我现在设法解决此问题的方法,但我仍在等待以下建议.htaccess
:
$but.prev('textarea').val().replace(/(<\?php)/gi,'-?php ').replace(/(<\?)/gi,'-? ').replace(/\?>/gi,' ?-');
在服务器端
str_replace(array('-?php','?-','-?'), array('`<?php','?>`','`<?'), $_POST['comment']);