Удомельский форум   ◊
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум

Вернуться   Удомельский форум > Hard&Soft > Программирование > PHP
Справка Пользователи Календарь Сообщения за день
 
 
Опции темы Опции просмотра
Старый 13.07.2007, 14:59   #21
CGI
Новичок
 
Регистрация: 23.06.2007
Сообщений: 7
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию re:

Цитата:
Сообщение от Ruble
так и не удалось посмотреть эту книгу.
Книгу написали Дмитрий Котеров и Алексей Костарев - респект этим людям )
Жаль, что у меня нет электронной версии книги, а то слил бы . Но на форуме который идет как дополнее книге есть все и даже больше. с того же сайта можно слить исходники кода приведенного в книге. На форуме где то видел, что парень пытался прикрутить Perl к дензверю, да это возможно сделать но возникает резонный вопрос, а зачем ? ну вообщем это форум из разряда тех, что у вас есть вопросы и вы туп... как пробка , но все равно мы вам все расскажем разжуем и покажем !
CGI вне форума  
Старый 13.07.2007, 16:23   #22
Ruble
Местный
 
Аватар для Ruble
 
Регистрация: 26.04.2006
Сообщений: 467
Вы сказали Спасибо: 57
Поблагодарили 52 раз(а) в 23 сообщениях
Отправить сообщение для Ruble с помощью ICQ
По умолчанию

Цитата:
Сообщение от CGI
Книгу написали Дмитрий Котеров и Алексей Костарев - респект этим людям )
Жаль, что у меня нет электронной версии книги, а то слил бы . Но на форуме который идет как дополнее книге есть все и даже больше. с того же сайта можно слить исходники кода приведенного в книге. На форуме где то видел, что парень пытался прикрутить Perl к дензверю, да это возможно сделать но возникает резонный вопрос, а зачем ? ну вообщем это форум из разряда тех, что у вас есть вопросы и вы туп... как пробка , но все равно мы вам все расскажем разжуем и покажем !
я её читал. Не впечатлила.
вот она в электронном виде http://download.openlib.org.ua/1219561

Последний раз редактировалось Ruble; 13.07.2007 в 16:31.
Ruble вне форума  
Старый 14.07.2007, 04:51   #23
CGI
Новичок
 
Регистрация: 23.06.2007
Сообщений: 7
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
Сообщение от Ruble
я её читал. Не впечатлила.
Спорить не буду. Книга отражает стиль программирования данных людей !
Цитата:
Сообщение от info.txt
Авторы непосредственно участвовали в разработке пятой версии РНР, поэтому Вы получите наиболее полные и достоверные сведения из первых рук. Руководство адресовано как профессиональным Web-разработчикам, желающим в кратчайшие сроки начать использование новых возможностей РНР 5, так и новичкам, владеющим лишь базовыми навыками программирования и не знакомым с РНР. Вы получите сведения о функционировании Web-серверов, конфигурировании сервера Apache, интерактивной отладке Web-сценариев и сборке исполняемого модуля РНР в ОС Unix. Изучите синтаксис и стандартные функции языка. Научитесь работать с формами, файлами, СУБД MySQL, регулярными выражениями, графикой, почтой, сессиями. Освоите новые возможности, появившиеся в пятой версии языка: работу с XML-документами, обьектно-ориентированное программирование, технику использования исключений. Благодаря компонентному подходу к созданию сценариев, описанному в книге, Вы сможете создавать эффективные и легко расширяемые сайты. С книгой тесно связан сайт, информация на котором постоянно обновляется.
Рассматриваются основы функционирования Web-серверов, сборка исполняемого модуля РНР в ОС Unix, инструментарий Wеb-разработчика (в том числе утилиты отладки сценариев), синтаксис и стандартные функции языка. Приведено описание функций РНР для работы с массивами, файлами, СУБД MySQL, регулярными выражениями формата PCRE, графическими примитивами, почтой, сессиями и т. д. Особое внимание уделено новым возможностям языка по работе с XML-документами, объектно-ориентированному программированию, а также подходам к отделению PHP-кода от HTML-шаблонов сайта.
CGI вне форума  
Старый 22.06.2008, 20:13   #24
Malish aka 78
Местный
 
Аватар для Malish aka 78
 
Регистрация: 22.06.2007
Сообщений: 256
Вы сказали Спасибо: 13
Поблагодарили 113 раз(а) в 48 сообщениях
По умолчанию

Цитата:
Сообщение от Ruble Посмотреть сообщение
Гостевая книга
часть первая.
Сообщения гостевой книги будут храниться в текстовом файле (messages.dat).
Одно сообщение - одна строка, т.е.
ДАТА<split>ИМЯ<split>СООБЩЕНИЕ
ДАТА<split>ИМЯ<split>СООБЩЕНИЕ
ДАТА<split>ИМЯ<split>СООБЩЕНИЕ

<split> - это разделитель, нужен он что бы мы в программе могли отделить ДАТУ от ИМЕНИ и от СООБЩЕНИЯ : ) он может быть любым.

...кусь...

Во второй части добавим функциональность ввода сообщения от пользователя.
Попробывал дописать этот скрипт, что бы можно было добавлять сообщения. Вот что у меня получилось (ногами не пинать):

PHP код:
<?
$html_output=''; //переменная в которой будем собирать весь HTML код, для последубщего вывода
$messages = file('messages.dat'); // Читаем весь файл с сообщениями в переменную $messages

for($i=0;$i<=count($messages)-1;$i++)  //проходим по всему массиву с сообщениями
{
    $mess = split('<split>',$messages___91;$i___93;); // разбиваем  сообщение по разделителю "<split>" на дату,имя и сообщение
    $html_output.=sprintf('
    <tr>
        <td><b>%s</b><br>%s</td>
        <td><i>%s</i></td>
    </tr>',$mess___91;1___93;,$mess___91;0___93;,$mess___91;2___93;);
    //здесь значения даты,имени и сообщения форматируются HTML тэгами, для форматированного вывода в броузере

}

?>
<html>
<head>
<title>
Гостевая книга v1.1
</title>
</head>
<body>
<table width="100%" border="1" cellpadding="10" cellspacing="1">
<tr>
    <td>
        <form method="POST" action="index.php">
            <b><font face="Tahoma" size="2">Имя:</font>
            </b><input type="text" name="name" size="29"><p>
            <textarea rows="9" name="text" cols="51"></textarea></p>

        <input type="submit" value="Отправить" name="knopka">
            </form>
<?php
    
if(isset($_POST___91;'knopka'___93;))
        {
$handle fopen("messages.dat""a");
        
$spl "<split>";
        
$date date("F j, Y, g:i a");
        
$name $_POST___91;'name'___93;;
        
$text $_POST___91;'text'___93;;
        
$zapisat ="$date $spl $name $spl $text \n";
        
fwrite($handle,$zapisat);
        
fclose($handle);
        }

?>

        </td>
</tr>
<tr>
    <td align="center">
        <table cellpadding="5" cellspacing="5">
        <?=$html_output?> <!-- выводим  все сообщения -->
        </table>

    </td>
</tr>
</table>
</body>
</html>
__________________
---
Malish aka 78 вне форума  
Старый 23.06.2008, 08:41   #25
Ruble
Местный
 
Аватар для Ruble
 
Регистрация: 26.04.2006
Сообщений: 467
Вы сказали Спасибо: 57
Поблагодарили 52 раз(а) в 23 сообщениях
Отправить сообщение для Ruble с помощью ICQ
По умолчанию

Цитата:
Сообщение от Malish aka 78 Посмотреть сообщение
Попробывал дописать этот скрипт, что бы можно было добавлять сообщения. Вот что у меня получилось (ногами не пинать):

PHP код:
<?
$html_output=''; //переменная в которой будем собирать весь HTML код, для последубщего вывода
$messages = file('messages.dat'); // Читаем весь файл с сообщениями в переменную $messages

for($i=0;$i<=count($messages)-1;$i++)  //проходим по всему массиву с сообщениями
{
    $mess = split('<split>',$messages___91;$i___93;); // разбиваем  сообщение по разделителю "<split>" на дату,имя и сообщение
    $html_output.=sprintf('
    <tr>
        <td><b>%s</b><br>%s</td>
        <td><i>%s</i></td>
    </tr>',$mess___91;1___93;,$mess___91;0___93;,$mess___91;2___93;);
    //здесь значения даты,имени и сообщения форматируются HTML тэгами, для форматированного вывода в броузере

}

?>
<html>
<head>
<title>
Гостевая книга v1.1
</title>
</head>
<body>
<table width="100%" border="1" cellpadding="10" cellspacing="1">
<tr>
    <td>
        <form method="POST" action="index.php">
            <b><font face="Tahoma" size="2">Имя:</font>
            </b><input type="text" name="name" size="29"><p>
            <textarea rows="9" name="text" cols="51"></textarea></p>

        <input type="submit" value="Отправить" name="knopka">
            </form>
<?php
    
if(isset($_POST___91;'knopka'___93;))
        {
$handle fopen("messages.dat""a");
        
$spl "<split>";
        
$date date("F j, Y, g:i a");
        
$name $_POST___91;'name'___93;;
        
$text $_POST___91;'text'___93;;
        
$zapisat ="$date $spl $name $spl $text \n";
        
fwrite($handle,$zapisat);
        
fclose($handle);
        }

?>

        </td>
</tr>
<tr>
    <td align="center">
        <table cellpadding="5" cellspacing="5">
        <?=$html_output?> <!-- выводим  все сообщения -->
        </table>

    </td>
</tr>
</table>
</body>
</html>
Молодец.
Только нельзя доверять тому что шлют с внешнего мира на сервер.
Предлагаю добавить addslashes для защиты от специально составленных символов и htmlspecialchars для защиты от взлома дизайна сюда:
$name = htmlspecialchars(addslashes($_POST['name']));
$text = htmlspecialchars(addslashes($_POST['text']));
, так же могут подменить POST значение , предлагаю добавить после условия "if(isset($_POST['knopka']))", ещё одно условие на проверку значения $_POST['knopka'], т.е. if(addslashes($_POST['knopka'])==="Отправить")
Ruble вне форума  
Старый 27.06.2008, 00:09   #26
Malish aka 78
Местный
 
Аватар для Malish aka 78
 
Регистрация: 22.06.2007
Сообщений: 256
Вы сказали Спасибо: 13
Поблагодарили 113 раз(а) в 48 сообщениях
По умолчанию

Цитата:
Сообщение от Ruble Посмотреть сообщение
Молодец.
Только нельзя доверять тому что шлют с внешнего мира на сервер.
Предлагаю добавить addslashes для защиты от специально составленных символов и htmlspecialchars для защиты от взлома дизайна сюда:
$name = htmlspecialchars(addslashes($_POST['name']));
$text = htmlspecialchars(addslashes($_POST['text']));
, так же могут подменить POST значение , предлагаю добавить после условия "if(isset($_POST['knopka']))", ещё одно условие на проверку значения $_POST['knopka'], т.е. if(addslashes($_POST['knopka'])==="Отправить")
Спасибо за подсказку. Щас проблема состоит в следующем. Когда я вбиваю в поля name и text и посылаю их на запись в файл, то почему то у меня это сообщение в гостевой книге не появляется сразу. (((

PHP код:
<?
$html_output=''; //переменная в которой будем собирать весь HTML код, для последубщего вывода
$messages = file('messages.dat'); // Читаем весь файл с сообщениями в переменную $messages

if(isset($_POST___91;'knopka'___93;))
        {if(addslashes($_POST___91;'knopka'___93;)==="Отправить")
        {$handle = fopen("messages.dat", "a");
        $spl = "<split>";
        $date = date("F j, Y, g:i a");
        $name = htmlspecialchars(addslashes($_POST___91;'name'___93;));
        $text = htmlspecialchars(addslashes($_POST___91;'text'___93;));
        $zapisat ="$date $spl $name $spl $text \n";
        fwrite($handle,$zapisat);
        fclose($handle);
        }}

for($i=0;$i<=count($messages)-1;$i++)  //проходим по всему массиву с сообщениями
{
    $mess = split('<split>',$messages___91;$i___93;); // разбиваем  сообщение по разделителю "<split>" на дату,имя и сообщение
    $html_output.=sprintf('
    <tr>
        <td><b>%s</b><br>%s</td>
        <td><i>%s</i></td>
    </tr>',$mess___91;1___93;,$mess___91;0___93;,$mess___91;2___93;);
    //здесь значения даты,имени и сообщения форматируются HTML тэгами, для форматированного вывода в броузере
}
?>
<html>
<head>
<title>
Гостевая книга v1.1
</title>
</head>
<body>
<table width="100%" border="1" cellpadding="10" cellspacing="1">
<tr>
    <td>
        <form method="POST" action="index.php">
            <b><font face="Tahoma" size="2">Имя:</font>
            </b><input type="text" name="name" size="29"><p>
            <textarea rows="9" name="text" cols="51"></textarea></p>
        <input type="submit" value="Отправить" name="knopka">
        </form>
    </td>
</tr>
<tr>
    <td align="center">
        <table cellpadding="5" cellspacing="5">
        <?=$html_output?> <!-- выводим  все сообщения -->
        </table>
    </td>
</tr>
</table>
</body>
</html>
__________________
---
Malish aka 78 вне форума  
Старый 27.06.2008, 00:45   #27
Malish aka 78
Местный
 
Аватар для Malish aka 78
 
Регистрация: 22.06.2007
Сообщений: 256
Вы сказали Спасибо: 13
Поблагодарили 113 раз(а) в 48 сообщениях
По умолчанию

Всё разобрался в чём дело. У меня сначала файл считывался, а потом я в него информацию добавлял и поэтому эта инфа только после следующего обновления появлялась. Немного ещё код переделал:

PHP код:
<html>
<head>
<title>
Гостевая книга v1.2
</title>
</head>
<body>
<table width="100%" border="1" cellpadding="10" cellspacing="1">
<tr>
    <td>
        <form method="POST" action="index.php">
            <b><font face="Tahoma" size="2">Имя:</font>
            </b><input type="text" name="name" size="29"><p>
            <textarea rows="9" name="text" cols="51"></textarea></p>
        <input type="submit" value="Отправить" name="knopka">
        </form>
    </td>
</tr>
<tr>
    <td align="center">
        <table cellpadding="5" cellspacing="5">
<?
if(isset($_POST___91;'knopka'___93;))
        {if(addslashes($_POST___91;'knopka'___93;)==="Отправить")
        {$handle = fopen("messages.dat", "a");
        $spl = "<split>";
        $date = date("F j, Y, g:i a");
        $name = htmlspecialchars(addslashes($_POST___91;'name'___93;));
        $text = htmlspecialchars(addslashes($_POST___91;'text'___93;));
        $zapisat ="$date $spl $name $spl $text \n";
        fwrite($handle,$zapisat);
        fclose($handle);
        }}
$messages = file('messages.dat');
 for($i=0;$i<=count($messages)-1;$i++)  //проходим по всему массиву с сообщениями
{
   list($time, $user, $body) = split('<split>',$messages___91;$i___93;); // разбиваем  сообщение по разделителю "<split>" на дату,имя и сообщение

echo   "<tr>";
echo   "<td><b>$time</b><br>$user</td>";
echo   "<td><i>$body</i></td>";
echo   "</tr>";
    //здесь значения даты,имени и сообщения форматируются HTML тэгами, для форматированного вывода в броузере
}
?>
        </table>
    </td>
</tr>
</table>
</body>
</html>
__________________
---
Malish aka 78 вне форума  
Старый 30.06.2008, 01:15   #28
Malish aka 78
Местный
 
Аватар для Malish aka 78
 
Регистрация: 22.06.2007
Сообщений: 256
Вы сказали Спасибо: 13
Поблагодарили 113 раз(а) в 48 сообщениях
По умолчанию

С Гостевой книгой более менее разобрались.
Меня всё мучает вопрос, как же сделать так что бы, когда было написанно допустим более 10 сообщений в гостевой книге, они разделялись на сраницы?
__________________
---
Malish aka 78 вне форума  
Этот пользователь сказал Спасибо Malish aka 78 за это полезное сообщение:
Ruble (30.06.2008)
Старый 30.06.2008, 22:48   #29
Ruble
Местный
 
Аватар для Ruble
 
Регистрация: 26.04.2006
Сообщений: 467
Вы сказали Спасибо: 57
Поблагодарили 52 раз(а) в 23 сообщениях
Отправить сообщение для Ruble с помощью ICQ
По умолчанию

Цитата:
Сообщение от Malish aka 78 Посмотреть сообщение
С Гостевой книгой более менее разобрались.
Меня всё мучает вопрос, как же сделать так что бы, когда было написанно допустим более 10 сообщений в гостевой книге, они разделялись на сраницы?
посчитать сколько всего сообщений и поделить на 10 ) получишь округлённо количество страниц)
Ruble вне форума  
Старый 02.07.2008, 02:09   #30
Malish aka 78
Местный
 
Аватар для Malish aka 78
 
Регистрация: 22.06.2007
Сообщений: 256
Вы сказали Спасибо: 13
Поблагодарили 113 раз(а) в 48 сообщениях
По умолчанию

Цитата:
Сообщение от Ruble Посмотреть сообщение
посчитать сколько всего сообщений и поделить на 10 ) получишь округлённо количество страниц)
вот как у меня получилось, вроде всё работает. Если где есть ошибки, подскажи.

PHP код:
<html>
<head>
<title>
Гостевая книга v1.1
</title>
</head>
<body>
<table width="100%" border="1" cellpadding="10" cellspacing="1">
<tr>
    <td>
        <form method="POST" action="index.php">
            <b><font face="Tahoma" size="2">Имя:</font>
            </b><input type="text" name="name" size="29"><p>
            <textarea rows="9" name="text" cols="51"></textarea></p>
        <input type="submit" value="Отправить" name="knopka">
        </form>
    </td>
</tr>
<tr>
    <td align="center">
        <table cellpadding="5" cellspacing="5">
<?
if(isset($_POST___91;'knopka'___93;))
        {if(addslashes($_POST___91;'knopka'___93;)==="Отправить")
        {$handle = fopen("messages.dat", "a");
        $spl = "<split>";
        $date = date("F j, Y, g:i a");
        $name = htmlspecialchars(addslashes($_POST___91;'name'___93;));
        $text = htmlspecialchars(addslashes($_POST___91;'text'___93;));
        $zapisat ="$date $spl $name $spl $text \n";
        fwrite($handle,$zapisat);
        fclose($handle);
        }}
$messages = file('messages.dat');
$nm=count($messages);
if(!isset($page))
 {$page = 0; }

 for($i=$page*10;$i<$page*10+10;$i++)  //проходим по всему массиву с сообщениями
{
if($i>$nm-1) { break;}
   list($time, $user, $body) = split('<split>',$messages___91;$i___93;); // разбиваем  сообщение по разделителю "<split>" на дату,имя и сообщение

echo   "<tr>";
echo   "<td><b>$time</b><br>$user</td>";
echo   "<td><i>$body</i></td>";
echo   "</tr>";
    //здесь значения даты,имени и сообщения форматируются HTML тэгами, для форматированного вывода в броузере
}
?>
       </table>
<center>
<?
$pages = $nm/10;
if($nm<10)
    {echo"";}
else
 {
     for($i=0;$i<$pages;$i++)
   {
      if(($i)!=$page)echo "___91;<a href=\"index.php?page=$i\">".($i+1)."</a>___93; ";
      else echo "<b><i>".($i+1)."</b></i>"." ";
   }
 }
?>
</center>
    </td>
</tr>
</table>
</body>
</html>
__________________
---
Malish aka 78 вне форума  
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 05:37. Часовой пояс GMT +3.


Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot