所以我试图只使用php和html来构建一个简单的评论系统。我可以登录用户并发表评论,但编辑评论不起作用。
所以我将发布的评论保存在txt文件中,格式为:
User|commentSignature|commentContent
其中comment signature是commentContent的子字符串。 然后,当用户登录时,我在表单文本中显示他的评论,这样他就可以提交该表单并轻松编辑它们。
以下是编辑评论的表单:
$line = trim($line);
$commentString= 'Comment';
$arr = explode("|", $line, 3);
// This doesent work
// It is about editing comments
if (isset($_SESSION['user']) and $_SESSION['user'] == $arr[0]) { ?>
<form action="editComment.php" method="POST">
<textarea rows="10" cols="30" name="commentContent"> <?php echo "Here is youre old comment: " . $arr[2] ?></textarea>
<br />
<input type="hidden" name="oldCommentSignature" value= "<?php echo $arr[1]; ?>">
<input type="submit" value="Edit"> <br />
</form>
因为你可以看到我发送一个隐藏值oldCommentSignature,以便能够找到我将覆盖的评论。
到目前为止,我打印了$ _POST和$ _SESSION值并且它们已被发送,但我在editComment.php中的覆盖方法无效。
<?php session_start();
print_r($_POST); print_r($_SESSION);
$handle = fopen ( "save.txt", "r+" ); if ($handle &&
isset($_SESSION['user']) && $_POST) {
while ( ($line = fgets ( $handle )) !== false ) {
$line = trim($line); $arr = explode("|", $line, 3);
//$compareValue = $arryOfLine[1];
if ($_POST["oldCommentSignature"] == $arr[1]) {
$newCommentSignature = substr($_POST ["commentContent"], 0, 9);
$nameAndTimeAndContent = $_SESSION['user'] . "|" .
$newCommentSignature . "|" . $_POST ["commentContent"] . "\n";
fwrite($handle, $nameAndTimeAndContent);
break;
}
}
} fclose ( $handle );
?>
有时没有发生任何事情,有时我会得到消息
注意:未定义的偏移量:第16行的/Applications/XAMPP/xamppfiles/htdocs/tr/editComment.php中的1 *