2012-02-01 30 views
0

我有以下脚本,它从用户处获取数据并使用PHP写入文件。 我面临的问题是,当我使用“表单操作”指向页面时,页面被重定向,但脚本的其余部分未执行,这意味着没有新的数据写入文件,但是当我将表单操作留空时,数据被写入。 以下是代码:PHP页面获取重定向而不执行脚本的其余部分

<html> 
<body> 
    <form action="page.php" method="post"> 
     <input type="text" name="text_box"/> 
     <input type="submit" id="search-submit" value="submit" /> 
    </form> 
</body> 
</html> 
<?php 
if(isset($_POST['text_box'])) { //only do file operations when appropriate 
    $a = $_POST['text_box']; 
    $myFile = "t.txt"; 
    $fh = fopen($myFile, 'w') or die("can't open file"); 
    fwrite($fh, $a); 
    fclose($fh); 
} 
?> 
+1

我不明白。 – 2012-02-01 20:26:05

+1

您发布的代码是'page.php'吗?另外,'size ='不是有效的HTML属性。 – 2012-02-01 20:26:07

+0

不,这是index.php,我正在将它指向page.php。另外 我已经删除了大小参数。 – Pink 2012-02-01 20:29:00

回答

1

PHP不会自动保存它。您需要提交表单,然后用给定的数据执行。

此外,你的fopen使用'w'截断该文件,然后写入它。因此,每次保存时,新数据都不会附加到结尾,它会替换当前数据。

另外,这个文件叫'page.php'吗?我可以用代码考虑的唯一其他解决方案是将PHP代码移到文件顶部,在<html>之前。

+0

这个文件是Index.php,是的,我正在提交表单。正如你在代码中看到的,当我将表单动作留空时。数据被写入文本文件。 – Pink 2012-02-01 20:32:59

0

当有人提交表单时,它会将它们转换为'page.php'。无论该文件中的PHP是否被执行。上述文件中的任何PHP(即不在page.php中)都不会被执行 - 它永远不会被读取。

撇开:我会检查一个像Yii或CodeIgniter这样的PHP框架来帮助你。为您处理很多这些问题。

1

您正在将表单提交到page.php,但您的表单处理逻辑位于index.php。那是什么导致你的问题。

要么提交到index.php而不是page.php,要么只是将表单处理逻辑移动到page.php

+0

我想从index.php中获取数据并将其写入文本文件,稍后我将其导向处理书面文本文件的新页面page.php。现在,当我离开表单操作时,空白数据被写入,但是当它被导向到page.php时,它不会被写入 – Pink 2012-02-01 20:40:07

+1

您不明白PHP如何工作。PHP在将页面发送到服务器端的客户端之前运行。它完全运行,然后将输出发送到客户端。如果你不提交表单,脚本显然不会运行。如果您将表单提交到与您需要的脚本不同的页面,该表单将不会运行(因为信息会发送到其他页面)。 – 2012-02-01 20:41:54

相关问题