Je voudrais déjà préciser que je ne suis pas développeur de formation, mais autodidacte.
Mon code est donc très basique, mais j'arrive malgré tout toujours à mes fins.
Pour résumer, j'utilise les fonctions et les if, elseif et else au maximum, ca fonctionne mais j'aimerais maintenant améliorer un peu mon code...
Dans ma page ipinfo, pour le fun surtout, il y a une petite détection de proxys, le code était presque écrit de cette manière:
$c_ip = $_SERVER['REMOTE_ADDR']; // Adresse Ip du Client
$p1_ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; // Ne doit jamais retourner de valeur
$p2_ip = $_SERVER["HTTP_X_FORWARDED"]; // Idem
$p3_ip = $_SERVER["HTTP_VIA"]; // Idem
$p4_ip = $_SERVER["HTTP_CLIENT_IP"]; // Idem
$r5_ip = $autre1; // Doit toujours retourner une valeur
$p6_ip = $autre2; // Idem
if (!empty($p1_ip) && $p1_ip != $c_ip) { // 1: Je veux continuer les tests tant que je ne trouve pas une valeur non égale à l'IP
$proxy = $pr1_ip;
}
elseif (!empty($p2_ip) && $p2_ip != $c_ip) { // Idem
$proxy = $pr2_ip;
}
elseif (!empty($p3_ip) && $p3_ip != $cl_ip) { // Idem
$proxy = $pr3_ip;
}
elseif (!empty($p4_ip) && $p4_ip != $c_ip) { // Idem
$proxy = $pr4_ip;
}
elseif (!empty($p1_ip) || !empty($p2_ip) || !empty($p3_ip) || !empty($p4_ip)) { // 2: maintenant je récupère les valeurs si sont égales a l'IP
$proxy = 'Oui';
}
elseif (empty($p5_ip) || empty($p6_ip)) { //3: Maintenant je vérifie si les valeurs sont vides
$proxy = 'Oui';
}
else { // Si aucunes valeurs trouvées alors $proxy n' a aucune valeur
$proxy = "";
}
if (!empty($proxy )) { // Si $proxy a une valeur
echo '<p><span class="soul">Adresse Ip:</span> <span class="moyen-g">' . $cl_ip . '</span></p>
<span class="soul">Proxy possible:</span> <span class="moyen-g">' . htmlentities(utf8_decode($proxy )) . '</span>';
}
else { //Sinon
echo '<p><span class="soul">Adresse Ip:</span> <span class="moyen-g">' . $cl_ip . '</span></p>';
}
Je viens de créer une fonction avec une boucle while, mais j'aimerais être certain, que l'exécution du code soit plus rapide ou au moins aussi Safe:function detect_proxy() {
$p_ip = array($_SERVER["HTTP_X_FORWARDED_FOR"], $_SERVER["HTTP_X_FORWARDED"], $_SERVER["HTTP_VIA"], $_SERVER["HTTP_CLIENT_IP"]);
$p1_ip = $autre1;
$p2_ip = $autre2;
$c_ip = $_SERVER['REMOTE_ADDR'];
$proxy = '';
if (empty($p1_ip) || empty($p2_ip)) {
$proxy = 'Oui';
}
while ((list(, $value) = each($p_ip))) {
if(!empty($value)){
if($value != $c_ip){
$proxy = $value;
break; // un break ici pour que $p_ip ne soit pas ré-écrasé par une valeur égale à l'ip
}
else {
$proxy = 'Oui';
}
}
}
return $proxy;
}
$resultat = detect_proxy();
if (!empty($resultat)) { // Si $proxy a une valeur
echo '<p><span class="soul">Adresse Ip:</span> <span class="moyen-g">' . $cl_ip . '</span></p>
<span class="soul">Proxy possible:</span> <span class="moyen-g">' . htmlentities(utf8_decode($resultat)) . '</span>';
}
else { //Sinon
echo '<p><span class="soul">Adresse Ip:</span> <span class="moyen-g">' . $cl_ip . '</span></p>';
}