<MyRusakov.ru />

Создание Интернет-магазина на PHP и MySQL

Создание Интернет-магазина на PHP и MySQL

Видеокурс "Создание Интернет-магазина на PHP и MySQL" - это уникальный курс по созданию Интернет-магазина с нуля. Особенностью данного курса является то, что создание идёт с самого начала, то есть от идеи. Далее создаётся дизайн всех необходимых страниц, после делается их вёрстка. Затем создаётся движок на PHP и MySQL, после делается Admin-панель и, наконец, готовый сайт размещается в Интернете.

Адрес созданного в этом курсе сайта: http://storedvd.ru

Всё создание сайта будет происходить на Ваших глазах, поэтому Вы легко сможете повторить весь процесс создания сложного функционального сайта уже при разработке своего портала.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Редирект на PHP. Альтернативы.
29.06.2012 03:51:48 Редирект на PHP. Альтернативы. Сообщение #1
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Для начала хотелось бы отдать дань уважения Админу за неплохие уроки.

А теперь проблема из жанра "или лыжи не едут или я..."

имею такой кусок кода
<?php
if(error)){
session_stert();
$_SESSION['error'] = 1;
header("Location: http://site.ru";
exit();}
.......?>


Error - понятие абстрактное.

Но самый ступор начинается в том, что сессия исправно создается, а редиректа не происходит.
Говорит что заголовки уже посылались.

Если поменять местами session_start() и header() происходит перенаправление, но сессия то всё-таки нужна.

Как альтернативу я использую такую конструкцию:
echo '<html><head><meta ... refresh="0; content=http://site.ru"/></head></html>'

Но можно ли это как-то сократить или исправить ошибку в php-файле?
Профиль Ответить
29.06.2012 14:12:49 Редирект на PHP. Альтернативы. Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

session_stert(); - раз ошибка (session_start()), и if (error) - весьма странно, возможно, надо было if ($error)
Профиль Ответить
30.06.2012 17:14:49 Редирект на PHP. Альтернативы. Сообщение #3
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Это я здесь опечатку допустил. В коде синтаксических ошибок нет.
Как я уже упоминал понятие error - абстрактное, означающее условие, которое в алгоритме программы будет считаться за ошибку.

К примеру:

//нет нужного результата
if(mysql_num_rows($sel) == 0){
session_start();
$_SESSION['error'] = 1;
hader("Location: http://sitename.ru";
exit();}
Профиль Ответить
30.06.2012 17:18:03 Редирект на PHP. Альтернативы. Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Я почему цепляюсь к ошибкам, потому что без них всё прекрасно работает. И сессии можно использовать до header(). Поэтому идём дальше:
1. header(), а не hader().
2. } скобка должна закрываться у if.
Профиль Ответить
30.06.2012 17:54:40 Редирект на PHP. Альтернативы. Сообщение #5
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Так почему я к Вам и обращаюсь!!!
Сам ничего не понимаю.
Если написать код вот так:

if(isset_error){
session_start();
header("location: http://site.ru";
$_SESSION['error'] = 1;
exit();}

Никаких ошибок не выдает, редирект происходит, но сессия не создается, что в принципе не удивляет.
если код написан так

.....
$_SESSION['error'] = 1;
header("location: http://site.ru";
exit();}

появляется строчка с ошибкой. Я уже не знаю что делать.=(
Профиль Ответить
30.06.2012 18:02:19 Редирект на PHP. Альтернативы. Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

появляется строчка с ошибкой
Какую именно ошибку?
Профиль Ответить
30.06.2012 18:09:02 Редирект на PHP. Альтернативы. Сообщение #7
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Warning: Cannot modify header information - headers already sent by (output started at S:\home\site.ru\www\bloc\doctipe2.php:8) in S:\home\site.ru\www\bloc\regform.php on line 12
Профиль Ответить
30.06.2012 18:23:12 Редирект на PHP. Альтернативы. Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Ошибка где-то в другой части кода. Что-то выводится до session_start() через echo или как-то иначе, либо кодировка отличная от UTF-8 без BOM (например, просто UTF-8).
Профиль Ответить
30.06.2012 18:41:29 Редирект на PHP. Альтернативы. Сообщение #9
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

1. <?php
2. include_once('/blocs/con_name.inc');
3. //подключаемся к базе
4. $db = @new mysqli($host, $user, $pass, $base) or die("error connect database";
5.
6. //отправляем запрос к бд
7. $sql = $db -> query("SELECT * FROM table ORDER BY `id`";
8. //проверяем успешность
9. if(mysqli_num_rows($sql) == 0){
10. session_start();
11. $_SESSION['error'] = 1;
12. header("location: http://site.ru";
13. exit();}
14.
15.//если успешно, то продолжаем


Можно узнать где? И почему когда я стираю строку 11, всё выполняется без проблем?
Профиль Ответить
30.06.2012 21:12:07 Редирект на PHP. Альтернативы. Сообщение #10
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Думаю, что-нибудь здесь: include_once('/blocs/con_name.inc'); А вывод происходит здесь: doctipe2.php в 8-й строке.
Профиль Ответить