Здравствуйте! Залил все свои скромные труды на хостинг. Всё отлично кроме header. Дело в том, что личный кабинет защищён готовм скриптом. Но что-бы он работал, вн ачале каждого файла пхп ставится
Я знал, что если перед header стоит вывод или инклуд, то он
работать не будет. Но на локальном всё пёрло. И я забил на это дело. А на хостинге не пашет. Ошибку кидает.
Warning: Cannot modify header information - headers already sent by...
Что делать? Убрать require никак не можно. Обидно, так то всё
работает.
Спустя 10 минут, 25 секунд (6.08.2009 - 13:47) sergeiss написал(а):
Почитай
тут. Возможно, что и решишь свою проблему.
Спустя 3 часа, 28 минут, 4 секунды (6.08.2009 - 17:15) ANG3 написал(а):
Делаю так. Всё равно выводит ту же ошибку(
PHP |
<?php ob_start(header ("Location: list.php"));
|
и далее
PHP |
ob_end_flush(); exit(); |
Спустя 1 минута, 17 секунд (6.08.2009 - 17:16) Kuliev написал(а):
Спустя 2 минуты, 41 секунда (6.08.2009 - 17:19) ANG3 написал(а):
Жгу!) А делать то чтО?
Спустя 8 минут, 54 секунды (6.08.2009 - 17:28) Kuliev написал(а):
Спустя 21 минута, 25 секунд (6.08.2009 - 17:49) ANG3 написал(а):
Спасибо! Всё отлично работает. Но мой скрипт защищён скриптом admin login only. В начале страницы нужно вставить
PHP |
<?php require_once("adminOnly.php"); |
Если я вставлю этот инклуд после...
PHP |
<?php ob_start(header ("Location: list.php"));
|
...то безопасность не пострадает? Админ логин работает с сессиями.
Спустя 11 минут, 27 секунд (6.08.2009 - 18:01) Kuliev написал(а):
ANG3Так про HEADER() прочитал надеюсь до тебя дошло теперь посмотри
ЗДЕСЬ! Спустя 2 часа, 26 минут, 39 секунд (6.08.2009 - 20:27) ANG3 написал(а):
Можно простенький пример. Ничего там не понятно. Скрипты оттуда не работают. Этот бред
PHP |
ob_start(header ("Location: list.php")); |
стоит у меня в условие, и независимо от условия выполняется всегда.
Вот так вот это выглядит
PHP |
if (empty($id)) { $query="DELETE FROM `order` WHERE `id` ='$id2'"; $result=mysql_query($query) or die(mysql_error()); ob_end_flush(); exit(); } |
Спустя 14 минут, 55 секунд (6.08.2009 - 20:42) Guest написал(а):
PHP |
<?php ob_start(); require_once("adminOnly.php"); |
Спустя 3 часа, 2 минуты, 53 секунды (6.08.2009 - 23:45) ANG3 написал(а):
Сделал. Всё нормально, но опять, редирект выполняется независимо от условия, т.е в любом случае, даже когда не нужно. вот код.
PHP |
<?php ob_start(); header ("Location: list.php") ?> <?php require_once("adminOnly.php");?> <?php include('inc/cp.inc') ?>
<?php include('mysql.php') ?> <?php $id=intval($_GET['id']); $id2=intval($_GET['id2']); mysql_query ("SET NAMES `cp1251`"); if (empty($id)) { $query="DELETE FROM `order` WHERE `id` ='$id2'"; $result=mysql_query($query) or die(mysql_error()); $x=ob_get_contents(); // получаем содержимое output buffer ob_clean(); // очищаем его echo $x; } |
Спустя 1 час, 18 минут, 42 секунды (7.08.2009 - 01:04) DeeKeiD написал(а):
хм помойму проще сделать так
PHP |
<? session_start(); // если сессия не существует if(!$_SESSION['user']) { die ('no access') ; } // если сессия существует else { ... }
|
Спустя 9 часов, 53 минуты, 35 секунд (7.08.2009 - 10:57) ANG3 написал(а):
У меня скрипт рассчитан на множественные заходы, и дальше там ещё есть условия, я просто не всё скопировал. Главное сделать редирект после вполнения условия и всё. А у меня редирект прёт всегда. Независимо от первого условия.
Спустя 1 час, 52 минуты, 33 секунды (7.08.2009 - 12:50) Kuliev написал(а):
ANG3
Вот тебе пример использования ob_start()
PHP |
<?php // Запускаем буфер ob_start();
echo "<h1>Привет...</h1>";
include ("myscript.php");
$buffer = ob_get_contents();
// закрывает буфер ob_end_clean();
// выводим все что в буфере echo $buffer;
|
Спустя 42 минуты, 3 секунды (7.08.2009 - 13:32) ANG3 написал(а):
Вот код. Удаление, затем редирект. Работает отлично. Но если я нажимаю просмотр ($id не пустой), то всё равно идёт редирект. Хотя по условию его быть не должно.
PHP |
<?php // Запускаем буфер ob_start();
header ("Location: list.php");
$buffer = ob_get_contents();
// закрывает буфер ob_end_clean(); ?> <?php require_once("adminOnly.php");?> <?php include('inc/cp.inc') ?>
<?php include('mysql.php') ?> <?php $id=intval($_GET['id']); $id2=intval($_GET['id2']); mysql_query ("SET NAMES `cp1251`"); if (empty($id)) { $query="DELETE FROM `order` WHERE `id` ='$id2'"; $result=mysql_query($query) or die(mysql_error()); // выводим все что в буфере echo $buffer; } if (empty($id2)) { $query="SELECT * FROM `order` WHERE `id`='$id' order by `date`"; $result=mysql_query($query) or die(mysql_error()); while ($row=mysql_fetch_array ($result)) { $name=$row['name']; $email=$row['email']; $tel=$row['tel']; $address=$row['address']; $order=nl2br($row['order']); $date=$row['date']; $inn=$row['inn'];
} |
Спустя 6 минут, 31 секунда (7.08.2009 - 13:39) ANG3 написал(а):
Я убрал
. Всё ранво релирек, но удаление выполняется. Значит буфер не работает как нужно ?
Спустя 36 минут, 25 секунд (7.08.2009 - 14:15) Kuliev написал(а):
ANG3
Попробуй так, хотя я не уверен.
PHP |
<?php ob_start();
require_once("adminOnly.php"); include('inc/cp.inc') include('mysql.php')
$buf = ob_get_contents();
ob_end_clean();
$id = !empty($_GET['id']) ? $_GET['id'] : null; $id2 = !empty($_GET['id2']) ? $_GET['id'] : null;
if (isset($id)) { $sql = "DELETE FROM `order` WHERE `id` ='".intval($id2)."'"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); header ("Location: list.php"); exit();
}
if (isset($id2)) { $sql = "SELECT * FROM `order` WHERE `id`='".intval($id)."' order by `date`"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
while ($row = mysql_fetch_assoc($result)) { $name = $row['name']; $email = $row['email']; $tel = $row['tel']; $address = $row['address']; $order = nl2br($row['order']); $date = $row['date']; $inn = $row['inn']; }
}
echo $buf; |
Спустя 58 минут, 4 секунды (7.08.2009 - 15:13) ANG3 написал(а):
Спсибо! Сделал немного подругому. Возник один вопрос. Как происходит удаление, если файл с настройкой MySQL включается после удаления?
И чем mysql_fetch_assoc лучше mysql_fetch_array ?)
Код
PHP |
<?php ob_start();
require_once("adminOnly.php"); include('inc/cp.inc'); include('mysql.php');
$buf = ob_get_contents();
ob_end_clean(); ?> <?php $id = !empty($_GET['id']) ? intval($_GET['id']) : null; $id2 = !empty($_GET['id2']) ? intval($_GET['id2']) : null;
mysql_query ("SET NAMES `cp1251`"); if (empty($id)) { $query="DELETE FROM `order` WHERE `id` ='$id2'"; $result=mysql_query($query) or die(mysql_error()); header ("Location: list.php"); exit(); } echo $buf; if (empty($id2)) { $query="SELECT * FROM `order` WHERE `id`='$id' order by `date`"; $result=mysql_query($query) or die(mysql_error()); while ($row=mysql_fetch_array ($result)) { $name=$row['name']; $email=$row['email']; $tel=$row['tel']; $address=$row['address']; $order=nl2br($row['order']); $date=$row['date']; $inn=$row['inn'];
} echo .....
} |
Спустя 3 минуты, 24 секунды (7.08.2009 - 15:16) Kuliev написал(а):
ANG3Зайди на PHP.NET и почитай в чем разница.
Во вторых я же Вам выложил код а вы опять за свое!
Спустя 1 минута, 48 секунд (7.08.2009 - 15:18) Gabriel написал(а):
а редирект у тебя был случайно не изза того что условия для хедера небыло вообше?
Спустя 6 минут, 33 секунды (7.08.2009 - 15:25) ANG3 написал(а):
Цитата |
Во вторых я же Вам выложил код а вы опять за свое! |
Ваш код почему-то не работает. По этому я к своему коду добавил часть из вашего, немного изменив его. А стиль забыл сделать...
Цитата |
а редирект у тебя был случайно не изза того что условия для хедера небыло вообше? |
Можно поподробнее? Условие было.
Спустя 2 минуты, 44 секунды (7.08.2009 - 15:27) Kuliev написал(а):
ANG3
Короче ты тут нафлудил со своим хедером на две страницы, выложи код
(adminOnly.php , inc/cp.inc , mysql.php )
Спустя 1 минута, 29 секунд (7.08.2009 - 15:29) Gabriel написал(а):
PHP |
<?php ob_start(); header ("Location: list.php")
|
давай подробнее условия нету потому и редирект
Спустя 6 минут, 59 секунд (7.08.2009 - 15:36) Kuliev написал(а):
Цитата (Gabriel @ 7.08.2009 - 17:29) |
PHP | <?php ob_start(); header ("Location: list.php") |
давай подробнее условия нету потому и редирект
|
Какое там еще условие?

