Как исправить ошибку unexpected T_STRING?

156
20 апреля 2022, 08:30

Нужно обработать данные для UnitPay и отправить по ссылке формата: https:// unitpay.money/pay/PUBLIC-KEY?sum&account&desc&signature

Не получается сгенерировать эту ссылку, ругается на ошибку unexpected T_STRING в строчке:

$url = '[URL='https://unitpay.money/pay/.$public_key.?sum=.$sum.&account=.$account.¤cy=.$currency.&desc=.$desc.&signature=.$sign;']https://unitpay.money/pay/'.$public_key.'?sum='.$sum.'&account='.$account.'¤cy='.$currency.'&desc='.$desc.'&signature='.$sign;[/URL]

В чем косяк?(

Весь код:

<?php
$secretKey = '123';
$publicKey = '123';
$desc = 'Покупка тарифа в Brainarium';
$currency = '643';
$post = (!empty($_POST)) ? true : false;
if($post) {
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$sum = trim($_POST['sum']);
$account = $name." " .$email;
function getFormSignature($account, $currency, $desc, $sum, $secretKey) { 
    $hashStr = $account.'{up}'.$currency.'{up}'.$desc.'{up}'.$sum.'{up}'.$secretKey; return hash('sha256', $hashStr); 
    
} 
$sign = getFormSignature($account, $currency, $desc, $sum, $secret_key); 
$url = '[URL='https://unitpay.money/pay/.$public_key.?sum=.$sum.&account=.$account.¤cy=.$currency.&desc=.$desc.&signature=.$sign;']https://unitpay.money/pay/'.$public_key.'?sum='.$sum.'&account='.$account.'¤cy='.$currency.'&desc='.$desc.'&signature='.$sign;[/URL]
header('Location: '.$url);
} else {
echo 'Не заполнены все поля!';
}
?>
Answer 1

Потому что в этой строчке после '[URL= вы закрываете строку, и затем продолжаете писать текст вне кавычек. Хотя для интерпретатора - это непонятный код, поэтому он и выдаёт ошибку на уровне синтаксиса.

$url = '[URL='https://unitpay.money/pay/.$public_key.?sum=.$sum.&account=.$account.¤cy=.$currency.&desc=.$desc.&signature=.$sign;']https://unitpay.money/pay/'.$public_key.'?sum='.$sum.'&account='.$account.'¤cy='.$currency.'&desc='.$desc.'&signature='.$sign;[/URL]

Плюс ко всему, вы в конце этой строки кода:

  1. Не поставили ', чтобы строку закрыть
  2. Не поставили ;

Полагаю, что вы хотели написать следующее:

$url = "[URL='https://unitpay.money/pay/$public_key?sum=$sum&account=$account&cy=$currency&desc=$desc&signature=" . $sign . ";']https://unitpay.money/pay/$public_key?sum=$sum&account=$account&cy=$currency&desc=$desc&signature=" . $sign . ";[/URL]";

И, такое чувство, что вы писали текст в обычном текстовом редакторе (да и судя по символу ¤, ещё и с телефона)

Лучше пишите код с компьютера в том же Notepad++, или хотя бы скачайте какой-нибудь редактор PHP кода на телефон, чтобы таких очевидных ошибок не допускать и сразу было видно, где Вы не поставили кавычку

Answer 2

Конкатенация строк в PHP это точка, у вас она не стоит, но даже если вы ее добавите это НЕ исправит вам ошибку. Какая у вас строка должна быть? Как я понял у вас должно получиться что-то вроде этого:

$url = "[URL=https://unitpay.money/pay/$public_key?sum=$sum&account=$account¤cy=$currency&desc=$desc&signature=$sign;']https://unitpay.money/pay/'$public_key'?sum='$sum'&account='$account'¤cy='$currency'&desc='$desc'&signature='$sign;[/URL]";
READ ALSO
Отображение значений из таблицы в input

Отображение значений из таблицы в input

Нужно, чтобы в input отображалось то, что нужно отредактировать, то есть значение из этой таблицыНе судите, я недавно начал это все изучать

97
Ошибка с register post type wordpress

Ошибка с register post type wordpress

Здраствуйте у меня есть код,я только начал учить взаимодействие php с wordpress и сейчас учу register post typeВсе вроде бы нормально,но есть проблема

84
Yii2 динамический роутинг

Yii2 динамический роутинг

Есть нужда реализовать адреса страниц следующим образом:

75
Почему не получается запустить приложение через docker?

Почему не получается запустить приложение через docker?

Всем привет! Пытаюсь запустить symfony приложение с помощью docker'aСкачал с помощью composer'a api приложение symfony

81