Не работает скрипт комментариев PHP для сайта

0

Я изучаю веб-разработку из книги "PHP и MongoDB Web Development". Я наткнулся на эти инструкции для создания блога и добавления комментариев в него.

1) Откройте blog.php в текстовом редакторе и замените существующий код на него следующим:

<?php
$id = $_GET['id'];
try {
$connection = new Mongo();
$database
= $connection->selectDB('myblogsite');
$collection = $database->selectCollection('articles');
} catch(MongoConnectionException $e) {
die("Failed to connect to database ".$e->getMessage());
}
$article = $collection->findOne(array('_id' =>
new MongoId($id)));
?>
<!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" xml:lang="en"
lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
<link rel="stylesheet" href="style.css" />
<title>My Blog Site</title>
</head>
<body>
<div id="contentarea">
<div id="innercontentarea">
<h1><?php echo $article['title']; ?></h1>
<p><?php echo $article['content']; ?></p>
<div id="comment-section">
<h3>Comments</h3>
<?php if (!empty($article['comments'])): ?>
<h3>Comments</h3>
<?php foreach($article['comments'] as $comment):echo $comment['name'].' says...';?>
<p><?php echo $comment['comment']; ?></p>
<span>
<?php echo date('g:i a, F j', $comment['posted_at']->sec); ?>
</span><br/><br/><br/>
<?php endforeach;endif;?>
<h3>Post your comment</h3>
<form action="comment.php" method="post">
<span class="input-label">Name</span>
<input type="text" name="commenter_name" class="comment-input"/>
<br/><br/>
<span class="input-label">Email</span>
<input type="text" name="commenter_email" class="comment-input"/>
<br/><br/>
<textarea name="comment"vrows="5"></textarea><br/><br/>
<input type="hidden" name="article_id" value="<?php echo $article['_id']; ?>"/>
<input type="submit" name="btn_submit" value="Save"/>
</form>
</div>
</div>
</div>
</body>
</html>

2) Создайте файл comment.php со следующим кодом:

<?php
$id = $_POST['article_id'];
try {
$mongodb = new Mongo();
$collection = $mongodb->myblogsite->articles;
} catch (MongoConnectionException $e) {
die('Failed to connect to MongoDB '.$e->getMessage());
}
$article = $collection->findOne(array('_id' => MongoId($id)));
$comment = array('name' => $_POST['commenter_name'],'email' => $_POST['commenter_email'],'comment' => $_POST['comment'],'posted_at' => new MongoDate());
$collection->update(array('_id' => new MongoId($id)),array('push' => array('comments' => $comments)));
header('Location: blogs.php?id='.$id);
?>

3) Перейдите в blogs.php в своем браузере, нажмите ссылку "Подробнее" в верхней статье, чтобы прочитать ее полный контент на странице blog.php. Код для blogs.php выглядит следующим образом:

<?php
try {
$connection = new Mongo();
$database
= $connection->selectDB('myblogsite');
$collection = $database->selectCollection('articles');
} catch(MongoConnectionException $e) {
die("Failed to connect to database ".$e->getMessage());
}
$cursor = $collection->find();
?>
<!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" xml:lang="en"
lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8"/>
<link rel="stylesheet" href="style.css" />
<title>My Blog Site</title>
</head>
<body>
<div id="contentarea">
<div id="innercontentarea">
<h1>My Blogs</h1>
<?php while ($cursor->hasNext()):
$article = $cursor->getNext(); ?>
<h2><?php echo $article['title']; ?></h2>
<p>
<?php echo substr($article['content'], 0,
200).'...'; ?>
</p>
<a href="blog.php?id=<?php echo $article['_id'];
?>">Read more</a>
<?php endwhile; ?>
</div>
</div>
</body>
</html>

Когда я пытаюсь опубликовать комментарий, он перенаправляется на пустую страницу. Как заставить этот код работать?

  • 4
    Проверьте журналы PHP на наличие ошибок. Включите отчет об ошибках PHP, если он выключен. Пустая страница часто означает, что есть какая-то ошибка, но вам нужно выяснить, что и где эта ошибка.
Теги:
web
webpage

1 ответ

0

Прежде всего код в comment.php поместил следующее (только под тегом открытия PHP):

error_reporting(E_ALL);
ini_set('display_errors', 'On');

Это покажет вам ошибку, которая приведет к пустой странице и, надеюсь, поможет вам на вашем пути.

  • 0
    Это были ошибки: Устаревший: main (): класс Mongo устарел, используйте класс MongoClient в /var/www/html/comment.php в строке 6 Неустранимая ошибка: вызов неопределенной функции MongoId () в / var / www / html / comment.php в строке 11 Я пытался их исправить, но не смог. Можешь мне помочь?
  • 0
    Я никогда не работал с Mongo, но это дает понять, что используемый вами сценарий комментариев устарел.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню