[php]naar file schrijven werkt niet (goed)

Pagina: 1
Acties:

  • Mannes
  • Registratie: Februari 2001
  • Laatst online: 01-08 02:16
De bedoeling van dit stukje php is dat het een avatar weergeeft met het aantal views, datum, en ip van degene die hem bekijkt.
omdat het aantal views best snel stijgt als je er niet een soort van filter voor zet, leek het mij wel wat om per ip per dag max 1 view bij het totaal toe te voegen.

Het aantal views staat in avatar.txt
de ip adressen in ip.txt
en de datum in date.txt

het script kijkt of de datum in date.txt overeenkomt met de huidige datum en voert dan de rest uit. als de data verschillend zijn zet hij de nieuwe datum in date.txt en cleared hij ip.txt

iedere keer als het script gedraaid word word er gekeken of het ip wat hem geactiveerd heeft al in ip.txt staat. is dit niet het geval zet hij hem erbij en telt 1 op bij de waarde uit avatar.txt
als hij er al wel instaat laat hij de avatar zien zonder eerst het getal te increasen.

op het moment gaat het fout bij het loggen van de ip's
dus, read_ip() en add_ip()
hij logged nu helemaal niet omdat 'ie vind dat er een ) moet komen op regel 29 .. maar ik snap die fout niet helemaal ..
maar toen die fout er nog niet was schreef hij helemaal niks weg.
en daarvoor schreef hij ieder ip dat ie tegenkwam weg zonder te kijken of het al in ip.txt stond.
Maar ziet er iemand hier zo snel wat het zou kunnen zijn ?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<? 
#variable declaration part 
$fp = fopen("avatar.txt", "r"); 
$nummer = fread($fp, 8); 
fclose($fp); 

$datum = date("d.m.y"); 

#function declaration part 
function leeg() { 
   $fil = fopen("date.txt", "w"); 
   fwrite($fil, date("d.m.y")); 
   fclose($fil); 
   $fil2 = fopen("ip.txt", "w"); 
   fclose($fil2); 
} 

function add_ip() { 
   $fp2 =  fopen("ip.txt", "a"); 
   fwrite($fp2, "$REMOTE_ADDR\n"); 
   fclose($fp2); 
   increase(); 
} 

function read_ip() {  
   $a = 1;  
   $file = file("ip.txt");  
   for ($i = 0; $i <= count($file); $i++) { 
      if ($file[$i] == $REMOTE_ADDR) { 
         $a = 0; 
      }  
      if ($a == 0) break;
   }  
   return $a;  
} 

function increase() { 
   $nummer = $nummer + 1; 
   $fp = fopen("avatar.txt", "w"); 
   fwrite($fp, "$nummer"); 
   fclose($fp); 
} 

#control part 
$datu = file("date.txt"); 
if ($datu[0] != date("d.m.y")) { 
   leeg(); 
} 

if (read_ip()) { add_ip(); } 

#image create part 
header ("Content-type: image/png"); 
$im = @imagecreatefrompng ("avatar.png"); 
$wit = imagecolorallocate ($im, 255, 255, 255); 
$grijs = imagecolorallocate ($im, 155, 155, 155); 

imageString($im, 2, 10, 65, $datum, $grijs); 
imageString($im, 2, 10, 75, $REMOTE_ADDR, $grijs); 
imageString($im, 2, 10, 85, $nummer, $grijs); 

imagepng ($im); 
imagedestroy($im); 
?> 


edit:
code update

edit:
code update 2

A computer without Windows is like a fish without a bicycle.


Verwijderd

regel 28
PHP:
1
$i++;


[edit]
Die hele functie read_ip() klopt trouwens niet.
Bedenkt dat een variabele altijd met $ is he !

  • Mannes
  • Registratie: Februari 2001
  • Laatst online: 01-08 02:16
Ja, sorry .. ik had dus geprobeerd of het met een while loop wel werkte.. maar niet helemaal goed terug gezet..
ik heb dit inmiddels verbeterd en hij displayed het plaatje.. maar hij schrijft dus nog steeds geen ip's weg.

klik hier voor script in actie
alle text files kan je ook zo bekijken .. als je wil zie wat 'ie dus eigenlijk niet doet maar wel hoort te doen.

A computer without Windows is like a fish without a bicycle.


  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11:10

Basszje

Reisvaap!]

Probeer het IP address eens op te vragen met : $_SERVER['REMOTE_ADDR'];

En in regel 29 met het IP tussen " , want het is een string, geen integer oid :)

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Basszje schreef op 09 oktober 2002 @ 01:58:
En in regel 29 met het IP tussen " , want het is een string, geen integer oid :)
Puf wat een onzin, het is al een string waarom dan nog tussen quotes zetten. Waarom hebben we dan eigenlijk nog types.


poster: misschien handig, http://www.php.net/in_array

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Lees dit eens door... (als je dit snapt dan kan zo aantal fouten uit jouw code halen)

http://nl.php.net/manual/nl/language.variables.scope.php

Verder misschien is het handig om error_reporting(E_ALL); te gebruiken.

Programmer - an organism that turns coffee into software.


  • Mannes
  • Registratie: Februari 2001
  • Laatst online: 01-08 02:16
LuCarD schreef op 09 oktober 2002 @ 09:28:
Lees dit eens door... (als je dit snapt dan kan zo aantal fouten uit jouw code halen)

http://nl.php.net/manual/nl/language.variables.scope.php

Verder misschien is het handig om error_reporting(E_ALL); te gebruiken.
ah.. dat wist ik dus niet :)
ook die functie is zeker niet onhandig.

bedankt iedereen voor jullie hulp

ik heb hem na het verbeteren van nog een paar andere kleine foutjes helemaal werkend .. voor degenen die ge-intreseerd zijn in de werkende code. hier istie

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<? 
#variable declaration part 
error_reporting(E_ALL); 
$ip = $REMOTE_ADDR; 
$fp = fopen("avatar.txt", "r"); 
$nummer = fread($fp, 8); 
fclose($fp); 

$datum = date("d.m.y"); 

#function declaration part 
function leeg() { 
   $fil = fopen("date.txt", "w"); 
   fwrite($fil, date("d.m.y")); 
   fclose($fil); 
   $fil2 = fopen("ip.txt", "w"); 
   fclose($fil2); 
} 

function add_ip() { 
   $fp2 =  fopen("ip.txt", "a"); 
   fwrite($fp2, $GLOBALS["ip"]); 
   fwrite($fp2, "\n"); 
   fclose($fp2); 
   increase(); 
} 

function increase() { 
   $GLOBALS["nummer"]++; 
   $fp = fopen("avatar.txt", "w"); 
   fwrite($fp, $GLOBALS["nummer"]); 
   fclose($fp); 
} 

#control part 
$datu = file("date.txt"); 
if ($datu[0] != date("d.m.y")) { 
   leeg(); 
} 

$file = file("ip.txt"); 
if (sizeof($file) == 0 || !in_array("$REMOTE_ADDR\n", $file)) { 
    add_ip(); 
} 


#image create part 
header ("Content-type: image/png"); 
$im = @imagecreatefrompng ("avatar.png"); 
$wit = imagecolorallocate ($im, 255, 255, 255); 
$grijs = imagecolorallocate ($im, 155, 155, 155); 

imageString($im, 2, 10, 65, $datum, $grijs); 
imageString($im, 2, 10, 75, $REMOTE_ADDR, $grijs); 
imageString($im, 2, 10, 85, $nummer, $grijs); 

imagepng ($im); 
imagedestroy($im); 
?> 

A computer without Windows is like a fish without a bicycle.

Pagina: 1