header location не фунциклирует

Купить VPN
Профессиональная разработка сайта
БИРЖА РЕКЛАМЫ С ПРЯМЫМИ ССЫЛКАМИ [+]
Печать / RSS
7


Пришелец
0
Всем привет! Есть страница регистрации.
Проблема в следующем.
После записи данных юзера в бд не получается создать перенаправление.

Пацак
0
Кидай сюда код, посмотрим. Так никто ничем не поможет.

Пришелец
0
<?php

$title = 'Регистрация';
include_once($_SERVER["DOCUMENT_ROOT"].'/style/head.php');
ob_start();
?>
<div class="title">Регистрация</div>
<?
if(isset($_GET['ok'])){
?>
<div class="success">
Вы успешно зарегистрировались!<br/>
<a href="/" class="link">Перейти на сайт</a>
</div>
<?
include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
exit();
}
mode('guest');
if(isset($_POST['ok'])){

$_POST['nick']=guard($db->real_escape_string($_POST['nick']));
$_POST['name']=guard($db->real_escape_string($_POST['name']));
$_POST['email']=guard($db->real_escape_string($_POST['email']));

if(empty($_POST['nick'])){
$error = 'Введите ник!';
}elseif(mb_strlen($_POST['nick']) < 2){
$error = 'Ник должен содержать не менее двух символов!';
}elseif(empty($_POST['password1'])){
$error = 'Введите пароль!';
}elseif(empty($_POST['password2'])){
$error = 'Введите подтверждение пароля!';
}elseif(empty($_POST['name'])){
$error = 'Введите имя!';
}elseif(mb_strlen($_POST['name']) < 2){
$error = 'Имя должно содержать в себе хотя бы 2 символа!';
}elseif(empty($_POST['email'])){
$error = 'Введите E-Mail!';
}elseif(mb_strlen($_POST['email']) < 5){
$error = 'E-Mail должен содержать как минимум 5 символов!';
}elseif($_POST['password1'] != $_POST['password2']){
$error = 'Пароли не совпадают!';
}elseif(!preg_match('/[0-9a-z_\-]+@[0-9a-z_\-^\.]+\.[a-z]{2,6}/i', $_POST['email'])){
$error = 'Неверно введен E-Mail';
}elseif($db->query("SELECT * FROM `users` WHERE `email`='".$_POST['email']."'")->num_rows != 0){
$error = 'Пользователь с таким E-Mail уже существует!';
}elseif($db->query("SELECT * FROM `users` WHERE `nick`='".$_POST['nick']."'")->num_rows != 0){
$error = 'Пользователь с таким ником уже существует!';
}elseif(mb_strlen($_POST['nick'])>40){
$error = 'Длинна ника должна быть менее 40 символов!';
}

Пришелец
0
	if(isset($error)){
?>
<div class="error"><?=$error?></div>
<?
}else{
$db->query("INSERT INTO `users` SET `nick`='".$_POST['nick']."', `password`='".md5($_POST['password1'])."', `name`='".$_POST['name']."', `email`='".$_POST['email']."', `date_reg`='".time()."'");
setcookie("nick", $_POST['nick'], time()+86000);
setcookie("password", md5($_POST['password1']), time()+86000);
header('location:?ok');
}
}
?>
<div class="text">
<form action="" method="POST">
Придумайте ник:<br/>
<input type="text" name="nick"><br/>
Придумайте пароль:<br/>
<input type="password" name="password1"><br/>
Повторите пароль:<br/>
<input type="password" name="password2"><br/>
Введите имя:<br/>
<input type="text" name="name"><br/>
Введите ваш E-Mail:<br/>
<input type="text" name="email"><br/>
<input type="submit" name="ok" value="Зарегистрироваться">
</form>
</div>
<?

include_once($_SERVER["DOCUMENT_ROOT"].'/style/foot.php');
?>

Дух
0
Вроде как setcookie() и header() не должны быть на одной странице.
Да и адрес в location надо указывать полностью вместе с http://

Пришелец
0
frasi, Но при "выходе" с сайта есть так-же удаление кукесов и
setcookie("nick", "");
setcookie("password", "");
header('location:/');
и тут он работает как положено, не смотря на то что стоит с сеткуки
Изменил: Virtuozzo (17.12.2016 / 15:06)

Дух
0
А вообще в таких случаях надо включать показ ошибок, чтоб не гадать на кофейной гуще

Пришелец
0
frasi, Включены. Но ничего не показывает. Получается что у меня после нажатия кнопки заносятся данные в бд и стр. просто обновляется с чистыми формами для ввода.

Дух
0
Virtuozzo, куки записываются?

Пришелец
0
frasi, Пардон D.gif Закомментировал показ ошибок.

Warning: Cannot modify header information - headers already sent by (output started at /home/user/site.ru/htdocs/www/modules/login/reg.php:1) in /home/user/site.ru/htdocs/www/modules/login/reg.php on line 89

Warning: Cannot modify header information - headers already sent by (output started at /home/user/site.ru/htdocs/www/modules/login/reg.php:1) in /home/user/site.ru/htdocs/www/modules/login/reg.php on line 90

Warning: Cannot modify header information - headers already sent by (output started at /home/user/site.ru/htdocs/www/modules/login/reg.php:1) in /home/user/site.ru/htdocs/www/modules/login/reg.php on line 91

Нет. Кукесы не записывает
Изменил: Virtuozzo (17.12.2016 / 15:26)
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск