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

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

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

Author24 — интернет-сервис помощи студентам
Всем привет, у меня на странице есть форма и в это же странице идет ее обработка, при нажатии на кнопку с 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2017, 09:29
Ответы с готовыми решениями:

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

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

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

Warning: Cannot modify header information - headers already sent в header('Location: /index.php');
Warning: Cannot modify header information - headers already sent by (output started at...

12
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.02.2017, 10:30 2
koolm, функция header должна вызываться до любого вывода (echo, print, print_r, var_dump и пр., а также всё, что находиться вне тегов <?php ?>).
1
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
07.02.2017, 12:10 3
а так же до html кода. И кодировка должна быть UTF-8 без BOM
1
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 14:19  [ТС] 4
Теперь пишет Cannot modify header information - headers already sent by
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
07.02.2017, 14:20 5
Цитата Сообщение от koolm Посмотреть сообщение
Cannot modify header information - headers already sent by
как вы пишите в коде , покажите пожалуйста.
1
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 14:26  [ТС] 6
Вот вообще весь основной 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
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
07.02.2017, 15:06 7
Цитата Сообщение от 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  [ТС] 8
Спасибо, помогло. А в чем была проблема? Почему не работало на php?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
07.02.2017, 23:55 9
Цитата Сообщение от koolm Посмотреть сообщение
Спасибо, помогло. А в чем была проблема? Почему не работало на php?
ну говорили же, не льзя вывод какой либо делать перед header();
1
0 / 0 / 2
Регистрация: 29.01.2015
Сообщений: 91
07.02.2017, 23:57  [ТС] 10
Странно, в другом файле делается без проблем, то есть если форму перенаправить на другой файл, а не на тот же, где форма. Просто хотел обойтись без лишних файлов.
0
8 / 8 / 3
Регистрация: 25.03.2015
Сообщений: 145
08.02.2017, 19:55 11
Кодировка файла ещё может быть. Ставьте UTF-8 без BOM. Можно делать вывод и в середине файла, если сверху поставить ob_flush();
1
Заблокирован
13.04.2019, 16:41 12
А можете объяснить механизм работы? в общем смысле по коду понятно, что условно говоря принудительно переводит на страницу. Зачем тогда в php такие ограничения на запись header?
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
13.04.2019, 16:51 13
Цитата Сообщение от BioRenGen Посмотреть сообщение
Зачем тогда в php такие ограничения на запись header?
Что означает предупреждение "headers already sent" Читать под спойлером "немного теории"
1
13.04.2019, 16:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2019, 16:51
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru