2015-03-08 1 views
0

Хорошо, я так следующий PHP код:Как я могу использовать OpenID для Steam для печати пользовательских полей в другой базе данных?

<php> 
$servername = "host"; 
$username = "username"; 
$password = "password"; 
$dbname = "db"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT steamid, bananas FROM es_player"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 
echo "PLAYER'S STEAM ID: " . $row["steamid"]. " - PLAYER'S BANANAS: " 
.$row["bananas"]. " <br>"; 
} 
} else { 
echo "0 results"; 
} 
$conn->close(); 
?> 

Он просто извлекает определенные поля из моей базы данных. При входе пользователя в систему они используют OpenID, и это не через реальную базу данных под моим контролем. Через Steam пользователи могут войти в свою учетную запись Steam через OpenID. Я могу получить SteamID пользователя с этим при входе в систему, и для него есть даже переменная. Мне нужно использовать эту переменную SteamID, когда они вошли в систему, чтобы указать, какую строку они находятся в базе данных, и печатать ТОЛЬКО заполненные поля профиля пользователя, а не просто печатать все строки в базе данных. Это будет сделано с использованием SteamID пользователя, который будет входить в систему, который будет сравниваться с полем SteamID в моей базе данных, чтобы он знал, кто вы, когда вы входите в систему.

Я не знаю, как это сделать это, поэтому я публикую здесь. Мне просто нужен PHP-код или какая-то помощь в его написании. Спасибо огромное! Вся помощь очень ценится!

+0

Нет необходимости [удалять и репонировать] (http://stackoverflow.com/q/28912966/472495) ваш вопрос, тем более что он удаляет историю комментариев. Я спросил, можете ли вы уточнить, где вы застряли - «все это» делает это, я думаю, слишком широким для Stack Overflow. Если вы можете предложить одну _particular_ вещь, на которую вы хотели бы помочь, это было бы наиболее полезно для читателей. – halfer

+0

Как вы читаете идентификатор Steam Steam? Если у вас нет кода для этого, это то, что вам нужно начинать. Я использую [lusitanian/oauth] (https://packagist.org/packages/lusitanian/oauth) в GitHub для настройки приложения в качестве потребителя OpenID, похоже, работает нормально. – halfer

+0

[См. Примеры кода здесь] (https://github.com/halfer/awooga-app/tree/master/src/Core/Auth). К сожалению, для начинающего программиста это не тривиально. Если вы обнаружите, что это немного сложнее, возможно, вы ищете «Steam OpenID PHP» - может быть, есть какой-то код, который вы можете использовать напрямую? – halfer

ответ

0

У вас есть несколько связанных проблем, требующих больше исследований. Поскольку я голосовал, чтобы закрыть вопрос как слишком широкий, я помечаю этот ответ как Community Wiki. Я действительно хочу помочь, но, как и ценности сообщества, я бы посоветовал вам воспользоваться следующими пунктами и использовать их в качестве средств для дальнейшего исследования поисковых систем. Ваш пост для «просто [необходимости] кода PHP» - это запрос на бесплатную работу, которую мы пытаемся отговорить здесь.

I думаю Я понимаю проблему, но у меня нет опыта использования API Steam, поэтому вам может потребоваться прочитать их документы и адаптировать следующее. Если вы раньше не использовали API или сеансы, наем фрилансера в вашей местности может быть самым быстрым и легким путем для вашего проекта на дороге. Вам может понадобиться только несколько часов своего времени, поэтому это не должно быть дорого.

  1. Ваш скрипт OpenID должен предоставить вашему приложению один из указанных вами идентификаторов профиля. Когда пользователь сначала создает учетную запись на вашем сайте, вам необходимо зафиксировать этот идентификатор профиля и сохранить его против другой интересующей информации. На этом этапе вы должны запустить процедуру преобразования, чтобы у вас был другой идентификатор профиля, и вы также можете его сохранить.
  2. Когда пользователь входит в систему, вам необходимо создать сеанс. Это, как правило, так же просто, как с помощью session_start(), а затем сохранить первичный ключ записи пользователя в качестве переменной, таким образом:

    $_SESSION['user_id'] = $userId; 
    

    идентификатор пользователя будет исходить от вашего входа в экран, где вы получите обратный вызов OpenID, чтобы доказать, что ток пользователь действительно владеет идентификатором профиля Steam, который они вам предоставили. Наличие настройки сеанса означает, что любая последующая страница, просматриваемая пользователем, будет иметь свой идентификатор пользователя, пока они не выйдут из системы. Это означает, что вам не нужно делать вызов OpenID на каждой странице.

  3. Используя этот идентификатор сеанса, вы можете получить любой из ID профиля, который вам нужен, поскольку они оба находятся в вашей базе данных. Это тривиальная операция базы данных SELECT с идентификатором сеанса, которую вы можете читать с $_SESSION['user_id].

Ниже приведен пример таблицы в OAuth application I wrote (это с открытым исходным кодом, поэтому вы можете разделить ее, если хотите).Когда пользователь входит в систему, эта запись либо создается (если он не существует) или обновлен (если он существует):

mysql> SELECT * FROM user_auth; 
+----+---------+---------------------------+----------+---------------------+ 
| id | user_id | username     | provider | last_login_at  | 
+----+---------+---------------------------+----------+---------------------+ 
| 1 |  1 | https://github.com/halfer | github | 2015-01-13 18:05:49 | 
+----+---------+---------------------------+----------+---------------------+ 
1 row in set (0.00 sec) 

username является идентификатором OpenID, то provider полезно, если вы позволите пользователю выбирать из нескольких систем авторизации (Steam - другой), и, конечно, last_login_at не требует пояснений.


Я также сообщил в комментариях, что вам, возможно, придется написать этот код. Повторное использование библиотеки - похвальная привычка проникать, но, к сожалению, для каждой случайности нет библиотеки - иногда программист просто должен что-то написать. Мы часто видим запросы на Stack Overflow для «библиотеки/учебника/пошагового руководства для [проекта X]» здесь, и если читатели могут убеждать плакаты, что программирование на самом деле не так, они пройдут очень полезный урок.

Итак, попробуйте вышесказанное по порядку? Не стесняйтесь обращаться за дополнительной помощью, если я неправильно понял какую-то основную часть структуры, но в противном случае, пожалуйста, используйте ключевые слова, которые я упомянул, и всплываю в поисковой системе. Это единственный способ узнать. Удачи!

+0

Ваша информация очень полезна, спасибо за помощь. Я думаю, вы неправильно поняли один ключевой фактор. Вы сказали: «Когда пользователь сначала создает учетную запись на вашем сайте». Они не создают учетную запись, они вступают в систему с паролем, я ничего не храню при входе в систему. Должен ли я? Однако он создает сеанс. У меня уже есть это.Я могу полностью создать весь сайт прямо сейчас, минус тот факт, что мне не хватит функции, где он отображает определенные поля из моей базы данных, которые я хотел бы отображать для них, когда они входят в систему. Поскольку я не могу выполнить это по-моему .... (читайте следующий комментарий) ... – Aris

+0

Полагаю, мне нужно нанять кого-нибудь, чтобы помочь мне. Можете ли вы указать мне в правильном направлении или, может быть, дать мне немного более конкретную помощь? Я никогда не писал ничего большого в PHP, я мало знаю о том, что я делаю, но у меня есть, казалось бы, адептское понимание концепции, я просто не слишком хорошо знаю язык, и не знаю Steam API. Извините за опубликование такого широкого вопроса. Итак, вернемся к моему предыдущему вопросу, вы думаете, что можете указать мне в правильном направлении, чтобы найти фрилансера PHP, чтобы помочь мне написать это? – Aris

+0

Добро пожаловать, рад, что это помогает. _ «Они не создают учетную запись, они вступают в систему с паролем, я ничего не храню при входе в систему. Должен ли я?» _ - посмотреть мое обновление ответа. Я понимаю, что они вступают в систему с Steam, но я думаю, что вы действительно должны создавать/обновлять запись, когда они это делают. Это позволит вам блокировать пользователей, если вы хотите (это хороший инструмент, даже если вам это не нужно в данный момент), и вы также можете вести учет своего последнего времени входа в систему. – halfer

0

Это было на самом деле довольно просто. Во-первых, я взял SteamID 64 переменной $ Steamid и побежал через это преобразование, которое будет выводить SteamID 32

$id = $steamid; 

function parseInt($string) { 
    if(preg_match('/(\d+)/', $string, $array)) { 
     return $array[1]; 
    } else { 
     return 0; 
    }} 

$steamY = parseInt($id); 
$steamY = $steamY - 76561197960265728; 
$steamX = 0; 

if ($steamY%2 == 1){ 
$steamX = 1; 
} else { 
$steamX = 0; 
} 

$steamY = (($steamY - $steamX)/2); 

А потом, чтобы закончить его, я только что сделал переменную, которая объединила его в полном STEAM_0: 000000000.

$steamID = "STEAM_0:" . (string)$steamX . ":" . (string)$steamY; 

Теперь я могу использовать $ steamID как переменную на любой странице, на которой я включаю этот код. Я сам ответил на это, так что, если у кого-то еще есть проблемы с этим, как я изначально сделал, ответ будет здесь для них :)

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

  • Нет связанных вопросов^_^