kostenloser Webspace werbefrei: lima-city


Benutzerdefinierte Datei mit PHP öffnen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    schinkenmedia

    Kostenloser Webspace von schinkenmedia

    schinkenmedia hat kostenlosen Webspace.

    Guten Mittag liebe Community,

    ich habe in einer ref="/tag/datei">Datei ein Eingabefeld mit dem man eine Datei mit dem Namen erstellt, den man in dem Eingabefeld eingegeben hat.

    Nun habe ich eine andere Datei und möchte die erstellte Datei öffnen, also so in der art:

    $datei = fopen("mueller","r+");


    Hier habe ich jetzt als Dateinamen "mueller" eingegeben, ich möchte aber die Datei öffnen, die man zuvor als Namen eingegeben hat.

    Der Code von der anderen Datei lautet (Danke an hemiolos für diesen Code!) :

    <?php
    error_reporting(E_ALL | E_STRICT);
    
    session_start();
    $_SESSION['counter_ip'] = false;
    
    $a==1;
    
    if((!empty($_POST['action']) && $_POST['action'] === 'write') && !empty($_POST['name'])) {
    
      // alle daten vorhanden
      if(is_file($_POST['name']) && is_writable($_POST['name'])) {
    
    echo 'Okey';
    
      } 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;
    
    ?>


    Wie mache ich das am besten? Freue mich auf hilfreiche Antworten.

    mfg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. kleine (aber wichtige!) änderung zum vorigen prog (file: write.php):
    <?php
    
    error_reporting(E_ALL | E_STRICT);
    
    session_start();
    $_SESSION['counter_ip'] = false;
    
    if((!empty($_POST['action']) && $_POST['action'] === 'write') && !empty($_POST['name'])) {
    
      // path:
      $path = './files/' . $_POST['name'];
      // alle daten vorhanden
      if(is_file($path) && is_writable($path)) {
    
        // file vorhanden, also increment counter
        $count = file_get_contents($path);
        file_put_contents($path, ++$count);
        $_SESSION['counter_ip'] = true;
        $res = "{$_POST['name']} $count - mal da!";
    
      } else {
    
        // file existiert noch nicht
        if(file_put_contents($path, 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;
    dieses prog braucht jetzt einen unterordner, also './files', wo die dateien hineingeschrieben werden!

    und dann das öffnen (file: read.php):
    <?php
    
    error_reporting(E_ALL | E_STRICT);
    
    if((!empty($_POST['action']) && $_POST['action'] === 'open') && !empty($_POST['name'])) {
    
      // open file
      $name = basename($_POST['name']);
      $res = "count for $name: " . file_get_contents($_POST['name']);
    
    } else {
    
      // create form
      $ls = glob('./files/*');
      foreach($ls as $file) {
        $files[] = realpath($file);
      }
    
      $select = "<select name=\"name\">\n";
      foreach($files as $file) {
        $f = basename($file);
        $select .= "<option value=\"$file\">$f</option>";
      }
      $select .= "</select>";
    
      $res = <<< EOT
    <form action="" method="post">
      $select<input type="submit" name="action" value="open" />
    </form>
    EOT;
    
    }
    
    echo $res;
  4. Autor dieses Themas

    schinkenmedia

    Kostenloser Webspace von schinkenmedia

    schinkenmedia hat kostenlosen Webspace.

    hemiolos schrieb:
    kleine (aber wichtige!) änderung zum vorigen prog (file: write.php):
    <?php
    
    error_reporting(E_ALL | E_STRICT);
    
    session_start();
    $_SESSION['counter_ip'] = false;
    
    if((!empty($_POST['action']) && $_POST['action'] === 'write') && !empty($_POST['name'])) {
    
      // path:
      $path = './files/' . $_POST['name'];
      // alle daten vorhanden
      if(is_file($path) && is_writable($path)) {
    
        // file vorhanden, also increment counter
        $count = file_get_contents($path);
        file_put_contents($path, ++$count);
        $_SESSION['counter_ip'] = true;
        $res = "{$_POST['name']} $count - mal da!";
    
      } else {
    
        // file existiert noch nicht
        if(file_put_contents($path, 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;
    dieses prog braucht jetzt einen unterordner, also './files', wo die dateien hineingeschrieben werden!

    und dann das öffnen (file: read.php):
    <?php
    
    error_reporting(E_ALL | E_STRICT);
    
    if((!empty($_POST['action']) && $_POST['action'] === 'open') && !empty($_POST['name'])) {
    
      // open file
      $name = basename($_POST['name']);
      $res = "count for $name: " . file_get_contents($_POST['name']);
    
    } else {
    
      // create form
      $ls = glob('./files/*');
      foreach($ls as $file) {
        $files[] = realpath($file);
      }
    
      $select = "<select name=\"name\">\n";
      foreach($files as $file) {
        $f = basename($file);
        $select .= "<option value=\"$file\">$f</option>";
      }
      $select .= "</select>";
    
      $res = <<< EOT
    <form action="" method="post">
      $select<input type="submit" name="action" value="open" />
    </form>
    EOT;
    
    }
    
    echo $res;


    Danke, nun versuche ich, den Counter an eine andere Bedienung anzuknüpfen, nämlich ob die Frage beantwortet wurde.

    Hier mal ein Ausschnitt aus meinen bisherigen versuchen:

    //Frage1
    
    $a=$_GET['eingabefeld1'];
    
    $text[1]='Wie heisst Obama mit Vornamen? 
    
    <br />
    <br />
    1: Barack
    <br />
    2: Klaus
    <br />
    3: Hubertus
    <br />
    4: Ole
    <br />
    <br />
    <form action="code.php" method="get">
    			<input type="text" name="eingabefeld1">
    
    			</input>
    
    			<input type="submit">
    
    			</input>
    
    		</form>';
    
    
    
    
    
    if($a==1)
    {
    echo 'Die Antwort ist...RICHTIG! <a href="http://schinkenmedia.de/punktekoenig/code.php">Klicke hier für die nächste Frage!</a>';
    }
    if($a==2)
    {
    echo 'Die Antwort ist....leider Falsch!! <a href="http://schinkenmedia.de/punktekoenig/code.php">Klicke hier um noch einmal zu spielen</a>';
    }
    if($a==3)
    {
    echo 'Die Antwort ist....leider Falsch!! <a href="http://schinkenmedia.de/punktekoenig/code.php">Klicke hier um noch einmal zu spielen</a>';
    }
    if($a==4)
    {
    echo 'Die Antwort ist....leider Falsch!! <a href="http://schinkenmedia.de/punktekoenig/code.php">Klicke hier um noch einmal zu spielen</a>';
    }
    
    
    
    error_reporting(E_ALL | E_STRICT);
    
    
    if((!empty($_POST['action']) && $_POST['action'] === 'open') && !empty($_POST['name']) && ($a==1)) {
    
      // open file
      $name = basename($_POST['name']);
      $res = "count for $name: " . file_get_contents($_POST['name']);
    
    } else {
    
      // create form
      $ls = glob('./files/*');
      foreach($ls as $file) {
        $files[] = realpath($file);
      }
    
      $select = "<select name=\"name\">\n";
      foreach($files as $file) {
        $f = basename($file);
        $select .= "<option value=\"$file\">$f</option>";
      }
      $select .= "</select>";
    
      $res = <<< EOT
    <form action="" method="post">
      $select<input type="submit" name="action" value="open" />
    </form>
    EOT;
    
    }
    
    echo $res;
    
    
    if($a==1)
    {
    exit;
    }
    if($a==2)
    {
    exit;
    }
    if($a==3)
    {
    exit;
    }
    if($a==4)
    {
    exit;
    }



    Bloß jetzt muss ich mich einerseits nach jeder Eingabe neu einloggen und andererseits wird der Counter durch meine Bedienung ($a==1) nicht hochgesetzt.

    Wie kann ich das ändern/anpassen.

    Ich bin noch relativ neu in Sachen programmieren / webbasiertes programmieren.


    mfg

    Beitrag zuletzt geändert: 16.1.2012 15:27:03 von schinkenmedia
  5. schinkenmedia schrieb:
    Wie kann ich das ändern/anpassen.
    in dem du uns sagst, was du mit dem ding eigentlich betreiben willst!

    ich habe bisher - mehr oder minder - richtig geraten!! aber das wollen wir nun hinter uns lassen und du möchtest dich in diesem sinne outen! was hast du eigentlich vor?

    es hat - wie wir es gesehen haben - mehrere (unterschiedliche) postings gegeben, die alle in die selbe richtung gedeutet haben. wir sind trotzdem keine griechen, die orakeln deuten. also klartext!?

    ich bitte trotzdem um geduld, ich bin gerade dabei: Tribute in Concert (Full Video) ;)
    (es dauert ~01:30:00 stunden!)

    p.s.: den letzten kode von dir sehe ich mir noch an.

    Beitrag zuletzt geändert: 16.1.2012 17:03:21 von hemiolos
  6. Autor dieses Themas

    schinkenmedia

    Kostenloser Webspace von schinkenmedia

    schinkenmedia hat kostenlosen Webspace.

    hemiolos schrieb:
    schinkenmedia schrieb:
    Wie kann ich das ändern/anpassen.
    in dem du uns sagst, was du mit dem ding eigentlich betreiben willst!

    ich habe bisher - mehr oder minder - richtig geraten!! aber das wollen wir nun hinter uns lassen und du möchtest dich in diesem sinne auten! was hast du eigentlich vor?

    es hat - wie wir es gesehen haben - mehrere (unterschiedliche) postings gegeben, die alle in die selbe richtung gedeutet haben. wir sind trotdem keine griechen, die orakeln deuten. also klartext!?

    ich bitte trotzdem um geduld, ich bin gerade dabei: Tribute in Concert (Full Video) ;)
    (es dauert ~01:30:00 stunden!)

    p.s.: den letzten kode von dir sehe ich mir noch an.



    Okey, dann will ich das mal beschreiben:

    Ich möchte, teilweise um PHP zu üben, teilweise um ein bisschen Spielspaß hervorzurufen, ein Spiel (webbasiert) machen, dass mit "Wer wird Millionär" vergleichbar ist. er Benutzer bekommt eine von mehreren Fragen zufällig zugewiesen und hat 4 Antwortmöglichkeiten, die mit jeweils einer Nummer bestückt sind. Je nachdem, welche Antwort er eingeben möchte gibt er die Zahl, die vor der Antwort steht, in ein Eingabefeld ein. Daraufhin wird überprüft, ob das Ergebnis richtig oder falsch ist. Wenn es richtig ist bekommt er die Meldung das er gewonnen hat und durch das klicken auf den Link bekommt er eine weitere Frage.

    Soviel zum ersten Teil

    Dann soll noch eine Überprüfung stattfinden. Wenn er richtig geantwortet hat, soll ein Counter hochgesetzt werden. Das habe ich früher ganz einfach mit einem simplen Script gelöst:

    if($b==2)
       {
       $counterstand++;
       rewind($datei);
       fwrite($datei, $counterstand);
       $_SESSION['counter_ip'] = true;
       }


    In diesem Falle war die Antwort 2 die richtige.
    Nun möchte ich aber eine Highscoreliste erstellen, d.h. beginnt der start des Spieles in einer anderen Datei, wo der Spieler seinen Namen eingeben soll. Hat er das getan soll für ihn eine Datei mit seinem angegebenen Namen erstellt werden und er soll entweder manuell oder automatisch auf die nächste Seite, die mit den Fragen, weitergeleitet werden. Jetzt soll, wenn eine Bedienung erfüllt ist (z.B. $b==2) die Zahl in der Datei mit dem angegebenen Namen um eins erhöht werden. Wenn er dann verloren hat wird er entweder manuell oder automatisch auf eine dritte Seite weitergeleitet, wo er seinen Highscore sehen kann.

    Ich hoffe ich konnte es ausführlich genug beschreiben.


    mfg

    Beitrag zuletzt geändert: 16.1.2012 15:56:59 von schinkenmedia
  7. Hi

    hier mal ein ganz dreckiger php code

    <?php
    
    if (!empty($_POST['name'])) { 
    
    $go_name = trim(chop($_POST['name']));
    
    // ----- Eingabe von Steuer- und Sonderzeichen befreien ----- 
    
    $go_name = preg_replace('/[^0-9a-zA-ZäöüÄÖÜß_\- ]/', '', $go_name); 
    
    $umlaute1 = array( 'ä',  'ö',  'ü',  'ß',  'Ä',  'Ö',  'Ü'  ); 
    $umlaute2 = array( 'ae', 'oe', 'ue', 'ss', 'Ae', 'Oe', 'Ue' ); 
    
    $save_name = str_replace($umlaute1, $umlaute2, $go_name); 
    
    $file_name = '_user_'.$save_name.'.txt'; 
    
    if (!file_exists($file_name)) { 
    
    $user_infos = "0|0|0"; 
    
    $handle = fopen($file_name,"w", 0666);
    fwrite($handle,$user_infos);
    fclose($handle);
    
    } 
    else { 
    $user_infos = file_get_contents($file_name); 
    }
    
    
    
    // --------------------------------------- 
    
    $fragen = array(); 
    $fragen[0] = 'Fragen und Antworten'; 
    
    $fragen[1] = array(); 
    $fragen[1][0] = 'Was hat hat eine Elefant ?'; 
    $fragen[1][1] = 'Schnabel'; 
    $fragen[1][2] = 'Rüssel'; 
    $fragen[1][3] = 'Flügel'; 
    $fragen[1][4] = 'Federn'; 
    $fragen[1][5] = 2; 
    
    $fragen[2] = array(); 
    $fragen[2][0] = 'Wie hoch ist der Eifelturm in Paris ?'; 
    $fragen[2][1] = '113 Meter'; 
    $fragen[2][2] = '241 Meter'; 
    $fragen[2][3] = '324 Meter'; 
    $fragen[2][4] = '537 Meter'; 
    $fragen[2][5] = 3; 
    
    $fragen[3] = array(); 
    $fragen[3][0] = 'Wie heisst die Hauptstadt von Italien ?'; 
    $fragen[3][1] = 'Neapel'; 
    $fragen[3][2] = 'Venedig'; 
    $fragen[3][3] = 'Rom'; 
    $fragen[3][4] = 'Palermo'; 
    $fragen[3][5] = 3; 
    
    $fragen[4] = array(); 
    $fragen[4][0] = 'Wo findet das Dschungle-Camp statt ?'; 
    $fragen[4][1] = 'Brasilien'; 
    $fragen[4][2] = 'Iran'; 
    $fragen[4][3] = 'Deutschland'; 
    $fragen[4][4] = 'Australien'; 
    $fragen[4][5] = 4; 
    
    $anzahlfragen = (count($fragen) - 1); 
    
    // --------------------------------------- 
    
    
    $user_data = explode('|',$user_infos); 
    
    $last_frage   = $user_data[0]; 
    $antw_richtig = $user_data[1]; 
    $antw_falsch  = $user_data[2]; 
    
    
    if (!empty($_POST['zumergebnis']) && $_POST['zumergebnis'] == 'ja') { 
    
    echo "<h2>ERGEBNIS</h2>\r\n"; 
    echo "<p>Name: $go_name </p>\r\n"; 
    echo "<p>Anzahl Fragen: $last_frage</p>\r\n"; 
    echo "<p>Rischtige Antworten: $antw_richtig </p>\r\n"; 
    echo "<p>Falsche Antworten: $antw_falsch </p>\r\n"; 
    
    
    }
    else { 
    
    
    $fragenr = ($last_frage + 1); 
    $ausgabe1 = $fragen[$fragenr]; 
    
    if (!empty($_POST['fnum'])) { 
    $go_fnum = trim(chop($_POST['fnum']));
    
    if ($_POST['antwort'] == $ausgabe1[5]) { 
    echo "<p>Deine Antwort war richtig.</p>\r\n";
    $antw_richtig++;
    } 
    else {
    echo "<p>Deine Antwort war falsch.</p>\r\n";
    $antw_falsch++; 
    }
    
    $fragenext = ($fragenr+1); 
    
    $user_infos_neu = "$fragenr|$antw_richtig|$antw_falsch"; 
    
    $handle = fopen($file_name,"w", 0666);
    fwrite($handle,$user_infos_neu);
    fclose($handle);
    
    if ($fragenr == $anzahlfragen) { 
    
    echo "<form name=\"form3\" method=\"post\" action=\"\">\r\n"; 
    echo "<p>Weiter zum ERGEBNIS</p>\r\n"; 
    echo "<input type=\"hidden\" name=\"name\" value=\"$go_name\">\r\n"; 
    echo "<input type=\"hidden\" name=\"zumergebnis\" value=\"ja\">\r\n"; 
    echo "<p> &nbsp;&nbsp;&nbsp; OK <input type=\"submit\" name=\"go\" value=\"weiter\"> </p>\r\n"; 
    echo "</form>\r\n"; 
    } 
    else { 
    
    echo "<form name=\"form3\" method=\"post\" action=\"\">\r\n"; 
    echo "<p>Weiter zur FRAGE: $fragenext</p>\r\n"; 
    echo "<input type=\"hidden\" name=\"name\" value=\"$go_name\">\r\n"; 
    echo "<p> &nbsp;&nbsp;&nbsp; OK <input type=\"submit\" name=\"go\" value=\"weiter\"> </p>\r\n"; 
    echo "</form>\r\n"; 
    
    }
    
    
    }
    else { 
    
    
    echo "<h2>FRAGE: $fragenr von $anzahlfragen</h2>\r\n"; 
    
    echo "<form name=\"form2\" method=\"post\" action=\"\">\r\n"; 
    
    echo "<p>FRAGE: $ausgabe1[0]</p>\r\n"; 
    echo "<p>&nbsp;</p>\r\n"; 
    
    echo "<p>ANTWORTEN:</p>\r\n"; 
    echo "<ol>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"1\"> &nbsp; $ausgabe1[1] </li>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"2\"> &nbsp; $ausgabe1[2] </li>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"3\"> &nbsp; $ausgabe1[3] </li>\r\n"; 
    echo "<li> <input type=\"radio\" name=\"antwort\" value=\"4\"> &nbsp; $ausgabe1[4] </li>\r\n"; 
    echo "</ul>\r\n"; 
    echo "<input type=\"hidden\" name=\"name\" value=\"$go_name\">\r\n"; 
    echo "<input type=\"hidden\" name=\"fnum\" value=\"$fragenr\">\r\n"; 
    echo "<p> &nbsp;&nbsp;&nbsp; OK <input type=\"submit\" name=\"go\" value=\"weiter\"> </p>\r\n"; 
    echo "</form>\r\n"; 
    
    }
    
    }
    
    }
    else { 
    
    ?>
    
    <br>
    <form name="form1" method="post" action="">
      Dein Name: <input type="text" name="name" size="24" maxlength="100">
      &nbsp;&nbsp;&nbsp; OK <input type="submit" name="go" value="weiter">
    </form>
    <br>
    
    <?php
    
    }
    
    
    // --------------------------------------- 
    ?>


    problem dabei ist vorallem, wenn der User im Browser zurück geht,
    dann kommt Fehler, weil Fragen-Nr weiter hoch gezählt wird.

    eigentlich so völlig unbrauchbar der Code, Fehler sind so garantiert !!!
    aber ist halt einfach mal ein Denk-Anstoß ... zu Fragen in Array

    geht der User aber brav nur über die Formular Buttons, sollte es klappen

    aber so ist das keine gute Lösung
    besser wäre wohl alles in MySQl zu machen
    und auch mit einer Tabelle, welche Fragen welcher User schon beantwortet hat
    dann kann er evtl auch mal eine überspringen bzw. man kann Fehler abfangen,
    indem man prüft, ob diese Frage schon beantwortet wurde, wenn ja , nicht nochmal

    auch würde ich für jeden User (Name) einen Account machen, mit Passwort und Login
    so, dass nicht 2 verschiedene Personen mit dem gleicnen Name rumhantieren

    Nochmal ... der Code oben ist eigentlich ein NEGATIV Beispiel und sollte NICHT verwendet werden

    aber vielleicht kann man daraus ja weitere Ideen ableiten

  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!