Я хочу создать информер погоды, который показывает прогноз погоды по IP-адресу посетителя.Я пытаюсь поместить переменную $ ip в URL, но она не работает.Когда я ставлю реальный IP вместо . $ Ip. , это работает.Что я делаю не так?
<code>$ip=$_SERVER['REMOTE_ADDR']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://free.worldweatheronline.com/feed/weather.ashx?key=xxxxxxxxxxxxxxx&q=.$ip.&localObsTime&num_of_days=5&format=json"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $outputJson = curl_exec($ch); if ($outputJson === FALSE) { echo 'Error: '.curl_error($ch); } echo '<pre> '; print_r($outputJson); echo '
У вас есть несколько ненужных точек до и после $ip:
$ip
Используйте любое из следующего:
"http://...$ip..." "http://...{$ip}..." "http://..." . $ip . "...";
вам не нужно объединять строку, так как вы используете двойные кавычки.так что вы либо делаете:
curl_setopt($ch, CURLOPT_URL, "http://free.worldweatheronline.com/feed/weather.ashx?key=xxxxxxxxxxxxxxx&q=$ip&localObsTime&num_of_days=5&format=json");
в URL.
Попробуйте сделать
curl_setopt($ch, CURLOPT_URL, "http://free.worldweatheronline.com/feed/weather.ashx?key=xxxxxxxxxxxxxxx&q=".$ip."&localObsTime&num_of_days=5&format=json");
вы используете оператор конкатенации строк внутри строки.либо используйте
"http://free.worldweatheronline.com/feed/weather.ashx?key=xxxxxxxxxxxxxxx&q=$ip&localObsTime&num_of_days=5&format=json"
или
'http://free.worldweatheronline.com/feed/weather.ashx?key=xxxxxxxxxxxxxxx&q='.$ip.'&localObsTime&num_of_days=5&format=json'