И вообще зачем хедер в буфер пихать?
Спустя 38 секунд (7.08.2009 - 15:37) Gabriel написал(а):
а так пустой висит и посылает туда куда указано
Спустя 1 минута, 29 секунд (7.08.2009 - 15:38) Kuliev написал(а):
Цитата (Gabriel @ 7.08.2009 - 17:37) |
ну так вот он был и редирект:) |
Редирект был потому что логика скрипта БЕСТОЛКОВАЯ!
Спустя 5 минут (7.08.2009 - 15:43) ANG3 написал(а):
Выложил всё. Хедер в буфер, потому что перед ним куча инклудов и вывод.
Из - за этого он не
работает. Решил решить проблему таким образом.
adminOnly.
php - писал его не я. Знаю что
работает 100%.
PHP |
<?php session_start(); if( (!isset($_SESSION['adminUser'])) || (!isset($_SESSION['adminPassword'])) ) { include_once("adminLogin.php"); exit; } // requires for multi applications inter-operability using same admin-Login-Only module if(file_exists("util.php")) { // phpyellow admin user and password file require_once("util.php"); } if(file_exists("mysetup.php")) { // give admin user and password file require_once("mysetup.php"); } if(file_exists("secret.php")) { // admin-Login-Only admin user and password file require_once("secret.php"); } if(file_exists("db_x.php")) { // all other admin user and password file require_once("db_x.php"); } if(file_exists("configure.php")) { // not commented require_once("configure.php"); } /* adminOnly.php if the session variables are not set or are incorrect values then present the login screen */ if( ($_SESSION['adminUser'] != ADMINUSER) || ($_SESSION['adminPassword'] != ADMINPASSWORD) ) { //header("Location: adminLogin.php"); include_once("adminLogin.php"); exit; }else{?> <div id="Layer1"> <table> <tr> <td width=32><a href="adminLogOut.php"><img src="appimage/icons/icon_logout.png" width="32" height="32" border=0 alt="Выйти"></a></td> <td width=32><a href="<?php echo ADMINHOME;?>"><img src="appimage/icons/icon_admin.png" width="32" height="32" border=0 alt="Главная"></a></td> </tr> <tr> <td style="font-size:x-small;"><a href="adminLogOut.php">Выйти</a></td> <td style="font-size:x-small;"><a href="<?php echo ADMINHOME;?>">Главная</a></td> </tr> </table></div> <?php } |
cp.inc - дизайн страницы
HTML |
<html> <head> <title>Личный кабинет</title> <META NAME="AUTHOR" CONTENT="">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1251">
<Style> A:Link{ Color: #BFE8FF; Text-decoration: none} A:Visited{ Color: #BFE8FF; Text-decoration: none} A:Active{ Color: #BFE8FF; Text-decoration: none} A:Hover{ Color: white; Text-decoration: none}
.table { border: none none #FFFFFF; font-family: Arial, Helvetica, sans-serif; font-size: 13px; color: #FFFFFF; } .table2 { padding: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 50px; font-size: 17px; color: #FFFFFF; }
#Layer1 { position:absolute; left:499px; top:32px; width:144px; height:52px; z-index:1; } </style> </head> <body bgcolor="#0070B3" topmargin="10" leftmargin="3"> <div
align="center"> <center> <table border="0" width="920" cellpadding="0" cellspacing="0"
height="116"> <tr> <td width="4" background="a_fon.jpg"><img border="0"
src="images/a1.jpg" width="4" height="116"></td> <td width="186"><span style="padding-top: 35"><img
src="images/logo1.jpg" width="218" height="116" border="0" ></span> <td width="280" background="images/a_fon.jpg"><p
align="right"></td> <center> <td width="443" background="images/a_fon.jpg" align="left"
valign="top" style="padding-top: 35"> </td> </center> <td width="7" align="left"> <p align="left"><img border="0" src="images/a3.jpg" height="116"></td> </tr> </table> <br>
|
mysql.
php - коннект к базе.
PHP |
<?php /* Параметры */ $hostname = "localhost"; $username = "root"; $password = "123";
/* Соединение, выбор БД */ mysql_connect($hostname,$username,$password) or die("Нет соединения"); mysql_select_db('kreptor_catalog');
|
Код самой страницы
PHP |
<?php ob_start();
require_once("adminOnly.php"); include('inc/cp.inc'); include('mysql.php');
$buf = ob_get_contents();
ob_end_clean(); ?> <?php
$id = !empty($_GET['id']) ? intval($_GET['id']) : null; $id2 = !empty($_GET['id2']) ? intval($_GET['id2']) : null;
mysql_query ("SET NAMES `cp1251`"); if (empty($id)) { $query="DELETE FROM `order` WHERE `id` ='$id2'"; $result=mysql_query($query) or die(mysql_error()); header ("Location: list.php"); exit();
} echo $buf; if (empty($id2)) {
$query="SELECT * FROM `order` WHERE `id`='$id' order by `date`"; $result=mysql_query($query) or die(mysql_error());
while ($row=mysql_fetch_array ($result)) { $name =$row['name']; $email =$row['email']; $tel =$row['tel']; $address =$row['address']; $order =nl2br($row['order']); $date =$row['date']; $inn =$row['inn'];
} echo ' <table width="396" border="0" align="left" cellpadding="0" cellspacing="0" class="table2"> <tr> <td width="105" valign="top"><strong>ID</strong></td> <td width="285" valign="top">'.$id.'</td> </tr> <tr> <td valign="top"><strong>Дата</strong></td> <td valign="top">'.$date.'</td> </tr> <tr> <td valign="top"><strong>Название</strong></td> <td valign="top">'.$name.'</td> </tr> <tr> <td valign="top"><strong>email</strong></td> <td valign="top">'.$email.'</td> </tr> <tr> <td valign="top"><strong>Телефон</strong></td> <td valign="top">'.$tel.'</td> </tr> <tr> <td valign="top"><strong>Адрес</strong></td> <td valign="top">'.$address.'</td> </tr> <tr> <td valign="top"><strong>ИНН/КПП</strong></td> <td valign="top">'.$inn.'</td> </tr> <tr> <td height="76" valign="top"><strong>Заказ</strong></td> <td align="left" valign="top">'.$order.'</td> </tr> <tr> <td align="right" valign="middle"><a href="list.php"><br><img src="images/arrow.png"></a></td> <td align="left" valign="middle"><strong><a href="list.php"><br> Назад</a></strong></td> </tr> <tr> <td><p> </p> <p> </p></td> </tr> </table>'; }
|
Спустя 5 минут, 10 секунд (7.08.2009 - 15:48) Kuliev написал(а):
ANG3
Вот так надо было сначала, сейчас сделаем
Спустя 22 минуты, 17 секунд (7.08.2009 - 16:11) Kuliev написал(а):
ANG3
В общем только что проверял у себя, у меня все работает!
Вот этот самый код.
PHP |
<?php ob_start();
require_once("adminOnly.php"); include('inc/cp.inc'); include('mysql.php');
$buf = ob_get_contents();
ob_end_clean();
$id = !empty($_GET['id']) ? $_GET['id'] : null; $id2 = !empty($_GET['id2']) ? $_GET['id2'] : null;
if (isset($id)) { $sql = "DELETE FROM `order` WHERE `id` ='".intval($id2)."'"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql); header ("Location: list.php"); exit();
}
if (isset($id2)) { $sql = "SELECT * FROM `order` WHERE `id`='".intval($id)."' order by `date`"; $result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
while ($row = mysql_fetch_assoc($result)) { $name = $row['name']; $email = $row['email']; $tel = $row['tel']; $address = $row['address']; $order = nl2br($row['order']); $date = $row['date']; $inn = $row['inn']; }
}
echo $buf; |
Спустя 1 час, 51 минута, 41 секунда (7.08.2009 - 18:02) ANG3 написал(а):
Спасибо!