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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 12-07-2010, 09:09
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard $_SESSION-Daten werden "vergessen"

Moin,

ich hab "mal wieder" ein kleines Problem bei meinem Script.

wenn ich aus der Datenbank einen datensatz suche, wird der gefundene in einigen Feldern von $_SESSION gespeichert, damit er beim nächsten Schritt des Scriptes zur Verfügung steht.

Das klappt auch von der Such-Funktion zur Eingabe-Funktion. Wenn ich aber ein anderes Formular aufrufe sind die Datenfelder der Session auf einmal leer, bis auf den angemeldeten User und dessen Session_id ...

PHP-Code:
 if ($_POST['kontraktliste']) {    // welche Kunden-ID wurde gewählt
    
$datensatz_id=$_POST['kontraktliste'];
    
$sql="SELECT * FROM customers WHERE id='".$datensatz_id."' ";
   
$db=new db1();                // diesen Kunden aus der Datenbank holen
     
$datensatz=$db->db_sql($sql);
    if (
$db->anz==1) {            // das kann eigentlich nur ein Kunde sein
.....
    
$_SESSION['contract']=$datensatz[0]['kontrakt_nr'];
    
$_SESSION['position']=$datensatz[0]['position_nr'];
   }
   else {
       
$fehler=1
   }
}
if (
$fehler===0) {
     
$menuauswahl=10//    Keine Fehler vorher festgestellt Anzeige als Bestandskunde (also alt)
     
$new="old";
 } 
wenn ich mir an dieser Stelle die Session-Daten ausgeben lasse steht da irgendwas in der Form
IDuser: 3
sid : e3xxxxxxxxxxxxxxxxxxxxxxxxxxxxf7
contract: <eine gülte Vertragsnummer>
position: <eine Position aus diesem Vertrag>
drin.

Anschließend wird automatisch dieser Vertrag im Formular für die Kundenstammdaten angezeigt falls Änderungen gemacht werden sollen, ansonsten ist das als Anzeige auch sehr übersichtlich ...

Wenn ich danach aber auf einen Menüpunkt klicke, der mir weitere Vertragsbestandteile auflisten soll, verzweige ich in eine andere Funktion
und hole mir die Daten ausgehend von den Session-Daten in contract und position .. nur steht dort eigenartigerweise nix drin . ich bin mir aber ziemlich sicher, nirgends die Session-Daten zu löschen

PHP-Code:
switch ($menuauswahl) { // welches Formular
   
case :    // neuen Kunden suchen 
      
echo $this->form_suchekunde($ret); 
      break;
  case 
:    // Kunden-Formular "vorbereiten" = neuer Kunde
      
$new="new";
      
$_SESSION[contract]="";
      
$_SESSION[position]="";
  case 
10:    // hier das Kunden-Formular anzeigen .. alt / neu 
      
echo $this->form_kundestamm($new,$ret);
      break;
  case 
:    // Formular mit Kennung anzeigen 
     
echo $this->form_kenndaten($ret);
     break;
... 
also nach der Suche ist es bei case 10 - der wird ja automatisch aufgerufen - und zeigt auch korrekt den ausgewählten Vertrag an. Nur bei case 2 sind die Session-Daten auf einmal leer
Und ehrlich gesagt fehlt mir mitlerweile die Fantasie, wo es noch dran liegen kann

Achso - grundsätzlich läuft dieser Teil des scriptes als Object und wird in der index.php folgendermaßen eingebaut
PHP-Code:
<?php
session_start
();
require(
'include/class_db.php');
require(
'include/class_zugriff.php');
require(
'include/class_hauptform.php');
$handle0=fopen('output/sess_report.txt','a');
foreach(
$_SESSION as $key=>$element) { 
    
fwrite($handle0,"\n".$key." - ".$element."\n");
}
$work=new hauptformular();
?>
die foreach schleife ist nur zum Reporting drin während der Entwicklung - auch dort fehlen auf einmal die betreffenden Session Daten. Die obigen Code-Ausschnitte stammen beide aus der class_hauptform.php
Komischerweise wird IDuser und sid aber nicht gelöscht .....
also ich bin ratlos
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (12-07-2010 um 09:15 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-07-2010, 09:13
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard seesoin_start()

Ich versuchs mal im ersten Versuch Blindflug ohne deinen Post ganz durchgelesen zu haeben:

session_start() wird gerne vergessen

EDIT: Sorry, wie gesagt, Blindflug. Das kanns also nicht sein.

Fehlt dir bei case 9 absichtlich das break?

Geändert von ThemBones (12-07-2010 um 09:20 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 12-07-2010, 09:24
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

ja, das fehlt absichtlich , wenn der Nutzer auf "Neuer Kunde" klickt, werden die Session Daten gelöscht (hinsichtlich Contract und Position) und das gleiche Formular zu den Kundenstammdaten aufgerufen - nur ist es jetzt halt leer.
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #4 (permalink)  
Alt 12-07-2010, 09:43
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard Hm

Ist jetzt schwer zu sagen, könnte alles mögliche sein. In solchen Fällen wäre es optimal,
einen debugger zur Hand zu haben. Hast die Möglichkeit dazu?

Funktioniert wunderbar mit xdebug am Server und bspw. netbeans als IDE (ist kostenlos).
Xdebug verträgt sich allerdings nicht mit Zend Optimizer.

Dann könntest in Einzelschritten die Anwendung durchgehen und dir genau ansehen wo die Daten "verschwinden".
Mit Zitat antworten
  #5 (permalink)  
Alt 12-07-2010, 09:47
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

uh . hab ich nicht "zur Hand" .. ich schreib auf ner Linux-Maschine mit Notepad++ .. und bisher hat der echo-Debugger ausgereicht ...

HAB DEN FEHLER !

warum rennt PHP auch durch die kunden-such Funktion unsichtbar durch , obwohl die Bedingung dafür gar nicht vorliegt .. dort standen 3 unsets für $_SESSION[wert] drin, die eben Contract und Position gelöscht haben - ohne die 3 unsets bleiben die Daten erhalten
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (12-07-2010 um 09:55 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 12-07-2010, 09:57
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Vermutlich wird case 9 ausgeführt.
Mit Zitat antworten
  #7 (permalink)  
Alt 12-07-2010, 10:00
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

Zitat:
Zitat von eagle275 Beitrag anzeigen
ich schreib auf ner Linux-Maschine mit Notepad++
dann öffne mal alle PHP-Dateien die zu dem Projekt gehören im Notepad++, öffne das Suchfenster und such nach „$_SESSION“ mit dem Button „Suche in allen offenen Dateien“. Dann kopierst du das gesamte Suchergebnisfenster mal hier rein.

Edit: achso, schon erledigt

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 12-07-2010, 11:26
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

und irgendwie doch nicht erledigt ..

daher hier mal das was Amica vorgeschlagen hat

Code:
    Line 245:                         $_SESSION[contract]="";
    Line 246:                         $_SESSION[bosinet]="";
    Line 247:                         $_SESSION[position]="";
    Line 352:                 $_SESSION[contract]="";
    Line 353:                 $_SESSION[bosinet]="";
    Line 354:                 $_SESSION[position]="";
    Line 414:             $_SESSION[sit]="";
    Line 415:             $_SESSION[IDuser]="";
    Line 416:             $_SESSION[contract]="";
    Line 417:             $_SESSION[bosinet]="";
    Line 418:             $_SESSION[position]="";
    Line 422:             $_SESSION[contract]="";
    Line 423:             $_SESSION[bosinet]="";
    Line 424:             $_SESSION[position]="";
macht insgesamt 3 Vorkommen der fraglichen $_SESSION[wert]="";

1tes Vorkommen -> ( Line 245-247) case 9 - da ich mir direkt vor dem switch den inhalt der menuauswahl anzeigen lasse .. da wird kein case 9 durchlaufen, außer ich klicke auf den betreffenden Menü-Punkt

2tes Vorkommen -> ( Line 352-354) nach dem Login, damit der User nicht in den Kontrakt eines anderen Users gucken kann

3tes Vorkommen -> ( Line 414-424) Logout - gesamte Daten der Session löschen


Weitere Vorschläge ?
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (12-07-2010 um 13:46 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 12-07-2010, 11:32
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Einfach mal direkt nach jedem Vorkommen (1-3) ein "echo __LINE__;" einfügen!
Mit Zitat antworten
  #10 (permalink)  
Alt 12-07-2010, 11:53
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

danke, das hilft mir erstmal weiter - auch wenn es einen weiteren Fehler aufwirft - der User soll nach einem Time-Out automatisch ausgeloggt werden (ohne Aktion) - und aus diesem Abschnitt stammen die Befehle, die meine Kontrakt-Daten löschen - ABER eigentlich sollte danach entsprechend ein neues Login-nötig werden

mal bissel Basteln,

danke euch
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #11 (permalink)  
Alt 12-07-2010, 11:56
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Wärst du so freundlich, und würdest deinen Quelltext ein wenig umbrechen, ich muss schon scrollen. Und wenn du schon dabei bist, könntest du deine Signatur vielleicht auch etwas stauchen
Mit Zitat antworten
  #12 (permalink)  
Alt 12-07-2010, 12:27
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

PHP-Code:
  $_SESSION[sit]=session_id(); 
1. was soll der Unsinn?
2. Nicht numerische Keys gehören in Anführungszeichen. Aktiviere mal das error_reporting()
__________________
Wir werden alle sterben
Mit Zitat antworten
  #13 (permalink)  
Alt 12-07-2010, 13:48
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

1) UNSINN ? ich speichere die session_id in einem Feld der Session - damit ich "merke" dass da ein User angemeldet ist - ...
2) es funktioniert - noch Fragen?
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #14 (permalink)  
Alt 12-07-2010, 14:00
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zu 1:
Speichere die UserID in Session. Die SID da zu speichern ist völlig sinnfrei. Wird auch in keinem wenigstens halbwegs guten Buch, Beispiel oder Tutorial so abgehandelt.

Zu2:
Schlampig.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #15 (permalink)  
Alt 12-07-2010, 16:28
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

1) mach ich doch , wird beides drin gespeichert

2) hab es ein wenig angepasst - aber bis auf ein paar Notice - Meldungen, dass er automatisch aus sit 'sit' gemacht hat, seh ich da kein großes Problem.
Wobei ich für beides auf meine Buchquelle verweisen "muss". Die netten Autoren von Markt & Technik springen recht munter zwischen $_SESSION[xyz] und $_SESSION['xyz'] hin und her ... und solang man nicht beide Werte irgendwie belegt, gibts ja auch keine Probleme - auch wenn das zugegebenermaßen unsauber ist ..
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Die Erweiterung "mysql" kann nicht geladen werden. Shai-Hulud Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 23 20-01-2011 23:07
5x Praktikum: "Marketing" oder "Webdesign" o. "Kommunikation" ... transparent Jobgesuche 4 18-06-2007 17:02
_SESSION["variable"] funktioniert nicht hlederhaas PHP Developer Forum 5 20-09-2005 11:01
Problem mit $ _SESSION[" "] Larsidotnet PHP Developer Forum 4 16-09-2004 19:33
"unexpected $end"wenn Tabelle erstellt werden soll KILLERLOOP SQL / Datenbanken 8 17-02-2004 14:50

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 16:27 Uhr.