2013-12-09 4 views
1

Здравствуйте, я пытаюсь проверить, является ли пользователь премиальным или нет с помощью функции php. Я использую следующий код, но результат «Notch is not valid»file_get_contents Возвращает пустую строку, Minecraft API

В связи с тем, что $ auth - это просто пустая строка, по какой-то причине, если вы перейдете на URL-адрес в своем браузере, true "или" false ", но когда вы используете file_get_contents, строка не отображается.

Благодарим за помощь!

<?php 
$input = 'Notch'; 

    function checkPlayer($player) { 
    $mcURL = 'http://www.minecraft.net/haspaid.jsp?user='; 
    $auth = file_get_contents($mcURL . $player); 
if (trim($auth) == "true") { 
     echo $player. ' is valid'; 
    } else { 
     echo $player. ' is not valid'; 
    } 
    } 

    checkPlayer($input); 

?> 
+1

Try 'var_dump ($ AUTH),' это поможет вам отладить информацию, не обрезанный из файла. Необходимо сразу после '$ auth = file_get_contents ($ mcURL. $ Player);' –

+0

Да сначала проверьте содержимое с помощью 'var_dump'. Возможно, вам придется сопоставить его с '1' и' 0' – Hussain

+0

Хорошо, просто попробовал это и получил «логическое ложное», что нечетно, потому что если вы перейдете на этот URL-адрес в своем браузере, он отобразит true. – Orca

ответ

0

Похоже, что это HTTPs URL, использовать cURL для этого

<?php 

$input = 'Notch'; 

function checkPlayer($player) { 
$mcURL = 'https://www.minecraft.net/haspaid.jsp?user='; 
$mcURL = $mcURL.$player; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $mcURL); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //Add this 
$auth = curl_exec($curl); 
    if (trim($auth) == "true") { 
     echo $player. ' is valid'; 
    } else { 
     echo $player. ' is not valid'; 
    } 
} 

checkPlayer($input); 
+0

Благодарим за отзыв! Я получаю следующий вывод из кода: «Notch is not valid» Хотя Notch должен быть действительным, не знаете почему. – Orca

+0

@ user2435125, Можете ли вы рассказать мне о выходе 'var_dump ($ auth);' после '$ auth = curl_exec ($ curl);'? Поскольку у меня нет 'cURL' на моем ПК. Пожалуйста, опубликуйте результат. –

+0

Вот выход: строка ' 301 перемещена Постоянно <тело BGCOLOR = "белый">

301 перемещена Постоянно


Nginx/1.2.2
'(длина = 184) Notch недействителен – Orca

0

НТТР URL делает 301 перенаправление на HTTPS один. Так используйте HTTPS URL непосредственно в коде, и он должен работать:

$mcURL = 'https://www.minecraft.net/haspaid.jsp?user='; 
+0

Просто попробовал этот код и все еще не работал: /, спасибо за быстрый ответ, хотя :)! Я очень благодарен за помощь в решении этого вопроса – Orca

+0

@ user2435125, должно быть что-то еще. Я только что попробовал это, и он работает: 'var_dump (file_get_contents ('https://www.minecraft.net/haspaid.jsp?user=Notch'))'. Попробуйте также на своем компьютере, чтобы убедиться, что это не проблема сети. –

+0

Выход: логическое значение false – Orca

Смежные вопросы