PHP neemt else statement ongeacht IP klopt of niet

Status
Niet open voor verdere reacties.

henkjan111

Gebruiker
Lid geworden
9 jan 2011
Berichten
221
Hellleeeuww,

Ik ben beginnende PHP'er en heb met pijn en moeite een stukkie code in elkaar gezet:

PHP:
<?php include("core/conf.php"); ?>
<?php

if(isset($_GET['van'])) {
	$van = $mysqli->real_escape_string($_GET['van']);
	$result = $query = $mysqli->query("SELECT * FROM `base` WHERE `van` = '" . $van . "'");
	if($result->num_rows > 0)
	{ //vanaf hier gaat het ergens fout
		$_SERVER['REMOTE_ADDR'] = isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"]; //Orrigineel IP
		$row = $result->fetch_assoc();
		$ip = $row['ip'];
		if(in_array($_SERVER['REMOTE_ADDR'], $ip)) {
		$naar = $row['naar'];
		echo("U wordt doorgelinkt...");
		header("Refresh: 2; url=" . $naar);
		}
		else
			{ 
				echo("Incorrect IP");
			}
	} //tot hier gaat het ergens fout

else
{
	echo("GET is niet gevonden in onze database!");
}
}
else
{
	echo("Geen GET!");
}


?>

Het gaat ergens fout, vanaf waar het commentaar is weergegeven. De rest is getest en werkt.

Hopelijk kan iemand mij helpen :)
 
PHP:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] );

$_SERVER['REMOTE_ADDR'] of $ip zijn beide geen arrays.
Het onderstaande moet in mijn ogen werken. (ps: niet getest)

if($_SERVER['REMOTE_ADDR']==$ip){
    // Dit zou moeten werken.
}

Oeps, zie dat ik een foutje heb gemaakt. Dacht even dat je maar 1 resultaat uit je database haalt maar zie dat het een array is ;)
UDPATED:


PHP:
$searchForIp = isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"];

echo $searchForIp;  // Kijk is of deze wel gevuld is?


 if(in_array($searchForIp, $ip)) {
        $naar = $row['naar'];
        echo("U wordt doorgelinkt...");
        header("Refresh: 2; url=" . $naar);
}



update-V2;
Ik ben op de fout gestrand, sorry het is vrijdag duurde eventjes haha :)

PHP:
if($result->num_rows > 0){
	$searchIp = isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? $_SERVER["HTTP_CF_CONNECTING_IP"] : $_SERVER["REMOTE_ADDR"];

    while($ips = $result->fetch_assoc()){
		$arrayIps[] = $ips['ip'];
    }

	if(in_array($searchIp,$arrayIps)){
	   echo "Ip komt voor in de database";
	}else{
	   echo "Ip komt NIET voor in de database";
	}

}
 
Laatst bewerkt:
De eerste manier werkte gewoon hoor :) IP komt inderdaad uit database hoor... :)

Ik heb dit:
if(in_array($_SERVER['REMOTE_ADDR'], $ip)) {
}
Vervangen door:

if($_SERVER['REMOTE_ADDR']==$ip){
// Dit zou moeten werken.
}
 
Laatst bewerkt:
Oh klopt, werkt inderdaad niet als ik 2 dezelfde van's heb... zal zo even kijken of de tweede manier werkt :)
 
Als je niet met een while over de array heen loopt pakt die standaard het eerste resultaat.
Uit de query die je geschreven hebt blijkt het dat je meerdere ip's wilt kunnen controleren.
Dus moet je eerst over de array heen loopen en dan alle ips bij elkaar gooien in een array.
Zodat je dan wel de in_array functie kunt gebruiken.
De update V2 kun je het beste gebruiken, de middelste is een beetje mislukt :)
Hopelijk kom je er zo uit!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan