2013-03-09 110 views
0

我有以下文件。出于某种原因,我的JavaScript(PHP '回声' 标签内)不工作:为什么我的Javascript不能使用PHP文件?

HTML(的index.php):

<form action="submit.php" method="post"> 
<div id="edit-box"> 
<INPUT type="submit" name="save-text" id="save-text" value="Save"> 
<textarea id="editor" name="editor"> 
<?php echo $content; ?> 
</textarea> 
</div> 
</form> 

PHP(submit.php):

<?php 

include('connect-db.php'); 

$submit_date = date("Ymd"); 
$content = mysql_real_escape_string(htmlspecialchars($_POST['editor'])); 
$ip_address = getRealIPAddress(); 

if ($content != '') { 
mysql_query("INSERT source SET submit_date='$submit_date', ip='$ip_address', content='$content'") 
or die(mysql_error()); 

// The following line is not working! I need help here! 
echo '<script type="text/javascript"> alert("Your file saved!");</script>'; 

mysql_close($connection); 
} 
?> 

的“submit.php”没有任何其他PHP或HTML脚本/标签。我知道我正在使用过时的PHP/MySQL API(而不是PDO/MySQLi),但那不是重点。

+0

@Pekka $'$ content = mysql_real_escape_string(htmlspecialchars($ _ POST ['editor']));' – 2013-03-09 21:08:56

+0

@Kolink我站好了。 – 2013-03-09 21:09:34

+0

值'内容'被正确保存,没有问题。但是,JavaScript(在回声标签内),由于原因不起作用。它好像根本没有到达那里! – 2013-03-09 21:09:38

回答

-1

试试下面的代码

<?php 

include('connect-db.php'); 

$submit_date = date("Ymd"); 
$content = mysql_real_escape_string(htmlspecialchars($_POST['editor'])); 
$ip_address = getRealIPAddress(); 
$content = $_POST["editor"]; 
if ($content != '') { 
mysql_query("INSERT source SET submit_date='$submit_date', ip='$ip_address', content='$content'") 
or die(mysql_error()); 

// The following line is not working! I need help here! 
echo '<script type="text/javascript"> alert("Your file saved!");</script>'; 

mysql_close($connection); 
} 
?> 
+0

你能解释你改变了什么吗? – 2013-03-09 21:10:34

+0

尝试打印$内容并查看首先获得的内容。 – 2013-03-09 21:10:56

+1

@Pekka웃:Vishnu绕过了'mysql_real_escape_string',为了解决这个问题,这实际上没有意义。毕竟,如果转义的字符串不包含任何数据,则无法插入,因此不需要消息。 – Zeta 2013-03-09 21:11:49

0

应该会打印警报。 确定您正在打印脚本?我可以看到它可能会在查询中的 错误中死掉。

如果不是的话,你包括的Connect-db.php中的东西, 它可能在你搞乱了 输出缓冲区所需文件的某处..

而且我敢肯定的SQL是不正确的:

INSERT source SET submit_date='$submit_date', ip='$ip_address', content='$content' 
INSERT INTO source (submit_date, ip, content) values('$submit_date','$ip_address','$content'); 

而且这不是一个安全的查询,但...这是题外话。

下面是一些原因,这可能发生:

  1. include("connect-db.php');可能会杀了脚本的执行。
    • 如果里面有什么问题。
  2. 该查询可能会死亡。
  3. 输出重定向到其他地方,在PHP配置, 或里面的“连接-db.php中”
  4. getRealIPAddress()不记录,并可能导致脚本打破。
  5. $_POST['editor']有可能是假的东西,可能会导致 SQL死亡。
+0

我已更新到上面提到的查询。 JS消息仍然没有显示出来。什么是安全查询?你可以使用上面的例子分享吗? – 2013-03-09 21:55:29

+0

如果你注释掉了mysql_query,那么正在执行的JavaScript呢? – 2013-03-09 21:59:23

+0

你说得对。即使在评论mysql_query行之后,JS也不会执行!任何想法可能会出错? PHP新手在这里。 – 2013-03-09 22:03:46

相关问题