<?php
session_start();
// After user logged in
session_regenerate_id();
$_SESSION['logged_in'] = 1;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['agent'] = $_SERVER['HTTP_USER_AGENT'];
// Session Checking
function session_check(){
if(isset($_SESSION['logged_in']) && !empty($_SESSION['logged_in'])){
if(isset($_SESSION['ip']) && !empty($_SESSION['ip']) && ($_SESSION['ip'] == $_SERVER['REMOTE_ADDR'])){
if(isset($_SESSION['agent']) && !empty($_SESSION['agent']) && ($_SESSION['agent'] == $_SERVER['HTTP_USER_AGENT'])){
return true;
} else {
echo "Not allowed to view this page. Error no: 3. You will be redrected to login page in few seconds";
header('Refresh: 3; url=./login.php');
}
} else {
echo "Not allowed to view this page. Error no: 2. You will be redirected to login page in few seconds";
header('Refresh: 3; url=./login.php');
}
} else {
echo "You are not allowed to view this page. Error no: 1. You will be redirected to login page in few seconds";
header('Refresh: 3; url=./login.php');
return false;
}
}
Et je continue à obtenir no2 d'erreur quand je lance:Quel est le problème avec ce code php, continuez à recevoir l'erreur n ° 2?
if(session_check()){ echo "something";}
Est-ce parce que je suis en utilisant IP dynamique?
Mon code est-il assez bon pour protéger le détournement de session?
Si j'exclus le ($_SESSION['ip'] != $_SERVER['REMOTE_ADDR'])
, cela fonctionne parfaitement.
Question importante:
Quelles sont vos méthodes anti-piratage de session? Peut partager avec nous? Utilisation de la vérification IP, vérification de l'agent utilisateur ou probablement d'autres méthodes?
Il manque un?>. Est-ce que c'est dans votre code actuel? – Extrakun
Juste en général: vous pouvez omettre 'isset()' si vous voulez utiliser 'empty()' de toute façon. 'empty()' ne va pas se plaindre de variables inexistantes. – deceze
@extrakun: s'il me manque?>, Il ne s'agira pas de "l'erreur n ° 2" .. J'inclus déjà?>. @deceze: merci pour les conseils. Je ne le savais pas. Y a-t-il quelque chose qui ne va pas dans mon code? – bbtang