ip loggen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joshua Smith

Joshua Smith

27/07/2006 15:22:00
Quote Anchor link
ik heb een heel simpel vraagje: Ik heb een scriptje gemaakt op een ip adres te loggen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (isset($_SERVER['REMOTE_ADDR'])) {
   $ip_adres = $_SERVER['REMOTE_ADDR'];
}
else {  
   $ip_adres = getenv($_SERVER['HTTP_X_FORWARDED_FOR']);  
}


$file = "ip.txt";
$open = fopen($file, "a") or die ("Operation Failed!");

fputs($open, "$ip_adres");
fclose($open);
?>


Maar nu wil ik dat telkens voordat hij weer een nieuw ip-adres erbij schrijft, dat het ip.txt bestandje geleegd wordt (zodat er telkens dus maar 1 ip in ip.txt staat. Welke functie moet ik dan toevoegen?
 
PHP hulp

PHP hulp

26/11/2024 23:40:58
 
Gerben G

Gerben G

27/07/2006 15:28:00
Quote Anchor link
waarom doe je dit niet met mysql dat is veel eenvoudiger
 
Joshua Smith

Joshua Smith

27/07/2006 15:30:00
Quote Anchor link
heb geen mysql op mn server;-)
ik loop achter...
 
Joren de Wit

Joren de Wit

27/07/2006 15:31:00
Quote Anchor link
Als je het met dat txt bestandje wilt doen, zou je het bestandje telkens weg kunnen gooien voordat je er een nieuw ip inschrijft...

Dus dit kun je in je code plaatsen...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
if(file_exists('ip.txt'))
{

    unlink('ip.txt');
}

?>


Maar waarom doe je dit inderdaad niet met MySQL?

Edit:
Geen MySQL op je server? Misschien wordt het dan tijd om dat eens te installeren. Er gaat een wereld voor je open ;)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Bo az

Bo az

27/07/2006 15:32:00
Quote Anchor link
inplaats van de a bij fopen, een w bij fopen.
 
Joshua Smith

Joshua Smith

27/07/2006 15:47:00
Quote Anchor link
haha, het is vaak makkelijker dan je denkt... tnx
@ blanche: jep, moet dan een hele andere host nemen. wordt tijd..
 
Joshua Smith

Joshua Smith

27/07/2006 15:52:00
Quote Anchor link
Dan hebben jullie hier vast ook wel een oplossing voor:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if (isset($_SERVER['REMOTE_ADDR'])) {
   $ip_adres = $_SERVER['REMOTE_ADDR'];
}
else {    
   $ip_adres = getenv($_SERVER['HTTP_X_FORWARDED_FOR']);    
}


$file = "ip.txt";
$open = fopen( $file, "r" ) or die ( "Operation Failed!" );
if($ip_adres != $file) {  

// Dit bestandje wordt geïnclude in een pagina (pagina A.php).  
// Als de IP opgeslagen in ip.txt niet hetzelfde is als $ip_adres,  
// dan moet er een redirect komen naar pagina B.php
// Komen de IP's wel overeen, dan moet de pagina waar dit bestand  
// in geïnclude is, vertoond worden (pagina A.php)

// Hoe zet ik dat hier in mijn if } else { functie?



fclose($file);  
}
  
?>
 
Bo az

Bo az

27/07/2006 15:56:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

if($_SERVER['REMOTE_ADDR'] != file_get_contents('ip.txt')){
    header("Location: B.php");
}


?>
Gewijzigd op 01/01/1970 01:00:00 door Bo az
 
Joshua Smith

Joshua Smith

27/07/2006 17:01:00
Quote Anchor link
dat zou dus zoiets worden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$file
= "ip.txt";
$open = fopen( $file, "r" ) or die ( "Operation Failed!" );
if($_SERVER['REMOTE_ADDR'] != file_get_contents('ip.txt')){
    header("Location: B.php");
}

fclose($file);
}

?>


maar als ik dit in een bestandje zet (include.inc.php) en deze vervolgens laat includen in pagina A.php, dan wordt nog steeds A.php getoond ookal komt het IP-adres NIET overeen met die uit ip.txt (en dat is niet de bedoeling, want komen ze niet overeen, dan wil ik B.php zien, en geen toegang tot A.php hebben!) snappie...

Wat gaat er dan fout?
 
Jan Koehoorn

Jan Koehoorn

27/07/2006 17:04:00
Quote Anchor link
Als je ip.txt opent in kladblok, staat er dan niet toevallig een nieuwe regel achter of zoiets?
 
Joshua Smith

Joshua Smith

27/07/2006 17:08:00
Quote Anchor link
nee, puur en alleen een IP adres. Maar om te checken of het werkt heb ik even een foute IP in ip.txt gezet (die dus niet overeen komt met mn eigen IP), maar dan wordt ik niet naar B.php gestuurd, en krijg ik gewoon toegang tot A.php
 
Bo az

Bo az

27/07/2006 17:19:00
Quote Anchor link
Al zou er een EOL achter staan, dan zou je nog doorgestuurd moeten worden naar B.php omdat de inhoud dan altijd ongelijk is aan het IP adres:

Joshua, dat heleverhaal wat jy daar hebt staan met fopen etc. is niet nodig, dat stukje wat ik poste moet enkel voldoende zijn.

Zet eens bovenaan je file:
error_reporting(E_ALL);
 
Jan Koehoorn

Jan Koehoorn

27/07/2006 17:26:00
Quote Anchor link
Als ik locaal dit test, gaat het gewoon zoals het hoort:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    if ($_SERVER['REMOTE_ADDR'] != '127.0.0.1') {
        echo 'niet gelijk';
    }

    else {
        echo 'wel gelijk';
    }

    // output: 'wel gelijk'
?>
 
Joshua Smith

Joshua Smith

27/07/2006 17:40:00
Quote Anchor link
Als ik het lokaal test op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($_SERVER['REMOTE_ADDR'] != '80.127.56.231'){
    header("Location: B.php");
}

?>


Dan doettie het prima, ik krijg idd B.php, want mijn IP komt niet overeen met die in het bovenstaande scriptje. Blijkbaar wordt ip.txt dus niet goed gelezen. Maar hoe kan dat?
 
Jan Koehoorn

Jan Koehoorn

27/07/2006 17:43:00
Quote Anchor link
Ik zal even een online testje doen, moment.
 
Joshua Smith

Joshua Smith

27/07/2006 17:44:00
Quote Anchor link
Neen, hij doet het al, hij veranderde steeds door een ander scriptje geïnclude telkens mijn eigen IP weer in ip.txt

Hoe DOM kun je wezen! Heren, bedankt!!!
 
Jan Koehoorn

Jan Koehoorn

27/07/2006 17:47:00
Quote Anchor link
Okee, ik snapte het al niet want deze:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    echo $_SERVER['REMOTE_ADDR'];
    // in mijn geval 62.131.27.236
    // die zet ik in een txt bestand

    
    $ip = file_get_contents ('ip.txt');
    if ($_SERVER['REMOTE_ADDR'] != $ip) {
        echo 'ongelijk';
    }

    else {
        echo 'gelijk';
    }

    
    // output: '62.131.27.236gelijk'
?>

deed het hier prima. Maar mooi dat het opgelost is.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.