#1 25. Juli 2010 Variable aus Funktion auslesen Hallo, mal eben schnell eine Einsteigerfrage: Ich fang endlich mal an mit Funktionen zu arbeiten und habe mir folgende Funktion geschrieben PHP: function loginpruefung () { $check = 0 ;if ( $_SESSION [ 'u_id' ] != "" ) { $check = 1 ;}} nun rufe ich in meinem hauptprogramm die funktion wie folgt auf PHP: loginpruefung (); Nun möchte ich aber gerne auch in dem Hauptprogramm gucken auf welchen Wert die $check Variable gesetzt wurde aber ohne diese auszugeben. Anders gesagt ich möchte sie für eine weitere Abfrage in dem Hauptprogramm nutzen. Wie stelle ich das an? Gibt es einen Trick an die Variable aus der Funktion im Hauptprogramm ranzukommen? ---- Habe mir jetzt auf eine unelegante Art vorerst geholfen: Funktion: PHP: function loginpruefung () {global $check ; if ( $_SESSION [ 'u_id' ] != "" ) { $check = 0 ;} } Hauptprogramm: PHP: $check = 1 ; loginpruefung ();if ( $check = 1 ) { echo "geklappt" ; } Sollte die Session jetzt leer sein in diesem Fall dann wird check auf 0 gesetzt und es erfolgt keine Ausgabe mehr im Hauptprogramm. Sicherlich geht das noch eleganter ohne global. Bin für Informationen offen + Multi-Zitat Zitieren
#2 25. Juli 2010 AW: Variable aus Funktion auslesen PHP: function loginpruefung () { $check = "0" ; if ( $_SESSION [ 'u_id' ] != "" ) { $check = "1" ; } return $check ;} PHP: $check = loginpruefung ();if ( $check == "1" ) { echo "geklappt" ; } Probier das mal Hier eine kleine Anleitung zum "return" PHP: return - Manual Edit: Und wenn du eine Variabel auf einen Wert überprüfen möchtest verwende immer 2x =.... einmal = bedeutet nämlich das du dieser Variabel nen Wert zuweisen möchtest + Multi-Zitat Zitieren
#3 25. Juli 2010 AW: Variable aus Funktion auslesen PHP: function loginpruefung () { if (!empty( $_SESSION [ 'u_id' ])) { // das sollte sicher mehr geprüft werden?!? return true ; } return false ;} PHP: if ( loginpruefung () == true ) { echo 'eingeloggt' ;} if ( loginpruefung ()) { echo 'er ist eingeloggt und so gehts auch' ;} Sieht aber sehr unsicher aus, deshalb empfehle ich dir noch ein wenig mehr Grundlagen und dieses Tutorial: Quakenet/#php Tutorial - de - Loginskript + Multi-Zitat Zitieren
#4 25. Juli 2010 AW: Variable aus Funktion auslesen PHP: function check () { return !empty( $_SESSION [ 'u_id' ]); } PHP: if ( check ) { echo 'logged in' ; } Das reicht vollkommen, irgendwie ist das alles komisch was ihr da macht. + Multi-Zitat Zitieren
#5 25. Juli 2010 AW: Variable aus Funktion auslesen Hallo, sollte auch nur als kleines Beispiel dienen. Ich zeige euch mal eben meine Variante dann könnt ihr mir ja mal sagen, was ihr davon haltet. PHP: function loginpruefung () { global $var_check ; if ( $_SESSION [ 'sess_u_id' ] == "" ) { include ( "./content/login.php" ); $var_check = 0 ; } else { // ... wenn nicht prüfen ob der Nutzer über einen Proxy kommt if (!isset( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ])) { $client_ip = $_SERVER [ 'REMOTE_ADDR' ]; // reale Client IP ohne Proxy } else { $client_ip = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]; // reale IP trotz Proxy } } if ( $_SESSION [ 'sess_log_ip' ] != $client_ip ) { //prüfen ob die Session_IP und Client IP unterschiedlich sind echo "Ihre IP stimmt nicht mit der aus Ihrer Session überein. Bitte melden Sie sich neu an<br /><br />" ; include ( "./content/login.php" ); $var_check = 0 ; } } Wollte die IP evtl noch mit einer beim Login gespeicherten IP in der Datenbank vergleichen. Edit: Danke Badloader deine return Variante gefällt mir besser als meine mit der global + Multi-Zitat Zitieren
#6 28. Juli 2010 AW: Variable aus Funktion auslesen man kann es auch mit define lösen: PHP: <? php function prüfen () { if( $_SESSION [ 'ok' ]== true ) // session überprüfen... mit ip oder was auch immer { define ( 'ACCESS' , true ); } //... prüfen (); //... if(! defined ( 'ACCESS' )) { echo "kein zugriff" ; } ?> + Multi-Zitat Zitieren
#7 28. Juli 2010 AW: Variable aus Funktion auslesen wozu eigentlich die IP adressen vergleich? speichere einfach die session_id und vergleiche die gespeicherte session_id mit der aktuellen. kommt aber darauf an, ob du generell mit cookies arbeiten willst oder beides anbieten möchtest. + Multi-Zitat Zitieren
#8 28. Juli 2010 AW: Variable aus Funktion auslesen weil, wenn der user ne neue session-id hat auch ne neue session gestartet wurde ^^ der ip abgleich dient dazu, session-klau zu verhindern, denn bei session-klau (gestohlener cookie) bleibt die session-id die selbe. + Multi-Zitat Zitieren
#9 28. Juli 2010 AW: Variable aus Funktion auslesen aber session udn cookie ist doch unterschiedlich oder? bei IP abgleich könnte man sich doch dann quasi nicht an 2 rechner gleichzeitig einloggen ? wenn ich aber nur mit sessions arbeite ist es eher schwer sessions zu klauen oder? + Multi-Zitat Zitieren
#10 28. Juli 2010 AW: Variable aus Funktion auslesen Die Session ist im Cookie (normalerweise). Kann aber auch anders übergeben werden ($_GET oder $_POST z.b.) Ja man könnte sich dann QUASI nicht an 2 rechnern anmelden. + Multi-Zitat Zitieren
#11 29. Juli 2010 AW: Variable aus Funktion auslesen njo ist ja auch sinn der sache angenommen die session würde wie in der alten schule via get mit gegeben werden ... so müsste man nur ausversehen den link iwo posten und jeder wäre mit deinen login on! darum lieber ein abgleich und multilogin vermeiden! + Multi-Zitat Zitieren
#12 30. Juli 2010 AW: Variable aus Funktion auslesen dagegen gibt es session_regenerate_id(), IP abgleich und andere Tricks. So schlimm wäre das also nicht mal. Man sollte es am besten aber mit Cookies machen wegen SEO zu Beispiel. Außerdem haben die meisten Cookies aktiviert. Der Sicherheitsaspekt spielt außerdem immer eine Rolle. Zu dem Thema Sessions und Sicherheit findest du aber auch sau viel auf php.net selbst: PHP: Sessions und Sicherheit - Manual + Multi-Zitat Zitieren
#13 2. August 2010 AW: Variable aus Funktion auslesen Wobei du auch bedenken musst, dass ein Cookie vom User lokal verändert werden kann, ebenso wie sämtliche POST und GET-Argumente. Sicherer ist imho ein Misch aus Session & Cookie + Multi-Zitat Zitieren
#14 2. August 2010 AW: Variable aus Funktion auslesen Session in eine Table zusammenfassen, die dann in eine DB hau'n samt Useragent, IP, Sessionbeginn und die UserID; per Cookie dann UserID speichern. Zum Überprüfen dann die Session aus der DB holen, Useragent und IP mit den jetzigen Daten vergleichen und wenn's passt, dann ist es der gleiche User. Die Tabelle mit den aktuellen Sessions sollte natürlich dann per Cronjob aktualisiert werden (Sessionbeginn + Laufzeit = Sessionende). + Multi-Zitat Zitieren