Variable als Textdatei anlegen?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
buch
buchen
code
datei
datum
eingabe
file
form
forum
http
lernen
mensch
mut
parameter
punkt
re
test
textdatei
url
-
Guten Abend liebe Community,
ich habe dann noch eine letzte Frage (für heute ):
Ich arbeite wie einige sicherlich schon wissen an einem kleinen Fragespiel. Nun möchte ich Highscorelisten einfügen.
Dafür möchte ich von jedem Spieler eine Textdatei wo die Punkte drinstehen.
Die Spieler sollen ihren Namen eingeben und dann soll eine Textdatei mit dem Namen angelegt werden.
Mein versuch klappte nicht:
<?php $name=$_GET['eingabefeld1']; $datei = fopen($name,"r+"); $counterstand = fgets($datei, 10); if($counterstand == "") { $counterstand = 0; } if($name==1) { $counterstand++; rewind($datei); fwrite($datei, $counterstand); $_SESSION['counter_ip'] = true; } fclose($datei); echo $counterstand; ?> <center> <form action="test.php" method="get"> <input type="text" name="eingabefeld1"> </input> <input type="submit"> </input> </form> </center>
Freue mich auf hilfreiche Antworten.
MfG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
1. nach progstart kommt das:
das kommt daher, dass du die auswertung schon VOR der eingabe machst.Notice: Undefined index: eingabefeld1 in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 8 Warning: fopen() [function.fopen]: Filename cannot be empty in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 10 Warning: fgets() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 11 Warning: fclose() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 280
2. schickst ohne eingabe (kein name) dein form ab, kommt wiederum das hier:
auch das muss vermieden werden.Warning: fopen() [function.fopen]: Filename cannot be empty in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 10 Warning: fgets() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 11 Warning: fclose() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 280
3. schicks die daten mit name, kommt das:
um auch das auszumerzen, soll das ding etwas umgebaut werden:Warning: fopen(hemi) [function.fopen]: failed to open stream: No such file or directory in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 10 Warning: fgets() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 11 Warning: fclose() expects parameter 1 to be resource, boolean given in /home/webpages/lima-city/hemiolos/html/forum/hemiolos/test.php on line 280
1. nehme statt GET POST.
2. zuerst mit form abfragen;
3. dann abfrage testen und wenn ok, file behandeln.
und das geht in etwa so:<?php error_reporting(E_ALL | E_STRICT); session_start(); $_SESSION['counter_ip'] = false; if((!empty($_POST['action']) && $_POST['action'] === 'write') && !empty($_POST['name'])) { // alle daten vorhanden if(is_file($_POST['name']) && is_writable($_POST['name'])) { // file vorhanden, also increment counter $count = file_get_contents($_POST['name']); file_put_contents($_POST['name'], ++$count); $_SESSION['counter_ip'] = true; $res = "{$_POST['name']} $count - mal da!"; } else { // file existiert noch nicht if(file_put_contents($_POST['name'], 1)) { // alles bestens $_SESSION['counter_ip'] = true; $res = "{$_POST['name']} 1 - mal da!"; } else { // du kannst in file nicht schreiben unset($_SESSION['counter_ip']); session_close(); exit('lasse dir was einfallen'); } } } else { // entweder direkt start oder fehlende daten $res = <<< EOT <form action="" method="post"> name: <input type="text" name="name" /> <input type="submit" name="action" value="write" /> </form> EOT; } echo $res;
p.s.: dein form war auch nicht ok, also vorschlag: html lernen, php lernen und auf logik achten ;)
ich halte aber diese lösung für außerordentlich ineffizient. sowas gehört doch in eine db.
UND sehr sehr wichtig: du solltest user-variablen nie ohne validierung übernehmen!
Beitrag zuletzt geändert: 15.1.2012 3:38:29 von hemiolos -
Wenn du den Namen einer Variable einfach in eine Textdatei schreiben möchtest musst du das Dollarzeichen vor dem schreiben mit einem Backslash ausmaskieren!
Wie so vielen Menschen könnte dir dieses
http://www.mut.de/PDF9783827267702.html
Buch gut weiterhelfen!
Ich habe PHP mit einer älteren Ausgabe des Buches sehr gut und schnell gelernt!
LG -
exifcc schrieb:
Wenn du den Namen einer Variable einfach in eine Textdatei schreiben möchtest musst du das Dollarzeichen vor dem schreiben mit einem Backslash ausmaskieren!
Wie so vielen Menschen könnte dir dieses
http://www.mut.de/PDF9783827267702.html
Buch gut weiterhelfen!
Ich habe PHP mit einer älteren Ausgabe des Buches sehr gut und schnell gelernt!
LG
Er will nicht den Variablennamen speichern, sondern in der Variable steht der Dateiname der "Textdatei".
Bsp:
Du spielst sein Quiz unter deinem Namen exifcc, so sollen deine Punkte in der Datei "exifcc" gespeichert werden.
BTT
Wie heiolos schon schrieb: sowas gehört in eine DB.
Wieso nimmst du keine DB dafür? Ist doch im Grunde einfacher und außerdem lässt sich dies besser für Highscores verwalten (Order By Punkte DESC). So kannst du direkt Highscore insgesamt und Highscore pro Member, ohne große Arbeit, darstellen.
exifcc schrieb:
Buch gut weiterhelfen!
Ich habe PHP mit einer älteren Ausgabe des Buches sehr gut und schnell gelernt!
Mir fehlt bei einem Buch eindeutig die SuFu...lieber etwas digitales bei dem ich nebenbei eine SuFu hab :)
Beitrag zuletzt geändert: 17.1.2012 23:59:53 von copynpaste -
Oh, das habe ich wohl falsch aufgefasst!
Der Tipp mit dem Buch gilt trotzdem, für mich persönlich gibts nichts besseres zum Sprachen lernen als ein physisches Buch aufm Schoß! :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage