Wo mit programmiere ich am besten ein gästebuch und einen counter?
php mysql cgi perl
Was sollte ich da lernen?
mfg koerschgen2001
koerschgen2001 Gast |
koerschgen2001 Gast |
Wo mit programmiere ich am besten ein gästebuch und einen counter?
php mysql cgi perl
Was sollte ich da lernen?
mfg koerschgen2001
???
Weiss jemand ne adresse wo ich ein beispiel für einen grafik counter finde?
also denn quelltext
ein bisschen php kann ich schon und durch den text basierenden counter blick ich auch einigermaßen durch aber ich bräuchte für das grafik modell ein paar starthilfen.
OK, kleine Starthilfe (kein Quellcode, selber denken ist immer noch die beste Lösung):
Beim Textcounter wird doch immer ein String (Zahlenwert) eingelesen (meist aus einer Textdatei, DB ist hier kaum nötig). Diesen Wert gibst du dann mit echo aus.
Alles was du für einen Grafikcounter nun ändern musst, ist folgendes:
Baue dir zuerst Zahlengrafiken (0 bis 9) und nenne sie z.B. 0.gif, 1.gif usw.; dann liest du den String (also den Counterstand) nicht im Gesamten, sondern zeichenweise ein (Stichwort fgetc) und ordnest jeder Zahl eine Grafik zu. Nehmen wir mal an, das nächste eingelesene Zeichen wird in Variable $x gespeichert, dann generierst du dafür eine HTML-Ausgabe mit src='$x.gif'.
Mehr isses nicht
greez
JoSsiF
Wenn ich fgetc statt fgets nehme zählt der bis neun und dann fängt der wieder bei 2 an. ich muss irgendwie die nächste stelle erzeugen.
Wie kann ich denn mit fgetc auf das nächste Zeichen springen.
Ich hab auch schon mal schleifen eingebaut und ein bisschen experimentiert aber ich krieg das nicht hin.
Ich hab hier mal die datei.
<html>
<body>
<?
$fn = "ug07data.txt";
if (file_exists($fn))
{
/* alte Zahl lesen */
$fp = fopen($fn,"r");
$zahl = fgetc($fp);
{
$zahl = $zahl + 1;
echo "Der Zugriffszähler steht auf <img src='$zahl.gif'>";
}
fclose($fp);
}
else
/* erster Zugriff */
$zahl = 0;
/* Zahl erhöhen */
/* neue Zahl schreiben */
$fp = fopen($fn,"w");
flock($fp,2);
fputs($fp,$zahl);
flock($fp,3);
fclose($fp);
?>
</body>
</html>
OK den Ansatz hast du.
Aber: wie gesagt, fgetc liest den String zeichenweise, der Zeiger rückt also immer eine Stelle weiter. Der Counterstand hat aber n Stellen (du weißt nicht wieviel). Heißt also, du musst den Zeiger solange weiterrücken lassen, bis das Ende der Datei erreicht ist. Dazu nimmste eine Schleife und die Funktion feof().
Gutes Glingen!
greez
JoSsiF
Ich hab die Funktion feof wie folgt eingebaut. Weil ja nicht bekannt ist wann das ende der datei (n) erreicht ist hab ich eine while schleife benutzt.
<html>
<body>
<?
echo "Der Zugriffszähler steht auf ";
$fn = "ug07data.txt";
if (file_exists($fn))
{
/* alte Zahl lesen */
$fp = fopen($fn,"r");
while(!feof($fp)){
$zahl = fgetc($fp);
echo "<img src='$zahl.gif'>";
}
fclose($fp);
}
else
/* erster Zugriff */
$zahl = 0;
/* Zahl erhöhen */
/* neue Zahl schreiben */
$fp = fopen($fn,"w");
flock($fp,2);
fputs($fp,$zahl);
flock($fp,3);
fclose($fp);
?>
</body>
Jetzt weiss ich nicht mehr wo ich die zahl erhöhen soll. Die muss ja erhöht und in die datei geschrieben werden bevor die ausgegeben wird. Das zählen ohne grafik klapp, dass anzeigen mit grafik auch aber nicht beides zusammen. Außerdem fügt der beim auslesen als letztes eine datei " .gif" ein.
Schonmal ganz gut soweit.
Zum Incrementieren der Zahl: bei mir hab ich das so gemacht, dass ich gleich zu Beginn die Zählerdatei mit "r" öffne und KOMPLETT lese, wieder schließe, dann mit "w" öffne und den neuen Stand reinschreibe mit anschließendem Datei Schließen. Dann öffne ich sie neu und lese sie - wie du das jetzt auch machst - zeichenweise aus.
Ich merke gerade, dass das sogar etwas umständlich ist, weil das viele Öffnen und Schließen gar nicht sein müsste. Aber egal, funzt...
Wegen des Problems mit dem " .gif": Es wird ja erst in der Schleife festgestellt, dass das Ende der Datei erreicht ist, weswegen diese natürlich trotzdem weiterläuft, und dann ist logischerweise kein Wert mehr da. Du könntest entweder in der Schleife dafür noch eine Abbruchbedingung setzen (break) oder etwas an der Reihenfolge ändern, was aber dann noch ein fgetc vor der Schleife voraussetzt, um das erste Zeichen zu lesen.
in diesem Sinne schönes WE und gutes Gelingen!
greez
JoSsiF
habe es endlich geschafft. habe noch ein paar if abfragen eingebaut,um den effekt mit den vorangestellten nullen zu erreichen.
Hier der Quelltext:
<html>
<body>
<?
$fn = "counter.txt";
if (file_exists($fn))
{
/* alte Zahl lesen */
$fp = fopen($fn,"r");
$zahl = fgets($fp,10);
fclose($fp);
}
else
/* erster Zugriff */
$zahl = 0;
/* Zahl erhöhen */
$zahl = $zahl + 1;
if($zahl<10)$zahl = "000$zahl";
if($zahl<100 && $zahl>=10)$zahl = "00$zahl";
if($zahl<1000 && $zahl>=100)$zahl ="0$zahl";
/* neue Zahl schreiben */
$fp = fopen($fn,"w");
flock($fp,2);
fputs($fp,$zahl);
flock($fp,3);
fclose($fp);
$fp = fopen($fn,"r");
while(!feof($fp)){
$zahl = fgetc($fp);
if(feof($fp))break;
echo "<img src='$zahl.gif'>";
}
fclose($fp);
?>
</body>
</html>
Weiss jemand ob man da eine reloadsprerre einbauen kann und wenn ja wie?
ja, du kannst z.b. die ip-adresse in eine textdatei eintragen lassen. mit $REMOTE_ADDR; bekommst du die ip-adresse des users heraus.
danach kannst du dann in dem script als erstes prüfen ob diese ip in der textdatei vorhanden ist. sollte dies der fall sein, wird nur der aktuelle counterstand ausgelesen. andernfalls lässt du ihn die zahl um eins erhöhen und speicherst es ganz normal wieder ab.
« Chat und Forum | Freie MB-Anzeige im Forum » | ||