Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический сайт, http://***.ru/index.php?content=*** 
V
    Опции темы
adamant
Дата 1.3.2006, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.3.2006
Где: Москва

Репутация: нет
Всего: нет



У меня есть вопрос. Есть страница index с авторизацией, суть скрипта такая: Соединяется с MSSQL, получает сесию и записывает её если она есть, Далее идёт контент и после Заголовков происходит следующее =>

Код

<? 
if(empty($name) || empty($oldpwd) || empty($login))
{
print($form);
}
if ($username_check <= 0){header("Location: error.php");}
if ($name_check <= 0){header("Location: error.php");}
elseif ($pw_check <= 0){header("Location: error.php");}
if($username_check > 0 || $name_check > 0 || $pw_check > 0)
{
require'include/who.php';
}
?>

Исходя из скрипта всё ок. НО до него идёт контент и переадресация е работает, пихать вначало нельзя поскольку сразу редирект будет как решить проблемму?

Это сообщение отредактировал(а) adamant - 1.3.2006, 04:15
PM MAIL ICQ   Вверх
Serkys
Дата 1.3.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Используй буферизацию вывода. Поиск рулит.
PM MAIL   Вверх
Guedda
Дата 1.3.2006, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Попробуй это:
Код

echo "<META HTTP-EQUIV=\"Refresh\" Content=\"0; url=error.php\">";

Мне помогает в таких ситуациях.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
CTAPbIuMABP
Дата 1.3.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: 2
Всего: 1



Код

if(empty($name) || empty($oldpwd) || empty($login)){
    print($form);
} else {
   if ($username_check <= 0 || $name_check <= 0 || $pw_check <= 0) {
   header("Location: error.php");
   }else {
   require'include/who.php';
   }
}


и будет тебе счастье

Это сообщение отредактировал(а) CTAPbIuMABP - 1.3.2006, 11:02
PM WWW ICQ Skype   Вверх
adamant
Дата 1.3.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.3.2006
Где: Москва

Репутация: нет
Всего: нет



Хехе, спасибо всем взял Ваши коды за основу чуть переделал и заработало! НО => теперь У меня возник вопрос... Как сделать так чтобы при обновлении страницы из адресса удалялось это: ?do=error
Код

http://127.0.0.1/index.php?do=error


Это сообщение отредактировал(а) adamant - 1.3.2006, 23:23
PM MAIL ICQ   Вверх
krulik
Дата 2.3.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

Репутация: 2
Всего: 4



adamant, вот тут у меня такойже вопрос был. Ответ получил приблизительно такой.
Что нужно данные передавать методом POST и ниче такого небудет.
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
adamant
Дата 2.3.2006, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.3.2006
Где: Москва

Репутация: нет
Всего: нет



Ну если честно то изначально у меня POST и был smile Кстати А почему вот многие используют буферизацию для заголовков, Я например после того как сделал отладку скриптов всего навсего отключаю в php.ini
Код

display_errors = off

Ведь сообщение об ошибке это тоже заголовок, а если нужно узнать что за ошибка то:
Код

log_errors = On



Разве я не прав?
PM MAIL ICQ   Вверх
Serkys
Дата 3.3.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



adamant, php.ini ты на боевом серваке не подправишь.
Добавлено @ 00:51
Цитата(adamant @ 2.3.2006, 23:35 Найти цитируемый пост)
А почему вот многие используют буферизацию для заголовков

Если я тебя правильно понял, то буферизацию используют для того, чтобы заголовки можно было вставлять в любую точку скрипта (передача заголовков происходит до первого вывода на экран).
PM MAIL   Вверх
adamant
Дата 3.3.2006, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.3.2006
Где: Москва

Репутация: нет
Всего: нет



Да ты понял меня правильно...

Эч smile сталкнулся с проблемой:
Когда принимаеться инфа, то он её считает в любом случаи правельной как исправить Apache + MSSQL (MSSQL удалённо)
Прервая часть:
Код

require('include/function.php');

switch($do) 

case 'auth': 
$name = stripslashes($_POST['name']);
$login = stripslashes($_POST['login']);
$oldpwd = stripslashes($_POST['oldpwd']);
$_SESSION['login'] = "$login";
$_SESSION['name'] = "$name";
$_SESSION['oldpwd'] = "$oldpwd";
   if ($username_check = FALSE || $name_check = FALSE || $pw_check = FALSE) 
   {
   header("Location: index.php?do=error");
   } 
   if($username_check = TRUE|| $name_check = TRUE || $pw_check = TRUE)
{
   header("Location: index.php?do=ok");
}

break;


Вторая часть:
Код

switch($do)
{
case'error':
if($username_check = FALSE || $name_check = FALSE || $pw_check = FALSE)
{
print($form);
}
break;
}
if(empty($name) || empty($oldpwd) || empty($login))
   {
    print($form);
    }
switch($do)
{    
case'ok':
if($username_check = TRUE || $name_check = TRUE || $pw_check = TRUE)
    {
   require'include/who.php';
    }
break;
}

FUNCTION.PHP
Код

session_start();
if(isset($_GET['content'])) { $do=$_GET['content']; } 
require_once "sql_inject.php"; 
$bDestroy_session = TRUE; 
$url_redirect = 'index.php'; 
$sqlinject = new sql_inject('./log_file_sql.log',$bDestroy_session,$url_redirect)  ;
require 'config.php';
$msconnect=mssql_connect("$dbhost","$dbuser","$dbpasswd");
$msdb=mssql_select_db("MuOnline",$msconnect);

$sql_username_check = mssql_query("SELECT memb___id FROM MEMB_INFO WHERE memb___id='$login'"); 
$username_check = mssql_num_rows($sql_username_check); 
$sql_name_check = mssql_query("SELECT Name FROM Character WHERE Name='$name' and AccountID = '$login'"); 
$name_check = mssql_num_rows($sql_name_check); 
$sql_money_check = mssql_query("SELECT Money FROM Character WHERE Name='$name'");
$total_money = mssql_fetch_row($sql_money_check);
$sql_pw_check = mssql_query("SELECT memb__pwd FROM MEMB_INFO WHERE memb__pwd='$oldpwd' and memb___id='$login'"); 
$pw_check = mssql_num_rows($sql_pw_check); 
$money1 = 25000000;
$sql_res_check = mssql_query("SELECT res FROM Character WHERE Name='$name'");
$total_res = mssql_fetch_row($sql_res_check);
$sql_lvl_check = mssql_query("SELECT cLevel FROM Character WHERE Name='$name'");
$your_lvl = mssql_fetch_row($sql_lvl_check);
$res1 = $total_res[0] + 1;
$money_check = $money1 * $res1;

$form = "<span class='text'>
......../* форма большая писать не буду передаёться всё через post */


Это сообщение отредактировал(а) adamant - 3.3.2006, 22:19
PM MAIL ICQ   Вверх
Serkys
Дата 4.3.2006, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Блин, да отключите вы все уже register_globals и юзайте массивы $_GET и $_POST smile . И безопасней, и разобраться в ваших скриптах легче.
Возможно, у тебя register_globals и вывод предупреждений отключены, а ты всё равно переменные напрямую юзаешь.

З.Ы. Сегодня на учёбе на контрольной по паскалю ~40 минут сидел и мысленно матерился - прога работала криво. Под конец пары, когда уже почти вся прога была в бантиках, допёрло: вместо переменной m написал n (очепятка). Обняв несколько девчёнок и радостно матерясь, получил как всегда 5.
PM MAIL   Вверх
adamant
Дата 5.3.2006, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.3.2006
Где: Москва

Репутация: нет
Всего: нет



А какая разница между $_GET и $_POST и правда что $_POST безопастнее?
PM MAIL ICQ   Вверх
Ciber SLasH
Дата 5.3.2006, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Цитата(adamant @ 5.3.2006, 03:09 Найти цитируемый пост)
А какая разница между $_GET и $_POST

А какая разнице, когда ты передаёшь данные в самом URL-е: my-page.x?var1=10&var2=20
или когда ты всё отсылаешь НЕ через URL ? То-то и оно...

Цитата(adamant @ 5.3.2006, 03:09 Найти цитируемый пост)
и правда что $_POST безопастнее?

А как ты думаешь, если кто-либо в твой скрипт будет передавать переменные через GET прямо в URL-е или когда все переменные передаются через форму методом POST и этот кто-то не может изменить код страницы? Догадайся с трёх раз что безопаснее...

А вообще мог бы и поиском воспользоваться...
PM   Вверх
Serkys
Дата 5.3.2006, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



adamant, ты не слишком доверяй POST'у, его тоже подделать можно. Сложнее, но тоже проверяй данные прежде чем их использовать.
PM MAIL   Вверх
Ciber SLasH
Дата 5.3.2006, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Нельзя вообще доверять тому, что вводит юзер, какой бы метод не использовался. А подделать данные конечно можно — точно не знаю технологию... знаю, что создают туннель между двумя узлами (клиент/сервер) и все пакеты идут через третий компьютер в сети... таким макаром можно подделывать передаваемые данные.
PM   Вверх
adamant
Дата 5.3.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 1.3.2006
Где: Москва

Репутация: нет
Всего: нет



Sorry but... Я плохо пользуюсь поиском поскольку не могу сформулировать вопрос smile.

Это сообщение отредактировал(а) adamant - 5.3.2006, 15:01
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0954 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.