|
|
|
| Вопрос такой:
Как перейти на новую страницу из php?
Через header не получается! Пишет следующее:
Warning: Cannot modify header information - headers already sent by (output started at z:\home\microlab\www\reg.php:14) in z:\home\microlab\www\reg.php on line 218
Я так понимаю, что если один раз послал сообщение, то второй раз нельзя? или я не прав? Подскажите! | |
|
|
|
|
|
|
|
для: hornet
(24.10.2007 в 19:55)
| | Вы скорее всего ниразу не отправили. Перед передачей заголовков не должно быть вывода в браузер - ничего, даже пробела на странице с кодом. | |
|
|
|
|
|
|
|
для: sim5
(24.10.2007 в 19:58)
| | Привиду пример из кода, потом что я не понял как можно тогда сделать подругому:
<?php
if (!empty($_POST['creat'])) {
$p=$_POST['pas'];
$rep=$_POST['repas'];
$l=$_POST['login'];
$c=$_POST['company'];
$fio=$_POST['fio'];
$phon=$_POST['phon'];
$fax=$_POST['fax'];
$mail=$_POST['mail'];
$adress=$_POST['adress'];
$link = mysql_connect("microlab","root","");
if ($link) {
$sql = "Select * from users where login='$l'";
$result = mysql_db_query("microlab",$sql,$link);
$num_rows = mysql_num_rows($result);
if ($num_rows==0) {
$ch=0;}
else {
$ch=1;}}
if ($c<>"" AND $fio<>"" AND $phon<>"" AND $mail<>"" AND $l<>"" AND $p<>"" AND $rep<>"" AND $p==$rep AND $ch==0) {
$check=1;}
else {
$check=2;}
}
else {
$check=3;}
switch ($check)
{
case "1":
$link = mysql_connect("microlab","root","");
if ($link) {
$sql="Insert into users (login,password) values('$l','$p')";
mysql_db_query("microlab",$sql,$link);
$sql="Insert into userchar (company,contact,phon,fax,mail,adress) values('$c','$fio','$phon','$fax','$mail','$adress')"; mysql_db_query("microlab",$sql,$link);
$sql="Select * from users where login='$l'";
$result = mysql_db_query("microlab",$sql,$link);
$array = mysql_fetch_array($result,MYSQL_NUM);
$znac=$array[0];
if (!isset($id['start'])) {
$_SESSION['id']=$znac;
$_SESSION['auth']=0;
}
}
mysql_close($link);
header('Location: http://microlab/enter.php');
//require("registration/ankenter.php");
break;
case "2":
require_once("registration/ankreg.php");
break;
case "3":
require_once("registration/ankreg.php");
break;}
?>
В общем это reg.php в нее подгружается ankreg.php, которая содержит форму с полями для заполнения. Далее в ankreg.php происходит заполнение полей и проверка на JS заполнение полей и отправка на reg.php где происходит запись в БД и от сюда я хочу вызвать новую страницу enter.php где будет предложено ввести свой логин и пароль. Вопрос: как можно это сделать!! Если я использую require_once то он подгружает в reg.php enter.php, enter.php, а она в свою очередь подгружат форму для заполнения формы для входа!!! | |
|
|
|
|
|
|
|
для: hornet
(24.10.2007 в 20:12)
| | Зачем так много писать. Если header('Location: http://microlab/enter.php'); - это 218 строка, то где остальные строки? Или ошибка не из этого файла?
Вы можете прописать header('Location: url') где угодно, главное чтобы перед ним не было вывода в браузер - пустой строки или пробела даже перед <?
Это первая из причин ошибок связанных с передачей заголовков. | |
|
|
|
|
|
|
|
для: hornet
(24.10.2007 в 19:55)
| | Вариант 1 - ява-скрипт,
вариант 2 -
echo '<meta http-equiv="refresh; content=0"> | |
|
|
|
|
|
|
|
для: hornet
(24.10.2007 в 19:55)
| | Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12 | |
|
|
|