tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
25
ZUGRIFFE
749
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    userjules userjules ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    85
    Hallo zusammen, ich bin ganz neu hier und war noch nie in irgendeinem Forum angemeldet geschweige denn, dass ich Beiträge verfasst hätte. Also bitte nicht gleich schlagen wenn ich hier irgenwelche Anfängerfehler mache !
    Zu meinem Problem:
    Ich hab mir dieses echt tolle Tutorial von Karl Förster vorgenommen (http://www.tutorials.de/forum/php-tu...-sessions.html) um ein Login System für eine Webseite zu basteln.
    Ohne das ich irgendwelche Vorkentnisse von SQL und PHP habe, hab ich's hingekriegt. Echt klasse ! Aber...
    Das Tutorial beschränkt sich auf ein Login-System, dass alle erfolgreichen Logins auf eine gemeinsame intern.php weiterleitet. Ich möchte gerne, das jeder User seine "eigene" Seite bekommt.
    Folgendes hab ich getan (Bitte das genannte Forum als Referenz nutzen!!):

    Erstmal den SQL Befehl erweitert um den Befehl: Ziel VarChar(50) NOT NULL default '',
    ... anschließend auf dem Server augeführt. Hat funktioniert ! Ich hab also die Tabelle um die Spalte "Ziel" erweitert.

    Ich hab's auch geschafft den PHP Code zum erstellen der Benutzer so umzufrickeln, dass das Skript mir die Benutzer angelegt hat mit dem jeweiligen Ziel in der neuen Spalte.
    $benutzer[0]["Ziel"] = "seite.php";

    Jetzt muss aber noch die login.php umgebaut werden und da hört's bei mir auf !
    Ich denke mal ich bin auf einem guten Weg, aber da ich keine Ahnung von der PHP Syntax habe komme ich hier ohne eure Hilfe nicht weiter.

    Meine neue login.php sieht bisher folgendermaßen aus:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>

    <?php
    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen
    $connectionid = mysql_connect ("localhost", "user", "passwort");
    if (!mysql_select_db ("database", $connectionid))
    {
    die ("Keine Verbindung zur Datenbank");
    }

    $sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname, Ziel ".
    "FROM ".
    "benutzerdaten ".
    "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
    $result = mysql_query ($sql);

    if (mysql_num_rows ($result) > 0)
    {
    // Benutzerdaten in ein Array auslesen.
    $data = mysql_fetch_array ($result);

    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];

    header ("Location: intern.php");
    }
    else
    {
    header ("Location: index.php?fehler=1");
    }
    ?>

    </body>
    </html>

    Also eigentlich alles beim Alten, bis auf den neuen Eintag , Ziel unter SELECT.
    Wie muß ich jetzt weiter vorgehen um die Zielseite aus der Spalte "Ziel" abzurufen ?
    Der Schlüssel ist sicher die Zeile

    header ("Location: intern.php");

    ...aber wie muss der Eintrag aussehen ?
    Ich habs probiert mit sowas wie

    header ("Location: $data["Ziel"]);

    ...aber das t net ! Ich bedanke mich im Voraus schon einmal bei euch und bin gespannt auf eure Antworten !
     

  2. #2
    Cordula Tutorials.de Gastzugang
    Ich würde einfach eine Datenbank Abfrage machen, und das Ergebnis dann in die Header funktion schreiben.

    Also folgendermaßen:

    <?php

    $data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));

    header ("Location: $data2["Ziel"]);

    ?>
     

  3. #3
    userjules userjules ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    85
    Ey Cordula, hast du nicht gelesen ? Ich hab keinen Plan ! Also bitte nochmal langsam !
    Sieht gut aus, aber ich verstehs nicht. An welcher Stelle muss ich das einfügen ?
    So in etwa ?


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>

    <?php
    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen
    $connectionid = mysql_connect ("localhost", "user", "passwort");
    if (!mysql_select_db ("database", $connectionid))
    {
    die ("Keine Verbindung zur Datenbank");
    }

    $sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname, Ziel ".
    "FROM ".
    "benutzerdaten ".
    "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
    $result = mysql_query ($sql);

    if (mysql_num_rows ($result) > 0)
    {
    // Benutzerdaten in ein Array auslesen.
    $data = mysql_fetch_array ($result);
    $data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];

    header ("Location: $data2["Ziel"]);
    }
    else
    {
    header ("Location: index.php?fehler=1");
    }
    ?>

    </body>
    </html>



    Ich bin ein wenig verwirrt wegen dem $data2 !
    Heisst das ich brauche ne zweite Datenbank ? Nee oder ?
    Bitte erklär's nochmal für doofe !

    Danke vielmals !
     

  4. #4
    Cordula Tutorials.de Gastzugang
    Okay kein Problem !

    Du benötigst keine 2. Datenbank. Ich habe diese Abfrage $data2 genannt, da in deinem Code ja bereits eine Abfrage mit $data besteht. Da wir jetzt aber eine andere Abfrage als bei $data brauchen, habe ich eine neue Abfrage erstellt, und diese $data2 genannt.

    Setz die Abfrage am besten unter den Block "Sessionvariablen registrieren..." also in etwa so:

    hier steht noch der restliche Code davor! [...]
    ...
    ...
    ...

    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];

    header ("Location: $data2["Ziel"]);
    $data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


    header ("Location: $data2["Ziel"]);


    ...
    ...
    ...
    hier jetzt der restliche Code!
    [...]

    und dann müsste es gehen!
     

  5. #5
    Cordula Tutorials.de Gastzugang
    Sorry hab nen Fehler gemacht !

    hier steht noch der restliche Code davor! [...]
    ...
    ...
    ...

    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];

    $data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


    header ("Location: $data2["Ziel"]);
    }
    else
    {
    header ("Location: index.php?fehler=1");
    }

    ?>

    So müsste es jetzt gehen!
     

  6. #6
    marvinlol marvinlol ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Beiträge
    114
    Hier also nochmal der komplette Code damit es verständlicher ist:

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>

    <?php
    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen
    $connectionid mysql_connect ("localhost""user""passwort");
    if (!
    mysql_select_db ("database"$connectionid))
    {
    die (
    "Keine Verbindung zur Datenbank");
    }

    $sql "SELECT ".
    "Id, Nickname, Nachname, Vorname, Ziel ".
    "FROM ".
    "benutzerdaten ".
    "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
    $result mysql_query ($sql);

    if (
    mysql_num_rows ($result) > 0)
    {
    // Benutzerdaten in ein Array auslesen.
    $data mysql_fetch_array ($result);


    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];

    $data2 mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


    header ("Location: $data2['Ziel']");
    }
    else
    {
    header ("Location: index.php?fehler=1");


    ?>

    </body>
    </html>
     

  7. #7
    userjules userjules ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    85
    Vielen Dank soweit !
    Mein Skrip sieht jetzt so aus:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>

    <?php
    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen
    $connectionid = mysql_connect ("localhost", "user", "passwort");
    if (!mysql_select_db ("database", $connectionid))
    {
    die ("Keine Verbindung zur Datenbank");
    }

    $sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname, Ziel ".
    "FROM ".
    "benutzerdaten ".
    "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
    $result = mysql_query ($sql);

    if (mysql_num_rows ($result) > 0)
    {
    // Benutzerdaten in ein Array auslesen.
    $data = mysql_fetch_array ($result);

    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];

    header ("Location: $data2["Ziel"]);
    $data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


    header ("Location: $data2["Ziel"]);

    }
    else
    {
    header ("Location: index.php?fehler=1");
    }
    ?>

    </body>
    </html>



    Ich bekomme jetzt folgende Fehlermeldung:
    Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web319/html/bob/login.php on line 41

    Irgendwo ist also noch der Wurm drin !

    Cordula ! Könntest du noch mal eben ?

    Zeile 41 ist übrigens folgende:
    header ("Location: $data2["Ziel"]);

    Ist die evtl. einfach zuviel ? Da sie ja unten nochmal auftaucht ?
     

  8. #8
    userjules userjules ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    85
    Nee, das ist es auch nicht ! Wenn ich Zeile 41 lösche, krieg ich den selben ERROR in Zeile 44, also beim zweiten header ("Location: $data2["Ziel"]);
     

  9. #9
    userjules userjules ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    85
    Nee ! Ich hab deinen Code 1:1 übernommen und meine Benutzerdaten eingetragen. Immer noch ERROR !

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web319/html/bob/login.php on line 45

    Zeile 45:

    header ("Location: $data2['Ziel']");

    Ist doch sicher nur noch ne klitzekleine Kleinigkeit. Aber was ?
     

  10. #10
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Warum verwendet hier eigentlich keiner Code-Tags? Kann doch nicht so schwer sein, auf "PHP" zu klicken und den Code da rein zu pasten...

    Außerdem den Frage: Steht in $data2 überhaupt was drinne? Warum wird nirgends mysql_error() verwendet, um evtl. Fehler finden zu können?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  11. #11
    marvinlol marvinlol ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Beiträge
    114
    Probier die Zeile mal so aus:

    PHP-Code:
    header ("Location: ".$data2['Ziel'].""); 
    //edit:

    Du musst die header Funktion in Zeile 41 löschen!
    Geändert von marvinlol (09.01.10 um 12:57 Uhr)
     

  12. #12
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von marvinlol Beitrag anzeigen
    Probier die Zeile mal so aus:

    PHP-Code:
    header ("Location: ".$data2['Ziel'].""); 

    Was das gleiche wäre wie

    PHP-Code:
    header"Location: " $data2['Ziel'] ); 
    Mal davon abgesehen wäre es echt sinnvoll erstmal zu schauen, ob $data2 und dann ob $data2['Ziel'] überhaupt gesetzt sind:

    PHP-Code:
    if (!isset($data2) || !isset($data2['Ziel') )
    {
       echo 
    "Irgendwas ist schief gelaufen, ich weiß nicht wohin ich soll...";
    }
    else
    {
       
    header( .... );

     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  13. #13
    marvinlol marvinlol ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Beiträge
    114
    Zitat Zitat von saftmeister Beitrag anzeigen
    Was das gleiche wäre wie

    PHP-Code:
    header"Location: " $data2['Ziel'] ); 
    Mal davon abgesehen wäre es echt sinnvoll erstmal zu schauen, ob $data2 und dann ob $data2['Ziel'] überhaupt gesetzt sind:

    PHP-Code:
    if (!isset($data2) || !isset($data2['Ziel') )
    {
       echo 
    "Irgendwas ist schief gelaufen, ich weiß nicht wohin ich soll...";
    }
    else
    {
       
    header( .... );


    Ja du hast Recht!

    Allerdings musst du ihm erstmal erklären, wo man das einsetzen soll...
     

  14. #14
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von marvinlol Beitrag anzeigen
    Allerdings musst du ihm erstmal erklären, wo man das einsetzen soll...
    Klar: An die Stelle, wo momentan header ("Location: $data2['Ziel']"); steht. Also diese Zeile weg löschen und anstatt dessen mal das einfügen:


    PHP-Code:
    if (!isset($data2) || !isset($data2['Ziel') )
    {
       echo 
    "Irgendwas ist schief gelaufen, ich weiß nicht wohin ich soll...";
    }
    else
    {
       
    header"Location: " $data2['Ziel'] );

    Es geht nichts über eine anständige Fehler-Behandlung
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #15
    userjules userjules ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    85
    Nee Leute, das läuft noch nicht !
    Ich bekomm wieder ne Fehlermeldung...

    Parse error: syntax error, unexpected ')', expecting ']' in /var/www/web319/html/bob/login.php on line 45

    Hab's gemacht wie ihrs mir empfohlen habt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>
     
    <body>
     
    <?php
    // Session starten
    session_start ();
     
    // Datenbankverbindung aufbauen
    $connectionid = mysql_connect ("localhost", "Benutzer", "passwort");
    if (!mysql_select_db ("database", $connectionid))
    {
    die ("Keine Verbindung zur Datenbank");
    }
     
    $sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname, Ziel ".
    "FROM ".
    "benutzerdaten ".
    "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
    $result = mysql_query ($sql);
     
    if (mysql_num_rows ($result) > 0)
    {
    // Benutzerdaten in ein Array auslesen.
    $data = mysql_fetch_array ($result);
     
     
    // Sessionvariablen erstellen und registrieren
    $_SESSION["user_id"] = $data["Id"];
    $_SESSION["user_nickname"] = $data["Nickname"];
    $_SESSION["user_nachname"] = $data["Nachname"];
    $_SESSION["user_vorname"] = $data["Vorname"];
     
    $data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));
     
     
    if (!isset($data2) || !isset($data2['Ziel') )
    {
       echo "Irgendwas ist schief gelaufen, ich weiß nicht wohin ich soll...";
    }
    else
    {
       header( "Location: " . $data2['Ziel'] );
    }  
    }
    else
    {
    header ("Location: index.php?fehler=1");
    } 
     
    ?>
     
    </body>
    </html>


    Zeile 45 ist folgende:
    if (!isset($data2) || !isset($data2['Ziel') )

    Habt ihr noch ne Idee ?
     

Ähnliche Themen

  1. Login-Skript erweitern
    Von Kaeschdin im Forum PHP
    Antworten: 9
    Letzter Beitrag: 01.09.08, 09:32
  2. [Suche] Login-Skript
    Von Miraculixx im Forum PHP
    Antworten: 3
    Letzter Beitrag: 11.08.06, 12:57
  3. Login-Skript für Flash
    Von corona im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 29.10.05, 23:55
  4. [Login-Skript] Groß-/Kleinschreibung
    Von Majuz im Forum PHP
    Antworten: 5
    Letzter Beitrag: 25.01.05, 20:08
  5. login skript in html
    Von zubidiru im Forum HTML & XHTML
    Antworten: 6
    Letzter Beitrag: 22.06.04, 18:13

Stichworte