Hallo, ich wollte einfach mal einen Counter über ein Cookie realisieren, der bei jedem Seitenaufruf erhöht wird. Dazu habe ich ganz an den Anfang der php Datei folgenden Code geschrieben:
Warum wird mir angezeigt dass in der Zeile $fp = fopen($file, „a“); file nicht definiert wurde? Ich habe doch darüber file definiert … Wie ist denn das mit den Gültigkeitsbereichen in php bzw. wo liegen die Unterschiede zu Java und Co.?
damit php die datei auch findet/erstellt, musst du in der variable $file auch den Pfad mit angeben.
z.B. $file = „…/tmp/entries.txt“;
entweder relativ oder absolut.
nachtrag: war wohl heute etwas zu heiß und jetzt erst gesehen das du eine function aufrufst.
entweder du definierst die variable innerhalb der function oder du übergibst sie als parameter
z.B.: function saveGuest($name, $message,$file ) {…}
Wieso den Pfad? Ich dachte $file wäre einfach ein String. wenn ich fopen anwende und entries.txt nicht existieren würde, dann wird diese datei einfach erstellt. es liegt nicht daran, dass die datei nicht gefunden wird, sondern daran, dass die variable in der function nicht existiert …
Dann eine andere Frage, was für Variablen haben in functions gültigkeit bzw. kann ich überhaupt variablen außerhalb einer function definieren, die dann auch in der function selbst sichtbar sind?
Aber global ist schlechter Stil. Wenn du Variablen von außerhalb in einer Funktion benötigst, übergib sie als Parameter oder nutze ein Objekt mit Instanzvariablen. Die lassen sich auch aus jeder Methode ansprechen.
Vielen Dank! Ich habe nur noch eine letzte Frage. Ich möchte selbst ein Gästebuch programmieren und beim „Messagebereich“ habe ich nun Folgendes Problem. Ich will, dass wenn ich den Kommentar eines Users auslese dieser z.b. alle 50 Zeichen automatisch
einen Zeilenumbruch macht. Also wenn der user jetzt einen Kommentar über 1000 Zeichen schreiben würde, dann wäre das alles in einer Zeile. Ich möchte aber alle 50 Zeichen einen automatischen Zeilenumbruch. Wie mache ich das am besten?
Du könntest andererseits aber auch einfach die Größe des Ausgabefelds auf eine gewisse Breite beschränken. Browsern brechen Text ja auch automatisch um.