Новичек в РНР. Помогите найти ошибку в коде.

CyberSpace
На сайте с 17.09.2007
Offline
35
713

Это самый что ни есть обычный скрипт добавления сообщений на страницу.

Но не добавляет :) а в чем ошибка - разобраться не могу...Помогите пожалуйста


<html>
<body>
<center>Guest Book</center>
<?php
//Начало описания функции добавления записи в файл
function add($nick, $email, $message) // функция получает три значения - ник, и-мейл, сообщение
{

$content="<br><b>nick:</b>".$nick."<br><b>e-mail:</b>".$email."<br><b>Message:</b><br>".$message."<br><hr><br>"; // в переменную $content заносим данные с форм
if ($fp=@fopen('file.txt','a+')) // если файл открыт (если не открыт - открываем сразу же) для добавления, то
{
$result=file_put_contents($fp,"$content"); // результатом будет запись в него содержимого переменной $content
$fclose($fp); // закрываем файл
}

else // если файл невозможно открыть
{
echo 'ошибка в функции'; // выдем сообщение об ошибке
}

}
// Конец описания функции добавления записи в файл


// начало программы
if (count($HTTP_POST_VARS)>0) // если в глобальном массиве есть любые значения, то:
{
add($_POST["nickname"],$_POST["email"],$_POST["message"]); // передаем их функции добавления записи в файл (функция add)
if ($fp=@fopen('file.txt','r')) // и если файл открыт (если не открыт - открываем сразу же) для чтения
{
readfile('file.txt'); // читаем его в браузер
}

else // если файл невозможно открытть
{
echo 'Ошибка при попытке загрузки данных из глобального массива'; // выдем сообщение об ошибке
}
}
else // если в глобальном масиве нету значений, то просто выводим содержимое файла в браузер:
{
if ($fp=@fopen('file.txt','r'))
{
readfile('file.txt');
}

else
{
echo 'ошибка при обычной загрузке из файла';
}

}
?>
<br>
<center><form action="<?php echo htmlspecialchars($_SERVER[PHP_SELF]);?>" method="POST"> <!-- форма, которая отсылает данные текущей странице -->

nick: <input type="text" name="nickname" ><br>
e-mail: <input type="text" name="email"> <br>
message: <input type="text" name="message"><br>
<input type="submit" value="ok">
</form>></center>
</body>
</html>
-
На сайте с 07.12.2005
Offline
97
-K-
#1

Попробуй так:


<html>
<body>
<center>Guest Book</center>
<?php
//Начало описания функции добавления записи в файл
function add($nick, $email, $message) // функция получает три значения - ник, и-мейл, сообщение
{

$content="<b>nick:</b>".$nick."<br><b>e-mail:</b>".$email."<br><b>Message:</b><br>".$message."<br><hr><br><br />\r\n"; // в переменную $content заносим данные с форм
if ($fp=fopen('file.txt','a+')) // если файл открыт (если не открыт - открываем сразу же) для добавления, то
{
$result=file_put_contents($fp,$content); // результатом будет запись в него содержимого переменной $content
fclose($fp); // закрываем файл
}

else // если файл невозможно открыть
{
echo 'ошибка в функции'; // выдем сообщение об ошибке
}

}
// Конец описания функции добавления записи в файл


// начало программы
if (count($HTTP_POST_VARS)>0) // если в глобальном массиве есть любые значения, то:
{
add($_POST["nickname"],$_POST["email"],$_POST["message"]); // передаем их функции добавления записи в файл (функция add)
}
echo file_get_contents('file.txt');
?>
<br>
<center><form method="POST"> <!-- форма, которая отсылает данные текущей странице -->
nick: <input type="text" name="nickname" ><br>
e-mail: <input type="text" name="email"> <br>
message: <input type="text" name="message"><br>
<input type="submit" value="ok">
</form></center>
</body>
</html>
I
На сайте с 04.06.2007
Offline
61
#2
CyberSpace:
Это самый что ни есть обычный скрипт добавления сообщений на страницу.
Но не добавляет :) а в чем ошибка - разобраться не могу...Помогите пожалуйста

