ошибка с Header()

Safary

Новичок
ну плиз обьясни как сделать в моем случае-то...
Я сейчас пытаюсь сделать так:

страница register.php имеет только форму(без php), у неё action="obrabotka.php"
В "obrabotka.php" нету HTML вообще. Она только обрабатывает POST-переменные и заносит в базу если нет ошибок и перенаправляет на user_page.php

Если же $error не пустая - то obrabotka.php перенаправляет на register.php

Всё ли правильно? Ведь так в нормальных CMS делается?
 

Фанат

oncle terrible
Команда форума
Safary
всю эту здоровенную переписку я не читал, но ответь мне, пожалуйста, на один вопрос.
Ты можешь объяснить, для чего тебе файл INDEX.PHP и код с массивом.
Раньше ты думал, чо если в скрипте делается инклюд, то скрипт как был, так и остается в браузере, а меняется только содержимое инклюда. Сейчас ты понимаешь, что это дикость и невежество - так думать.
Потом ты думал, что будет очень удобно написать весь развесистый хтмл в индексе, и только менять инклюды. фиг с ним, пусть перезагружается в браузере, все равно удобно.

Теперь ты так тоже не делаешь. Ты можешь объяснить, зачем тебе индекс с массивом?

-~{}~ 13.12.08 10:09:

прочитал. оборжался.
Точнее немного не так обьяснил. В шаблоне $theme - разумеется - это default.php - шаблон дизайна. А в шаблоне дизайна ещё один инклуд - инклуд страницы register.php
если я правильно понял, то развесистый хтмл из индекса был убран... в инклюд.
Отличный подход, грамотный =)
Вроде, что-то и сделали, но в итоге остались там же. С теми же проблемами.

ДА, ЧЕРТ ВОЗЬМИ! ЕСЛИ ИНДЕКС У ТЕБЯ ЗАНИМАЕТСЯ ВЫВОДОМ В БРАУЗЕР, ТО ФОРМУ ТЫ ПЕРЕНАПРАВЛЯЕШЬ НА ИНДЕКС, И ОБРАБАТЫВАЕШЬ В ИНДЕКСЕ!
 

Safary

Новичок
Есть! Вот это я и хотел услышать! =)
Спасибо Ф-анат )

Я наконец-то выспался и приступаю дальше к изучению PHP =)

Ф-анат, индекс с массивом зачем.. Хм, так тоже не правильно делать разве? Ну массив мне нужен чтобы когда юзер другую страницу вбил мне в page, чтобы если она не существует - то вывести 404.php. Так делать тоже дикость? А как тогда надо?
Да, развесистый ХТМЛ из индекса убран. Теперь структура такая:

INDEX.PHP========================================
PHP:
<?
#DESIGN CONFIG
$theme='default';
$css_style='default';

if(!empty($_POST['reg'])){
#обработчик страницы register.php
}

#PAGE
$page=$_GET['page'];
if(empty($page)) $page='main';
$page_array=array('main','news','reg','test','register');

#ВЫВОД
if(in_array($page,$page_array)){
$page='pages/'.$page.'.php';
include('themes/'.$theme.'.php');
}else{
include('pages/404.php');
}
?>
-~{}~ 13.12.08 11:06:

triumvirat
О, спасибо за ссылку, кажется это мне очень поможет! =)
 

Фанат

oncle terrible
Команда форума
развесистый ХТМЛ из индекса убран. Теперь структура такая:
что в лоб. что по лбу.
загнать весь мусор под кровать - это значит убрался. ага


if(!empty($_POST['reg'])){
#обработчик страницы register.php
}
и так для каждой страницы. половина скрипта в самом скрипте, половина - в индексе. гениально

-~{}~ 13.12.08 11:46:

я бы предложил такую структуру

шаблон сайта в theme.php
внутри у ней код include $page."_tpl.php";

шаблон регистрации в reg_tpl.php
сама регистрация в register.php:
PHP:
if ($_SERVER['REQUEST_METHOD']=='POST') { 
  if (!$err) { 
    //записываем и перенаправляем 
    Header("Location: ".$_SERVER['PHP_SELF']); 
    exit; 
  } 
} 
$page='reg';
include 'theme.php';
а index.php при таком раскладе нафиг не нужен
 

Safary

Новичок
Кажется, начинаю врубаться :)

Большое спасибо! Щас попробую всё осуществить...

-~{}~ 13.12.08 13:20:

Я только не понял что с index.php делать, если он не нужен.
Из индекса инклудировать theme.php или что вообще в индексе должно быть или index.php вообще не должно существовать.. Вот последняя вещь, которую я не понял...
 

Фанат

oncle terrible
Команда форума
ячыфвфф

-~{}~ 13.12.08 14:15:

упс. это не я, а мой код.

в описанной тобой задаче индекс пхп не нужен вообще

после того, как ты задашь себе вопрос, что должен видеть посетитель, зайдя на первую страницу сайт - станет ясно, что писать в индекс.

лично я бы в индекс поместил движок, который показывает "просто страницы" - те страницы сайта, которые не обслуживаются отдельными скриптами.

-~{}~ 13.12.08 14:16:

тьфу. совсем запрограммировался. не код, а коТ
 

Safary

Новичок
ну извини за тупость, но всётаки что с индеком-то делать?

-~{}~ 13.12.08 14:38:

Всё понял, огромное тебе спасибо Ф-анат!
Теперь смогу по-нормальному писать СиЭмЭс, главное что ядро понял как делать - а по всему остальному есть уроки.
А вот принцип ядра нигде не рассматривается, сколько не искал, только дурацкие конструкции, как у меня в начале темы было.
Ты дал мне старт! :)

-~{}~ 13.12.08 16:41:

Ух, как я достал уже всех чувствую :D
Но вот не соображу...

Сейчас вот пытаюсь сделать так, чтобы переменные из массива $_POST стали автоматически просто переменными, но че-то не догоняю опять =)
PHP:
foreach($_POST as $var => $value){
$value=trim($value);
$value=stripslashes($value);
$value=htmlspecialchars($value);
$_POST[$var]=$value;
}
Вот думаю что в этот цикл бы добавить, чтобы потом можно было написать
PHP:
echo $login;
и он высветился... Дайте подсказочку пожалуйста, теорию... Просто натолкните, чтоб я сообразил своей башкой )
 

Safary

Новичок
флопик, мне не совсем это нужно. У меня глобальные переменные отключены, я знаю что переменные все в массиве $_POST
Мне надо чтобы автоматически переменные из $_POST становились самостоятельными, т.е. чтобы вместо:
PHP:
$_POST['login'] писать $login
 

Фанат

oncle terrible
Команда форума
function input($value) {
$value=trim($_POST[$value]);
$value=if(проверка, а надо ли) stripslashes($value);
$value=htmlspecialchars($value);//здесь, правда, если редактор захочет ввести хтмл, то обломается.
return $value;
}
$login=input("login");
 

Safary

Новичок
тоесть тоже самое что и
PHP:
$login=$_POST['login'];
$pass=$_POST['pass'];
$rpass=$_POST['rpass'];
$nick=$_POST['nick'];
$email=$_POST['email'];
и именно в цикле, как функцией list() я делать знаю, а как в цикле её применить...

-~{}~ 13.12.08 16:59:

ща попробую вариант Ф-аната....
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Фанат, ты сейчас помогаешь ему сделать то, на что сам же и материшься больше всех — на огульное бессмысленое экранирование.
 

Safary

Новичок
Подходит, но я не совсем это имел ввиду, хотя это не обязательно, просто хотел уже учиться правильно писать на ПХП.

Ф-анат, получается один и тот же результат, что написать:
PHP:
$login=$_POST['login'];
$pass=$_POST['pass'];
$rpass=$_POST['rpass'];
$nick=$_POST['nick'];
$email=$_POST['email'];
или
PHP:
$login=input('login');
$pass=input('pass');
$rpass=input('rpass');
$nick=input('nick');
$email=input('email');
кода ведь меньше не стало от этого, тоесть автоматизации нету, вручную опять получается, только через функцию вместо прямого присвоения.

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

А именно, не знаю как сделать чтобы по каждому проходу цикла переменная $Z менялась на другую переменную. Ну к примеру вот:
PHP:
foreach($_POST as $var => $value){
$Z=$value;
}
тоесть чтобы $Z при первом проходе поменялась на $login, при втором на $pass, при третьем на $nick и т.д.
Не знаю, возможно ли это сделать...хм...

-~{}~ 13.12.08 17:13:

triumvirat, большого смысла нет, но для удобства думаю стоит. Хотя дело вкуса наверное, но мне например так удобнее, т.к. к этим переменным достаточное кол-во раз обращаться ещё нужно будет.
 

Фанат

oncle terrible
Команда форума
флоппик
ну, я ему и намекаю, про редактора

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

-~{}~ 13.12.08 17:15:

Safary
то есть, ты хочешь, чтобы, к примеру, у тебя в скрипте была переменная $admin, я сделал форму с полем admin, послал твоему скрипту, и стал админом? Именно этого ты, как я понимаю, от нас и добиваешься?
 

Safary

Новичок
Ну в общем я о том как:
PHP:
list($login,$pass,$rpass,$email,$nick)=$_POST;
Только я пытаюсь сделать более короткую запись. Кстати, интересная задачка...
 

Safary

Новичок
Ф-анат, эээ, да нет, причем тут это... я вот пытаюсь как только что выше написал, только сделать это в цикле, чтобы автоматом массив расформировывался по переменным =)
 

Фанат

oncle terrible
Команда форума
Попробуй подумать головным мозгом для разнообразия. Может, сообразишь - причем тут это.
 
Сверху