Проблема с созданием билетов на мероприятие

Я пытаюсь переместить веб-сайт PHP с одного хоста (Avlux, который закрывается) на другой (DreamHost). У меня проблемы с кодом, который генерирует билеты событий. На данный момент я запускаю систему на WampServer, используя код Visual Studio для редактирования программ.

Это html-код ссылки «Распечатать» билет:

href = "/tickets/tickets/<?=$o->id?>/?access_token=<?=$o->access_token()?>"

И это функция:

public function access_token() {
   return base64_encode($this->id + 'ClearSight Studio');
}    

Проблема: На старом хосте билет генерируется. base64_encode создает набор символов, например: NjA4NTQ, и печатает билет. На новом хосте гиперссылка не создается и программа завершается.

Вопрос: Что означает знак вопроса в «/?access_token»?

Что я пробовал: Я попытался изолировать код, следующий за билетами/билетами, и запустить его автономно, но, похоже, я не могу сделать это снова, не создавая ошибку, которая, похоже, испортит всю программу в коде Visual Studio.

$o->id — целое число. Когда мне удалось запустить автономную функцию access_token, она не смогла объединить целое число со строкой. Поэтому я преобразовал его в строку $str_id и заменил id?> на

🤔 А знаете ли вы, что...
С PHP можно легко интегрировать с другими технологиями, такими как JavaScript и HTML.


71
2

Ответы:

Этот

href = "/tickets/tickets/<?=$o->id?>/?access_token=<?=$o->

Означает href, который включает в себя /tickets/tickets/, за которым следует любое значение (предположительно числовое), которое имеет $o->id, за которым следует /?, заканчивая эффективную часть URL-адреса, которая указывает, куда отправлять запрос, а ? здесь указывает, что строка запроса придет, где у вас будут пары key=value, разделенные & амперсандами. Итак, access_token является частью строки запроса и представляет собой параметр GET (к которому вы сможете получить доступ через $_GET['access_token']) в вашем PHP-коде), и его значением будет то, что вы описываете, предположительно $o->access_token или что-то в этом роде. Ваш код не работает из-за отсутствия надлежащего вложения для вашего <?, который представляет собой синтаксис, позволяющий передать инициативу PHP по вводу чего-либо в шаблон, поскольку PHP — это язык шаблонов. Итак, вам нужно будет выяснить, что такое $o, и исправить приведенный выше код примерно так:

href = "/tickets/tickets/<?=$o->id?>/?access_token=<?=$o->access_token?>

Решено

этот код:

base64_encode($this->id + 'ClearSight Studio');

приводит к ошибке:

Предупреждение PHP: Uncaught TypeError: Неподдерживаемые типы операндов: строка + int в оболочке php

вместо этого, чтобы объединить строку с целым числом, напишите:

base64_encode($this->id . 'ClearSight Studio');

Кажется, вы не смогли увидеть сообщение об ошибке. В вашем php.ini установите:

display_errors = On

... чтобы видеть предупреждения и ошибки в реальном времени во время разработки. Обязательно удалите этот параметр для производства.