Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

php/mysql cgi/perl

Wo mit programmiere ich am besten ein gästebuch und einen counter?

php mysql  cgi perl

Was sollte ich da lernen?

mfg koerschgen2001


Antworten zu php/mysql cgi/perl:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

mySQL is "nur" n Datenbank-System.
Ich finde PHP mit abstand besser als CGI.
Perl kenn ich zwar, weiß aber nich viel drüber.

_

Kann man denn mit php auch counter mit grafik erzeugen?

Ich hab mit php bis jetzt nur textbasierende counter gesehen.

die grafik basierenden waren immer mit cgi.

na klar geht das, ist halt nur auch etwas aufwendiger

 ???

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.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich hab mal gehört, dass irgenteine Firma knete dafür haben will, dass man ihre Bibliothek zur erstellung von Gifs benutzt.
Vielleicht war das auch etwas anders. Weiß nich...  :-\

_

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>

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 8)
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.
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

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 8)
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.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Jupp, das mit der IP ist 'ne feine Sache und funzt in den meisten Fällen ganz gut.
Kannst auch beim User ein Cookie setzen, was nach der gewünschten Zeit verfällt.

greez 8)
JoSsiF


« Chat und ForumFreie MB-Anzeige im Forum »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

CGI
Die Abkürzung CGI steht für Common Gateway Interface. Dies ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfra...

PERL
PERL, die Abkürzung für Practical Extraction and Report Language, ist eine vielseitige, plattformunabhängige und interpretierende Programmiersprache, die e...