Система комментариев PHP распалась - PullRequest
0 голосов
/ 18 февраля 2012

У меня проблема с моим синтаксисом.Я не знаю, как выполнить следующее.Я построил систему членства, которая позволяет зрителям регистрироваться, входить в систему и просматривать мой сайт.Я хотел создать систему комментирования, чтобы люди могли комментировать вещи.Я построил тестовую систему комментирования, и она, кажется, работает нормально без информации о пользователе.Однако, если я пытаюсь создать страницу так же, как другие страницы для моей пользовательской системы, и включаю мою систему комментирования, она выходит из строя из-за синтаксической ошибки.Я не имею в виду, что они не будут сосуществовать, они есть, но вещи конфликтуют с другими вещами, и публикация комментария не включает извлеченную информацию пользователя из базы данных 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>

Выше мой 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

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

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

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

Ошибка номер, чтобы пытался включить все под одной крышей (). Это не сработало, потому что цикл 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 голосов
/ 18 февраля 2012

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

guestbook2.php -

$ removebutton никогда не определяется. Что это?

echo "$form"; не требуется. Просто echo $form;, если вы ДОЛЖНЫ отображать HTML в php. В вашем случае, так как вы запускаете все встроенные 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, постам или любым другим, которые пользователь также может подделать.

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

...