php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.08.2009, 14:50  
Benjamin Such
Gast
 
Beiträge: n/a
Standard global $userid nicht global

Hallo,

ich habe eine Funktion, die überprüft ob der Besucher eingeloggt ist oder nicht. Wenn er eingeloggt ist, möchte ich seine $userid global verfügbar haben, aber irgendwie funktioniert das nicht...

_functions.php
PHP-Code:
function isLogged() {
    global 
$userid;
    if(isset(
$_COOKIE['hash'])) {
        
$query="SELECT
                    userid
                FROM
                    `users`
                WHERE
                    hash='"
.$_COOKIE['hash']."'";
        
$query_users=mysql_query($query) or die(mysql_error());
        
$rows=mysql_num_rows($query_users);
        if(
$rows) {
            
$userid=getUserId($_COOKIE['hash']);
            return 
TRUE;
        }
        else {
            return 
FALSE;
        }
    }
    else {
        
$query="SELECT
                    userid
                FROM
                    `users`
                WHERE
                    userid='"
.(int)$_SESSION['userid']."'";
        
$query_users=mysql_query($query) or die(mysql_error());
        
$array=mysql_fetch_array($query_users);
        
$rows=mysql_num_rows($query_users);
        if(
$rows) {
            
$userid=(int)$array['userid'];
            return 
TRUE;
        }
        else {
            return 
FALSE;
        }
    }

So schaut der Code aus, aber wenn ich irgendwo auf der Seite $userid verwenden will, dann ist dies gleich NULL.

index.php
PHP-Code:
<?php
session_start
();
error_reporting(E_NONE);

require_once(
'system/_sql.php');
require_once(
'system/_functions.php');

isset(
$_SESSION['language']) ? setLanguage('./',$_SESSION['language']) : setLanguage('./','de');

$userid=0;
isset(
$_COOKIE['hash']) ? $userid=getUserId($_COOKIE['hash']) : $userid=(int)$_SESSION['userid'];

require_once(
'layout/index.tpl');
?>
Woran liegt das?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.08.2009, 15:29  
Neuer Benutzer
 
Registriert seit: 19.08.2009
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
Sym2k8 befindet sich auf einem aufstrebenden Ast
Standard

Das wird wohl daran liegen, dass die userid , bzw. die Variable nicht mehr existiert sobald das Script/die Datei verlassen und eine andere Datei geöffnet wird.

Am besten ist, wenn du die Variable, bzw. deren Inhalt in die Session schreibst, dann hast du diese immer zur Verfügung.

Denke dann aber daran, dass du session_start() auf jeder Seite gleich zu Anfang aufrufst.

Gruß,
Sym2k8

Geändert von Sym2k8 (19.08.2009 um 15:31 Uhr). Grund: Satzbau und Rechtschreibung korrogiert...
Sym2k8 ist offline  
Alt 19.08.2009, 15:52  
Benjamin Such
Gast
 
Beiträge: n/a
Standard

Ja gut die _functions.php wird natürlich in der index.php includiert und von daher verstehe ich nicht warum $userid dann wieder leer ist :X
 
Alt 19.08.2009, 16:33  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Du hast da noch einen bösen Bug drinnen:
Ist der cookie gesetzt, bin ich eingeloggt.

Mit globals solltest du eh nicht arbeiten, speicher die userid besser gleich in der session.
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist gerade online  
Alt 19.08.2009, 17:19  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von rudygotya Beitrag anzeigen
Du hast da noch einen bösen Bug drinnen:
Ist der cookie gesetzt, bin ich eingeloggt.
Also entweder seh ichs nicht oder das was du geschrieben hast ist Dummfug. Der Cookie läuft doch noch über die Funktion getUserID()... Wer weiß was die treibt. Wenn du natürlich implizit denkst, dass die nicht viel mehr tut als aus einem has eine User-ID zurückzurechnen, ist das zwar kein Bug aber eine riesige Sicherheitslücke

Davon abgehsehen, dass du mit folgendem natürlich Recht hast:
Zitat:
Zitat von rudygotya Beitrag anzeigen
Mit globals solltest du eh nicht arbeiten
Zur Fehleranalyse zurück:
1. Keiner von hat eine Ahnung ob die Funktion getUserID() richtig arbeitet. Keiner von uns weiß, was die überhaupt treibt.
2. Nirgendwo ein Aufruf zur Methode "isLogged". Keiner weiß, wann du die aufrufst und ob da nicht mittlerweile was mit deriner $userID passiert ist.
3. Deine Methode isLogged() und die Zeile
PHP-Code:
isset($_COOKIE['hash']) ? $userid=getUserId($_COOKIE['hash']) : $userid=(int)$_SESSION['userid']; 
gemeinsam machen so überhaupt keinerlei Sinn.
4. Nirgendwo ist ersichtlich, ob du $_SESSION['userid'] überhaupt setzt. Wenn du das nirgendwo setzt, macht es auch keinerlei Sinn, es später wieder abfragen zu wollen. Nur was du in die Session reintust, kannst du auch wieder rausholen.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
global in Funktionen funktioniert nicht? Scordon PHP Tipps 2009 16 29.06.2009 19:28
unterschied zwischen global und strict beta02 PHP Tipps 2009 4 05.01.2009 18:58
PHP-Editor gesucht Shyne PHP-Fortgeschrittene 14 12.05.2008 00:22
global vermeiden phpbeginner PHP Tipps 2007 4 29.12.2006 15:25
Problem mit Global Scope von Funktionen WickedImp PHP-Fortgeschrittene 13 16.05.2006 00:30
js: globale Variable lokal global Deklarieren Blank HTML, Usability und Barrierefreiheit 1 22.04.2006 15:42
Mehrere Variabelen mit global in Funktion einlesen DerTschmi PHP Tipps 2006 8 22.03.2006 21:27
Hilfe! global variable nicht im funktion erkannt Bruce PHP Tipps 2006 3 24.01.2006 09:46
$_GET funktioniert trotz global nicht imported_Lumio PHP-Fortgeschrittene 12 10.09.2005 22:04
Wie ersetz ich bloß dieses unsichere GLOBAL? PHP Tipps 2005 11 08.03.2005 13:05
wie mache ich ein variable aus ein funktion global? PHP Tipps 2005 2 09.02.2005 18:26
variabla global machen me PHP Tipps 2004-2 5 22.12.2004 12:41
global $$smilie; ?? Creativ PHP Tipps 2004-2 8 05.12.2004 19:54
global $_SESSION[login]; PHP Tipps 2004 3 29.07.2004 22:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$userid, global user id, userid anzeigen php $globals, $golobals user id, function global php, gobal php, $_session nicht global, _session nicht global php

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum