Я новичок в php. Я пытаюсь перенаправить на какую-то страницу. Сначала я пытаюсь жестко кодировать, как показано ниже, но все еще не работает.
$location = 'https://mywebsite.com/abc/?a=xyz';
header('Location:'.$location);
Выше всего переадресовываются до: https://mywebsite.com/abc/
Но я не могу получить query-params в конце URL-адреса. Пожалуйста, скажите, пожалуйста, что такое исправление?
Редакция:
В журналах я получаю следующее предупреждение:
PHP Warning: Cannot modify header information - headers already sent by (output started at /myfile1.php:34) in /myfile2.php on line 317,
Вот код myfile1.php:
class MyClass32
{
function myFun() {
?>
<head>
<body>
<div align=center>
<p><br>
<table width=778 cellpadding=0 cellspacing=0 border=0>
<tr>
<td bgcolor="#3399cc" width=6> </td>
<td colspan=3>
<table width="100%" cellPadding=0 cellSpacing=0 border=0>
<tr>
<?php // **THIS IS LINE 34**
//START TOP RIGHT MENU
$abc = new MyClass($this);
if ($this->isLog()) $xyz->goInto();
//END TOP RIGHT MENU
?>
Здесь есть несколько вещей.
Самое главное, вам нужно установить свой заголовок с двойными кавычками "
а не одинарные кавычки, пожалуйста, просмотрите расположение заголовка PHP с параметром для получения дополнительной информации об этом.
Вам также необходимо установить exit;
или die после заголовка, чтобы гарантировать, что обработка страницы с помощью PHP прекратится после достижения заголовка.
Вывод вашей ошибки сообщает вам, что страница выводит что-то в браузер перед значением заголовка, это может быть что угодно, включая пробел или PHP.
Проверьте такие вещи, как
<--- file start
<?php
$var...
header("stuff.php");
Перед <?php
есть пробел, и это даст вам аналогичное сообщение об ошибке. Проверьте их на свой код.
Просмотрите источник своей страницы myfile1.php
, если источник НЕ пуст, вы обнаружили, что происходит, похоже, что ваш class-> myfun() выводит его содержимое при его вызове.
Вероятно, достаточно много убирать и перестраивать ваш код, который вам нужен, что выходит за рамки этого текущего вопроса. но важно, измените
function myFun() {
?>
output text
<?php
}
в нечто большее с этим синтаксисом:
function myFun(){
$output = "
output text
";
}
Это означает, что вы затем контролируете, когда и как отображаются ваши данные, чтобы впоследствии вы могли использовать PHP файл, это больше похоже на:
if (true || false ){
header("Location:some.php");
exit;
}
else {
print $output;
}
Это грубая форма буферизации вывода: что такое буферизация вывода?
Также:
Проверьте такие вещи, как ваш .htaccess
и другие перенаправления, которые заставят /index.php?a=xyz перенаправить себя на /index.php или иным образом удалить строку запроса, как упоминалось в Splash58.
Также:
AVOID, давая вашим переменным имя $this
, особенно в контексте метода класса. Что означает переменная $ this в PHP?
Попробуй это:
$location = 'https://mywebsite.com/abc/';
$params = '?a=xyz'; // set your parameters in variable
header("Location: $location.$params"); // double-quote there
источник: расположение заголовка PHP с параметром
params = '?a=xyz';
это ошибка разбора. Возможно, вы захотите исправить это, прежде чем кто-то отрицает вас.
$location
не может содержать строку запроса.
die
послеheader
гарантирует, что на странице больше ничего не будет работать). Может ли быть так, что страница, на которую вы перенаправляете, сама по себе/abc/
имеет какое-то перенаправление? Опубликуйте также содержимое вашего файла.htaccess
, так как это может работать неправильно.