Ankündigung

Einklappen
Keine Ankündigung bisher.

keine Sessions beim Login

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • keine Sessions beim Login

    Hallo! So, dank eurer lieben Hilfe bin ich nun soweit, dass man sich ein- und ausloggen kann . Jetzt soll man natürlich eingeloggt bleiben, wenn man auf eine andere Site kommt. Naja, ich habe mir beide Kapitel der Sessions von http://tut.php-q.net/kommunikation.html durchgelesen, doch ich versteh davon nicht genug um sie selbst durchzulesen. (Und JA ich habe ALLE vorigen Kapitel durchgelesen ) Deshalb hab ich mich entschieden, dass die IP einfach bei jedem Link über die URL mitgegeben wird, beim einloggen mit dem richtigen Passwort wird ein UPdate Befehl aktiviert der die IP Adresse des Users aktualisiert, falls sie sich geändert haben sollte. Aber dieser gemeine Update befehl klappt nicht!!!!!!

    Bitte helft mir!

    Hier ist der Link: http://norn-meeting.creaturesforum.d...st/abfrage.php

    Und hier der Code (nicht der ganze, nur das wichtigste):
    Code:
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
            mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    
    	  $User_Name = $_POST["User_Name"];
    	  $User_Passwort = $_POST["User_Passwort"];
    
    	$daten = "SELECT
        			User_ID,
    			User_Name,
    			User_Passwort
    	  	  FROM
        			Mon_User 
    		  WHERE
    			User_Name = '$User_Name' && User_Passwort = '$User_Passwort'";
    
    	    $result = mysql_query($daten) OR die(mysql_error());
    
    
    		if(mysql_num_rows($result)==1)
    	{ 
    
    		echo "<center>Herzlich Willkommen, ".$User_Name."! Du bist eingeloggt</center>";
    
    		$IP = $_SERVER['REMOTE_ADDR'];
    
    		while($row = mysql_fetch_assoc($result)) 
    		{
    		   $ID = $row['User_ID'];
    		}
    
    		echo '<center>Die ID ist: '.$ID.'</center>';
    		echo '<center>Die IP ist: '.$IP.'</center>';
    
    	$sql = "UPDATE
    		    Mon_User
    		SET
    		    User_IP = $IP
    		WHERE
    		    User_ID = '$ID'";
    
    	    $update = mysql_query($sql) OR die(mysql_error());
    
    		echo '
    
    <center>weiter zur Zentrale</center></p>';
     
    	} else { 
    		echo "<center>Falsches Passwort oder falscher Username</center>"; 
    	}

  • #2
    Ich hoffe hier antwortet noch wer? Ich bin nämlcih ziemlich am verzweifeln

    Kommentar


    • #3
      es ist nicht gut einfach die ip zu übergeben denn dann könnte man ja einfach seine ip in den link schreiben und schon wär man eingeloggt
      also ich würde es mit sessions machen
      les dir einfach das hier nochmal durch http://tut.php-q.net/sessions.html
      hier mal 2 scripte von mir
      login.php prüft die eingaben des users und speichert die ip(das war nämlöich keine schlecht idee von dir mit der ip) des users in das array $_SESSION...und zur identfikation auf jeder einzelnen seite auch noch die id..
      sessioncheck.php prüft jedes mal ob der user eingeloggt ist

      login.php:
      Code:
      if($_POST['user']){
      $user=$_POST['user']
      $db=mysql_connect("xxxxx","xxxxxxx","xxxxxx") or die ("Verbindung fehlgeschlagen");
      mysql_select_db("xxxxxxx",$db);
      $user_SQL="SELECT * FROM user_member WHERE user_ID=$user";
      $user_result=mysql_query($user_SQL);
      $user_array=mysql_fetch_array($user_result);
      if($_POST['user_pw']==$user_array['user_pw']){
      session_start();
      $_SESSION['id']=$user;
      $_SESSION['ip']=$REMOTE_ADDR;
      $name=$user_array['user_name'];
      $now=time();
      $last_login_SQL="UPDATE user_member SET user_last_login='$now' WHERE user_ID='$user'";
      $last_login_SQL_result=mysql_query($last_login_SQL);
      header("Location: intern_index.php");
      } else {
      echo "Dass eingegebene Passwort für " . $user_array['user_name'] . " ist falsch!";
      }
      mysql_close();
      } else {
      echo "Sie sind nicht eingeloggt";
      }
      ?>
      sessioncheck.php:
      Code:
      <?php
      session_start();
      if($_SESSION['ip']!=$_SERVER['REMOTE_ADDR']){
      die("Verdammter Hacker");
      } else {
      $user=$_SESSION['id'];
      }
      ?>
      statt hier den user höflich zu bitten sich einzuloggen, beschimpfe ich ihn als hacker

      Kommentar


      • #4
        hey lioba ... richtig aktiv im forum dabei

        schau mal hier ... da hab ich grad links gepostet ..
        http://www.phpfriend.de/forum/viewtopic.php?t=15769
        [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

        Kommentar


        • #5
          @Burners:
          Danke für dein cooles script, doch ich versteh ihn nicht................ :wink:
          Die meißten Befehle zumindest nicht, ich bin irgendwie ratlos. Ich muss mir den vorher von irendwem erklären lassen.....

          @Ben:
          ich aktiv? *freu* Richtig aktiv vielleicht nicht aber ich schau hier öfters rein
          Achja die Links sind interessant! ich lern dann mal ein Weilchen.... ^-^

          Kommentar


          • #6
            @burner.nst
            Dein Script ist auch noch nicht das beste aber hier noch nen paar kleine verbesserungsvorschläge.

            Code:
            <?php
            
            /*** Config ***/
            $db_host = "localhost";		
            $db_user = "user";			
            $db_pass = "pass";
            $db_name = "datenbank";
            
            /*** Wichtige Funktionen ***/
            
            //Session wird gestartet
            session_start();
            
            //Datenbankverbindung wird überprüft ob schon aufgebaut oder noch verbunden werden muss
            if ( !@mysql_connect($db_connect)){							
            	$db_connect = mysql_connect($db_host,$db_user,$db_pass) or die("Server");		
            	@mysql_select_db($db_name) or die("Datenbank");
            }
            
            
            /*** Script ***/
            
            //Überprüfen ob das Inputfeld User ausgefüllt wurde zum Einloggen
            if(isset($_POST["user"])){ 
            	
            	$user_SQL="SELECT user_pw FROM user_member WHERE user_ID=".$_POST["user"]; 
            	$user_result=mysql_query($user_SQL); 
            	$user_array=mysql_fetch_array($user_result); 
            
            	if($_POST['user_pw']==$user_array['user_pw']){			//Man sollte über die MD5 verschlüsslung nachdenken
            
            		$_SESSION['id']=$_POST["user"];						//Wieso auch immer du der ID einen NAMEN zuteilst weiß ich auch nicht
            		$_SESSION['ip']=$REMOTE_ADDR;						//IP Addresse zuornnen
            		
            		mysql_query("UPDATE user_member SET user_last_login='".time()."' WHERE user_ID='".$_POST["user"]."'"); //CURENT TIME geht auch
            
            		header("Location: intern_index.php"); //Weiterleitung
            
            	} else { 
            
            		echo "Dass eingegebene Passwort für " . $_POST["user"] . " ist falsch!"; 
            
            	} 
            
            } else { 
            
            	echo "Sie sind nicht eingeloggt"; 
            
            } 
            ?>

            Kommentar


            • #7
              @nilsfeld: ich weiß das mein login script nicht das beste ist..würde mich auch wundern, da ich mich auch erst seit 3 monaten mit php beschäftige
              hiermal ein paar anmerkungen zu deinen vorschlägen
              1. über die md5() methode habe ich auch schon nachgedacht, kam dann aber zum entschluss dass ich das nicht brauche da der login nur für 10-20 user gedacht ist
              2. da der login nur für 10-20 user gedacht ist ist das login-formular nicht so wie ein gewöhnliches...die user müssen ihren namen in einer slect-box auswählen die so aufgebaut ist:
              Code:
              <select name="user">
              <option value="id">name</option>
              </select>
              deshalb ordne ich der $_SESSION['id'] auch keinen namen zu sondern eine id

              Kommentar

              Lädt...
              X