"Попинайте" мою гостевую книгу. [Не для впечатлительных]

Slugo

Новичок
Привет! Решил попрактиковаться, изучал php 3 дня (по Хольцнеру). Написал гостевую книгу: gbook.site90.net/
3 часа писал код, ещё 3 проводил отладку.
Хочу услышать замечания недочетов моего кода и советы. Спасибо.
Сорцы:
index.html
PHP:
<!DOCTYPE html>
<html>
	<head>
		<title>Гостевая книга</title>
		<link rel="stylesheet" href="style.css" type="text/css" />
	</head>
	<body>
		<div id="wrap">     <!-- Форма -->
				<form method="post" action="code.php">
					<textarea name="text" cols="50" rows="10"></textarea>
					<br />
					<br />
					<input name ="button" type="submit" value="Отправить" />
				</form>
			<div>
				<?php
					# Делаем массив из содержимого base.txt
					$file = fopen ("base.txt", "r"); //Открываю для чтения base.txt
					$base = fgets ($file); // В $base записываю строку из base.txt
					$base = explode ("/", "$base"); //После добавленного комментрия "косой чертой"
													//ставиться "косая черта"
													//Все комментарии записаны в одну строку!
					# Выводим комментарии, если они есть
					if (count ($base) != 0 ) 
					{
						foreach ($base as $value) 
							{
								echo "<p>$value</p><br />";
							}
					}
					else 
					{
						echo "Нет комментариев"; //Если база пуста
					}
					fclose ($file)
				?>
			</div>
		</div>
	</body>
</html>
code.php
PHP:
<?php
	$text = strip_tags ($_POST ["text"]); //Записываем текст из формы в $text
	$text = strip_tags ($_POST ["text"]); //Записываем текст из формы в $text
	$file = fopen ("base.txt", "a");//Открываем файл для записи, 
			              //помещаем указатель в конец строки
	fwrite ($file, "$text/"); //Записываем текст формы в base.txt и ставим на конце слэш
	fclose($file);
?>
 

С.

Продвинутый новичок
0. Что будет, если косая черта (не самый редкий символ) будет в тексте?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Надо использовать готовую базу данных, тот же mysql или postgres, а не имитировать ее странными доморощенными способами.
Если уж все хранится в файле в одной строке, и весь файл оттуда забирается сразу, то проще сразу сделать file_get_contents, а не мучать fopen/fgets/fclose
А вообще, прога слишком маленькая, тут особо нечего обсуждать.
 

Gibiskus

Новичок
вот где дата обновления или добавления, + 1 за использование бд
 

Slugo

Новичок
А как сделать ГК без испоьзования внешнего кода, ну чтобы страница с php сама себя изменяла/добавляла в конкретном месте? fwrite() вставляет строку лишь в начале или в конце содержания файла.
 

Slugo

Новичок
Почему не получается перейти от теории к практике? "Инструменты" есть, а использовать не могу!
 

Absinthe

жожо
Slugo мне показалось, что ты хочешь изменить php файл из php-файла.

Сейчас я понял, что ты не понимаешь, как работает сервер.

Нет никакой php-странички. Есть программа на сервере(твой php файл) и страничка на клиенте. Страничка на клиенте - это просто результат работы программы на сервере. Поэтому просто выводи своим php-скриптом то, что нужно. Без всяких fwrite.
 

Redjik

Джедай-мастер
php в подлиннике 4 ? там как раз на файлах гостевая была.
 

Redjik

Джедай-мастер
Молодец - тренируйся, вот тебе следующий этап дали, сделай через бд, после этого выдели в отдельный файл отображение.

Вообще, я на свои скрипты годовалой давности без слез не могу смотреть =)))
А у тебя даже форматирование есть =)
 

Фанат

oncle terrible
Команда форума
Я бы сделал так
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $text = strip_tags ($_POST ["text"]); //Записываем текст из формы в $text
  if ($text) {
    file_put_contents ("base.txt", $text."\n",FILE_APPEND);
  }
  header("Location: ".$_SERVER['REQUEST_URI']);
  exit;
} else {
  # Делаем массив из содержимого base.txt
  $base = file ("base.txt");
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Гостевая книга</title>
        <link rel="stylesheet" href="style.css" type="text/css" />
    </head>
    <body>
        <div id="wrap">     <!-- Форма -->
                <form method="post">
                    <textarea name="text" cols="50" rows="10"></textarea>
                    <br />
                    <br />
                    <input name ="button" type="submit" value="Отправить" />
                </form>
            <div>
<? foreach ($base as $value) : ?>
<p><?=$value?></p><br />
<? endforeach ?>
<? if (!$base) : ?>
Нет комментариев 
<? endif ?>
            </div>
        </div>
    </body>
</html>
Все на в одном скрипте, если это имелось в виду.
 

KorP

Новичок
а оценить что? как ты из книжки примеры переписал? ну тогда стоит книжку хотя бы до конца дочитать и появится 100500 идей как улучшить то что ты уже написал, а вот потом можно и дальнейшие советы спрашивать. ну имхо конечно


Вообще, я на свои скрипты годовалой давности без слез не могу смотреть =)))
Мне по определению стыдно за код который написал до сегодняшнего дня. И так каждый день… (с)
 
Сверху