Op IP gebaseerde welkomst tekst
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"
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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());
}
?>
// 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
?>
// 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)
1
2
3
4
5
6
7
8
9
10
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 ;
-- 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
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)
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
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'
}
}
?>
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
Dat had ik niet verwacht, compleet uitgewerkt en al....
Dank je wel iedereen!!!!
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
Of wil je elke week de tabel opschonen doormiddel van een cron?
En ik ga nog iets proberen zodat iedere IPadres een eigen bericht krijgt.
Code (php)
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
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>";
?>
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
Gewijzigd op 01/01/1970 01:00:00 door Niek Kasius
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......