PHP перенаправить на страницу с параметрами

1

Я новичок в 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>&nbsp;</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 
?>
  • 1
    Этот код выглядит правильно (хотя добавление die после header гарантирует, что на странице больше ничего не будет работать). Может ли быть так, что страница, на которую вы перенаправляете, сама по себе /abc/ имеет какое-то перенаправление? Опубликуйте также содержимое вашего файла .htaccess , так как это может работать неправильно.
  • 1
    используйте выход (0) вместо die
Показать ещё 4 комментария
Теги:

2 ответа

1

Здесь есть несколько вещей.

Самое главное, вам нужно установить свой заголовок с двойными кавычками " а не одинарные кавычки, пожалуйста, просмотрите расположение заголовка 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?

0

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

$location = 'https://mywebsite.com/abc/';
$params = '?a=xyz'; // set your parameters in variable

header("Location: $location.$params"); // double-quote there

источник: расположение заголовка PHP с параметром

  • 2
    params = '?a=xyz'; это ошибка разбора. Возможно, вы захотите исправить это, прежде чем кто-то отрицает вас.
  • 0
    Это ничего не решает, просто разбивает проблему на несколько переменных. Нет причины, по которой $location не может содержать строку запроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню