tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
448
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lyco lyco ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    24
    Hallo
    Ich habe ein loginscript für mehre user was eigentlich ganz gut funktioniert. Es hat nur einen Fehler und zwar wenn sich ein user erfolgreich angemeldet hat wird er auf seine Seite weitergeleitet. Nun wenn er aber eine url von einem andern user kenn kann er auch auf die Seite des andern users zugreifen, wass nicht der Fall sein solte.
    Kann mir da jemande helfen, da ich von php nicht sehr ahnung habe


    checkuser.php
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    <?php  
    session_start (); 
    if (!isset ($_SESSION["user_id"])) 
     
    {  
      header ("Location: http://www............./inside/index.php");  
    }  
    ?>

    login.php
    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
    
    <?php  
    // Session starten 
    session_start (); 
     
    // Datenbankverbindung aufbauen  
    $connectionid = mysql_connect ("localhost", "", "");  
    if (!mysql_select_db ("", $connectionid))  
    {  
      die ("Keine Verbindung zur Datenbank");  
    }  
     
    $sql = "SELECT ".  
        "Id, Nickname, Nachname, Vorname, Link ".  
      "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: http://www.........../inside/" . $data["Link"]);  
    }  
    else  
    {  
      header ("Location: http://www................/inside/index.php?fehler=1");  
    }  
    ?>
     

  2. #2
    Avatar von K4ZUY4
    K4ZUY4 K4ZUY4 ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    77
    In wie fern meinst du das mit, seine Seite und Seiten anderer User?

    Profil ändern?
     
    Code Climbers
    - Free Scripts & Codes

  3. #3
    lyco lyco ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    24
    z.B. user 1 mit passwort 1 wird auf die seitt user1.php weitergeleitet
    und user 2 mit passwort 2 wird auf die seite user2.php weitergeleitet.
    Wenn sich jetzt user 1 erfolgreich eingelogt hat und auf die seite user1.php weitergeleitet wurde, kann er in der explorer in der Adresszeile user1.php auf user2.php ändern und kommt dann auf die seite von user 2. Das solte aber unterbunden werden.
     

  4. #4
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Werden die Seiten generiert ?
    Sowas ist doch höchst unpraktisch bei mehreren Membern oder ?
    Naja eigentlich macht man nur eine Seite z.B. für Profil und liest die Daten aus, dafür hast du ja die SESSION-VARS aber wenn du nur 2 user hast kannste ja per id abfragen ob es der richtige user is aber eigentlich sehr komischer Ansatz oder ich versteh das nicht
     

  5. #5
    lyco lyco ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    24
    Bis jetzt gibt es 3 users die über das selbe script einlogen und auf 3 verschiede seiten weitergeleitet werden. Es ist aber sehr gut möglich dass noch mehr kommen. Kann man das mit den bis jetzt verwenden script korrigieren. Und demensprechend erweitern?
     

  6. #6
    Avatar von K4ZUY4
    K4ZUY4 K4ZUY4 ist offline Mitglied Silber
    Registriert seit
    May 2006
    Beiträge
    77
    Naja ich denke das es nicht gerade optimal ist, dein System da, aber ok für eine kleine Anzahl von Usern kann man es machen.

    PHP-Code:
    if($_SESSION['user_id'] != $user_id) {  //$user_id kann auch durch eine Zahl ersetzt werden.
    header("Location: .../fehlerseite.php");
    die();

    Das fügst du dann am anfang der Seite der User ein.

    Oder hier dann auch nochmal die Funktions Variante.

    PHP-Code:
    function Userseite ($session_user$id_user$errorpage) {
    if(
    $session_user != $id_user) { 
    header("Location: $errorpage);
    die();
    } } 
    Userseite($_SESSION['user_id'], 1, fehlerseite.php);
    So sähe dann die Funktion aus.
    Geändert von K4ZUY4 (13.08.06 um 10:28 Uhr)
     
    Code Climbers
    - Free Scripts & Codes

  7. #7
    lyco lyco ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    24
    Danke für die Lösungsvorschäge aber leider blick ich nicht durch oder es funktioniert nicht. Die User können immer noch auf die Seiten von anderen User zugreifen.
     

  8. #8
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Anstelle von user1.php, user2.php, ... solltest Du besser eine user.php haben die anhand der UserID in der Session den entsprechenden Inhalt aus der Datenbank holt. So brauchst Du Dir dann auch keine Sorgen mehr machen, dass ein User auf die Seite eines anderen Users zugreifen kann.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  9. #9
    lyco lyco ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    24
    @Dennis Wronka
    Wow das hört sich ganz gut an. Nur hab ich leider keine Ahnung wie ich dass anstellen kann. Köntest du mir da vieleicht helfen?
     

  10. #10
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Sagen wir mal Du speicherst die UserID in $_SESSION['id'], dann fragst Du in user.php als erstes ab ob dieser Wert gesetzt ist, wenn nicht geht's zur Startseite. Ungefaehr so:
    PHP-Code:
    if (empty($_SESSION['id']))
    {
     
    header('Location:index.php');
     exit;

    Wenn $_SESSION['id'] nicht gesetzt, oder aber gesetzt aber leer ist, wird umgeleitet zur index.php. Nachfolgender Code wird nicht mehr ausgefuehrt, dafuer sorgt exit.
    Alles andere nach diesem Code kann also davon ausgehen, dass $_SESSION['id'] sowohl gesetzt als auch gefuellt ist. Was dann ja heisst, dass der User eingeloggt ist.
    Du kannst dann also aus der Datenbank irgendwelche Infos fuer eben diesen User holen.
    PHP-Code:
    $infos=mysql_query("select * from infos where userid='".$_SESSION['id']."'");
    while (
    $info=mysql_fetch_assoc($infos))
    {
     
    //Daten ausgeben

    Durch die Arbeit mit der UserID aus der Session stellt dabei sicher, dass wirklich nur die Informationen aus der Datenbank geholt werden die fuer den eingeloggten User bestimmt sind. Bei einer Uebergabe der UserID im URL koennte der User ja einfach die uebergebene UserID aendern. Zwar koennte man auch da was dran machen, aber wenn man gleich mit der in der Session gespeicherten UserID arbeitet wird das unnoetig.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  11. #11
    lyco lyco ist offline Mitglied
    Registriert seit
    Aug 2006
    Beiträge
    24
    Danke für deine Bemuhungen, aber leider blicke ich nicht ganz durch. Ich erstelle also in der Datenbank eine neue Zeile "infos" richtig? wo ich dann der Inhalt der Seite speichere oder? Und wo muss in den von dir angegeben code speicheren?
     

  12. #12
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Mein Code ist jetzt nur ein Beispiel wie es ungefaehr aussehen koennte, nichts was Du jetzt 1:1 kopieren sollst.

    Die Userseiten sehen wahrscheinlich alle mehr oder weniger gleich aus, richtig? Und eben den variablen Content holst Du aus der Datenbank.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  13. #13
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!
    Zitat Zitat von lyco
    Ich erstelle also in der Datenbank eine neue Zeile "infos" richtig?
    Nein, offenbar verstehst Du die grundlegensten Funktionen von MySQL nicht.
    Bei "info" handelt es sich hier um einen Beispielnamen für den Tabellennamen in dem die Userinfos stehen.

    Schaue Dir mal Schattenbaum an, dort bekommst Du einen Einblick in die Grundfunktionen.

    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

Ähnliche Themen

  1. Mehre MIDIs auf Webseite
    Von Sir_Raven im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 12.02.10, 11:01
  2. mehre QtDockWidget als tabs
    Von uncle im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 23.12.09, 17:46
  3. Serverumzug => mehre Gigabyte
    Von Shinzo im Forum Hosting & Webserver
    Antworten: 4
    Letzter Beitrag: 15.07.08, 14:30
  4. letzter Login eines Users
    Von Biber90 im Forum PHP
    Antworten: 11
    Letzter Beitrag: 10.04.07, 16:18
  5. [VC# PDA] Mehre Forms schliessen
    Von janosch im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 19.01.07, 16:31