Yadgar (mal wieder Sumpfzigeuner): Problem mit Eingabeformular

Beitrag lesen

High!

Hello,

welche Art der "Anmeldung" soll es denn sein?
Möchtest Du die Identifikationsdaten jedes Mal wieder mitsenden? Dann ist es möglich, mit Basic Authentication zu arbeiten.

Dann musst Du nur dieses Stückchen Code in jedes zu schützende Script einbauen:

<?php   ### show_auth_vars.php ###

function authenticate()
    {
        Header("WWW-authenticate: basic realm="Privater Bereich"");
        Header("HTTP/1.0 401 Unauthorized");

##      Wahlweise komplette valide HTML-Seite includen
#        include("wunderbare_leider_nicht_Seite");
##      oder nur einen einfachen Text ausgeben lassen.
        echo "Benutzerdaten erforderlich!";
        exit;
    }

if (!isset($_SERVER['PHP_AUTH_USER'], $_SERVER['REMOTE_USER'])) authenticate();

if ($_SERVER['PHP_AUTH_USER'] != $password or $_SERVER['REMOTE_USER'] != $username) authenticate();

##  bis hierher, wenn die Anmeldung geklappt hat, geht es dann hier weiter...

echo "<pre>\r\n";
    echo htmlspecialchars(print_r($_SERVER,1));
    echo "</pre>\r\n";

?>

Oops, das ist mir (vorerst) noch zu hoch...

Alternativ kannst Du auch mit einem Token (Cookie) arbeiten, dass der Server dem Client sendet.
Am einfachsten geht das, wenn Du eine Session startest.

http://de3.php.net/manual/en/book.session.php

In einem Formular fragst Du dann auch wieder Name und Passwort ab, die Du immer dann überprüfst, wenn in der Session (das geht auch noch anders...) noch nicht vermerkt ist, dass die Überprüfung bereits stattgefunden hat. Wenn die "Anmeldung" erfolgreich war, also der Name zum Passwort passt, dann trägst Du das in das Session-Array einfach ein.

if($_POST['password'] == $password_des_users)
{
  $_SESSION['user'] = $username;
  $_SESSION['logintime'] = time();
}

und schon weißt Du beim nächsten request, dass der Benutzer sich schon angemeldet hatte und wie er heißt.

Dann ist nämlich

intval($_SESSION['logintime']) > 0

erfüllt.

Kann das Skript denn erkennen, ob "submit" angeklickt wurde?

Bis bald im Khyberspace!

Yadgar