2012-02-17 9 views
0

У меня проблема с моим синтаксисом. Я не знаю, как выполнить следующее. Я создал систему членов, которая позволяет зрителям регистрироваться и входить в систему и просматривать мой сайт. Я хотел создать систему комментариев, чтобы люди могли комментировать вещи. Я создал тестовую систему комментариев и, кажется, работает нормально, без информации пользователя. Однако, если я попытаюсь создать страницу так же, как и другие страницы для моей пользовательской системы, и включить мою систему комментариев, она ломается из-за синтаксической ошибки. Я не имею в виду, что они не будут сосуществовать, но конфликты с другими вещами и публикация комментария не включают извлеченную пользовательскую информацию из базы данных mysql, и я не могу определить ранги, где пользователь может редактировать свои/ее сообщение или удалить их сообщение без изменения других сообщений, и администратор должен иметь возможность сделать все это. Я понятия не имею, что пошло не так или как это исправить. Я готов отправить информацию по-вашему, но я понятия не имею, что вам может понадобиться, поэтому я отправлю вам все, что вам нужно, если вы попросите об этом.PHP система комментариев имеет Fallen Apart

<?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

+0

Можете ли вы предоставить какой-то код, чтобы кто-то мог определить вашу синтаксическую ошибку, пожалуйста? – ppp

+1

Скопируйте полученные вами ошибки и вставьте их здесь. Также укажите строки кода (и окружающие строки), которые указаны в ошибке (в сообщении об ошибке указывается номер строки). – webbiedave

ответ

0

Прежде всего я хотел бы поблагодарить всех, кто отправил ответ или комментарий, который был полезен, но я исправил свою ошибку. Вот что происходит:

Он не будет извлекать информацию пользователя из базы данных после того, как я выполнил свою систему-член в уже построенную систему комментариев, которая использовала только переменную имени, а не пользовательскую переменную.Это была ошибка номер один, видя, как вы вводите свое имя и адрес электронной почты и сообщение, тогда оно будет опубликовано. Легко и приятно. Теперь, когда я изменил переменную имени на переменную имени пользователя, база данных MYSQL не обновлялась с правильной информацией о имени пользователя, которая должна была быть собрана при первом входе на страницу комментариев, следовательно, функция имени пользователя и пользователя.

Номер ошибки, который пытался включить все под одной крышей(). Это не работает так хорошо, потому что цикл while вмешивался. То, что я сделал, - это переписать всю страницу, начиная с содержимого системы членов, а затем отстроить ее, разделив ее на несколько тегов. Это фиксировало ошибки поиска, которые я не видел, потому что ничего не удалось найти. После того, как это было завершено, я создал отдельную страницу с именем delete.php, которая будет подключаться к базе данных, и когда вы нажмете кнопку удаления, она откроет $ removeelink = «Удалить»; переменная. Внутри 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;, если вы ДОЛЖНЫ echo html в php. В вашем случае, поскольку вы используете все php inline, вы должны выйти из 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 vars, получить сообщение или любые другие, которые пользователь может обмануть.

Опять же, я не знаю, в чем причина вашей проблемы. Я не вижу ошибку самостоятельно, и я не знаю, что вы получаете от кода, так что это всего лишь указатели, которые могут быть в наименьшая часть проблемы.

Смежные вопросы