PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Kleine Probleme mit Script (https://www.php-resource.de/forum/php-developer-forum/26074-kleine-probleme-mit-script.html)

der_Behr 15-09-2003 20:39

Kleine Probleme mit Script
 
Hi, ich hab ein paar kleine Probleme mit einem Script:
#1: Die Variable $ip wird durch unset($ip); nicht gelöscht
#2: ER macht nach jedem Eintrag nicht nur EINEN Zeilenumbruch, sondern zwei, sodass eine Leerzeile zwischen dien verschiedenen $ip entsteht (is ja Platzverschwendung). Ich haber aber nur ein \n und entferne die anderen auch vorher mit chop().

Unten seht ihr das Script, es ist alles noch rudimentär, aber es soll mal ein counter werden. Formular und php-code sind in der gleichen Datei.

Code:

<html>
<head>
</head>
<body>
<form action="counter.php" method="post">
<input type="text" name="ip">
<input type="submit">
</form>
</body>
</html>

PHP-Code:

<?
$fp 
fopen('counter_daten.txt''r+');

while( !
feof($fp) )
       {
        
$array[] = fgets($fp256);
       }

$array[0] += 1;

if( isset(
$ip) ){
    
$array[] = $ip;
    unset(
$ip);
}

rewind($fp); ftruncate ($fp0);

for(
$i=0$i<count($array); $i++){
     
$array[$i] = chop($array[$i]);
     
fputs($fp"$array[$i]\n");
     echo 
$array[$i].'<br>';
}
fclose($fp);

?>

Danke schonmal!

RobertTheHero 15-09-2003 22:42

zu 2.

versuch mal statt chop
PHP-Code:

     $array[$i] = str_replace("\n","",$array[$i]); 

gruss

rth

TBT 15-09-2003 23:06

besser
PHP-Code:

$array[$i] = str_replace(array("\n","\r"),array("",""),$array[$i]); 


der_Behr 19-09-2003 16:02

Hat leider net geholfen, aber ich habs anders gelöst. Gibt trotzdem schon wieder neue Probleme:

Neue Datei:
PHP-Code:

<?
$fp 
fopen('counter_daten.txt''r+');
$zeit time();

//Zeilenweises Einlesen; wenn Zeit abgelaufen, ip+alteZeit nicht in neue Daten aufgenommen
while( !feof($fp) )
       {
        
$daten fgets($fp256);
        
$werte explode(','$daten);
        if( 
$werte[1]<$zeit $neu[] = $daten;
       }

//Besucherzahl erhöhen
$neu[0] += 1;

//Testweise neuen Besucher anlegen
$ip rand(1,100);
$ablauf time()+3000;
if( isset(
$ip) ){
    
$neu[] = "$ip,$ablauf";
    unset(
$ip);
}

//Datei leeren
rewind($fp); ftruncate ($fp0);

//Daten neu schreiben
for($i=0$i<count($neu); $i++){
     
$neu[$i] = chop($neu[$i]);
     
fputs($fp"$neu[$i]");
     if( 
$i<count($neu)-fputs($fp"\n");
     echo 
$neu[$i].'<br><br>';
}
fclose($fp);
?>

So sollte der inhalt von counter_daten.txt aussehen:
Code:

87
50,1063982448
25,1063982475
67,1063982475


Allerdings funktioniert das Überprüfen ganz am Anfang noch nicht richtig.
"if( $werte[1]<$zeit ) $neu[] = $daten;"
Angenommen ich ersetze die Zeile mit
"if( 1<2 ) $neu[] = $daten;
dann funktioniert alles.

???


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:17 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG