我正在使用此文件运行php服务器,该文件检测发布的用户名和密码是否正确:
<?php
include 'MySQL.php';
$USERS = array();
$results = mysqli_query(connect(),"SELECT * FROM User");
while ($row = mysqli_fetch_array($results)) {
$USERS[$row['username']] = $row['password'];
}
function check_logged() {
global $_SESSION, $USERS;
if (!array_key_exists($_SESSION["logged"], $USERS)) {
header("Location: login.php");
};
};
function check_user(){
global $_SESSION, $USERS;
if (!array_key_exists($_SESSION["logged"], $USERS)) {
return false;
}else{
return true;
}
}
对于每个受保护的页面,我都放了这行代码:
<?php
session_start();
include ("../php/passwords.php");
如果我不想在 Windows Phone 8.1 应用程序之间发布每次,用户名和密码,我该如何在客户端应用程序中共享sessionID?
目前,服务器正在HTTP
中运行,在不久的将来,我将使用HTTPS/SSL
服务,以更好地保护数据发送。
所以我的问题是,当我想访问保护服务时,如何处理和检索会话,并将其发送到服务器?用户名和密码在WP设置中。
答案 0 :(得分:1)
首先在PHP代码中为什么不在check_logged()中使用check_user()?如果您访问这些函数所包含的文件使用会话,为什么session_start()不在其中(而是每次包含该文件时写入它)
对于您的问题,您只需使用“哈希”,应用程序将保存它。当您想要识别帐户时,您可以检查表中具有此哈希的帐户。当你生成它使它真的很长,很多字母,数字和符号。所以不可能猜到一个。当然,它必须是独一无二的。
编辑: 顺便说一句,为什么你选择所有用户,如果你可能只验证其中一个用户? 我在打电话,否则我正在添加一些代码..
编辑: 让我们再次尝试理论,如果你仍然不理解我正在谈论的内容,那么我会添加一些代码,因为你对此不熟悉。散列背后的想法是例如使用用户名和生成一些SALT(这是一个随机散列,你需要存储和重复使用每次你想要生成散列并将其与数据库进行比较。)这个想法是当用户登录时生成唯一哈希,知道登录的用户。并将其保存在帐户表中。然后在客户端保存该哈希值。当客户端想要访问您时,只需从客户端获取哈希值,您就可以知道他是哈希存储的用户。所以你让他登录。确保散列足够长并且足够安全。