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

Я пытаюсь переместить веб-сайт 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?> на

Что касается вопросительного знака, взгляните на синтаксис URL-адреса. Знак вопроса предшествует необязательному компоненту запроса. Пожалуйста, отредактируйте свой вопрос, чтобы исправить сегменты кода, поскольку они не имеют особого смысла.

KIKO Software 25.08.2024 20:52

вопросительный знак в URL-адресе делает остальное параметром: my.php?param1=valueA&param2=valueB .. вы можете получить доступ к «значениям» в my.php через $_GET['param1']

Kaii 25.08.2024 21:10

Вы проверяли журнал ошибок на сервере? Случайно ли ваша смена хоста также включала переход на более новую версию php?

ADyson 26.08.2024 01:19

Да, это более новая версия PHP: 8.0.

Penny 27.08.2024 04:43

Спасибо. Итак, причиной разницы в поведении вашего кода является смена версии PHP, а не смена хоста!

ADyson 27.08.2024 10:12

@Penny Привет, Пенни, добро пожаловать в Stack Overflow. Это может быть непростое место, и мне немного жаль, что ваш первый контакт оказался таким плохим. Но это не просто доска объявлений, где другие помогают вам решить ваши проблемы. Вам нужно проявить некоторые усилия, чтобы найти решение самостоятельно. Поэтому, естественно, для новичков Stack Overflow — суровое место. Это место ожидает, что вы прочитаете руководства и ответы Google, прежде чем задавать вопросы.

Kaii 30.08.2024 01:24

Спасибо. Мне кажется, что я зашел настолько далеко, насколько мог, прежде чем задать вопрос. Прямо сейчас я пытаюсь понять, как сделать то, что вы просили, и закрыть вопрос.

Penny 30.08.2024 01:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
7
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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?>

Я хотел бы любезно спросить причину отрицательного голосования, чтобы я мог улучшить ответ.

Lajos Arpad 25.08.2024 21:17

не знаю, это был не я. Но ваш ответ не решает проблему с кодом. Может быть, поэтому?

Kaii 25.08.2024 21:28

А еще, возможно, потому, что <?= — это не «старый синтаксис», а стандартный.

Kaii 25.08.2024 21:29

А еще «php — это язык шаблонов», лол. Какой сейчас год? 1996 год?

Kaii 25.08.2024 21:34

@Кайи, спасибо, что отметил, что <?= является стандартным. Я все еще думаю, что это старый синтаксис, и лично я его не использую, но соответствующим образом скорректировал ответ. Что касается того, что PHP является языком шаблонов, то это верно и сейчас, поскольку вы можете передавать эхо через PHP в HTML. Тем не менее, спасибо за указания на то, что вы считаете некачественным.

Lajos Arpad 25.08.2024 21:54

Извините, код, который оказался в моем сообщении, был усечен. Это именно так, как предложено выше:

Penny 27.08.2024 21:38

это было: href = "/tickets/tickets/<?=$o->id?>/?access_token=<?=$o->acce‌​ss_token?>

Penny 27.08.2024 21:39

Спасибо, Лайош. Это было полезно. Я новичок в PHP.

Penny 28.08.2024 00:52
Ответ принят как подходящий

этот код:

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

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

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

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

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

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

display_errors = On

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

Я еще не вышел из леса, но ваше предложение об изменении функции позволило ссылке работать. Отображение ошибок уже включено — я получаю трассировку стека. Я очень расстроен сайтом переполнения стека. Правила включения кода сбивают с толку. Кажется, они непоследовательны.

Penny 28.08.2024 18:14

@ Пенни, нет, они не противоречивы. Вы должны включать код, но только в том объеме, который необходим для иллюстрации одной проблемы. Мы здесь не для того, чтобы исправить 200 LoC за вас.

Kaii 29.08.2024 00:29

@Пенни, если этот код помог вам, пожалуйста, примите этот ответ и/или проголосуйте за него.

Kaii 29.08.2024 00:30

Я не пытаюсь показать 200 строк кода, но когда я попытался отредактировать свое сообщение, мне не удалось опубликовать ни одной строки кода. Я даже пытался скопировать/вставить код, который изначально опубликовал, и копирование, похоже, испортило оригинал. Поэтому я просто отменил это. Но да, я приму ответ, потому что ссылка сработала. Спасибо.

Penny 30.08.2024 01:18

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