我试图使用php制作讨论区。使用代码,所有用户名,数据和&时间和注释存储在代码中指定的data.txt文件中;但是,我无法获得data.txt中的内容以显示在页面上。我想我的代码中的echo()部分可能有问题,或者分隔符搞砸了。
<?php
$filename = "users.txt";
$delim="*@*";
if (isset($_POST['submit'])){
if (!($fp = fopen($filename, 'a+'))) {
echo("Error: Could not open $filename for writing.");
}
else{
$thePost=$_POST['post'];
$username=$_POST['uname'];
date_default_timezone_set('America/New_York');
$string=(date('c')."\n".$username."\n".$thePost."\n*@*");
fwrite($fp, $string);
$accounts = explode("\n", $theData);
fclose($fp);
}
}
?>
<html>
<body>
<h1> Discuss </h1> </br> </br>
<form method="post" action="discussion.php">
Name: <input name="uname" type="text" /> </br>
<textarea name="post" rows=4 cols=60>Add comment</textarea><br/>
<input type="submit" name="submit" value="Post Comment"/>
</form>
<?php
if (!($fp = fopen($filename, 'a+'))) {
echo("Error: Could not open $filename for writing.");
}
else{
fread($fp, filesize($filename));
$accounts = explode("*@*", $theData);
fclose($fp);
for ($i = 0; $i <count($accounts); $i++){
echo($i);
echo($accounts[$i]);
}
}
?>
</body>
</html>
我不确定我做错了什么/为什么用户/数据/时间/评论不会在页面上发布任何内容。谢谢!
答案 0 :(得分:0)
这对你有用。最后在$string
处插入了一个额外的换行符,否则下一行将附加到@的末尾。之后,只需在循环中的换行符上爆炸。您可能遇到的问题是帖子是否包含新行。您可能希望使用可能不会在帖子中出现的不同分隔符。将它放入数据库可能是一个更好的主意,但我不确定你究竟在做什么。但这应该可以为您提供所需的信息。
<?php
$filename = "users.txt";
$delim="*@*";
if (isset($_POST['submit'])){
if (!($fp = fopen($filename, 'a+'))) {
echo("Error: Could not open $filename for writing.");
}
else{
$thePost=$_POST['post'];
$username=$_POST['uname'];
date_default_timezone_set('America/New_York');
$string=(date('c')."\n".$username."\n".$thePost."\n*@*\n");
fwrite($fp, $string);
$accounts = explode("\n", $theData);
fclose($fp);
}
}
?>
<html>
<body>
<h1> Discuss </h1> </br> </br>
<form method="post" action="discussion.php">
Name: <input name="uname" type="text" /> </br>
<textarea name="post" rows=4 cols=60>Add comment</textarea><br/>
<input type="submit" name="submit" value="Post Comment"/>
</form>
<?php
if (!($fp = fopen($filename, 'a+'))) {
echo("Error: Could not open $filename for writing.");
}
else{
fread($fp, filesize($filename));
$accounts = explode("*@*", $theData);
fclose($fp);
for ($i = 0; $i <count($accounts); $i++){
$items = explode("\n", $accounts[$i]);
$date = $items[0];
$user = $items[1];
$post = $items[2];
}
}
?>
</body>
</html>