Я предполагаю, что буквальный перевод был бы:
mydict = {'foo' : { 'bar' : { 'baz':1}}}
Вызов:
>>> mydict['foo']['bar']['baz']
дает Вам 1.
, Который смотрит немного общего количества мне, все же.
(я не парень жемчуга, тем не менее, таким образом, я предполагаю то, что Ваш жемчуг делает)
Во-первых, вы не хотите сохранять имя пользователя и пароль в cookie. Это плохая идея.
Простой способ подумать об этом:
1) Создайте новое поле в таблице пользователей, в котором хранится хеш MD5. Вы можете назвать его ключ_сессии.
2) Когда вы отправляете страницу, сценарий должен сделать следующее.
3) На своей странице ./ выполните следующие действия:
Это должно сделать ваше приложение более безопасным. Возможно, это не лучший способ кодирования,
Это очень небезопасный метод автоматического входа в систему. Никогда не следует хранить пароль где-либо в виде открытого текста.
Лучшая стратегия заключается в следующем:
Вы должны взять их имя пользователя, IP-адрес и какой-то хэш (как предлагал зомбат), зашифровать все это (возможно, используя Base64) и сохранить полученную строку как их cookie. Таким образом, кто-то не сможет подделать или украсть cookie, потому что даже если бы они это сделали, расшифрованный IP-адрес не будет соответствовать IP-адресу, с которого исходил запрос. Также лучше использовать белые списки вместо того, чтобы отбрасывать вводимые пользователем данные в запрос.
Таким образом, вы получите что-то вроде:
//First see if the auto-login cookie exists and is valid:
if($_COOKIE['autologin']) {
$users_query = "SELECT username FROM users WHERE last_login < SUBDATE(CURDATE(),30)";
$users_results = mysql_query($users_query);
while($row = mysql_fetch_assoc($users_result)) {
$users = $row['username'];
}
$auto_cookie = $_COOKIE['autologin'];
$user_creds = explode("//", base64_decode($auto_cookie));
$user_name = $user_creds[0];
$user_IP = $user_creds[1];
$user_hash = $user_creds[2];
$username_check = (in_array($user_name, $users) ? true : false;
$userIP_check = ($user_IP = $_SERVER['REMOTE_ADDR']) ? true :false;
$so_far_so_good = ($username_check && $userIP_check) ? true : false;
if($so_far_so_good) {
$hash_query = "SELECT hash FROM userhash WHERE username = '$user_name'";
$hash_results = mysql_query($hash_query);
$all_clear = ($user_hash == mysql_result($hash_results,0)) ? true : false;
}
}
//Checks Login Data:
if($_POST) {
$users_query = "SELECT username FROM users";
$users_results = mysql_query($users_query);
while($row = mysql_fetch_assoc($users_result)) {
$users = $row['username'];
}
$username_check = (in_array($user_name, $users) ? true : false;
$password_check = password_check();
// I do not feel comfortable enough with encryption and authentication to suggest
// a method here. Suffice to say, you should have a strong password check system.
$all_clear = ($username_check && $password_check) ? true : false;
// You should only throw a log in error when they have attempted a login. Do not
// give hints at your authentication methods in auto-login section.
$set_cookie = ($all_clear && $_POST['set-auto']) ? true : false;
if($set_cookie) {
$new_hash = hash_maker();
// Again, look to the others for best hashing technique.
$raw_cookie_data = $user_name . "//" . $_SERVER['REMOTE_ADDR'] . "//" . $new_hash;
$enc_cookie_data = base64_encode($raw_cookie_data);
setcookie("autologin", $enc_cookie_data, time()+3600);
}
}
if($all_clear) {
echo "Welcome Back!";
}
else {
//print login form here...
}