[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Суперглобальный массив $_SERVER
koala
Прочитал пару уроков IRRBIS и там была тема оп поводу $_SERVER['PHP_SELF']. Но я так до конча и не понял как с ним работать, знаю только что в нем хранится путь к главной странице, но как перенаправить пользователя после удачной записи из формы на главную страницу и очистить поля в форме?

Заранее спасибо =)



Спустя 18 минут, 12 секунд (16.03.2010 - 18:29) Игорь_Vasinsky написал(а):
нет. ты не правильно понял.

$PHP_SELF - eng на себя, тоесть проверка формы на той же странице где и форма, очень удобно на форумах и т.д.

Посетитель нашёл интересную тему и хочет добавить комент, а нужна авторизация, он авторизируется по этой форме и остаётся на этой же странице, но уже авторизацирован

<form method="POST" action = "<?php $PHP_SELF;?>">

Спустя 5 минут, 20 секунд (16.03.2010 - 18:34) Игорь_Vasinsky написал(а):
Пардон. я морожу, считай что пред сообщение для справки

а вот по существу:


$ _SERVER [ 'PHP_SELF']
Это имя файла в настоящее время исполнителями сценария, по отношению к документу корня. Однако, в отличие от $ _SERVER [ 'SCRIPT_NAME'], оно содержит дополнительную информацию о пути как $ _SERVER [ 'REQUEST_URI'], когда фактические php файл присутствует в путь. Так что, если $ _SERVER [ 'REQUEST_URI'] в / index.php / КГБ / каталог / то $ _SERVER [ 'PHP_SELF'] будет / index.php / КГБ / каталог /.
Однако, если все URI в соответствии с http://www.example.com/ отображается на http://www.example.com/index.php, то, например, http://www.example.com/ абг / Ок вернется / index.php например $ _SERVER [ 'SCRIPT_NAME']. Заметим, что $ _SERVER [ 'REQUEST_URI'] данных игнорируется для этого запроса.

$ _SERVER [ 'PHP_SELF'] поддерживается на всех платформах.

Спустя 4 часа, 10 минут, 45 секунд (16.03.2010 - 22:45) koala написал(а):
Игорь_Vasinsky, пробую разобрать скрипт IRRBIS:

 <?php
/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

error_reporting(E_ALL);

/////////////////////////////////////////////////////////////////
// VARIABLES
// ПЕРЕМЕННЫЕ

/////////////////////////////////////////////////////////////////

$text1 = !empty($_POST['text1'])?$_POST['text1']:null;
$text2 = !empty($_POST['text2'])?$_POST['text2']:null;

/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ

/////////////////////////////////////////////////////////////////

if(isset($_POST['ok']))
{
if(!$text1)
echo 'Текстовое поле не заполнено.';
elseif(!$text2)
echo 'Текстовая область не заполнена.';
else
{
file_put_contents('text.txt', $text2, FILE_APPEND);

header('location: '. $_SERVER['PHP_SELF']);
exit();
}
}

else
echo 'Напишите что нибудь';

/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ

/////////////////////////////////////////////////////////////////
?>
<form action="?" method="post">
Логин:<br />
<
input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<
textarea name="text2" cols="40" rows="10"><?php echo htmlspecialchars($text2);?></textarea><br />
<
input name="ok" type="submit" />
</
form>


Но мне вылазит ошибка:

Warning: Cannot modify header information - headers already sent by (output started at Q:\home\localhost\www\cursi\test1.php:1) in Q:\home\localhost\www\cursi\test1.php on line 38


А за объяснения спасибо, но с этим скриптом я не могу понять =(

Спустя 1 час, 2 минуты, 37 секунд (16.03.2010 - 23:48) Awilum написал(а):
Цитата
Warning: Cannot modify header information - headers already sent by...


Try to use ob_start(); wink.gif

Спустя 2 минуты, 5 секунд (16.03.2010 - 23:50) phz написал(а):
koala вот еще почитай http://phpforum.ru/index.php?showtopic=17590

Спустя 2 часа, 4 минуты, 20 секунд (17.03.2010 - 01:54) Игорь_Vasinsky написал(а):

Сервер тебе говорит то что он уже отравил заголовок и второй раз он уже не может...

а именно когда ты его (заголовок ) в 38 строчке отправляешь

 header('location: '. $_SERVER['PHP_SELF']);


ты случаем сессию не запускал?

session_start();


в коде чётко видно что заголовок отправляется один раз

у меня ошибок не выдал



Спустя 3 часа, 37 минут, 42 секунды (17.03.2010 - 05:32) twin написал(а):
Нужно внимательно почитать текст ошибки. Там четко указан адрес - виновник злоключений:
Q:\home\localhost\www\cursi\test1.php:1
С вероятностью 99% это BOM.

Вот тут почитай, как бороться.

Спустя 1 час, 31 минута, 27 секунд (17.03.2010 - 07:03) Игорь_Vasinsky написал(а):
ой вы пр строку забыли...

Q:\home\localhost\www\cursi\test1.php on line 38



Спустя 2 часа, 37 минут, 54 секунды (17.03.2010 - 09:41) twin написал(а):
Нет, я не забыл. Эта часть указывает на место вызова функции, которая спровоцировала ошибку.
А вот до этого (в скобках) указывается адрес места на которое ругается интерпретатор. То есть на тот самый вывод, который помешал хидеру.

Спустя 7 часов, 18 минут, 54 секунды (17.03.2010 - 17:00) koala написал(а):
Игорь_Vasinsky, сессию не запускал.

Всем спасибо за советы, проблема решилась =) Извините что так поздно ответил =)
Помогли ссылки на другие темы.


_____________
Vi Veri Veniversum Vivus Vici
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.