Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/55: Рейтинг темы: голосов - 55, средняя оценка - 4.89
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91

Не работает header(Location)

07.02.2017, 09:29. Показов 10886. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, у меня на странице есть форма и в это же странице идет ее обработка, при нажатии на кнопку с name=order, в базу данных все записывается, а вот дальше, не редиректит на страницу на следующую, в чем может быть проблема?

На спасибо тыкну всем!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
if (isset($_POST['order'])) {
    if(isset($_FILES['filename']) && $_FILES['filename']['error'] == 0){
        // Директория для закачивания
        $dir = '/img/klientphoto/'; 
        // Допустимые MIME-типы
        $arrType = array('image/jpeg','image/gif','image/png',);
        // Допустимые расширения
        $arrExt = array('png', 'jpg', 'jpeg', 'gif');
        // Получаем расширение файла
        $ext = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION);
        // 1. Проверка MIME-тип файла и расширение
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        $type = $finfo->file($_FILES['filename']['tmp_name']);
        if (in_array($type, $arrType) && in_array($ext, $arrExt)){
            // 2. Генерирование уникального имени и пути файла
            $filepath = $dir.uniqid().'.'.$ext;
            if(move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$filepath)){
                // Если файл загружен, то можем вывести его на экран
            } else {
                echo 'Хьюстон! У нас проблемы!';
            }
        }
    }
 
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $region = $_POST['region'];
    $city = $_POST['city'];
    $street = $_POST['street'];
    $home = $_POST['home'];
 
    $adres = "$region  $city  $street  $home";
    $orderNumber = $_POST['orderNumber'];
    $product = $_POST['product'];
    $idproduct = $_POST['idproduct'];
    $paymethod = $_POST['paymethod'];
    $price = $_POST['price'];
    $itogo = $_POST['itogo'];
    
    $today = date("d.m.y H:m:s");  
 
    $result = mysql_query ("INSERT INTO LS_Client (Name, Phone, E_mail, Adres, Product, Price, Itogo, PayMethod, NamePhoto, IdProduct, DataTime, OrderNumber) VALUES ('$name', '$phone', '$email', '$adres', '$product', '$price', '$itogo', '$paymethod', '$filepath', '$idproduct', '$today', '$orderNumber')") or die (mysql_error());
 
    header( 'Location: /paynow.php?ordernumber=$orderNumber', true, 303 );
}
?>
И прям на это же странице, у меня огромная форма, по этому смысл полностью писать ее нет, тем более в базу данных все записывается. Для примера напишу.


HTML5
1
2
3
4
5
<form class="checkout" method="post" action="index.php?id=<?echo $id;?>" enctype="multipart/form-data">
     <input class="button" type="submit" name="order" value="Заказать"> 
     <!-- Скрытые inputs -->
     <input type="text" name="orderNumber" value="<?php echo $ordn?>" hidden="">
</form>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2017, 09:29
Ответы с готовыми решениями:

Не работает header('Location: /');
Добрый день, пишу регистрацию с авторизацией. Задача, после авторизации пользователя, чтобы его редиректило на главную страницу. Но...

Не работает Header location
Помогите сделать такую схему: Если существует $_SESSION то выводим следующий html, если нет, то перенаправляем на какую-либо страницу? ...

Почему в винде не работает header('Location: index.php'); ?
Почему в винде не работает header('Location: index.php'); ?

12
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.02.2017, 10:30
koolm, функция header должна вызываться до любого вывода (echo, print, print_r, var_dump и пр., а также всё, что находиться вне тегов <?php ?>).
1
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
07.02.2017, 12:10
а так же до html кода. И кодировка должна быть UTF-8 без BOM
1
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 14:19  [ТС]
Теперь пишет Cannot modify header information - headers already sent by
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
07.02.2017, 14:20
Цитата Сообщение от koolm Посмотреть сообщение
Cannot modify header information - headers already sent by
как вы пишите в коде , покажите пожалуйста.
1
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 14:26  [ТС]
Вот вообще весь основной php страницы, извиняюсь за неубранные ссылки, сайт все равно не готов и размещаться будет на другом домене.
Ну и конечно бордак в коде, но к порядку приводить потом буду, когда сделаю все.

А вот сам
header("Location: http://orenmorozko.ru/page/pay/paynow.php?orderNumber=$orderNumber");
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
include "../../php/config.php";
$id = $_GET['id'];
 
 
if (isset($_POST['order'])) {
    if(isset($_FILES['filename']) && $_FILES['filename']['error'] == 0){
        // Директория для закачивания
        $dir = '/img/klientphoto/'; 
        // Допустимые MIME-типы
        $arrType = array('image/jpeg','image/gif','image/png',);
        // Допустимые расширения
        $arrExt = array('png', 'jpg', 'jpeg', 'gif');
        // Получаем расширение файла
        $ext = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION);
        // 1. Проверка MIME-тип файла и расширение
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        $type = $finfo->file($_FILES['filename']['tmp_name']);
        if (in_array($type, $arrType) && in_array($ext, $arrExt)){
            // 2. Генерирование уникального имени и пути файла
            $filepath = $dir.uniqid().'.'.$ext;
            if(move_uploaded_file($_FILES['filename']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$filepath)){
                // Если файл загружен, то можем вывести его на экран
            } else {
                echo 'Хьюстон! У нас проблемы!';
            }
        }
    }
 
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $region = $_POST['region'];
    $city = $_POST['city'];
    $street = $_POST['street'];
    $home = $_POST['home'];
 
    $adres = "$region  $city  $street  $home";
    $orderNumber = $_POST['orderNumber'];
    $product = $_POST['product'];
    $idproduct = $_POST['idproduct'];
    $paymethod = $_POST['paymethod'];
    $price = $_POST['price'];
    $itogo = $_POST['itogo'];
    
    $today = date("d.m.y H:m:s");  
 
    $result = mysql_query ("INSERT INTO LS_Client (Name, Phone, E_mail, Adres, Product, Price, Itogo, PayMethod, NamePhoto, IdProduct, DataTime, OrderNumber) VALUES ('$name', '$phone', '$email', '$adres', '$product', '$price', '$itogo', '$paymethod', '$filepath', '$idproduct', '$today', '$orderNumber')") or die (mysql_error());
 
    header("Location: http://orenmorozko.ru/page/pay/paynow.php?orderNumber=$orderNumber"); // вот собственно сам header.  $orderNumber генерируется случайно, при заходе на страницу и вставляется в инпут скрытый
}
 
 
$ordn = round(microtime(true) * 1000);
$sql = mysql_query("SELECT * FROM `LS_Catalog` WHERE Id=$id") or die(mysql_error());
    $newsData = array();
    while($result = mysql_fetch_array($sql, MYSQL_ASSOC)){
        $newsData[] = $result;
    }           
    foreach($newsData as $pr): 
?>
<?$title = $pr['Title'];?>
<?$size = $pr['Size'];?>
<?$img = $pr['Img'];?>
<?$regprice = $pr['RegularPrice'];?>
<?$oldprice = $pr['OldPrice'];?>
 
<?$saleonof = $pr['Sale'];?>
 
<? $itg = ($regprice - $regprice*(10)*0.01);?>
 
<?php endforeach; ?>
 
 
 
<?php           
    $sql = mysql_query("
        SELECT * FROM `LS_Settings` LIMIT 1
    ") or die(mysql_error());
    $newsData = array();
    while($result = mysql_fetch_array($sql, MYSQL_ASSOC)){
        $newsData[] = $result;
    }           
    foreach($newsData as $settings): 
?>
<?=$settings['YandexWebMaster'];?>
<?=$settings['YandexMetrika'];?>
<?$domen = $settings['Domen'];?>
<?$phone = $settings['Phone'];?>
<?php endforeach; ?>
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
07.02.2017, 15:06
Цитата Сообщение от koolm Посмотреть сообщение
header("Location: http://orenmorozko.ru/page/pay/paynow.php?orderNumber=$orderNumber");
Замените на

PHP
1
echo "<script>window.location.href='http://orenmorozko.ru/page/pay/paynow.php?orderNumber=$orderNumber'</script>";
2
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 23:02  [ТС]
Спасибо, помогло. А в чем была проблема? Почему не работало на php?
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
07.02.2017, 23:55
Цитата Сообщение от koolm Посмотреть сообщение
Спасибо, помогло. А в чем была проблема? Почему не работало на php?
ну говорили же, не льзя вывод какой либо делать перед header();
1
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 23:57  [ТС]
Странно, в другом файле делается без проблем, то есть если форму перенаправить на другой файл, а не на тот же, где форма. Просто хотел обойтись без лишних файлов.
0
8 / 8 / 3
Регистрация: 25.03.2015
Сообщений: 145
08.02.2017, 19:55
Кодировка файла ещё может быть. Ставьте UTF-8 без BOM. Можно делать вывод и в середине файла, если сверху поставить ob_flush();
1
Заблокирован
13.04.2019, 16:41
А можете объяснить механизм работы? в общем смысле по коду понятно, что условно говоря принудительно переводит на страницу. Зачем тогда в php такие ограничения на запись header?
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
13.04.2019, 16:51
Цитата Сообщение от BioRenGen Посмотреть сообщение
Зачем тогда в php такие ограничения на запись header?
Что означает предупреждение "headers already sent" Читать под спойлером "немного теории"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2019, 16:51
Помогаю со студенческими работами здесь

Warning: Cannot modify header information - headers already sent в header('Location: /index.php');
Warning: Cannot modify header information - headers already sent by (output started at S:\home\localhost\www\new\cms\login.php:10) in...

Почему не работает перенаправление header("Location: ")? выводит только его html
Добрый день, у меня такая проблема: есть простая страничка, я убрал оттуда все лишнее и оставил только это: &lt;?php ...

Header("Location: ") не работает
у меня ввыводится ошибка Warning: Cannot modify header information - headers already sent by (output started at...

Header location
Доступные темы перечитал. Вывода перед header нет. Один и тот-же код работает в IE и Mozilla В других нет. В хроме получаю ошибку...

Header location
Здравстуйте есть log_in.php 1)header(&quot;Location:main.php&quot;); - отправляет на log_in.php(как будто просто рефрешит ее) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Мониторинг микросервисов с OpenTelemetry в Kubernetes
Mr. Docker 04.07.2025
Проблема наблюдаемости (observability) в Kubernetes - это не просто вопрос сбора логов или метрик. Это целый комплекс вызовов, которые возникают из-за самой природы контейнеризации и оркестрации. К. . .
Проблемы с Kotlin и Wasm при создании игры
GameUnited 03.07.2025
В современном мире разработки игр выбор технологии - это зачастую балансирование между удобством разработки, переносимостью и производительностью. Когда я решил создать свою первую веб-игру, мой. . .
Создаем микросервисы с Go и Kubernetes
golander 02.07.2025
Когда я только начинал с микросервисами, все спорили о том, какой язык юзать. Сейчас Go (или Golang) фактически захватил эту нишу. И вот почему этот язык настолько заходит для этих задач: . . .
C++23, квантовые вычисления и взаимодействие с Q#
bytestream 02.07.2025
Я всегда с некоторым скептицизмом относился к громким заявлениям о революциях в IT, но квантовые вычисления - это тот случай, когда революция действительно происходит прямо у нас на глазах. Последние. . .
Вот в чем сила LM.
Hrethgir 02.07.2025
как на английском будет “обслуживание“ Слово «обслуживание» на английском языке может переводиться несколькими способами в зависимости от контекста: * **Service** — самый распространённый. . .
Использование Keycloak со Spring Boot и интеграция Identity Provider
Javaican 01.07.2025
Два года назад я получил задачу, которая сначала показалась тривиальной: интегрировать корпоративную аутентификацию в микросервисную архитектуру. На тот момент у нас было семь Spring Boot приложений,. . .
Содержание темы с примерами на WebGL
8Observer8 01.07.2025
Все примеры из книги Мацуды и Ли в песочнице JSFiddle Пример выводит точку красного цвета размером 10 пикселей на WebGL 1. 0 и 2. 0 WebGL 1. 0. Передача координаты точки из главной программы в. . .
Основы WebGL. Простой треугольник
8Observer8 01.07.2025
Простой треугольник без трансформаций. Для трансформаций можно использовать glMatrix, как в примере: https:/ / plnkr. co/ edit/ qT6ZTwvncLPRamK5?preview На русском: . . .
Полиглотные микросервисы на C# и .NET
ArchitectMsa 30.06.2025
Полиглотная архитектура появилась не из желания усложнить жизнь разработчикам. Она родилась из практической необходимости решать разные задачи наиболее эффективным способом. В одном из проектов. . .
Стратегии кеширования
Javaican 29.06.2025
Кеширование — это хранение часто запрашиваемых данных в быстром хранилище (обычно в памяти), чтобы не обращаться к более медленному первоисточнику. Казалось бы, все просто. Но за этой простотой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru