2012-02-17 118 views
0

我的语法有问题。我不知道如何完成以下内容。我建立了一个会员系统,允许观众注册并登录并查看我的网站。我想制作一个评论系统,这样人们可以评论一些东西。我建立了一个测试评论系统,它似乎运行良好,没有用户信息。但是,如果我尝试为我的用户系统创建一个页面,并包含我的评论系统,则会由于语法错误而崩溃。我不是说喜欢不会共存,他们是,但与其他东西冲突并发表评论不包括从MySQL数据库检索到的用户信息,我不能定义行列,以便用户可以编辑他/她的帖子或删除他们的帖子,而不修改其他帖子,管理员应该能够做到这一切。我不知道出了什么问题或如何解决问题。我准备好以您的方式发送信息,但我不知道您可能需要什么,所以如果您要求,我会发布您需要的任何内容。上述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.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> 

的是我的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> 

没有任何错误,它只是不会出现..这另行制定之前,我试着实现我的用户系统,现在我无法将它移到用户可以编辑或删除他的帖子的位置,而管理员可以完成这一切。

感谢您查看本文并回答。
Harley

+0

你能分享你的问题的任何代码? – summea 2012-02-17 22:12:25

+0

你能提供一些代码,以便有人可以发现你的语法错误吗? – ppp 2012-02-17 22:12:42

+1

复制您收到的错误并将其粘贴到此处。还包括错误中提到的代码行(和周围行)(它会在错误消息中给出行号)。 – webbiedave 2012-02-17 22:14:34

回答

0

我首先要感谢所有发布有用答案或评论的人,但我解决了我的错误。以下是发生了什么事情:

将我的成员系统实现为仅使用名称变量而不是用户变量的已构建的评论系统后,它不会从数据库检索用户信息。这是第一个错误,看到你输入你的名字和电子邮件,然后邮件就会发布。好,易于。现在,当我将名称变量更改为用户名变量时,MYSQL数据库没有用正确的用户名信息进行更新,这些用户名信息在您首次进入评论页面时应该已经收集,因此用户名和用户ID功能也应该收集。

错误号码试图包括一切在一个屋檐下()。那并不好,因为while循环是干扰的。我所做的是重写从成员系统内容开始的整个页面,然后将其分离成多个标签。这固定了我没有看到的检索错误,因为没有任何检索。完成后,我创建了一个名为delete.php的单独页面,它将连接到数据库,当您按下删除按钮时,它将打开$ removelink =“Remove”;变量。在delete.php里面是

<?php 
require("./connect2.php"); 
$removeid = $_GET['id']; 
mysql_query("DELETE FROM comments WHERE id='$removeid'"); 
header("location: comments.php"); 
?> 

然后,它会从数据库中删除帖子并返回主页面。这一切正常,一切都很好。我已修复所有页面,如果有人想知道我是如何做的,请不要犹豫,给我发电子邮件。我会很乐意提供帮助。

0

不确定您的问题到底是什么原因导致您的描述有点模糊。这里的一些看法,但:

guestbook2.php -

$ removebutton从未定义。这是什么?

echo "$form";是不必要的。只需echo $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大于零,否则它不在这种情况下。这可能会导致问题,因为你应该至少引用$ _POST ['id'],所以你不能只是最后一个$ id的实例。

您不应该用盲目接受的会话变量来运行查询。查看mysql_real_escape_string()来帮助防止信任$ _SESSION变量中的可怕安全漏洞,获取帖子或其他用户可以欺骗的内容。

再次,我不知道你的整个问题是什么原因我看不到自己的错误,我不知道你从代码中得到什么,所以这些只是指针可能在问题的最小部分。