Нету тут ошибок, сделай error_reporting(E_ALL), убери значки @ и посмори че будет, скорее всего пермишены не те.

J
На сайте с 15.10.2007
Offline
15
#3


<html>
<body>
<center>Guest Book</center>
<?php
//Начало описания функции добавления записи в файл
function add($nick, $email, $message) // функция получает три значения - ник, и-мейл, сообщение
{

$content="<br><b>nick:</b>".$nick."<br><b>e-mail:</b>".$email."<br><b>Message:</b><br>".$message."<br><hr><br>"; // в переменную $content заносим данные с форм
if ($fp=@fopen('file.txt','a+')) // если файл открыт (если не открыт - открываем сразу же) для добавления, то
{
$result=fwrite($fp,$content); // результатом будет запись в него содержимого переменной $content
fclose($fp); // закрываем файл
}

else // если файл невозможно открыть
{
echo 'ошибка в функции'; // выдем сообщение об ошибке
}

}
// Конец описания функции добавления записи в файл


// начало программы
if (count($HTTP_POST_VARS)>0) // если в глобальном массиве есть любые значения, то:
{
add($_POST["nickname"],$_POST["email"],$_POST["message"]); // передаем их функции добавления записи в файл (функция add)
if ($fp=@fopen('file.txt','r')) // и если файл открыт (если не открыт - открываем сразу же) для чтения
{
readfile('file.txt'); // читаем его в браузер
}

else // если файл невозможно открытть
{
echo 'Ошибка при попытке загрузки данных из глобального массива'; // выдем сообщение об ошибке
}
}
else // если в глобальном масиве нету значений, то просто выводим содержимое файла в браузер:
{
if ($fp=@fopen('file.txt','r'))
{
readfile('file.txt');
}

else
{
echo 'ошибка при обычной загрузке из файла';
}

}
?>
<br>
<center><form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> <!-- форма, которая отсылает данные текущей странице -->

nick: <input type="text" name="nickname" ><br>
e-mail: <input type="text" name="email"> <br>
message: <input type="text" name="message"><br>
<input type="submit" value="ok">
</form>></center>
</body>

Так будет работать.

1. PHP_SELF надо было брать в кавычки в глобальном массиве $_SERVER

2. file_put_contents записывает в файл по имени. т.е. надо использовать либо fwrite либо file_put_contents("file.txt",$content)

Дао уплывает вдаль и возвращается с утренним ветром
CyberSpace
На сайте с 17.09.2007
Offline
35
#4

спасибо, попробую

--------------

Ура, заработало :)

Мой первый скрипт :D

CyberSpace
На сайте с 17.09.2007
Offline
35
#5

Подскажите пожалуйста еще принцип работы парсера ?

Мне надо отправить параметры сайту и получить результат.

J
На сайте с 15.10.2007
Offline
15
#6

Если ты имел в виду принцип действия робота на php, который парсит страницы сайтов, то в общих чертах это выглядит так

1. Робот формирует GET или POST запрос к интересующей странице сайта (при

необходимости проставляются также referrer и cookies)

2. Читает ответ удаленного http сервера

Самый просто и в то же время самый часто используемый вариант это

$f = file_get_contents("http://www.имя_сайта/index.html"); 

Если необходимо формировать POST запросы можно указать что-то вроде


$fp = fsockopen($urlinfo['host'],80);
fputs($fp, "POST ".$urlinfo['path']." HTTP/1.1\r\n");
fputs($fp, "Host: ".$urlinfo['host']."\r\n");
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($data) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);

while (!feof($fp))
$buf .= fgets($fp,128);

fclose($fp);

3. обрабатывает полученный результат

Тут обычно используются регулярные выражения для непосредственно парсинга. в php это функции preg_match, preg_match_all.

примеры использования и документации по регулярным выражениям есть тут

http://www.pcre.ru/

4. Ну а потом все это кладется например в базу данных

:)

CyberSpace
На сайте с 17.09.2007
Offline
35
#7

Большое спасибо уже как второй раз :) буду учиться

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий