2015-06-19 1 views
1

В настоящее время я пытаюсь использовать GuzzleHttp с Laravel для доступа к API на основе ввода пользователя.GuzzleHttp и Laravel - Ошибка синтаксиса - T_String

Моя установка до сих пор:

$client = new \GuzzleHttp\Client(); 
$response = $client 
     ->get('https://api.postcodes.io/postcodes/'Input::get('postcode')); 
dd($response->getBody()); 

но ошибка возвращается в:

FatalErrorException в ClinicController.php строка 129: ошибка синтаксиса, неожиданного 'Input' (T_STRING)

линия 129 является https://api.postcodes.io/postcodes/'Input::get('postcode')

Любая помощь, почему это происходит, будет чрезвычайно оценена.

ответ

0

Это простая ошибка PHP. Вот линия PHP жалуется

->get('https://api.postcodes.io/postcodes/'Input::get('postcode')); 

У вас есть строка

'https://api.postcodes.io/postcodes/' 

сразу после этого Input::get('postcode'). Если вы пытаетесь совместить эти два, вы хотите использовать оператор . для конкатенации строк

'https://api.postcodes.io/postcodes/' . Input::get('postcode') 

Кроме того, что-то рассмотреть - в приложении производства, вы хотите либо дезинфицировать или подтвердите, что Input::get('postcode') действительно содержит почтовый код, прежде чем использовать его в запросе URL-адреса. Всегда предполагайте, что кто-то попытается использовать вашу систему злонамеренно и никогда не будет доверять, что пользовательский ввод будет содержать то, что, по вашему мнению, содержит.

+0

Благодарим вас, Алан, я думал, что 'Input ::' дезинфицирует все входы? Почтовый индекс передается с помощью проверки регулярного выражения до того, как он будет использоваться. – Ben

0

Попробуйте, как показано ниже:

$client = new \GuzzleHttp\Client(); 
$response = $client 
     ->get('https://api.postcodes.io/postcodes/'.Input::get('postcode')); 
dd($response->getBody());