Перенаправление на входное значение HTML из PHP

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

Это сценарий:

<form action = "" method = "post" >
    <input type = "text" name = "logincode">
    <input type = "submit" name = "send">
</form>

<?php
    $name = $_POST['logincode'];
    $filename = $name.'/'.$name.'pdf';  
    header('Location: ./'$filename'');
?>

Принцип заключается в том, что когда пользователь пишет в поле ввода, например (1234) и нажимает Enter, он должен перенаправить его на:

./1234/1234.pdf

Я не знаю, где ошибка в моем коде.

Что не так? Судя по всему, вам нужно поместить команду header()перед любым выходом.

showdev 15.03.2018 19:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
165
4

Ответы 4

Вам не хватает «.» перед PDF, не так ли?

А также неправильный заголовок ('Расположение: ./'$filename' ');

Попробуй это :)

<?php
$name = $_POST['logincode'];

$filename = $name.'/'.$name.'.pdf';
header('Location: ./'.$filename);
?>

спасибо братья, но когда я попробовал любой из этих кодов, он не перенаправлял в pdf файл, страница обновлялась, вот и все

walidz 15.03.2018 21:46

Может быть, вам нужны две точки, чтобы вернуть папку вроде «Location: ../‘.$filename); ?

Jonas Borneland 15.03.2018 21:54

нет, сэр, папка находится в той же папке скрипта, поэтому я мог бы использовать одну точку, я думаю, что проблема находится на кнопке отправки, не работает хорошо

walidz 16.03.2018 00:18

Это очень небезопасный код!

Основные изменения ниже:

  • написать тест для данных, вводимых пользователемTODO by you
  • сначала изменить порядок кода блока PHP, затем код формы (HTML) in snippet
  • добавить тест - это отправить метод_запроса перед любым $ _POST ['...']; in snippet
  • добавить. (точка) перед расширением имени файла i $ filename in snippet

        <?php
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $name = $_POST['logincode'];
            
            $filename = $name.'/'.$name.'.pdf';  
            header('Location: ./'$filename'');
        }
    
        ?>
    
        <form action = "" method = "post" >
        <input type = "text" name = "logincode">
        <input type = "submit" name = "send">
        </form>

Почему это небезопасно?

Lawrence Cherone 15.03.2018 19:41

Речь шла о коде @walidz (без каких-либо тестов вводимых пользователем данных или метода http_request), а не о вашем. Ваш ответ отличный. Мы писали ответы одновременно.

SlaWitDev 15.03.2018 19:56

спасибо братья, но когда я попробовал любой из этих кодов, он не перенаправлял в pdf файл, страница обновлялась, вот и все

walidz 15.03.2018 21:46

Оно работает. Я уверен. Я проверил это еще раз минуту назад Сервер Linux / Apache / php-7.1.13; браузеры ffx / chrome / IE11 / MS Edge во всех браузерах работают как положено, это означает перенаправление в файл pdf.

SlaWitDev 15.03.2018 22:04

Я не знаю, почему это не работает, я пробовал на 000webhost и localhost и некоторых других серверах, всегда то же самое, что не перенаправляется в файл pdf, он просто обновляется при вводе iclick

walidz 16.03.2018 09:57

Проверьте, есть ли у вас какой-либо знак (любой пробел в скрипте) перед <? Php, если ваш сервер поместил что-то в ответ - header (...) не будет работать. (или, возможно, ваш сохраненный файл с UTF-8 с кодировкой BOM, измените это на UTF-8 без BOM). Фрагмент кода @Lawrence Cherone id grat и имеет обработку ошибок, разве вы не видели здесь ошибок?

SlaWitDev 16.03.2018 10:22

Несколько вопросов,

  • Ваш заголовок должен быть перед всем остальным, как @showdev, упомянутым в комментарии.
  • Вам не хватает . между именем файла и расширением
  • У вас также есть синтаксическая ошибка в завершающем заголовке ''
  • И вы должны выйти из заголовков перенаправления.

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

<?php
// check post request
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
   $errors = [];
   // check logincode is set and a number
   if (!isset($_POST['logincode']) || !is_numeric($_POST['logincode'])) {
       $errors['logincode'] = 'Invalid login code';
   } else {
       $name = $_POST['logincode'];

       // check file is found
       if (!file_exists($name.'/'.$name.'.pdf')) {
           $errors['logincode'] = 'Your results are not ready.';
       }

       // now check for empty errors
       if (empty($errors)) {
           exit(header('Location: ./'.$name.'/'.$name.'.pdf'));
       }
   }
}
?>

<form action = "" method = "post">
    <?= (!empty($errors['logincode']) ? $errors['logincode'] : '') ?>
    <input type = "text" name = "logincode">
    <input type = "submit" name = "send">
</form>
<form action = "" method = "post" >
<input type = "text" name = "logincode">
<input type = "submit" name = "send">
</form>

<?php
if ($_POST){
$name = $_POST['logincode'];


$filename = $name.'/'.$name.'.pdf';

header('Location: ./'.$filename.'');
}
?>

спасибо братья, но когда я попробовал любой из этих кодов, он не перенаправлял в pdf файл, страница обновлялась, вот и все

walidz 15.03.2018 20:49

@walidz Я его отредактировал, теперь буду работать, кстати, на моем локальном хосте.

Vinayak 16.03.2018 02:44

когда вы заполняете ввод xxxx и нажимаете ввод, он будет перенаправлен на xxx / xxx.pdf? вы сюр сэр? Я пробовал на 3 веб-хостинге, но он все еще не работает

walidz 16.03.2018 09:40

@walidz Да, работает. Предположим, что URL вашего файла - localhost / location.php, введите xxxx и отправьте, он перейдет на localhost / xxxx / xxxx.pdf. Если там нет файла, отобразится ошибка. Убедитесь, что у вас есть файл в месте перенаправления.

Vinayak 16.03.2018 10:16

его хорошо, сэр, да, вы правы, ошибка - это расширение файла сценария

walidz 16.03.2018 20:14

это сделано, сэр, да, вы правы, ошибка - это расширение файла сценария, это был html, теперь его php все готово, спасибо, сэр

walidz 16.03.2018 20:15

@walidz, если мой ответ помог вам, проголосуйте за него и поставьте галочку рядом с ним.

Vinayak 17.03.2018 00:40

Другие вопросы по теме