• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Script funktioniert nicht!!

hansi3000

Neues Mitglied
Bin jetzt entgültig am verzweifeln, erstens wird bei der URL ...?adm kein Du bist... ausgegeben, und das schreiben in eine Datei funktioniert nicht!!!!! Wo stecken hier die Fehler?:

PHP:
<?php
    $datei_handle=fopen('log.txt',a);
    function check ($in_var, $out_var, $name_var) {
        if (isset($_GET['.$in_var.'])) {
            $out_var = $name_var;
        }
    }
    check ($_GET['adm'], $cright, 'ein Administrator'); //var_dump($cright);
    check ($_GET['mod'], $cright, 'ein Moderator');     //var_dump($cright);
    check ($_GET['hel'], $cright, 'ein Helfer');        //var_dump($cright); 
    if ($cright != '') {
        $information = $cright.' gefunden.\n';
        fwrite($datei_handle,$information);
    }
    $file = basename($_SERVER['PHP_SELF']); // Aktuellen Dateinamen in $file speichern.
    if(isset($_POST['user'])){ // Wenn Post 'user' existiert.
        $user = $_POST['user']; // $user ist gleich Post 'user'.
        echo '<h2 id="hallo" style="text-align:center;">Herzlich Willkommen, '.$user.'!</h2>'; // Soll die Überschrift in den HTML-Code schreiben.
        for ($i=1; $i<11; $i++) { // Eine Schleife mit der Anfangsanweisung, dass $i gleich 1 ist, der Bedingung, dass $i kleiner als 11 ist, und der Durchlaufanweisung, dass $i um 1 erhöht werden soll.
            echo 'Test-Nachricht '.$i.'.<br/>'; // Eine Nachricht soll in den HTML-Code geschrieben werden, zusätzlich soll die aktuelle Durchlaufnummer (Wert von $i) hineingeschrieben werden.
        } //
        echo 'Deine IP: <b>'.$_SERVER['REMOTE_ADDR'].'</b>.<br/>'; // Die IP des Nutzer's im HTML-Code ausgeben.
    } else if (!isset($_POST['user'])) { // Wenn Post 'user' NICHT existiert.
        ?> 
            <form action="<?php echo $file; ?>" method="post">
                <input type="text" name="user" value="Username"/>
                <input type="submit" value="&Uuml;bernehmen"/>
            </form>
        <?php 
        echo 'Deine IP: <b><u>'.$_SERVER['REMOTE_ADDR'].'</b></u><br/>'; // Die IP des Nutzer's im HTML-Code ausgeben.
    } //
    if ($cright != '') { 
        echo 'Du bist '.$cright;
    } 
    fclose($datei_handle);
?>
Danke im Vorraus, mfg hansi3000.
PS: Die Datei log.txt existiert selbstverständlich!
 
Werbung:
Du machst übrigens schon wieder alle Threads doppelt und dreifach auf und vergibst unbrauchbare Threadtitel. :-|
 
ja, ich weis, da du auf meinen alten nicht mehr geantwortet hast! Aber hier sind andere Probleme! kannst du mir trotzdfem helfen?
 
Werbung:
Es ist eigentlich dasselbe Problem. $cright erhält keinen Wert, da du in der Funktionssignatur von check keine Referenz (&$out_var) gesetzt hast.
 
Werbung:
Tut mir echt leid, das ich wieder nerve ;), aber nach der Zeile wird kein Zeilenumbruch eingefügt, obwohl ich \n hineingeschreiben habe!
(Bin halt noch nicht so gut in PHP, deswegen probier ich aber immer mehr, und geh ergeizig an die Sache ran ;)!)
 
Diese Escape-Sequenzen funktionieren nur in Strings mit doppelten Anführungszeichen. Statt ' gefunden.\n' also " gefunden.\n".

Es wäre außerdem noch möglich, dass die Anwendung, mit der du die Datei dann ansiehst, "\n" nicht als Zeilenumbruch interpretiert. Ich weiß nicht, ob das unter Windows heutzutage noch ein Problem ist. In dem Fall kannst du entweder "\r\n" statt "\n" verwenden („Windows-Version“ des Zeilenumbruchs) oder (das würde ich tun) dir ein Programm besorgen, das damit klarkommt (Notepad++ oder so vielleicht).
 
Zuletzt bearbeitet:
Perfekt, Vielen Dank. Ich habe nun alles so eingestellt, das das Datum mit eingefügt wird:

PHP:
$datum = date("d.m.Y",$timestamp);
    $uhrzeit = date("H:i",$timestamp);
PHP:
$information = $date_complete.' | '.$cright." wurde gefunden.\n";
Jedoch wird als Datum folgendes ausgegeben:
Code:
01.01.1970 01:00 | ein Administrator wurde gefunden.
Das Datum stimmt aber nicht :D.
ich habe das Script nun online gestellt, siehe: *** ! Die txt-datei findest zu selbstverständlich unter:***http://html.de .
mfg hansi3000
 
Zuletzt bearbeitet:
Werbung:
Wenn du bei date() den zweiten Parameter weglässt, wird die aktuelle Zeit automatisch gewählt. Du kannst das außerdem in einen Aufruf zusammenfassen:

PHP:
$datum = date('d.m.Y H:i');

(Mag aber sein, dass das für dich keinen Sinn ergibt. Wollte es nur angemerkt haben.)
 
Suba, hab jetzt einen Cookie erstellt, der speichert, welchen Rang der Benutzer hat! Und damit nicht bei jedem Aufruf mit dem Cookie wieder eine Zeile in der Log-File gesetzt wird, habe ich den Cookie file_used erstellt, der beim ersten eintragen auf true gesetzt wird, es wird aber nur eine Zeile hinzugefügt. Aber komischerweise wird wieder jedes mal eine Ueile hinzugefügt! Hier der aktuellste Code: (Ich habe die Sache mit den Wochentagen mit Kommentaren eingeklammert, und bei $information nicht $datum_komplett angegeben, weil ansonsten garkein Datum ausgegeben wird!)

PHP:
<?php
    session_start();
    // Datei(en) öffnen
    $datei_handle=fopen('log.txt',a);
    // Funtkionen erstellen
    function check ($in_var, &$out_var, $name_var) {
        if (isset($in_var)) {
            $out_var = $name_var;
            setcookie ("right", $name_var, time() + 3600);  
        }
    } 
    function cookie_check ($in_var, &$out_var, $inhalt, $name) {
        if(isset($in_var) and $invar == $inhalt) {
            $out_var = $name;
        }
    }
    $datum = date("d.m.Y H:i");
    setcookie ("file_used", false, time() + 600);
    /*$wochentag = date("w");
    if ($wochentag == '1') { $datum_komplett = 'Montag, den '.$datum; }
    else if ($wochentag == '2') { $datum_komplett = 'Dienstag, den '.$datum; }
    else if ($wochentag == '3') { $datum_komplett = 'Mittwoch, den '.$datum; }
    else if ($wochentag == '4') { $datum_komplett = 'Donnerstag, den '.$datum; }
    else if ($wochentag == '5') { $datum_komplett = 'Freitag, den '.$datum; }
    else if ($wochentag == '6') { $datum_komplett = 'Samstag, den '.$datum; }
    else if ($wochentag == '7') { $datum_komplett = 'Sonntag, den '.$datum; } */
    check ($_GET['adm'], $_SESSION['cright'], 'ein Administrator');
    check ($_GET['mod'], $_SESSION['cright'], 'ein Moderator');
    check ($_GET['hel'], $_SESSION['cright'], 'ein Helfer');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Administrator', 'ein Administrator');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Moderator',  'ein Moderator');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Helfer', 'ein Helfer');
    if ($_SESSION['cright'] != '' and $_COOKIE['file_used'] == false) {
        $_COOKIE['file_used'] = true;
        $information = $datum.' | '.$_SESSION['cright']." wurde gefunden. (IP-Adresse des Aufrufers: ".$_SERVER['REMOTE_ADDR'].")\n";
        fwrite($datei_handle,$information);
    }
    $file = basename($_SERVER['PHP_SELF']);
    if(isset($_POST['user'])){
        $user = $_POST['user'];
        echo '<h2 id="hallo" style="text-align:center;">Herzlich Willkommen, '.$user.'!</h2>';
        for ($i=1; $i<11; $i++) {
            echo 'Test-Nachricht '.$i.'.<br/>';
        } //
        echo 'Deine IP: <b>'.$_SERVER['REMOTE_ADDR'].'</b>.<br/>';
    } else if (!isset($_POST['user'])) {
        ?> 
            <form action="<?php echo $file; ?>" method="post">
                <input type="text" name="user" value="Username"/>
                <input type="submit" value="&Uuml;bernehmen"/>
            </form>
        <?php 
        echo 'Deine IP: <b><u>'.$_SERVER['REMOTE_ADDR'].'</b></u><br/>';
    } //
    if ($_SESSION['cright'] != '') { 
        echo 'Du bist '.$_SESSION['cright'].'!';
    } 
    fclose($datei_handle);
?>

mfg hansi3000
 
Werbung:
Diese Zeile wird bei jedem Aufruf durchlaufen, setzt den Cookie also immer wieder auf false.

PHP:
setcookie ("file_used", false, time() + 600);

Bau da eine Bedingung drumrum. if (!isset($_COOKIE['file_used'])) { … }

Du kannst außerdem eigentlich nur Strings als Cookie-Werte setzen. Ich würde hier glaube ich "0" und "1" wählen, statt false und true.
 
Jetzt wird trotzdem alles 2 mal eingetragen!

PHP:
<?php
    session_start();
    // Datei(en) öffnen
    $datei_handle=fopen('log.txt',a);
    // Funtkionen erstellen
    function check ($in_var, &$out_var, $name_var) {
        if (isset($in_var)) {
            $out_var = $name_var;
            setcookie ("right", $name_var, time() + 3600);  
        }
    } 
    function cookie_check ($in_var, &$out_var, $inhalt, $name) {
        if(isset($in_var) and $invar == $inhalt) {
            $out_var = $name;
        }
    }
    $datum = date("d.m.Y H:i");
    if (!isset($_COOKIE['file_used'])) {$_COOKIE['file_used'] = "0";}
    /*$wochentag = date("w");
    if ($wochentag == '1') { $datum_komplett = 'Montag, den '.$datum; }
    else if ($wochentag == '2') { $datum_komplett = 'Dienstag, den '.$datum; }
    else if ($wochentag == '3') { $datum_komplett = 'Mittwoch, den '.$datum; }
    else if ($wochentag == '4') { $datum_komplett = 'Donnerstag, den '.$datum; }
    else if ($wochentag == '5') { $datum_komplett = 'Freitag, den '.$datum; }
    else if ($wochentag == '6') { $datum_komplett = 'Samstag, den '.$datum; }
    else if ($wochentag == '7') { $datum_komplett = 'Sonntag, den '.$datum; } */
    check ($_GET['adm'], $_SESSION['cright'], 'ein Administrator');
    check ($_GET['mod'], $_SESSION['cright'], 'ein Moderator');
    check ($_GET['hel'], $_SESSION['cright'], 'ein Helfer');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Administrator', 'ein Administrator');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Moderator',  'ein Moderator');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Helfer', 'ein Helfer');
    if ($_SESSION['cright'] != '' and $_COOKIE['file_used'] == "0") {
        $_SESSION['file_used'] = "1";
        $information = $datum.' | '.$_SESSION['cright']." wurde gefunden. (IP-Adresse des Aufrufers: ".$_SERVER['REMOTE_ADDR'].")\n";
        fwrite($datei_handle,$information);
    }
    $file = basename($_SERVER['PHP_SELF']);
    if(isset($_POST['user'])){
        $user = $_POST['user'];
        echo '<h2 id="hallo" style="text-align:center;">Herzlich Willkommen, '.$user.'!</h2>';
        for ($i=1; $i<11; $i++) {
            echo 'Test-Nachricht '.$i.'.<br/>';
        } //
        echo 'Deine IP: <b>'.$_SERVER['REMOTE_ADDR'].'</b>.<br/>';
    } else if (!isset($_POST['user'])) {
        ?> 
            <form action="<?php echo $file; ?>" method="post">
                <input type="text" name="user" value="Username"/>
                <input type="submit" value="&Uuml;bernehmen"/>
            </form>
        <?php 
        echo 'Deine IP: <b><u>'.$_SERVER['REMOTE_ADDR'].'</b></u><br/>';
    } //
    if ($_SESSION['cright'] != '') { 
        echo 'Du bist '.$_SESSION['cright'].'!';
    } 
    fclose($datei_handle);
?>
 
Du hast da einmal $_COOKIE, einmal $_SESSION.

PHP:
$_COOKIE['file_used'] == "0") {
        $_SESSION['file_used'] = "1";
 
Werbung:
Sorry, aber jetzt trägt er es sogar wieder jedes mal ein.

PHP:
<?php
    session_start();
    // Datei(en) öffnen
    $datei_handle=fopen('log.txt',a);
    // Funtkionen erstellen
    function check ($in_var, &$out_var, $name_var) {
        if (isset($in_var)) {
            $out_var = $name_var;
            setcookie ("right", $name_var, time() + 3600);  
        }
    } 
    function cookie_check ($in_var, &$out_var, $inhalt, $name) {
        if(isset($in_var) and $invar == $inhalt) {
            $out_var = $name;
        }
    }
    $datum = date("d.m.Y H:i");
    if (!isset($_COOKIE['file_used'])) {$_COOKIE['file_used'] = "0";}
    /*$wochentag = date("w");
    if ($wochentag == '1') { $datum_komplett = 'Montag, den '.$datum; }
    else if ($wochentag == '2') { $datum_komplett = 'Dienstag, den '.$datum; }
    else if ($wochentag == '3') { $datum_komplett = 'Mittwoch, den '.$datum; }
    else if ($wochentag == '4') { $datum_komplett = 'Donnerstag, den '.$datum; }
    else if ($wochentag == '5') { $datum_komplett = 'Freitag, den '.$datum; }
    else if ($wochentag == '6') { $datum_komplett = 'Samstag, den '.$datum; }
    else if ($wochentag == '7') { $datum_komplett = 'Sonntag, den '.$datum; } */
    check ($_GET['adm'], $_SESSION['cright'], 'ein Administrator');
    check ($_GET['mod'], $_SESSION['cright'], 'ein Moderator');
    check ($_GET['hel'], $_SESSION['cright'], 'ein Helfer');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Administrator', 'ein Administrator');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Moderator',  'ein Moderator');
    cookie_check ($_COOKIE['right'], $_SESSION['cright'], 'ein Helfer', 'ein Helfer');
    if ($_SESSION['cright'] != '' and $_COOKIE['file_used'] == "0") {
        $_COOKIE['file_used'] = "1";
        $information = $datum.' | '.$_SESSION['cright']." wurde gefunden. (IP-Adresse des Aufrufers: ".$_SERVER['REMOTE_ADDR'].")\n";
        fwrite($datei_handle,$information);
    }
    $file = basename($_SERVER['PHP_SELF']);
    if(isset($_POST['user'])){
        $user = $_POST['user'];
        echo '<h2 id="hallo" style="text-align:center;">Herzlich Willkommen, '.$user.'!</h2>';
        for ($i=1; $i<11; $i++) {
            echo 'Test-Nachricht '.$i.'.<br/>';
        } //
        echo 'Deine IP: <b>'.$_SERVER['REMOTE_ADDR'].'</b>.<br/>';
    } else if (!isset($_POST['user'])) {
        ?> 
            <form action="<?php echo $file; ?>" method="post">
                <input type="text" name="user" value="Username"/>
                <input type="submit" value="&Uuml;bernehmen"/>
            </form>
        <?php 
        echo 'Deine IP: <b><u>'.$_SERVER['REMOTE_ADDR'].'</b></u><br/>';
    } //
    if ($_SESSION['cright'] != '') { 
        echo 'Du bist '.$_SESSION['cright'].'!';
    } 
    fclose($datei_handle);
?>
 
Ich steige nicht so wirklich durch deinen Code durch, wenn ich ehrlich bin. Könntest du mal in Worten beschreiben, was der tun soll?
 
Werbung:
Er soll einfach ein Feld zum eintragen des Usernamen bieten, der dann ausggeben werden soll, aber am wichtigsten ist die erweiterung mit den getfeldern, jedoch soll der Rank nur 1 mla pro Stunde eingetragen werden, und damit man nicht jedes mal die endung eingeben muss, auch in einer Session gespeichert sein.
 
Zurück
Oben