kostenloser Webspace werbefrei: lima-city


Refresh nach Login

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    kill-a-teddy

    Kostenloser Webspace von kill-a-teddy

    kill-a-teddy hat kostenlosen Webspace.

    Hallo, wie mach ich einen Refresh nach dem Login?

    Beitrag zuletzt geändert: 11.6.2011 22:38:26 von kill-a-teddy
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Hallo kill-a-teddy,
    bei einem Login arbeite ich mit der header-Funktion. Habt dir hier mal ein kleines Beispiel zusammengestrickt.
    <?php
    if (isset($_POST["benutzername"]) && isset($_POST["passwort"])) {
        $benutzername = $_POST['benutzername'];
        $passwort = $_POST['passwort'];
        if ($benutzername == "Karl" && $passwort == "geheim") {
            header("location: angemeldet.php");
        } else {
            echo "Falscher Benutzername oder falsches Passwort!";
        }
    }
    ?>
    <form method="post" action="">
        <input type="text" name="benutzername" value="Dein Benutzername" size="20" />
        <input type="password" name="passwort" value="Passwort" size="20" />
        <input type="submit" value="Anmelden" />
    </form>

    Natürlich solltest du das Passwort nicht unverschlüsselt abfragen. In der angemeldet.php kommt der Inhalt dessen, was angezeigt werden soll, wenn man angemeldet ist.
    Zusätzlich kannst du noch einen Cookie setzen, bevor der Header geändert wird.

    Grüße Ploco :wave:
  4. kill-a-teddy schrieb:
    Hallo, wie mach ich einen Refresh nach dem Login?
    beinahe so, wie @ploco es schreibt.

    ploco schrieb:
    ...
    <?php
    ...
        header("location: angemeldet.php");
    ...
    ?>
    ...
    warum nicht ganz genau?
    1. z.b. weil 'angemeldet.php' hartcodiert ist? [ja und??? fragt der ganz schlaue!!!]
    2. z.b. weil 'Location: ... ' SO aussehen muss?

    für faule, zitat:
    Hinweis:

    HTTP/1.1 verlangt einen absoluten URI inklusive dem Schema, Hostnamen und absoluten Pfad als Argument von » Location:, aber manche Clients akzeptieren auch relative URIs. Gewöhnlich können Sie mittels $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] und dirname() aus einem relativen Link einen absoluten URI selbst erstellen

    jetzt können natürlich haarspalter sagen: 'ja! "aber manche Clients akzeptieren auch relative URIs"'
    na dann spielts nur damit ;o) [oder doch lieber standards??]

    lg
  5. Autor dieses Themas

    kill-a-teddy

    Kostenloser Webspace von kill-a-teddy

    kill-a-teddy hat kostenlosen Webspace.

    <?php
     session_start();
     require("connect.inc.php");
     ?>
     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     <html>
     <head>
     <title>LogIn zum Adminbereich</title>
     <link rel="stylesheet" type="text/css" href="style.css">
     </head>
     <body>
     <?php if(!isset($_POST['submit'])) { ?>
     <form action="<?php $PHP_SELF ?>" method="post">
     <table width="400" bgcolor="#000000" border="0"
     cellpadding="5" cellspacing="1" align="center">
     <tr>
     <td bgcolor="#e7e7e7" align="center" colspan="2">
     <b>Bitte erst anmelden</b>
     </td>
     </tr>
     <tr>
     <td width="170" bgcolor="#e7e7e7">Benutzername</td>
     <td width="230" bgcolor="#ffffff">
     <input type="text" name="username" size="20" class="input"
     <?php if($_POST['username'] !=
     "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td>
     </tr>
     <tr>
     <td width="170" bgcolor="#e7e7e7">Passwort</td>
     <td width="230" bgcolor="#ffffff">
     <input type="password" name="password" size="20" class="input"></td>
     </tr>
     <tr>
     <td bgcolor="#e7e7e7" align="center" colspan="2">
     <input type="submit" name="submit" value="Anmelden" class="button">
     </td>
     </tr>
     </table>
     </form>
     <?php
     }elseif(!$_POST['username'] || $_POST['username'] == "") {
     echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br /><br />
     <a href="index.php">Zurück</a></p>';
     }elseif(!$_POST['password'] || $_POST['password'] == "") {
     echo '<form action="index.php" method="post">';
     echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br /><br />';
     echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
     echo '<input type="submit" name="zurueck" value="Zurück">';
     echo '</p>';
     echo '</form>';
     }else{
     $password = md5($_POST['password']);
     $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".mysql_real_escape_string($_POST['username'])."'");
     $result = @mysql_fetch_array($query) or die('<p align="center">
     Sorry, aber dieser Benutzername existiert nicht!<br /><a
     href="index.php">Zurück</a></p>');
     if($password != $result['pass']){
     echo '<form action="index.php" method="post">';
     echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br /><br />';
     echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
     echo '<input type="submit" name="zurueck" value="Zurück"></p>';
     echo '</form>';
     die;
     }else{
     $user = $result['user'];
     session_register('user');
     echo '<p align="center">LogIn erfolgreich! :-)<br /><br />
     <a href="sichere_seite.php">Weiter</a></p>';
     }
     }
     if(isset($_POST['submit'])){ 
    } 
     ?>
     </body>
     </html>
    
    
    ?>



    Wo müsste ich denn dort header einfügen? weil unter der session register geht's net...

  6. heroes-of-legends

    heroes-of-legends hat kostenlosen Webspace.

    header musst du senden bevor die erste ausgabe kommt. Danach ist es zu spät.

    Ich empfehle dir alle ausgaben in einer variable zu speichern und sie am ende mit einem echo auszugeben.

    Beispiel:
    <?php
    $content = "<html><head><title>Some Title</title></head><body>"
    [....]
    $content .= "<table>"
    foreach ($someArray as $key => $value)
    {
      $content .= "<tr><td>".$key."</td><td>".$value."</td></tr>";
    }
    $content .= "</table>
    [...]
    $content .= "</body></html>
    [...]
    echo $content;
    ?>


    So kannst du an jeder beliebigen Stelle header senden. Auch wenn du mit includes oder requires arbeitest, kannst du diese variable global nutzen. So ersparst du dir an einigen stellen viel denkerei wenn du doch mal wieder spontan header senden willst ;)

    grüße
    Doomdrake
  7. Alternativ könntest du auch eine Weiterleitung per "Meta-Refresh" machen:

    echo "<meta http-equiv=\"refresh\" content=\"0; URL=angemeldet.php\" />";


    Die Zahl nach "content= " gibt die Anzahl der Sekunden an, die vor der Weiterleitung gewartet werden soll.
    Der Vorteil ist, dass die Weiterleitung per "Meta-Refresh" auch nach einer vorangegangenen Ausgabe erfolgen kann.

    Beitrag zuletzt geändert: 12.6.2011 12:52:48 von alfr3d
  8. Autor dieses Themas

    kill-a-teddy

    Kostenloser Webspace von kill-a-teddy

    kill-a-teddy hat kostenlosen Webspace.

    alfr3d schrieb:
    Alternativ könntest du auch eine Weiterleitung per "Meta-Refresh" machen:

    echo "<meta http-equiv=\"refresh\" content=\"0; URL=angemeldet.php\" />";


    Die Zahl nach "content= " gibt die Anzahl der Sekunden an, die vor der Weiterleitung gewartet werden soll.
    Der Vorteil ist, dass die Weiterleitung per "Meta-Refresh" auch nach einer vorangegangenen Ausgabe erfolgen kann.


    Danke, funktioniert Prima! ;P
  9. heroes-of-legends

    heroes-of-legends hat kostenlosen Webspace.

    meta-refresh funktioniert aber auch nicht in jedem browser und lässt sich clientseitig beeinflussen. Hingegen funktionieren redirect-header immer, da schon die browseranfrage umgeleitet wird und nicht erst dem browser gesagt wird, das er einen redirect machen soll.

    mfg
    Doomdrake
  10. heroes-of-legends schrieb:
    meta-refresh funktioniert aber auch nicht in jedem browser und lässt sich clientseitig beeinflussen...


    Dass der "Meta-Refresh" nicht in jedem Browser funktioniert konnte ich noch nicht feststellen, dass er sich allerdings clientseitig beeinflussen lässt ist klar. Deshalb sollte aufjedenfall die Header-Funktion vorgezogen werden, aber so wie ich die PHP-Kenntnisse des Threaderstellers einschätze wäre das ein riesen Aufwand (auch für uns :wink:) geworden, das Skript anzupassen.
  11. 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!