[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не срабатывает header
Las
Есть index.php

//Подключаем файл конфигурации
include("config.inc.php");
//Подключаем файл с функциями
include("functions.inc.php");

//Указываем рабочую папку по умолчанию
if($_GET['url']) {$url = $_GET['url']; }

...

//Создание папок
if($_GET['mkdir'])
{
if(!$_POST['add']) {
echo '<br/><form name="" action="?mkdir=1" method="post">';
echo 'Имя новой папки:<br/>';
echo '<input name="ndir" type="text" value="" maxleight="25">';
echo '<input name="url" type="hidden" value="'.$_GET['url'].'"><br/>';
echo '<input type="submit" name="add" value="создать"></form>';
}
else {
if(makedir($_POST['url']."/".$_POST['ndir']) == TRUE) {
@header("location:index.php?url=".$_POST['url']);}
else {echo 'Ошибка <br/>';}
}}



functions.inc.php:

//Функция создания папки
function makedir ($url){
//Вырезаем пробелы и хтмл-тэги
$url = trim(htmlspecialchars($url));
//Если папка создается возвращаем TRUE, иначе FALSE
if(@mkdir($url)){return TRUE;}
else{return FALSE;} }



и config.inc.php:

<?php
$url="data";
?>


При создании папки всегда показывается папка data. Подскажите, пожалуйста, как сделать так, чтобы открывалась та папка, в которую и помещается новая папка (например, data/first/1)?





Спустя 6 часов, 22 минуты, 32 секунды (27.12.2010 - 09:36) linker написал(а):
Если не работает header, то здесь
@header("location:index.php?url=".$_POST['url']);
удали @ и увидишь может быть ошибку.

Спустя 15 минут, 36 секунд (27.12.2010 - 09:52) wplounge написал(а):
1. Чтобы создать папку first в папке data, папка data уже должна быть создана. Создать вышенаписанным путем папку data, в ней папку first, а в ней папку 1 не получится.

2. header должен быть в начале скрипта, до того, как выводился какой-либо HTML, иначе скрипт работать не будет.

3. что такое @header и @mkdir? - непонятно

Спустя 20 минут, 36 секунд (27.12.2010 - 10:12) linker написал(а):
@ означает подавление вывода ошибок.

Спустя 47 минут, 12 секунд (27.12.2010 - 11:00) Las написал(а):
Цитата

удали @ и увидишь может быть ошибку.

Без @ выводит предупреждение

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\exemple\index.php:1) in Z:\home\localhost\www\exemple\index.php on line 49


поэтому я ее и поставил. На строке 49 находится
@header("location:index.php?url=".$_POST['url']);



Цитата

1. Чтобы создать папку first в папке data, папка data уже должна быть создана. Создать вышенаписанным путем папку data, в ней папку first, а в ней папку 1 не получится.

2. header должен быть в начале скрипта, до того, как выводился какой-либо HTML, иначе скрипт работать не будет.

3. что такое @header и @mkdir? - непонятно

1. Папка data уже создана. код свою основную функцию выполняет. Проблема в том, что после создания папки открывается index.php вместо ndex.php?url=".$_POST['url']
2. Поместить header выше просто некуда.
3. mkdir - обработчик формы

Спустя 3 минуты, 25 секунд (27.12.2010 - 11:03) sharki написал(а):
Las
Ну вот видишь ты увидел почему у тебя ошибка, а не идти на форум и спрашивать почему же не срабатывает)

Ответ на твой вопрос был выше а именно:
Цитата
2. header должен быть в начале скрипта, до того, как выводился какой-либо HTML, иначе скрипт работать не будет.

Немного подправлю, может и не в начале, главное чтобы ничего не выводилось перед header'ом (текст и т.д) убери все подавления ошибок и еще раз проанализируй код.


Если вообще @опа то можно сделать перенапряжение JS кодом.

Спустя 22 минуты, 51 секунда (27.12.2010 - 11:26) wplounge написал(а):
Цитата
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\exemple\index.php:1) in Z:\home\localhost\www\exemple\index.php on line 49


Вот это сообщение и говорит о том, что header не в начале скрипта, или действительно где-то перед ним выводится html (Кстати, это предупреждение может вызывать даже лишний пробел).

Цитата
Проблема в том, что после создания папки открывается index.php вместо ndex.php?url=".$_POST['url']

Так и должно быть. У тебя же index.php, после того как папка создана, никак $_POST['url'] не обрабатывает, т.е. $_POST['url'] просто пропадает.
Вот эта строчка
if($_GET['url']) {$url = $_GET['url']; }
просто присвоит значение $_POST['url'] переменной $url, которая дальше нигде не используется.

Если хочешь, чтобы выводилось содержимое папки, в header вместо index.php?url=".$_POST['url'] выведи просто $_POST['url']

Спустя 35 минут, 38 секунд (27.12.2010 - 12:01) Las написал(а):
Цитата (wplounge @ 27.12.2010 - 08:26)
Вот это сообщение и говорит о том, что header не в начале скрипта, или действительно где-то перед ним выводится html (Кстати, это предупреждение может вызывать даже лишний пробел).

Спасибо! С header у меня нелады, сделал перенаправление через js.
Цитата (sharki @ 27.12.2010 - 08:03)
Если вообще @опа то можно сделать перенапряжение JS кодом.

Спасибо за совет.
Быстрый ответ:

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