Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Web-программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 12.05.2005, 14:11   [включить плавающее окно]   #41
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
А $_POST["add"] у тебя где нибудь есть ?
Я не нашел
Когда была кнопка submit у нее было имя "add" а сейчас оно где ?

Pirks добавил :

Сделай вместо
if (isset($_POST["add"])) {

if (isset($_POST["file_name"])) {
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 15:58   [включить плавающее окно]   #42
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
заработало!
респект, показал на такую тухлую ошибку
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 16:05   [включить плавающее окно]   #43
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Наслаждайся
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 17:32   [включить плавающее окно]   #44
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
да, сейчас круто так...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 12.05.2005, 17:39   [включить плавающее окно]   #45
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата (DMx) »
да, сейчас круто так...
Надо было сразу phpinfo в comments воткнуть.
Еще вчера было бы ясно где рыть

Хорошо все что хорошо кончается
Pirks вне форума  
Ответить с цитированием
Непрочитано 12.05.2005, 19:54   [включить плавающее окно]   #46
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Так, тема ещё не закрыта...
Решил сейчас модернизировать скрипт так, чтобы всё было в отдельном файле (php-файле). Всё бы хорошо, только вот сессии на отрез отказываются работать. Добавление новых комментов работает без проблем, а вот вывод сообщений об ошибке (не заполнены поля ввода) не работает.
Вот так я организовал передачу необходимых параметров скрипту:
PHP код:
<?
    
require "http://basketchance.kulichki.ru/comments.php?path=texts%2Fhistory%2Ffirst_13_rules.&txt=texts%2Fhistory%2Ffirst_13_rules.txt";
?>
Может и кустарно, но фиг с ним.

Сам comments.php:
PHP код:
<?
    
if (!isset($_POST["file_name"])) {
        
session_start();
        echo 
"<h1>".$_SESSION['error_name']."</h1>";
        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 $_SESSION["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>
<?
session_destroy
();
?>
<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 {
        
//phpinfo();
        
session_start();
        if (
$_POST["name"] == "Имя") {
            
$_SESSION["error_name"] = "укажи своё имя";
        }
        if (
$_POST["message"] == "Мессага") {
            
$_SESSION["error_message"] = "мессагу то какую будешь отправлять?";
        }
        if (
$_SESSION["error_name"] || $_SESSION["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");
    }
?>
Может здесь можно как-то без сессий, а то заколебали они уже?..

DMx добавил :

чё-то глючит у меня на форуме...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 12:02   [включить плавающее окно]   #47
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Только что проверил, если написать в основном файле (где сама статья) так:
PHP код:
<?
    session_start
();
    echo 
$_SESSION["error_name"];
    echo 
$_SESSION["error_message"];
    require 
"http://basketchance.kulichki.ru/comments.php?path=texts%2Fhistory%2Ffirst_13_rules.&txt=texts%2Fhistory%2Ffirst_13_rules.txt";
?>
то сессия успешно работает, т.е. выводится error_name и error_message.
Почему же после подключения comments.php сессия там не выводится (не знаю, как правильно сказать ?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 13:37   [включить плавающее окно]   #48
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Прежде всего непонятно, зачем ты session_start(); в comments два раза используешь.
Эту инструкцию можно поставить в начале скрипта и все после <?
Далее ты можешь в сессию загонять любые переменные используя

session_is_registered("$переменная");
$переменная=...;

А затем в любом скрипте, после session_start();
извлекать ее

Pirks добавил :

http://www.getinfo.ru/article250.html
http://mysitez.km.ua/Programming/?phpsessions
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 15:16   [включить плавающее окно]   #49
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
можно и без session_is_registered(), просто использовать массив $_SESSION[""], что я и делал...
однако не работает ведь

лишние session_start() убрал, но это ничего не изменило
__________________
Baller's Choice -> http://bchance.ru

Последний раз редактировалось DMx; 13.05.2005 в 15:19.
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 15:20   [включить плавающее окно]   #50
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Похоже теперь у тебя comment:
<?
session_start();
if (!isset($_POST["file_name"])) {
echo "<h1>".$_SESSION['error_name']."</h1>";
if (!$_SESSION["error_name"] && !$_SESSION["error_message"]) {
$_SESSION["name"] = "Имя";
$_SESSION["message"] = "Мессага";
}
?>
...
...
...



А в basketball_history.php сессию стартуешь ?
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 15:22   [включить плавающее окно]   #51
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
А в basketball_history.php сессию стартуешь ?
да
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 15:22   [включить плавающее окно]   #52
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Если не затруднит кинь еще исходники
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 15:24   [включить плавающее окно]   #53
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Вот:
Вложения
Тип файла: rar comments.rar (6.2 Кб, 58 просмотров)
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 15:33   [включить плавающее окно]   #54
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Поймал, смотрю
А ты пока раскоментарь phpinfo() в comments.php и смотри там

Pirks добавил :

$_SESSION["name"] = "Имя"; - присвоение
echo $name - показать его
т.е все условия, которые у тебя есть надо писать

if ($name == "Имя"){
и т.д.

Если я правильно понимаю работу с сессиями в PHP версии 4 и выше.
До этого работал с более ранними версиями
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 16:54   [включить плавающее окно]   #55
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
т.е. вот так сделать:
PHP код:
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 {... 
Ну так это ничего не изменит (уже проверил)...

а как писать: $_SESSION["name"] или $name значения не имеет - проверено

тут какие-то другие грабли...
условия все в comments.php работают, и в first_13_rules.php сессии показываются, а потом снова при подключении comments.php сессии, как будто, стираются (!)
как же это так?

DMx добавил :

глянь сюда: http://basketchance.kulichki.ru/text...t_13_rules.php
там $error_name сохранилось в сессию и вывелось в самом first_13_rules.php, но в подключённом comments.php $error_name пропадает...

DMx добавил :

я о надписи "укажи своё имя" толкую
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 17:06   [включить плавающее окно]   #56
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Будем дальше рыть
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 17:11   [включить плавающее окно]   #57
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Хорошо, что ты нормальный (добрый) чел, помогаешь до последнего...
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 17:44   [включить плавающее окно]   #58
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Тоесть я понял так
Если ты ничего не занес в поля после нажатия ОТПРАВИТЬ выдает SESSION
Если указал имя, но без изменения mess, имя сбрасывается и вроде как все с нуля

Pirks добавил :

Помоему ты намудрил с условиями
Проверь их в самом начале comment.php

Pirks добавил :

Я бы сделал comment.php немного по другой схеме

Если нажата ОТПРАВИТЬ заполняешь сессию а затем ее анализируешь
Если нет анализируешь то, что есть

Зачем смотреть $_POST, когда есть $_SESSION
Pirks вне форума  
Ответить с цитированием
Непрочитано 13.05.2005, 18:29   [включить плавающее окно]   #59
DMx
Мужской Продвинутый
Автор темы
 
Аватар для DMx
 
Регистрация: 29.07.2003
Адрес: СПб
Цитата
Если указал имя, но без изменения mess, имя сбрасывается и вроде как все с нуля
Нет, имя не сбрасывается. Вот:
PHP код:
if ($error_name || $error_message) {
    
$_SESSION["name"] = $_POST["name"];
    
$_SESSION["message"] = $_POST["message"];
}
else {... 
Ну ведь после нажатия кнопки (без заполнения name и message) выводится форма и показываются все мессаги, а это значит, что условия верны, но сессия куда-то пропадает...

Цитата
Я бы сделал comment.php немного по другой схеме
Если нажата ОТПРАВИТЬ заполняешь сессию а затем ее анализируешь
Если нет анализируешь то, что есть
Зачем смотреть $_POST, когда есть $_SESSION
Не понял, это как? Форма ведь есть, поэтому без $_POST никуда...

И вообще, добавление работает, а это значит, что общая структура верна. Просто какой-то мелкий баг прокрался или не знание PHP.
А действительно ли можно в подключаемых файлах (require) использовать сессию? Вдруг здесь какой-нить ньюанс есть?..

DMx добавил :

PHP код:
А зачем к ней обращатьсяесли не нажималась ОТПРАВИТЬ 
а у меня такого и нет

DMx добавил :

ой, а где твой пост?
__________________
Baller's Choice -> http://bchance.ru
DMx вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 13.05.2005, 18:44   [включить плавающее окно]   #60
Pirks
Мужской Начинающий
 
Аватар для Pirks
 
Регистрация: 08.10.2004
Адрес: Kaluga
Цитата
Форма ведь есть, поэтому без $_POST никуда...
А зачем, если не было нажатия ОТПРАВИТЬ

Цитата
действительно ли можно в подключаемых файлах (require) использовать сессию?
Можно

Тебе сессии нужны, только при перезагрузке странички или при запуске другого скрипта

Pirks добавил :

Вот он
Pirks вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey