Op IP gebaseerde welkomst tekst

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Richard Duinmayer

Richard Duinmayer

26/03/2009 18:15:00
Quote Anchor link
Hallo PHP'ers,

ik ben op zoek naar een scripte die op basis van een IPadress een gepersonaliseerde welkomst tekst laat zien.

Zijn jullie dit wel is tegen gekomen of hebben jullie hier suggesties voor?

"Welkom xxx, gezellig dit is al je 5de keer deze week op deze website"
 
PHP hulp

PHP hulp

24/11/2024 16:13:40
 
Midas

Midas

26/03/2009 18:32:00
Quote Anchor link
Je kunt dit maken door bij elk bezoek het ip in de database op te slaan en te verhogen met 1. Dan kan je ook heel makkelijk laten zien hoevaak degene met dat ip geweest is. Denk alleen wel aan scholen en bedrijven die vaak op 1 ip-adres zitten.
 
Wouter De Schuyter

Wouter De Schuyter

26/03/2009 18:35:00
Quote Anchor link
Dit kan je heel simpel oplossen door bv in je index dit scriptje te plaatsen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
    // MYSQL GEGEVENS BIJWERKEN
    $ip $_SERVER['REMOTE_ADDR'];
    $checkquery = mysql_query("SELECT ip FROM ip_table WHERE ip = '" . $ip . "'") or die(mysql_error());
    if(mysql_num_rows($checkquery) == 0) {
        mysql_query("INSERT INTO ip_table (ip, count) VALUES ('" . $ip . "', '1')") or die(mysql_error());
    }

    elseif(mysql_num_rows($checkquery) >= 1) {
        mysql_query("UPDATE ip_table SET count = count + 1 WHERE ip = '" . $ip . "'") or die(mysql_error());
    }

?>



En dan waar je het bericht wilt weergeven dit scriptje te plaatsen

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
<?php
    // CONTROLE OP IP BEZOPEK
    $ip = $_SERVER['REMOTE_ADDR'];
    $selectquery = mysql_query("SELECT * FROM ip_table WHERE ip = '" . $ip . "'") or die(mysql_error());
    $data = mysql_fetch_assoc($selectquery);
    if($data['count'] == 1) {
        echo "Dit is de eerste keer dat je hier bent!";
    }

    elseif($data > 5) {
        echo "Je bent hier nu reeds 5 keer of meer geweest!";
    }

    elseif($data > 10) {
        echo "Je bent hier nu reeds 10 keer of meer geweest!";
    }

    
    // ETC ETC
?>



En dit is natuurlijk je database structuur
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
--
-- Tabel structuur voor tabel `ip_table`
--

CREATE TABLE IF NOT EXISTS `ip_table` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(15) NOT NULL,
  `count` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;




NOTE: Ik heb dit nog niet getest, juist snel ff in elkaar geflanst, hopelijk werkt het als er zich problemen voor doen stuur je maar een pm of post het hier...

Mvg,
Paradox






--Edit--
Midas heeft het hem uitgelegd, ik heb het script gemaakt :) (Ik was eerst maar wou het zelf schrijven i.p.v. gewoon is te zeggen hoe :p)
Gewijzigd op 01/01/1970 01:00:00 door Wouter De Schuyter
 
Arian Stolwijk

Arian Stolwijk

26/03/2009 19:43:00
Quote Anchor link
@ Paradox: niet bepaald de netste foutenafhandling met or die() hè??

Ook kan je beter de sql functie COUNT() gebruiken om te tellen ipv mysql_num_rows().

Tevens is je code gevoelig voor sql injection... $_SERVER['REMOTE_ADDR'] mag je niet vertrouwen! Het is misschien niet makkelijk om die als gewone gebruiker aan te passen, maar met een beetje moeite is het te doen.

Ook is het een beetje doelloos dat je de query twee keer uitvoert.. één om te kijken of er al eentje bestaat en eentje om te kijken hoevaak...


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
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
function isIp($value){
     // een ip check functie, valt wel te vinden
     // check even         http://nl2.php.net/manual/en/filter.filters.valiate.php
     // en             http://nl2.php.net/manual/en/function.filter-var.php

}

if(isIp($_SERVER['REMOTE_ADDR']){
    $ip = $_SERVER['REMOTE_ADDR']; // hoeft geen mysql_real_escape, het heeft namelijk al de vorm van een IP Adres, dus kan geen sql oid bevatten.

    if(($res = mysql_query("SELECT COUNT(ip) AS ip_cont FROM ip_table WHERE ip = '" . $ip . "'")){
        $data = mysql_fetch_assoc($res);
        $ip_count = $data['ip_count'];
        
        //  nog leeg, nieuwe invoegen
        if($ip_count < 1){
             if(!mysql_query("INSERT INTO ip_table (ip, count) VALUES ('" . $ip . "', '1')")){
                echo 'foutje';
             }
        }
else{
             if(!mysql_query("UPDATE ip_table SET count = count + 1 WHERE ip = '" . $ip . "'")){
                echo 'foutje';
             }
        }

        
        if($ip_count == 0){
            echo 'Dit is eerste bezoek';
        }
elseif($ip_count > 0){
            echo 'Dit is je '.($ip_count+1).'de bezoek';
        }    
    }
else{
        echo 'mysql foutje';
        // evt. tijdens het programmeren mysql_error(), nooit tijdens 'production mode'
    }
}

?>

Niet getest, maar het zou moeten werken ;)
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
 
Richard Duinmayer

Richard Duinmayer

26/03/2009 22:03:00
Quote Anchor link
Wow...

Dat had ik niet verwacht, compleet uitgewerkt en al....

Dank je wel iedereen!!!!
 
Niek Kasius

Niek Kasius

17/01/2010 10:56:00
Quote Anchor link
Arian!
Krijg deze fout melding:

Parse error: syntax error, unexpected '{' in C:\wamp\www\cafehofland\dchofland\iplog\toonder.php on line 8

En omdraaien geeft unexpected '}' En als ik weghaal weghaal, dat dit:

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\cafehofland\dchofland\iplog\toonder.php on line 9
 
Pepijn

Pepijn

17/01/2010 11:17:00
Quote Anchor link
@Paradox, moet nog een rij datum in je tabel.

Of wil je elke week de tabel opschonen doormiddel van een cron?
 
Niek Kasius

Niek Kasius

20/01/2010 01:02:00
Quote Anchor link
Ik heb door te combineren dat ik in andere tutotials zag staan zelf iets gevonden.
En ik ga nog iets proberen zodat iedere IPadres een eigen bericht krijgt.


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
24
25
26
27
28
29
30
<?php
header("Refresh: ".$s."; URL=".$u);  // $s = voor het aantal seconden ; $u = voor het bestand dat je wil openen;

// voorbeeld: header("Refresh: 5; URL=http://ww.phphulp.nl"); // deze refresh zal in 5 seconden deze pagina vervangen voor www.phphulp.nl



echo '<br><br><table align="center" style="background: #A6BED7; width: 50%; cellpadding: 1; cellspacing: 1; border:2px solid #0000A0; text-align: center;"><tr><td>';

if($_SERVER['REMOTE_ADDR'] == "127.0.0.1"){
echo "Hier neer zetten voor de persoon die toegang heeft. ja ";
  }

  else
 {
header("Refresh: 10; URL=http://www.sitenaam.nl/dartclub/team.php");
}

echo "</td></tr><tr><td>";

//Voor meerdere personen  

$ips = array('00.00.00.00', '111.111.111.111');
if (in_array($_SERVER['REMOTE_ADDR'], $ips)) {
echo "";
  }

  else
 {
header("Refresh: 5; URL=http://www.mijnsite.nl/dartclub/team.php");
}

echo "</td></tr></table>";

?>
Gewijzigd op 01/01/1970 01:00:00 door Niek Kasius
 
Niek Kasius

Niek Kasius

20/01/2010 02:23:00
Quote Anchor link
sorry maar staat er al hier boven
Gewijzigd op 01/01/1970 01:00:00 door Niek Kasius
 
John D

John D

20/01/2010 10:41:00
Quote Anchor link
Het werken met IP nummer heeft wel riskante nadelen. Een thuisnetwerkje met 3 computers gaat op 1 IP nummer naar buiten. Je maakt door bijvoorbeeld te melden: "Uw laatste bezoek was gisteren om 24:00" inbreuk op privacy omdat het IP nummer niet persoonlijk is maar gekoppeld is aan hardware (computer/router). Bedrijven gaan ook op 1 IP nummer naar buiten, ook hier vertel je dus wellicht aan een ander dat zijn collega "Gister om 10:00 op de site keek voor de 20e keer". Als je een "krabbels" site begint zal de mate van privacy inbreuk wel meevallen maar een dating of porn site......
 



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.