imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 13.05.2005, 18:06     # 1
DeMx
Guest
 
Сообщения: n/a

Трабла в скрипте комментов

Есть собственно ручно написанный скрипт добавления и просмотра комментариев, на PHP. Однако там не работает одна фича - вывод сообщений об ошибках при незаполнении полей (name и message).
Пример скрипта здесь: http://basketchance.kulichki.ru/text...t_13_rules.php

Скрипт вызывается таким образом:
PHP код:
<?
    session_start();
    require "http://basketchance.kulichki.ru/comments.php?path=texts%2Fhistory%2Ffirst_13_rules.&txt=texts%2Fhistory%2Ffirst_13_rules.txt&";
?>
Сам скриптик:
PHP код:
<?
    session_start();
    if (!isset($_POST["file_name"])) {
        if (!$_SESSION["error_name"] && !$_SESSION["error_message"]) {
            $_SESSION["name"] = "Имя";
            $_SESSION["message"] = "Мессага";
        }
?>
<blockquote>
<form action="http://basketchance.kulichki.ru/comments.php" method=post name=comments>
<input type=hidden name=file_name value="<?echo $path;?>">
<table width=673 cellpadding=0 cellspacing=1>
<tr>
    <td></td>
    <td align=left><font color=red size=-2><?echo $error_name;?></font></td>
</tr>
<tr>
    <td rowspan=3 width="25%" align=right>
    <b><span class=gray>Добавь своё мнение<br>об этой проге:</span></b>
    </td>
    <td width="75%" colspan=2><input type=text name="name" value="<?echo $_SESSION['name'];?>" size=30 onblur="if(this.value=='')this.value='Имя';" onfocus="if(this.value=='Имя')this.value='';">
    </td>
</tr>
<tr>
    <td colspan=2 align=left><font color=red size=-2><?echo $_SESSION["error_message"];?></font></td>
</tr>
<tr>
    <td colspan=2><textarea name=message rows=7 wrap=virtual style="font-family: Verdana; font-size: 8pt; width: 100%;" onblur="if(this.value=='')this.value='Мессага';" onfocus="if(this.value=='Мессага')this.value='';"><?echo $_SESSION["message"];?></textarea>
    </td>
</tr>
<tr>
    <td colspan=2 align=center>
        <table align=center>
        <tr>
            <td class=pimpa onMouseOver="over(this)" onMouseOut="out(this)" onClick="comments.submit();">Отправить</td>
        </tr>
        </table>
    </td>
</tr>
</table>
</form>

<table width=673>
<tr>
    <td colspan=2 class=line><br></td>
</tr>
<?
if (file($txt)) {
    $com = file($txt);
    for($i = count($com) - 1; $i>=0; $i--) {
        list($name, $message, $timeadd) = split("\t", $com[$i]);
            echo "
            <tr>
                <td class=t_e width=84%><b>$name</b></td>
                <td class=t_e width=16% align=center>$timeadd</td>
            </tr>
            <tr>
                <td colspan=2>$message</td>
            </tr>
            <tr>
                <td colspan=2 class=line><br></td>
            </tr>
            ";
    }
}
else
    echo "
    <tr>
        <td colspan=2 align=center>Посетители молчат, как партизаны :(</td>
    </tr>
    <tr>
        <td colspan=2 class=line><br></td>
    </tr>";
?>
</table>
</blockquote>
<?
    }
    else {
        if ($name == "Имя") {
            $_SESSION["error_name"] = "укажи своё имя";
        }
        if ($message == "Мессага") {
            $_SESSION["error_message"] = "мессагу то какую будешь отправлять?";
        }
        if ($error_name || $error_message) {
            $_SESSION["name"] = $_POST["name"];
            $_SESSION["message"] = $_POST["message"];
        }
        else {
            $file = fopen($_POST['file_name']."txt", "a");
            $_POST["name"] = str_replace("\r", "", $_POST["name"]);
            $_POST["name"] = str_replace("\t", "", $_POST["name"]);
            $_POST["name"] = str_replace("\n", "<br>", $_POST["name"]);
            $_POST["message"] = str_replace("\r", "", $_POST["message"]);
            $_POST["message"] = str_replace("\t", "", $_POST["message"]);
            $_POST["message"] = str_replace("\n", "<br>", $_POST["message"]);
            $out = $_POST["name"]."\t".$_POST["message"]."\t".date("d.m.Y H:i")."\n";
            fwrite($file, $out);
            fclose($file);
            //Отправка на мыло админу
            $text =
                $_POST['name']."\n".
                $_POST['message'];
            mail("DeMximus@gmail.com", "BasketChance.kulichki.ru :: Message from visitor :: ".$_POST['file_name']."php", $text);
        }
    header("Location: ".$_POST['file_name']."php");
    }
?>
Т.е. вся проверка осуществляется с помощью сессий, но почему-то они (сессии), как будто, уничтожаются после подключения comments.php...
Почему и как решить?
 
Старый 14.05.2005, 08:50     # 2
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
ты бы локальный путь писал в require... ну и у формы action тоже

if (file($txt)) {
$com = file($txt);
...
лучше вот так if ($com = file($txt)) ...
а то два раза файлик читать... тяжело
__________________
Nunc est bibendum
is_absent вне форума  
Старый 14.05.2005, 11:14     # 3
DeMx
Guest
 
Сообщения: n/a

локальный? т.е. такой:
PHP код:
require "../../comments.php"
не работает
 
Старый 14.05.2005, 13:21     # 4
DeMx
Guest
 
Сообщения: n/a

сделал так:
PHP код:
$path "/texts/history/first_13_rules.";
$txt "first_13_rules.txt";
require 
"../../comments.php"
теперь только добавление не работает, а так всё отлично
 
Старый 16.05.2005, 04:54     # 5
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
ты пишешь $file = fopen($_POST['file_name']."txt", "a");
а перед этим
$path = "/texts/history/first_13_rules.";

путь от корня вычисляется... fopen($_SERVER['DOCUMENT_ROOT'].$_POST['file_name'].. или что-то в этом роде нужно..
__________________
Nunc est bibendum
is_absent вне форума  


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

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

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


Часовой пояс GMT +4, время: 13:07.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.