Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Прошу дать справедливую оценку

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: Ури Геллер   (10.02.2010 в 14:33)   письмо автору
 
   для: Ури Геллер   (06.02.2010 в 18:25)
 

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

  Ответить  
 
 автор: Ури Геллер   (06.02.2010 в 21:48)   письмо автору
 
   для: .heed   (06.02.2010 в 21:15)
 

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


<?php

include "./inc.php";

$id intval($_GET["id"]);
$comment_id intval($_GET["comment_id"]);


switch (
$act) {
    case 
"add":
        if (!
file_exists("./data/comments/$id")) {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> попытка добавления комментария к несуществующей записи!<br>";
            
Bot();
            die();
        }
        else if (
$_POST["code"] !== $_SESSION["code"]) {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> неверный проверочный код!<br>";
            
Bot();
            die();
        }
        else if (
trim($_POST["name"]) === "") {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> вы не указали имя!<br>";
            
Bot();
            die();
        }
        else if (
trim($_POST["body"]) === "") {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> вы не ввели сообщение!<br>";
            
Bot();
            die();
        }
        
$f fopen("./data/comments/$id""rb+");
        
flock($fLOCK_EX);
        
fseek($f0SEEK_END);
        
$str.= pack("L"time());
        
$str.= pack("A$comment_name_size"substr(strip_tags(trim($_POST["name"])), 0$comment_name_size));
        
$str.= pack("A$comment_body_size"substr(strip_tags(trim($_POST["body"])), 0$comment_body_size));
        
$str.= pack("A$comment_ans_size""");
        
fwrite($f$str);
        
flock($fLOCK_UN);
        
fclose($f);
        
header("Location: ./entry.php?act=read&id=$id");
        die();
        break;
    case 
"edit":
        include 
"./admin.php"// защита страницы
        
$f fopen("./data/comments/$id""rb+");
        if (
$_POST["send"]) {
            
flock($fLOCK_EX);
            
fseek($f$comment_id * ($comment_name_size $comment_body_size $comment_ans_size) + 4);
            
$str.= pack("A$comment_name_size"substr(strip_tags($_POST["name"]), 0$comment_name_size));
            
$str.= pack("A$comment_body_size"substr(strip_tags($_POST["body"]), 0$comment_body_size));
            
$str.= pack("A$comment_ans_size"substr(strip_tags($_POST["ans"]), 0$comment_ans_size));
            
// var_dump($str);
            
fwrite($f$str);
            
flock($fLOCK_UN);
            
fclose($f);
            
header("Location: ./entry.php?act=read&id=$id");
            die();
        }
        
flock($fLOCK_SH);
        
fseek($f$comment_id * ($comment_name_size $comment_body_size $comment_ans_size) + 4);
        
$name trim(fread($f$comment_name_size));
        
$body trim(fread($f$comment_body_size));
        
$ans trim(fread($f$comment_ans_size));
        
flock($fLOCK_UN);
        
fclose($f);
        
Top($settings["blog_title"], "Редактировать комментарий");
         echo 
"<form action=\"./comment.php?act=edit&amp;id=$id&amp;comment_id=$comment_id\" method=\"post\">
     Имя: <input type=\"text\" name=\"name\" size=\"32\" value=\""
.htmlspecialchars($name)."\"><br><br>
     Комментарий: <br>
     <textarea cols=\"32\" rows=\"5\" name=\"body\">"
.htmlspecialchars($body)."</textarea><br><br>
     Ответ: <br>
     <textarea cols=\"32\" rows=\"5\" name=\"ans\">"
.htmlspecialchars($ans)."</textarea><br><br>
     <input type=\"submit\" name=\"send\" value=\"Отправить\"><br><br><br><br>\n</form>\n"
;
         
Bot();
         break;
    case 
"del":
        include 
"./admin.php"// защита страницы
        
$f fopen("./data/comments/$id""rb+");
        
$record_size $comment_name_size $comment_body_size $comment_ans_size;
        
$kol filesize("./data/comments/$id") / $record_size;
        
flock($fLOCK_EX);
        
$i 0;
        while (
$i $kol) {
            if (
$rewrite) {
                
$seek ftell($f); 
                
fseek($f$record_sizeSEEK_CUR); 
                
$str fread($f$record_size); 
                
fseek($f$seek); 
                
fwrite($f$str);
            }
            else if (
$i == $comment_id) {
                
fseek($f$record_size $iSEEK_CUR);
                
$rewrite true;
            }
            ++
$i;
        }
        
$size ftell($f);
        
ftruncate($f$size); 
        
flock($fLOCK_UN);
        
fclose($f);
        
header("Location: ./entry.php?act=read&id=$id");
        die();
        break;
}

?>


Про ссылки которые не должен видеть посетитель, это уже просчеты проектирования которые сложно (не охота) исправлять

  Ответить  
 
 автор: .heed   (06.02.2010 в 21:15)
 
   для: Ури Геллер   (06.02.2010 в 20:43)
 

даже не знаю чего сказать :) то что можно вставить слово из 2048и букв и растянуть дизайн это я понял,
, то что можно отключив в браузере автоматическое перенаправление с одним и тем-же кодом с картинки напихать массу комментариев с минимальными затратами трафика, это я тоже понял.
substr(strip_tags(trim($_POST["name"])) конечно спасает кое от чего, но пустые сообщения тоже добавляются
, или наоборот никакой возможности запостить что-нибудь с < и взависимости от magic_quotes можно посмотреть только экранированные кавычки

так идея хранить комменты в одном файле интересная, я так думаю работа идёт как со строками фиксированной длинны, быстрая навигация, малый расход памяти, но только файл занимает чуть больше места. (отправлять в коментарии нулевые байты ещё не пробовал ,) всё POST'ом , а браузером не понял как в запрсе отправить %00 )
Впрочем сравнительно с таким-же скриптом на mysql , у меня под виндовс работает медленнее, но на том сайте время показывает намного лучше.

Но как-то всётаки слишком просто мне показалось, простым пользователям незачем видеть кнопки "edit" "del"
, а так время покажет, поселятся ли у вас там спам-роботы :) хоть какая капча всё-ж имеется

А так если чисто для себя то можно просто по мелочи поправить

  Ответить  
 
 автор: Ури Геллер   (06.02.2010 в 20:43)   письмо автору
 
   для: .heed   (06.02.2010 в 18:50)
 


<?php

include "./inc.php";

$id intval($_GET["id"]);
$comment_id intval($_GET["comment_id"]);


switch (
$act) {
    case 
"add":
        if (
$_POST["code"] !== $_SESSION["code"]) {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> неверный проверочный код!<br>";
            
Bot();
            die();
        }
        else if (
trim($_POST["name"]) === "") {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> вы не указали имя!<br>";
            
Bot();
            die();
        }
        else if (
trim($_POST["body"]) === "") {
            
Top($settings["blog_title"], "Ошибка");
            echo 
"<b>Ошибка:</b> вы не ввели сообщение!<br>";
            
Bot();
            die();
        }
        
$f fopen("./data/comments/$id""ab");
        
flock($fLOCK_EX);
        
$str.= pack("L"time());
        
$str.= pack("A$comment_name_size"substr(strip_tags(trim($_POST["name"])), 0$comment_name_size));
        
$str.= pack("A$comment_body_size"substr(strip_tags(trim($_POST["body"])), 0$comment_body_size));
        
$str.= pack("A$comment_ans_size""");
        
fwrite($f$str);
        
flock($fLOCK_UN);
        
fclose($f);
        
header("Location: ./entry.php?act=read&id=$id");
        die();
        break;
    case 
"edit":
        include 
"./admin.php"// защита страницы
        
$f fopen("./data/comments/$id""rb+");
        if (
$_POST["send"]) {
            
flock($fLOCK_EX);
            
fseek($f$comment_id * ($comment_name_size $comment_body_size $comment_ans_size) + 4);
            
$str.= pack("A$comment_name_size"substr(strip_tags($_POST["name"]), 0$comment_name_size));
            
$str.= pack("A$comment_body_size"substr(strip_tags($_POST["body"]), 0$comment_body_size));
            
$str.= pack("A$comment_ans_size"substr(strip_tags($_POST["ans"]), 0$comment_ans_size));
            
// var_dump($str);
            
fwrite($f$str);
            
flock($fLOCK_UN);
            
fclose($f);
            
header("Location: ./entry.php?act=read&id=$id");
            die();
        }
        
flock($fLOCK_SH);
        
fseek($f$comment_id * ($comment_name_size $comment_body_size $comment_ans_size) + 4);
        
$name trim(fread($f$comment_name_size));
        
$body trim(fread($f$comment_body_size));
        
$ans trim(fread($f$comment_ans_size));
        
flock($fLOCK_UN);
        
fclose($f);
        
Top($settings["blog_title"], "Редактировать комментарий");
         echo 
"<form action=\"./comment.php?act=edit&amp;id=$id&amp;comment_id=$comment_id\" method=\"post\">
     Имя: <input type=\"text\" name=\"name\" size=\"32\" value=\""
.htmlspecialchars($name)."\"><br><br>
     Комментарий: <br>
     <textarea cols=\"32\" rows=\"5\" name=\"body\">"
.htmlspecialchars($body)."</textarea><br><br>
     Ответ: <br>
     <textarea cols=\"32\" rows=\"5\" name=\"ans\">"
.htmlspecialchars($ans)."</textarea><br><br>
     <input type=\"submit\" name=\"send\" value=\"Отправить\"><br><br><br><br>\n</form>\n"
;
         
Bot();
         break;
    case 
"del":
        include 
"./admin.php"// защита страницы
        
$f fopen("./data/comments/$id""rb+");
        
$record_size $comment_name_size $comment_body_size $comment_ans_size;
        
$kol filesize("./data/comments/$id") / $record_size;
        
flock($fLOCK_EX);
        
$i 0;
        while (
$i $kol) {
            if (
$rewrite) {
                
$seek ftell($f); 
                
fseek($f$record_sizeSEEK_CUR); 
                
$str fread($f$record_size); 
                
fseek($f$seek); 
                
fwrite($f$str);
            }
            else if (
$i == $comment_id) {
                
fseek($f$record_size $iSEEK_CUR);
                
$rewrite true;
            }
            ++
$i;
        }
        
$size ftell($f);
        
ftruncate($f$size); 
        
flock($fLOCK_UN);
        
fclose($f);
        
header("Location: ./entry.php?act=read&id=$id");
        die();
        break;
}

?>

  Ответить  
 
 автор: Ури Геллер   (06.02.2010 в 19:08)   письмо автору
 
   для: .heed   (06.02.2010 в 18:50)
 

да убрал я эту точку теперь всё работает

  Ответить  
 
 автор: .heed   (06.02.2010 в 18:50)
 
   для: Ури Геллер   (06.02.2010 в 14:35)
 

оказалось работало
просто когда добавлял комментарий , при успешном добавлении проссто чистый лист , с таким текстом
Notice: Undefined index: comment_id in H:\home\comp\www\_test\comment.php on line 6
Notice: Undefined variable: str in H:\home\comp\www\_test\comment.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at H:\home\comp\www\_test\comment.php:6) in H:\home\comp\www\_test\comment.php on line 26

И всё думал на главной странице коммент появиться должен, там 10 штук notice и один такой-же warning
,(кстати прокрутка появляется горизонтальная) оказалось нужно нажимать на ссылку "читать" :) проблема была в том что я текст везде один и тот-же вставлял , и не смог понять что и где показывает.

и как я говорил
<form action="<?=".".$_SERVER["PHP_SELF"]."?act=".$act.(($act == "edit") ? "&amp;id=".$entry_id : "")?>" method="post" >это не правильный адресс

много чего не нравится
, но если-бы мне нужен был похожий скрипт, я-бы в любом случае просто сделал-бы всё сам с чистого листа, привычка, поэтому бывает только когда нужно что-то изменить совсем чуть-чуть , а всё по новой из-за какой-то мелочи делать лень ,) так появляются первые комментарии,
А-то приходится искать имена переменных , чтобы вспомнить в каком месте я что-то там такое хитрое сделал, но забыл что и где именно

Вчера посто ещё полез потом чистить error.log , и как обычно началось взаглядывание во всякие .conf, которое закончилось тотальной перенастройкой серверов, с неоднократными переходами из под одной виндовс под другую :)

  Ответить  
 
 автор: Ури Геллер   (06.02.2010 в 18:25)   письмо автору
 
   для: Ури Геллер   (05.02.2010 в 20:38)
 

Тут мелких неисправностей нет, пример можно увидеть на http://www.moysite.co.cc

  Ответить  
 
 автор: Тень&   (06.02.2010 в 15:37)
 
   для: neadekvat   (05.02.2010 в 22:28)
 

stripslashes нужно делать при включенных magic quotes вне зависимости от того связан скрипт с БД или нет.

  Ответить  
 
 автор: Trianon   (06.02.2010 в 15:18)   письмо автору
 
   для: Ури Геллер   (06.02.2010 в 14:50)
 

Для этого применяется htmlspecialchars
А вовсе не.

  Ответить  
 
 автор: Ури Геллер   (06.02.2010 в 14:50)   письмо автору
 
   для: neadekvat   (05.02.2010 в 22:28)
 

А про ковычки это вообще бестолковое замечание, тем более я уже ответил чтобы теги с аттрибутами отображались

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования