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

Печать RSS
617

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

Чатланин
0
Кидай сюда код, посмотрим. Так никто ничем не поможет.
V
Автор
Пришелец
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 символов!';
	}
	
V
Автор
Пришелец
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://
V
Автор
Пришелец
0
frasi, Но при "выходе" с сайта есть так-же удаление кукесов и
setcookie("nick", "");
	setcookie("password", "");
header('location:/');
и тут он работает как положено, не смотря на то что стоит с сеткуки
Изменил: Virtuozzo (17.12.2016 / 15:06)

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

Дух
0
Virtuozzo, куки записываются?
V
Автор
Пришелец
0
frasi, Пардон D Закомментировал показ ошибок.

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)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск