Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Проблема с гостевой книгой РНР (https://javascript.ru/forum/server/11423-problema-s-gostevojj-knigojj-rnr.html)

Eugene 23.08.2010 10:55

Проблема с гостевой книгой РНР
 
Здравствуйте.
Написал форму гостевой книги


<form action="add_message.php" method ="POST">
              <p>ИМЯ : <font size=-2>(не более 100 символов)</font>:<br> 
  <input type="text" name="name_of_guest">
  </p>
              <p>&nbsp;</p>
              <p><br>
               СООБЩЕНИЕ: <font size=-2> (не более 5000 символов)</font>:<br>
                <textarea name ="message_of_guest" cols=40 rows=5></textarea>
                <br>
                
                <input type="submit" name ="okbutton" value="отправить">
              </p>
            </form>


после нее идет вывод сообщений из файла, чтение и т.д.


<?php
$f=fopen ("gost.txt", "rt") or die ("?? ???? ????????? ????");
while (!feof($f))
{ 
	$hide_line=fgets($f);
	$ip_=fgets($f);
	$data=fgets($f);
		echo "<small> ДАТА: </small>". $data ."<br>";
			$data=fgets($f);
		echo "<small> ИМЯ: </small>".$data."<br>";
			$data=fgets($f);
		echo "<small> СООБЩЕНИЕ: </small>	".$data."<br>";
	echo "<br>" ;	
}	
fclose($f);
?>


вроде бы должно работать правильно, но вместо работы на странице с формой выводится половина РНР кода, а именно:

"; $data=fgets($f); echo " ИМЯ: ".$data."
"; $data=fgets($f); echo " СООБЩЕНИЕ: ".$data."
"; echo "
" ; } fclose($f); ?>


Подскажите пожалуйста где ошибка, т.к. сам никак не могу найти.

Kolyaj 23.08.2010 11:26

PHP-то включен на сервере?

inGray 23.08.2010 11:53

похоже включен. Содержимое строки из файла после которой падает можно поглядеть? А именно содержимое переменной $ip_?

greatilya 23.08.2010 13:47

У вас PHP скрипт в файле *.php находится? (т.к. некоторые заносят код в *.html, сам по началу так баловался)

Gozar 23.08.2010 16:31

var_dump($data);

после строчки 7 :

Цитата:

Сообщение от Eugene (Сообщение 68309)
<?php
$f=fopen ("gost.txt", "rt") or die ("?? ???? ????????? ????");
while (!feof($f))
{ 
	$hide_line=fgets($f);
	$ip_=fgets($f);
	$data=fgets($f);


Eugene 23.08.2010 17:11

Первое:
РНР скрипт находится в том же HTML Файле что и сама форма, но неужели это может помешать
Второе:
как вы видите, к форме у меня прицеплен файл add_message.php в нем то и происходит запись данных вводимых пользователем в текстовый файл
И третье: Gozar а в чем смысл этой строки, я просто не очень понял её назначение

Eugene 23.08.2010 17:17

<?php
if (isset($_POST['okbutton']))
{
	if($_POST['name_of_guest']=='')
		exit("Введите имя!! <a href='guest.html'> НАЗАД </a>");
	
	if($_POST['message_of_guest']=='')
	{	
	echo "Введите текст сообщения!<a href='guest.html'> НАЗАД</a>";
	exit;
	
	}
	
	$name_of_guest=htmlspecialchars($_POST["name_of_guest"]);
	
	$message_of_guest=htmlspecialchars($_POST["message_of_guest"]);
	
	require_once('censura.php');
	
	$name_of_guest=substr($name_of_guest,0,100);
	$message_of_guest=substr($message_of_guest,0,5000);
	
	$message_of_guest=str_replace(chr(10),' ',$message_of_guest);
	$message_of_guest=str_replace(chr(13),' ',$message_of_guest);
	
	
	if (filesize("gost.txt")>0)
		$first_message=FALSE;
	else		
		$first_message=TRUE;
		
	$f=fopen("gost.txt","at") or die (" Не могу открыть файл");

	flock($f,2);
	if ($first_message==TRUE)
		fputs($f,"---------------\n");
	else
		fputs($f,"\n---------------\n");
		
	fputs($f,$_SERVER ['REMOTE_ADDR']."\n");
		
	fputs($f,date('d.m.y')."\n");
	
	fputs($f,$name_of_guest."\n");
	
	fputs($f,$message_of_guest);
	
	flock($f,3);
	
	fclose($f);
}	

header('location:guestbook.php');
?>


Если поможет - вот код второго файла прикрепленного к форме

Gozar 23.08.2010 19:56

Цитата:

Сообщение от Eugene (Сообщение 68340)
И третье: Gozar а в чем смысл этой строки, я просто не очень понял её назначение

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

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


Часовой пояс GMT +3, время: 11:14.