PHP评论系统已经崩溃
我的语法有问题。我不知道如何完成以下内容。我建立了一个会员系统,允许观众注册、登录和查看我的网站。我想建立一个评论系统,这样人们就可以评论东西了。我已经建立了一个测试评论系统,它在没有用户信息的情况下运行良好。但是,如果我试图像为我的用户系统构建其他页面一样构建一个页面,并包含我的评论系统,那么它会因为语法错误而崩溃。我的意思不是说这些内容不会共存,它们是,但是这些内容与其他内容冲突,并且发布的评论不包括从mysql数据库检索到的用户信息,我不能定义用户可以在不修改其他帖子的情况下编辑其帖子或删除其帖子的排名,管理员应该能够做到这一切。我不知道出了什么问题,也不知道如何解决。我已准备好以您的方式发送信息,但我不知道您可能需要什么,所以如果您需要,我将发布任何您需要的信息PHP评论系统已经崩溃,php,mysql,html,system,comments,Php,Mysql,Html,System,Comments,我的语法有问题。我不知道如何完成以下内容。我建立了一个会员系统,允许观众注册、登录和查看我的网站。我想建立一个评论系统,这样人们就可以评论东西了。我已经建立了一个测试评论系统,它在没有用户信息的情况下运行良好。但是,如果我试图像为我的用户系统构建其他页面一样构建一个页面,并包含我的评论系统,那么它会因为语法错误而崩溃。我的意思不是说这些内容不会共存,它们是,但是这些内容与其他内容冲突,并且发布的评论不包括从mysql数据库检索到的用户信息,我不能定义用户可以在不修改其他帖子的情况下编辑其帖子或删
<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
$person = $_SESSION['person'];
$rank = $_SESSION['rank'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Guestbook 2 | Harley's Digital Portfolio</title>
</head>
<body>
<?php
//connect to member database and retrieve user information
require("./connect2.php");
$query = mysql_query("SELECT * FROM users WHERE username='$username' ");
$numrows = mysql_num_rows($query);
if ($numrows == 1){
$row = mysql_fetch_assoc($query);
$username = $row['username'];
$fullname = $row['fullname'];
$fullname = $row['fullname'];
$fullname = $row['fullname'];
$rank = $row['rank'];
if (!$fullname){
$person = $username;
$_SESSION['person'] = $person;
}
else
$person = $fullname;
$_SESSION['person'] = $person;
}
mysql_close();
?>
<?php
//Connect to the database
require("./connect.php");
//Page Header
echo "<h2>Guestbook | Harley's Digital Portfolio</h2> Welcome $person, you are ranked as: $rank. <a href='./postguestbook.php'>Post Comment</a> <br/>";
$query = mysql_query("SELECT * FROM guestbook ORDER BY id DESC");
$numrows = mysql_num_rows($query);
if($numrows > 0){
while ($row = mysql_fetch_assoc($query)){
$dbid = $row['id'];
$dbname = $row['name'];
$dbemail = $row['email'];
$dbmessage = $row['message'];
$dbtime = $row['time'];
$dbdate = $row['date'];
$dbip = $row['ip'];
$id = $dbid;
$name = $dbname;
$message = $dbmessage;
$time = $dbtime;
$date = $dbdate;
$message = nl2br($message);
$form = "<form action='./guestbook2.php' method='post'><div>
By $id <b>$name</b> at <b>$time</b> on <b>$date</b> $removebutton <br/>
$message
</div> <hr/></form>";
echo "$form";
}
}
else
echo "No posts found.";
$removebutton = "<input type='submit' name='removebtn' value='X'/>";
if ($_POST['removebtn']){
mysql_query("SELECT * FROM guestbook WHERE id='$id'");
mysql_query("DELETE FROM guestbook WHERE id='$id'");
echo "Message Removed.";
}
//Disconnect from database
mysql_close();
?>
</body>
</html>
上面是my guestbook2.php,下面是postguestbook.php:
<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
$person = $_SESSION['person'];
$rank = $_SESSION['rank'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Post to Guestbook | Harley's Digital Portfolio</title>
</head>
<body>
<?php
//connect to member database and retrieve user information
require("./connect2.php");
$query = mysql_query("SELECT * FROM users WHERE username='$username' ");
$numrows = mysql_num_rows($query);
if ($numrows == 1){
$row = mysql_fetch_assoc($query);
$username = $row['username'];
$rank = $row['rank'];
if (!$fullname){
$person = $username;
$_SESSION['person'] = $person;
}
else
$person = $fullname;
$_SESSION['person'] = $person;
}
mysql_close();
?>
<?php
//Connect to the database
require("./connect.php");
//Page Header
echo "<h2>Post to Guestbook | Harley's Digital Portfolio</h2>";
if ($_POST['postbtn']){
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
if ($name && $email && $message){
if ( (strlen($email) >= 7) && (strstr($email, "@")) && (strstr($email, "."))){
// add to the database
$time = date("h:i A");
$date = date("F d, Y");
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO guestbook VALUES ('', '$name', '$email', '$message', '$time', '$date', '$ip')");
echo "You message was posted successfully, <a href='./guestbook2.php'>Go back to Comments</a>";
}
else
echo "You did not enter a valid email address.";
}
else
echo "You did not enter all the required info.";
}
echo "<form name='postmessage' action='./postguestbook.php' method='post'>
<table>
<tr>
<td>Name:</td>
<td><input type='text' name='name' style='width: 200px;'/></td>
</tr>
<tr>
<td>Email</td>
<td><input type='text' name='email' style='width: 200px;'/></td>
</tr>
<tr>
<td>Message:</td>
<td><textarea name='message' style='width: 200px; height: 200px;'></textarea></td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='postbtn' value='Post'/></td>
</tr>
</table>
</form>";
//Disconnect from database
mysql_close();
?>
</body>
</html>
没有错误,只是不会出现。。在我尝试实现我的用户系统之前,它是单独工作的,现在我无法让它进入用户可以编辑或删除其帖子的位置,管理员可以完成所有工作
谢谢你看这篇文章并回答。
哈雷不太清楚你的问题,因为你的描述有点模糊。以下是一些观察结果: guestbook2.php- 从未定义$removebutton。这是什么 回声$形式;这是不必要的。只是附和$form;如果必须在php中回显html。在您的情况下,因为您正在运行所有php内联,所以您应该脱离php?>并将普通html放在条件语句中。通过这种方式,它更具可读性,您不必逃避斜杠
if ($_POST['removebtn']){
mysql_query("SELECT * FROM guestbook WHERE id='$id'");
mysql_query("DELETE FROM guestbook WHERE id='$id'");
echo "Message Removed.";
}
这没有道理。您正在查询留言簿,对结果不做任何处理,然后删除?为什么不干脆删除呢?在任何情况下,都不会检查是否定义了$id,除非$numrows大于零,否则在本例中不会这样做。仅此一点就可能导致问题,因为您应该引用$\u POST['id'],至少这样您就不能只引用$id的最后一个实例
您也不应该使用盲目接受的会话变量运行查询。查看mysql\u real\u escape\u字符串,以帮助防止在信任$\u会话变量、get post或用户可以欺骗的任何其他变量时出现可怕的安全漏洞
同样,我也不知道您的整个问题是什么,因为我自己看不到错误,也不知道您从代码中得到了什么,所以这些只是一些指针,可能至少是问题的一部分。我想首先感谢所有发布了有帮助的答案或评论的人,但我修复了我的错误。以下是发生的情况: 在我将我的成员系统实现到一个只使用名称变量而不是用户变量的已构建注释系统中之后,它不会从数据库中检索用户信息。这是第一个错误,看到你输入你的名字、电子邮件和信息,它就会发布。又好又容易。现在,当我将name变量更改为username变量时,MYSQL数据库没有使用正确的用户名信息进行更新,当您第一次进入评论页面时,应该收集到正确的用户名信息,因此使用了if username和userid函数 错误的数字是试图把所有的东西都放在一个屋檐下。因为while循环正在干扰,所以工作得不太好。我所做的是重写整个页面,从成员系统内容开始,然后将其构建为多个标记。这修复了我没有看到的检索错误,因为没有可检索的内容。完成后,我创建了一个名为delete.php的单独页面,该页面将连接到数据库,当您按下remove按钮时,它将打开$removelink=remove;变量在delete.php中是
<?php
require("./connect2.php");
$removeid = $_GET['id'];
mysql_query("DELETE FROM comments WHERE id='$removeid'");
header("location: comments.php");
?>
然后将从数据库中删除帖子并返回主页。一切正常,一切正常。我已经修复了所有的页面,如果有人想知道我是怎么做到的,请不要犹豫给我发电子邮件。我很乐意提供帮助。您能分享您的问题中的代码吗?您能提供一些代码以便有人能发现您的语法错误吗?请复制您收到的错误并粘贴到这里。还包括错误中提到的代码行和周围的行。它将在错误消息中给出行号。请注意,您说有语法错误,没有错误。是哪一个?如果是语法错误,确切的错误是什么?没有语法错误的实际帖子,但是在我的代码行的某个地方,我把事情搞砸了,表面上看起来还可以,但是奥利奥饼干的填充物不见了。