Поэтому я хочу создать простую страницу результатов, которая позволяет пользователям загружать свои результаты, используя данный код.
Это сценарий:
<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
Я не знаю, где ошибка в моем коде.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам не хватает «.» перед PDF, не так ли?
А также неправильный заголовок ('Расположение: ./'$filename' ');
Попробуй это :)
<?php
$name = $_POST['logincode'];
$filename = $name.'/'.$name.'.pdf';
header('Location: ./'.$filename);
?>
спасибо братья, но когда я попробовал любой из этих кодов, он не перенаправлял в pdf файл, страница обновлялась, вот и все
Может быть, вам нужны две точки, чтобы вернуть папку вроде «Location: ../‘.$filename); ?
нет, сэр, папка находится в той же папке скрипта, поэтому я мог бы использовать одну точку, я думаю, что проблема находится на кнопке отправки, не работает хорошо
Это очень небезопасный код!
Основные изменения ниже:
TODO by youin snippetin 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>Почему это небезопасно?
Речь шла о коде @walidz (без каких-либо тестов вводимых пользователем данных или метода http_request), а не о вашем. Ваш ответ отличный. Мы писали ответы одновременно.
спасибо братья, но когда я попробовал любой из этих кодов, он не перенаправлял в pdf файл, страница обновлялась, вот и все
Оно работает. Я уверен. Я проверил это еще раз минуту назад Сервер Linux / Apache / php-7.1.13; браузеры ffx / chrome / IE11 / MS Edge во всех браузерах работают как положено, это означает перенаправление в файл pdf.
Я не знаю, почему это не работает, я пробовал на 000webhost и localhost и некоторых других серверах, всегда то же самое, что не перенаправляется в файл pdf, он просто обновляется при вводе iclick
Проверьте, есть ли у вас какой-либо знак (любой пробел в скрипте) перед <? Php, если ваш сервер поместил что-то в ответ - header (...) не будет работать. (или, возможно, ваш сохраненный файл с UTF-8 с кодировкой BOM, измените это на UTF-8 без BOM). Фрагмент кода @Lawrence Cherone id grat и имеет обработку ошибок, разве вы не видели здесь ошибок?
Несколько вопросов,
. между именем файла и расширением''Вы также должны проверять свои переменные по ходу работы, а также проверять, существует ли файл, чтобы вы могли отображать ошибки.
<?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 Я его отредактировал, теперь буду работать, кстати, на моем локальном хосте.
когда вы заполняете ввод xxxx и нажимаете ввод, он будет перенаправлен на xxx / xxx.pdf? вы сюр сэр? Я пробовал на 3 веб-хостинге, но он все еще не работает
@walidz Да, работает. Предположим, что URL вашего файла - localhost / location.php, введите xxxx и отправьте, он перейдет на localhost / xxxx / xxxx.pdf. Если там нет файла, отобразится ошибка. Убедитесь, что у вас есть файл в месте перенаправления.
его хорошо, сэр, да, вы правы, ошибка - это расширение файла сценария
это сделано, сэр, да, вы правы, ошибка - это расширение файла сценария, это был html, теперь его php все готово, спасибо, сэр
@walidz, если мой ответ помог вам, проголосуйте за него и поставьте галочку рядом с ним.
Что не так? Судя по всему, вам нужно поместить команду
header()перед любым выходом.