php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 25-05-2007, 14:38
deathcakeman
 Registrierter Benutzer
Links : Onlinestatus : deathcakeman ist offline
Registriert seit: Aug 2006
Beiträge: 134
deathcakeman ist zur Zeit noch ein unbeschriebenes Blatt
Standard Session_id wird neu generiert (IE)

Moin Leute,
Ich habe für meine Webapplikation eine umfangreiche Klasse zum Schutz der Session_id's geschrieben (Cookies, UA, etc.)

Im Firefox läuft alles bestens, doch im IE wird nach jedem 2. klick eine neue Session generiert.
Das aber auch nur auf der Seite wo die "Überprüfungs Klasse" greift.
Ich habe schon versucht den Fehler zu finden, aber irgendwie will es mir nicht gelingen.
Hat jmd. vllt eine Idee woran das liegen könnte?

PHP-Code:
public function secure_mainpage($sessionid$sessionid_get$user_agent
{
            if(
$this->checkSID($sessionid)) {
[
B]... ... ...[/B
            
            }
            else {
                
$this->kickAndRegenerateSid($sessionid);
                return 
false;
            }
        } 
In "checkSID()" werden aber lediglich die sessionid und die sessionid die in der URL steht verglichen. Jedoch hängt es schon an dieser Stelle, weil ich hab mir "$sessionid" mal ausgeben lassen, und da war tatsächlich ne neue Generiert, die alte session stand aber noch in der Datenbank.
Ist wie es würde irgendwo "session_regenerate_id()" ausgeführt werden (was aber nicht der Fall ist).

Thx
__________________
*blubb*

Geändert von deathcakeman (13-02-2009 um 18:32 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 25-05-2007, 14:55
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann es sein, dass der IE die Session ID im Cookie erhalten hat ? Dann steht natürlich nix in der UR und die Fkt würde immer ein false zurückgeben

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #3 (permalink)  
Alt 25-05-2007, 15:11
deathcakeman
 Registrierter Benutzer
Links : Onlinestatus : deathcakeman ist offline
Registriert seit: Aug 2006
Beiträge: 134
deathcakeman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich setze mittels setcookie() einen ""sessioncooie"".-->Ich lese dann nur im späteren Verlauf der Funktion noch aus dem Cookie die SID aus und vergleiche nocheinmal.
Aber: "$sessionid == session_id()"!
__________________
*blubb*

Geändert von deathcakeman (25-05-2007 um 16:48 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 28-05-2007, 00:03
deathcakeman
 Registrierter Benutzer
Links : Onlinestatus : deathcakeman ist offline
Registriert seit: Aug 2006
Beiträge: 134
deathcakeman ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So.
Nach langwieriger Fehlersuche hab ich nun den Fehler an sich schonmal gefunden, jedoch hab ich keine Ahnung wie ich ihn beheben kann.


Fehler:
Der IE 6 verhaut irgendwie den session_cookie, wodurch zwangsläufig eine neue session generiert wird.

-->Ich hab vorhin mal "session.use_cookies" auf , also off, gesetzt und da ging alles wunderbar.

Hatte jmd. von euch schonmal ein Problem dieser Art und hat auch gelöst bekommen?


Ich hoffe ihr könnt mir hier weiterhelfen.

Lg
__________________
*blubb*
Mit Zitat antworten
  #5 (permalink)  
Alt 29-05-2007, 20:46
Jemand
 Newbie
Links : Onlinestatus : Jemand ist offline
Registriert seit: Dec 2005
Beiträge: 35
Jemand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich weiss ja nicht ob es genau das selbe problem ist wie bei dir, aber ich schildere dir mein problem mal....

ich bin gerade dabei eine art kleines community portal zu programmieren und es funktioniert auch soweit alles.. mit dem FF teste ich das ganze online, nun hatte ich neues layout eingefügt und wollte es auch mit dem IE testen.

das problem tritt direkt nach dem einloggen auf. der FF kann alles und es funktioniert, der IE generiert immer eine neue session... und somit steht eine ungleiche session in der datenbank... worauf mein script eben sagt, dass der user nicht mehr eingeloggt ist...

und ich bin mir 100%ig sicher, dass es mit dem IE funktioniert hat... ich werde es gleich mal mit Opera am PC meines bruders testen.

ich melde mich gleich wieder

EDIT: also opera hat auch keine probleme mit dem einloggen und eingeloggt bleiben....

Geändert von Jemand (29-05-2007 um 20:53 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 13-08-2007, 15:42
Jemand
 Newbie
Links : Onlinestatus : Jemand ist offline
Registriert seit: Dec 2005
Beiträge: 35
Jemand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

*schieb*

das problem besteht immer noch... kann mir vllt jemand helfen?

noch mal die problembeschreibung:

mit firefox: user kommt auf die seite, kann sich einloggen, kann weitere seiten benutzen

die session wird mittels einer sessionhelpers.inc in die datenbank nach dem erfolgreichen einloggen geschrieben.

mit internet explorer: user kommt auf die seite, kann sich einloggen, sobald er dann auf einen link klickt um auf eine andere seite zu kommen wird er wieder ausgelogged,.. bzw die erstellte session ist noch vorhanden, dem user wird aber gesagt, dass er sich erst einloggen soll.

mit firefox und opera funktioniert das wunderbar, nur mit internet explorer nicht.

sessionhelpers.inc:
PHP-Code:
<?
function connect()
{
    
$conmysql_connect('localhost','yyy','xxx') or die(mysql_error());
    
mysql_query('SET NAMES UTF8');
    
mysql_select_db('zzz',$con) or die(mysql_error());
}

function 
login($userid)
{
    
$sql="UPDATE users
             SET UserSession = '"
.session_id()."'
           WHERE UserId = "
.$userid;
    
mysql_query($sql);
}

function 
logged_in()
{
    
$sql "SELECT UserId
              FROM users
             WHERE UserSession = '"
.session_id()."'
             LIMIT 1"
;
    
$result mysql_query($sql);
    return (
mysql_num_rows($result)==1);
}

function 
logout()
{
    
$sql "UPDATE users
               SET UserSession = NULL
             WHERE UserSession = '"
.session_id()."'";
    
mysql_query($sql);
    
    unset(
$_SESSION['Benutzername']);
}

function 
check_user($name$pass)
{
    
$sql="SELECT UserId
            FROM users
           WHERE UserName = '"
.$name."' AND UserPass = MD5('".$pass."')
           LIMIT 1"
;
    
$resultmysql_query($sql) or die(mysql_error());
    if ( 
mysql_num_rows($result)==1)
    {
        
$user=mysql_fetch_assoc($result);
        return 
$user['UserId'];
    }
    else
      return 
false;
}
?>
und jetzt zb die index.php:
PHP-Code:
<?
  session_start
();
  include 
'sessionhelpers.inc.php';
  
error_reporting(E_ALL);

  include(
"header.inc.php");
  include(
"top1.inc.php");

  if (isset(
$_POST['login']))
  {
      
$userid=check_user($_POST['username'], $_POST['userpass']);
      if (
$userid!=false)
          
login($userid);
      else
          include(
"err_anmeldedaten.inc.php");
  }

  if (isset(
$_POST['logout']))
  {
    
logout();
  }

  if(!
logged_in())
  {
    include(
"login.inc.php");
    include(
"menue.loggedout.inc.php");
    include(
"top2.inc.php");
    include(
"div.oben.inc.php");
    include(
"home.loggedout.inc.php"); /* inhalt wenn ausgelogged */
  
}

  if(
logged_in())
  {
    include(
"loggedin.inc.php");
    include(
"menue.loggedin.inc.php");
    include(
"top2.inc.php");
    include(
"div.oben.inc.php");
    include(
"home.loggedin.inc.php"); /* inhalt wenn eingelogged */
  
}

  include(
"div.unten.inc.php");
  include(
"footer.inc.php");
?>
Kann mir jemand helfen den code so zu schreiben, dass auch internet-explorer-user die cookies nicht akzeptieren nicht andauernd ausgelogged werden?

Geändert von Jemand (13-08-2007 um 15:45 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 13-08-2007, 17:14
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zeig mal nen Link zur Seite samt demodaten.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8 (permalink)  
Alt 13-08-2007, 17:20
Jemand
 Newbie
Links : Onlinestatus : Jemand ist offline
Registriert seit: Dec 2005
Beiträge: 35
Jemand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

www.russkaja-armia.de
user: test
pass: test


falls die phpinfo wichtig ist:
http://www.russkaja-armia.de/phpinfo.php

Geändert von Jemand (13-08-2007 um 17:25 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 14-08-2007, 10:44
Jemand
 Newbie
Links : Onlinestatus : Jemand ist offline
Registriert seit: Dec 2005
Beiträge: 35
Jemand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

an die tester, bitte auch einen comment hier abgeben...

probiert mal ohne cookies zu akzeptieren drauf zu gehen und auch eingelogged zu bleiben...

und ich brauch den code bzw tipps womit die leute, die cookies nicht akzeptieren, dennoch online bleiben (auch mit der session in der url oder sonst wie)...

schon mal ein dickes danke schön für jeden tipp...
Mit Zitat antworten
  #10 (permalink)  
Alt 14-08-2007, 10:53
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
(auch mit der session in der url oder sonst wie)...
Andere Möglichkeiten als URL oder Cookie gibt's ned. Schau dir mal die Konstante SID im Manual an.
Zitat:
Alternativ können Sie die Konstante SID verwenden, die definiert ist, nachdem die Session gestartet wurde. Falls der Client kein geeignetes Session-Cookie gesendet hat, hat sie die Form session_name=session_id. Andernfalls wird sie zu einer leeren Zeichenkette erweitert. Aus diesem Grund können Sie sie bedingungslos in URLs einbetten.
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 14-08-2007, 11:26
Jemand
 Newbie
Links : Onlinestatus : Jemand ist offline
Registriert seit: Dec 2005
Beiträge: 35
Jemand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ein Kollege sagte mir, dass es auch die Möglichkeit gibt Sessions nur dann an die URL anzuhängen, wenn Cookies nicht akzeptiert werden.

Habe mich auch ein wenig darüber erkundigt (google/forum/etc/pp) aber keine wirklich funktionierende Lösung gefunden.

Folgende Schlagwörter dazu habe ich ausprobiert:

- ini_set('session.use_only_cookies',0);
- ini_set('session.use_trans_sid',0);
- ini_set('url_rewriter.tags', '');
- ini_set('session.use_cookies',0);

Nur brachten diese leider nicht die gewünschte Wirkung.

Ist es überhaupt möglich die Sessions NUR dann anzuhängen wenn Cookies nicht akzeptiert werden oder wurde mir nur ein Hirngespinnst aufgetischt?
Mit Zitat antworten
  #12 (permalink)  
Alt 14-08-2007, 11:31
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mein Quote aus dem Manual gelesen ?
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #13 (permalink)  
Alt 14-08-2007, 11:36
Jemand
 Newbie
Links : Onlinestatus : Jemand ist offline
Registriert seit: Dec 2005
Beiträge: 35
Jemand ist zur Zeit noch ein unbeschriebenes Blatt
Standard

bin dabei melde mich gleich noch mal per edit hier dazu

edit: alles klar, habe mir jetzt mal die ganze kurzreferenz zu sessions und speziell zu der SID-Konstante durchgelesen.

Erste Frage:
Heisst es ich kann also jetzt hinter jeden link / hinter jede form auf meiner seite die SID dranhängen und es würde auch funktionieren wenn die cookies nicht akzeptiert werden?

Zweite Frage:
Die session_register-Funktion wurde hier im Forum oft als veraltet bezeichnet. Sollte man diese dennoch benutzen oder gibt es eine Alternative?

Danke dir vielmals für deine Hilfe

Geändert von Jemand (14-08-2007 um 11:53 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 14-08-2007, 11:58
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Heisst es ich kann also jetzt hinter jeden link / hinter jede form auf meiner seite die SID dranhängen und es würde auch funktionieren wenn die cookies nicht akzeptiert werden?
Ja.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #15 (permalink)  
Alt 14-08-2007, 12:05
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Die session_register-Funktion wurde hier im Forum oft als veraltet bezeichnet. Sollte man diese dennoch benutzen oder gibt es eine Alternative?
Man sollte diese Funktion auf keinen Fall mehr benutzen, da sie von register_globals abhängt (Siehe http://de3.php.net/manual/de/functio...n-register.php).

Stattdessen einfach das $_SESSION-Array nehmen.
__________________
ich glaube
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:31 Uhr.