Hallo, das Script funktioniert, bloss wenn man die Seite aufruft erscheint eine leere Seite. Beim 2. Aufruf erscheint "IP ist bereits vorhanden", gut.
Aber wo kann ich einbinden, dass beim 1. Aufruf auf eine andere Seite weitergeleitet wird.
Ich habs schon mit header versucht, aber geht nicht. Ernn ich echo einfüge, schreibt er den Text. Ich hatte alles unten vor den letzten else Befehl eingefügt. Kann einer helfen?
<?php
require_once("config.inc.php");
require_once("dbconnect.php");
/**********************************************************************
*Klasse IPSperre *
* Abfragen aller IP's in der Datenbank *
* Löschen aller IP's deren Timestamp < aktueller Timestamp-3600 *
* Schreiben der neuen IP , bevorzugt in IP = empty *
* Wenn kein Feld frei ist , neues Feld anlegen *
/**********************************************************************/
class IPSperre{
var $userIp;
var $Data;
/**********************************************************************/
function IPSperre($userIp){ // Konstruktor
$this->userIp = $userIp;
$this->verbinde = new DatabaseConnect(MYSQL_DATABASE_NAME);
}
/**********************************************************************/
function get_All_Ip(){ // alle IP's aus der Datenbank erfassen
if($this->verbinde->connect_to_database() ){
$query = "SELECT * FROM IP";
$this->Data = $this->verbinde->get_MySQL_DataArray($query);
}
}// Methode get_All_Ip schliessen
/**********************************************************************/
function delete_Old_Ip(){ // IP's die schon über 1 Stunde gespeichert sind auf "empty" setzen
$geandert = false;
$abgelaufen = time()-IpBlockTime;
for($i= 0; $i < $this->verbinde->rows;$i++){
$DatumZeit = explode(" ", $this->Data[$i]['tsIP']);
$Datum = explode("-", $DatumZeit[0]);
$Zeit = explode(":", $DatumZeit[1]);
$tsIP = mktime($Zeit[0],$Zeit[1],$Zeit[2],$Datum[1],$Datum[2],$Datum[0]);
$id = $this->Data[$i]['ID'];
if( ($tsIP - $abgelaufen < 0) &&
$this->Data[$i]['blockedIP'] != "empty" ){
mysql_query("UPDATE
IP
SET
blockedIP='empty',
tsIP = NOW()
WHERE
ID = $id");
} // if schliessen
} // for schliessen
$this->get_All_Ip();
}//Methode delete_Old_Ip schliessen
/**********************************************************************/
function check_User_Ip(){ // Aktuelle User IP mit denen in der Datenbank überprüfen
$ipInField = false;
if($this->verbinde->rows != 0){
for($i = 0;$i < count($this->Data);$i++){
if($this->userIp == $this->Data[$i]['blockedIP']){
$ipInField = true;
break;
}
}
}
return $ipInField;
} // Methode check_User_Ip schliessen
/**********************************************************************/
function set_New_IP(){ // Wenn IP noch nicht vorhanden neue IP setzen
$emptyField = false;
for($j=0;$j<$this->verbinde->rows;$j++){
if($this->Data[$j]['blockedIP'] == "empty"){ // leeres Feld gefunden
$this->writeIP($this->Data[$j]['ID']); // schreibe IP in leeres Feld
$emptyField = true;
break;
}
}
if(!$emptyField){ // es wurde kein Leeres Feld gefunden
$this->writeIP();
} // if emptyField schliessen
} // Methode set_New_IP schliessen
/**********************************************************************/
function writeIP($Ip_ID=""){ // IP neu schreiben oder bestehendes Feld ersetzen
if(!empty($Ip_ID)){ // leeres Feld wurde gefunden , Inhalt durch die IP ersetzen
mysql_query("UPDATE
IP
SET
blockedIP='".$this->userIp."'
WHERE ID =".$Ip_ID);
}else{
mysql_query("INSERT INTO
IP(blockedIP,tsIP)
VALUES
('$this->userIp', NOW() ) ");
}
}// Methode writeIP schliessen
/**********************************************************************/
}// Klasse IpSperre schliessen
$Ip = new IPSperre($_SERVER['REMOTE_ADDR']);
$Ip->get_All_Ip();
$Ip->delete_Old_Ip();
if(!$Ip->Check_User_Ip()){
$Ip->set_New_IP();
}else{
echo "IP ist bereits vorhanden";
}
?>
Aber wo kann ich einbinden, dass beim 1. Aufruf auf eine andere Seite weitergeleitet wird.
Ich habs schon mit header versucht, aber geht nicht. Ernn ich echo einfüge, schreibt er den Text. Ich hatte alles unten vor den letzten else Befehl eingefügt. Kann einer helfen?
<?php
require_once("config.inc.php");
require_once("dbconnect.php");
/**********************************************************************
*Klasse IPSperre *
* Abfragen aller IP's in der Datenbank *
* Löschen aller IP's deren Timestamp < aktueller Timestamp-3600 *
* Schreiben der neuen IP , bevorzugt in IP = empty *
* Wenn kein Feld frei ist , neues Feld anlegen *
/**********************************************************************/
class IPSperre{
var $userIp;
var $Data;
/**********************************************************************/
function IPSperre($userIp){ // Konstruktor
$this->userIp = $userIp;
$this->verbinde = new DatabaseConnect(MYSQL_DATABASE_NAME);
}
/**********************************************************************/
function get_All_Ip(){ // alle IP's aus der Datenbank erfassen
if($this->verbinde->connect_to_database() ){
$query = "SELECT * FROM IP";
$this->Data = $this->verbinde->get_MySQL_DataArray($query);
}
}// Methode get_All_Ip schliessen
/**********************************************************************/
function delete_Old_Ip(){ // IP's die schon über 1 Stunde gespeichert sind auf "empty" setzen
$geandert = false;
$abgelaufen = time()-IpBlockTime;
for($i= 0; $i < $this->verbinde->rows;$i++){
$DatumZeit = explode(" ", $this->Data[$i]['tsIP']);
$Datum = explode("-", $DatumZeit[0]);
$Zeit = explode(":", $DatumZeit[1]);
$tsIP = mktime($Zeit[0],$Zeit[1],$Zeit[2],$Datum[1],$Datum[2],$Datum[0]);
$id = $this->Data[$i]['ID'];
if( ($tsIP - $abgelaufen < 0) &&
$this->Data[$i]['blockedIP'] != "empty" ){
mysql_query("UPDATE
IP
SET
blockedIP='empty',
tsIP = NOW()
WHERE
ID = $id");
} // if schliessen
} // for schliessen
$this->get_All_Ip();
}//Methode delete_Old_Ip schliessen
/**********************************************************************/
function check_User_Ip(){ // Aktuelle User IP mit denen in der Datenbank überprüfen
$ipInField = false;
if($this->verbinde->rows != 0){
for($i = 0;$i < count($this->Data);$i++){
if($this->userIp == $this->Data[$i]['blockedIP']){
$ipInField = true;
break;
}
}
}
return $ipInField;
} // Methode check_User_Ip schliessen
/**********************************************************************/
function set_New_IP(){ // Wenn IP noch nicht vorhanden neue IP setzen
$emptyField = false;
for($j=0;$j<$this->verbinde->rows;$j++){
if($this->Data[$j]['blockedIP'] == "empty"){ // leeres Feld gefunden
$this->writeIP($this->Data[$j]['ID']); // schreibe IP in leeres Feld
$emptyField = true;
break;
}
}
if(!$emptyField){ // es wurde kein Leeres Feld gefunden
$this->writeIP();
} // if emptyField schliessen
} // Methode set_New_IP schliessen
/**********************************************************************/
function writeIP($Ip_ID=""){ // IP neu schreiben oder bestehendes Feld ersetzen
if(!empty($Ip_ID)){ // leeres Feld wurde gefunden , Inhalt durch die IP ersetzen
mysql_query("UPDATE
IP
SET
blockedIP='".$this->userIp."'
WHERE ID =".$Ip_ID);
}else{
mysql_query("INSERT INTO
IP(blockedIP,tsIP)
VALUES
('$this->userIp', NOW() ) ");
}
}// Methode writeIP schliessen
/**********************************************************************/
}// Klasse IpSperre schliessen
$Ip = new IPSperre($_SERVER['REMOTE_ADDR']);
$Ip->get_All_Ip();
$Ip->delete_Old_Ip();
if(!$Ip->Check_User_Ip()){
$Ip->set_New_IP();
}else{
echo "IP ist bereits vorhanden";
}
?>
Kommentar