curl_exec извлекает неправильный HTML против строки, переданной curl_init - PullRequest
0 голосов
/ 24 декабря 2018

Моя строка запроса curl создается программно с базовым URL из базы данных и целым числом, которое является номером страницы.Строка для URL верна.Если я вызываю запрос curl с базовым URL, скопированным в функцию, это работает.Если я вызываю его с помощью программно созданной строки (которая идентична), то вызывается неправильная страница - кажется, отсутствует один из параметров строки (принадлежность):

Это работало в течение многих лет безвопрос.Сервер PHP 5.6.Строка в базе данных хранится как varchar (500).Я пробовал текст в качестве типа в базе данных.Я пробовал различные способы заставить строку в функции.Первый приведенный ниже $ testurl копируется и вставляется из второго $ testurl, если я получаю код для его отображения перед вызовом curl.

//choose one of the $testurls to try
$testurl = 'https://log.concept2.com/challenges/holiday/2019/honorboard/200?country=0&state=&affiliation=1397&sort=distance&page=2';
//In this... $url comes from the database, $gotopage comes from a loop
$testurl = (string)($url . $gotopage);
$c = curl_init($testurl)
$str = curl_exec($c);
curl_close($c);
echo $str; 
die;

Первый $ testurl возвращает то, что я хочу, список людей в одной команде.Второй $ testurl возвращает список людей, принадлежащих к какой-либо принадлежности.

Привет всем Сезона.

Редактировать: var_dump ($ testurl) дает: string (134) "https://log.concept2.com/challenges/holiday/2019/honorboard/200?country=0&state=&affiliation=1397&sort=distance&page=2"

Полный код является более сложной задачей. $ GoToPage является целым числом. $ Url извлекается из базы данных. Соответствующая строка:

$url = $challenge['mb2_Challenges']['challenge_url'];

Где $ challenge создается из mysqliSELECT ... FROM ... WHEN ... запрос с SQL. Mb2_Challenges - это таблица, challenge_url - это таблица.

1 Ответ

0 голосов
/ 02 января 2019

Для тех, кто так же глуп, как и я в канун Рождества, вот ответ:

Строка из сценария была закодирована в urlen-коде, поэтому & вместо &.Я был слишком спешу в канун Рождества, чтобы заметить это.Это просто необходимо htmlspecialchars_decode

Извлеченный урок: всегда смотрите на источник!

...