power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 22.12.2004, 12:43   #1
TP-Member
 
Benutzerbild von cemo999
 
Registriert seit: Aug 2004
Ort: Österreich
cemo999 macht alles soweit korrekt

Php != Php ????


Also ich bin langsam mit meinem Latein am Ende!!!

Hab jetzt ca. 3 Monate lang an einer "kleinen" Webapplikation gebastelt, die in unsrer Firma im Intranet laufen soll. (so was wie ein kleines pps-programm)

Das ganze haut auch auf meinem Testsystem wunderbar funktioniert, aber seitdem ich es auf dem neuen Server installiert hab haut die hälfte nicht mehr hin!! Benutzername und Passwort werden in der SESSION gespeichert und bei jedem neuladen einer Seite kontrolliert. Jedoch bei manchen Seiten spinnt auf einmal das pwd-script und schmeißt mich (obwohl an benutzer und passwort keine änderungen vorgenommen worden sind) raus!!!

Ich arbeite großteils mit SESSION variablen und darin liegt scheinbar das Problem.

Die einzigen Dinge die am neuen System verändert worden sind:

ALT: WINDOWS 2000 SERVER / MSSQL-DB (englisch)(am gleichen SERVER)
APACHE2 / php4.3.2
NEU: WINDOWS 2003 SERVER / MSSQL-DB (deutsch)(auf anderem SERVER)
APACHE2 / php4.3.9

Die beiden php.ini-Dateinen sind nahezu identisch!!
Gibt es irgendwelche bekannten SESSION-Differenzen zwischen den beiden php-versionen??
__________________
Lebe jeden Tag als ob es dein letzter wäre...
-
...es könnte dein letzter sein!
cemo999 ist offline   Mit Zitat antworten


Alt 22.12.2004, 12:50   #2
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Zitat:
Die beiden php.ini-Dateinen sind nahezu identisch!!
Warum kopierst du sie nicht einfach mal kurz? Kann z.b. sein, dass das Session Timelimit zu kurz eingestellt ist; gibt noch dutzende weitere Möglichkeiten.

Zitat:
Gibt es irgendwelche bekannten SESSION-Differenzen zwischen den beiden php-versionen??
http://php.net/Session (in anderen Worten: Nein)

Wenn irgendetwas nach dem portieren nicht funktioniert, ist das häufig nen Zeichen dafür, dass die Person, die das SKript geschrieben hat, an "einigen" Stellen nicht wirklich wusste, was er da tat

Ansonsten, ohne Code könnte ich jetzt nur munter mögliche Fehlerquellen raten. Könnten sogar vergessene session_start();'s oder ähnliches sein!

An den wechsel des Betriebssystem oder das Update auf einer unsicheren PHP Verion sollten zumindest nichts daran ändern, dass das Skript nicht dennoch anstandslos laufen sollte!
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

Geändert von Dennis The Menace (22.12.2004 um 12:54 Uhr).
Dennis The Menace ist offline   Mit Zitat antworten
Alt 22.12.2004, 13:40   #3
TP-Member
 
Benutzerbild von cemo999
 
Registriert seit: Aug 2004
Ort: Österreich
cemo999 macht alles soweit korrekt
Also hier wär mal die php.ini.

Und der Fehler tritt immer an der selben stelle im script auf...

und zwar wenn ich den button fertig drücke sollte folgendes script meine daten überprüfen, speichern und danach die variable $case mit der variablen $_SESSION['zcase'] füttern, diese registrieren und mein menü script laden.

speicher script:

PHP-Code:

<?php

$aid 
$_SESSION['aid'];
$flaeche $_POST['flaeche'];
$alt $_POST['alt'];
$massiv $_POST['massiv'];
$geschmiedet $_POST['geschmiedet'];
$geschm $_POST['geschm'];
$zuschlag $_POST['zuschlag'];
$s_zuschlag $_POST['s_zuschlag'];

$error 0;
$error1 0;

//error = fehlerhaft
//error1 = fehlend

$art_nr ereg_replace("'","´",$_POST['art_nr']);
$benennung ereg_replace("'","´",$_POST['benennung']);
$stueck ereg_replace("'","´",$_POST['stueck']);
$material ereg_replace("'","´",$_POST['material']);
$bemerkung ereg_replace("'","´",$_POST['bemerkung']);
$art_nr trim($art_nr);
$benennung trim($benennung);
$stueck trim($stueck);
$material trim($material);
$bemerkung trim($bemerkung);

if(!
$benennung)
 
$error1++;

if(!
$stueck)
 
$error1++;
elseif(!
ereg("([0-9]{".strlen($stueck)."})"$stueck))
 
$error++;

if(!
$material)
 
$error1++;
elseif(
$material == "a" or $material == "A")
 
$material "Alu";
elseif(
$material == "e" or $material == "E")
 
$material "Alu eloxiert";
elseif(
$material == "n" or $material == "N")
 
$material "Niro";
elseif(
$material == "s" or $material == "S")
 
$material "Stahl";
elseif(
$material == "v" or $material == "V")
 
$material "Stahl verzinkt";


if( 
$geschmiedet )
 
$geschmiedet $geschm;


if( 
$zuschlag )
{
 list( 
$a$b$c ) = split('[,.]'$zuschlag);
 
$la strlen($a);
 
$lb strlen($b);
 if( !
$c )
 {
  if( 
$a && $b )
  {
   if( 
ereg("([0-9]{".$la."})"$a) && ereg("([0-9]{".$lb."})"$b) )
   {
    
$zuschlag $a.".".$b;
   }
   else
   {
    
$error++;
   }
  }
  elseif( 
$a && !$b )
  {
   if( 
ereg("([0-9]{".$la."})"$a) )
   {
    
$zuschlag $a;
   }
   else
   {
    
$error++;
   }
  }
  elseif( !
$a && $b )
  {
   if( 
ereg("([0-9]{".$lb."})"$b) )
   {
    
$zuschlag "0.".$b;
   }
   else
   {
    
$error++;
   }
  }
  else
  {
   
$error++;
  }
 }
 else
 {
  
$error++;
 }
}

if( 
$s_zuschlag )
{
 
$ls strlen($s_zuschlag);
 if( !
ereg("([0-9]{".$ls."})"$s_zuschlag) )
  
$error++;
}


if( 
$error == && $error1 == 0)
{
 if(
$alt)
 {
  
$alt 100;
  
$p_zuschlag += $alt;
 }
 else
  
$alt 0;

 if(
$massiv)
 {
  
$massiv 50;
  
$p_zuschlag += $massiv;
 }
 else
  
$massiv 0;

 if(
$geschmiedet)
 {
  
$geschmiedet $geschm;
  
$p_zuschlag += $geschmiedet;
 }
 else
  
$geschmiedet 0;

 if(
$s_zuschlag)
  
$p_zuschlag += $s_zuschlag;

 if(!
$zuschlag)
  
$zuschlag 0;

  if(
$aid)
  {
   if(
$bemerkung )
    
$bem "bemerkung = '".$bemerkung."',";
   else
    
$bem "bemerkung = NULL,";

   
mssql_query(" UPDATE pps_artikel SET art_nr = '$art_nr', benennung = '$benennung', stueck = '$stueck', material = '$material', {$bem} flaeche = '', f_zuschlag='', p_zuschlag='', typ='' WHERE aid = $aid ");
  }
  else
  {

   if(
$bemerkung)
    
$bem "'".$bemerkung."'";
   else
    
$bem "NULL";

   
$result_aid mssql_query(" SELECT max(aid) as aid FROM pps_artikel ");
   
$aid_sql mssql_fetch_array$result_aid );
   
$aid $aid_sql['aid']+1;
   
mssql_query(" INSERT INTO pps_artikel (aid, kid, art_nr, benennung, stueck, material, bemerkung) VALUES ('$aid', '{$_SESSION['kid']}', '$art_nr', '$benennung', '$stueck', '$material', ".$bem.") ");
  }

 
mssql_query(" UPDATE pps_artikel SET abmessungen = '', flaeche = '$flaeche', f_zuschlag = '$zuschlag', p_zuschlag = '$p_zuschlag', typ = '6' WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ1 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ2 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ3 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ4 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ5 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ6 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ7 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ8 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ9 WHERE aid = $aid ");
 
mssql_query(" DELETE FROM pps_typ10 WHERE aid = $aid ");
 
mssql_query(" INSERT INTO pps_typ6 (aid, alt, massiv, geschmiedet, zuschlag, s_zuschlag) VALUES ('$aid', '$alt', '$massiv', '$geschmiedet', '$zuschlag', '$s_zuschlag') ");

    
session_unregister('flaeche');
    
session_unregister('alt');
    
session_unregister('massiv');
    
session_unregister('geschmiedet');
    
session_unregister('zuschlag');
    
session_unregister('s_zuschlag');

    
session_unregister('art_nr');
    
session_unregister('benennung');
    
session_unregister('stueck');
    
session_unregister('material');
    
session_unregister('bemerkung');

 
session_unregister('case');
 
session_register('case');
 
$case $_SESSION['zcase'];
 
header("Location: menue.php");
 exit;
}
else
{

    
session_unregister('flaeche');
    
session_unregister('alt');
    
session_unregister('massiv');
    
session_unregister('geschmiedet');
    
session_unregister('zuschlag');
    
session_unregister('s_zuschlag');

    
session_register('flaeche');
    
session_register('alt');
    
session_register('massiv');
    
session_register('geschmiedet');
    
session_register('zuschlag');
    
session_register('s_zuschlag');

    
session_unregister('art_nr');
    
session_unregister('benennung');
    
session_unregister('stueck');
    
session_unregister('material');
    
session_unregister('bemerkung');

    
session_register('art_nr');
    
session_register('benennung');
    
session_register('stueck');
    
session_register('material');
    
session_register('bemerkung');

 
session_unregister('case');
 
session_register('case');
 
$case 36;
 
header("Location: menue.php");
 exit;
}
?>
menü script:

PHP-Code:

<?php

include("include/i_pwd.php");

if(
$_SESSION['case'])
{
 
$case $_SESSION['case'];
}

if(
$_POST['case'])
{
 
$case $_POST['case'];
}

if(
$case && $case <= 29)
{
    include(
"menue0130.php");
}

elseif(
$case 29 && $case <= 59)
{
    include(
"menue3160.php");
}

elseif(
$case 59 && $case <= 89)
{
    include(
"menue6190.php");
}

else
{
    include(
"include/auswahl1.php");
}

?>
pwd script:

PHP-Code:

<?php

session_start
();
$uname $_SESSION['user'];
$pwd $_SESSION['pwd'];

if(
$_POST['kcase'])
{
 
session_unregister('kcase');
 
session_register('kcase');
 
$kcase $_POST['kcase'];
}

if(
$_SESSION['kunde'])
{
$user $_SESSION['kunde'];
}

if(
$uname && $pwd)
{

 include(
"../config/db.config.php");

 
$resultu mssql_query" SELECT kd_id AS usr FROM pps_pwd " );

 
$count 0;

 while( 
$userd mssql_fetch_array$resultu ) )
 {
  if(
$uname == $userd['usr'])
  {
   
$count++;
  }
 }
 if(
$count == 1)

 {
 
$resultp mssql_query" SELECT pwd FROM pps_pwd WHERE kd_id = '$uname' ");
 
$pwdd mssql_fetch_array$resultp );
 if(
$pwd == $pwdd["pwd"])
 {
  
$result_tab mssql_query(" SELECT tabelle FROM pps_tabelle WHERE tabid = (SELECT MAX(tabid) FROM pps_tabelle) ");
  
$fetch_tab mssql_fetch_array$result_tab );
  
$tab_kundenstamm $fetch_tab['tabelle'];
 }
 else
 {
  
header("Location: login.php?error=1");
 }
 }
 else
 {
  
header("Location: login.php?error=1");
 }
}

else
{
 
header("Location: login.php");
}
?>
...das menü script wertet die variable $case aus und lädt die entsprechende seite!!
funktioniert auf dem alten rechner einwandfrei und auf dem neuen mal schon und mal nicht, wobei ich da keinerlei regelmäßigkeiten erkennen kann!!
Angehängte Dateien
Dateityp: txt php.txt (39,2 KB, 54x aufgerufen)
__________________
Lebe jeden Tag als ob es dein letzter wäre...
-
...es könnte dein letzter sein!
cemo999 ist offline   Mit Zitat antworten
Alt 22.12.2004, 14:51   #4
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Mal abgesehen davon, dass sein Code so *tja - mir fehlen die Worte* geschrieben ist, dass man da 50% blind raus löschen kann ohne was neu zu schreiben und es immer noch funktionieren würde.... Es ist immer schwer, andere Codefragmente nachzuvollziehen, wenn sie nicht komplett sind, bzw. wenn nicht erkenntlich ist, welches Fragment wann/wo/wie aufgerufen wird.

Was passiert beispielsweise mit deinem Speicher-Skript? Wann wird es aufgerufen? Oder wirds nur inkludiert? Wenn es aufgerufen wird, da fehlt das session_Start(); - die Session killt sich also nach Aufruf der Seite von selbst!
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 22.12.2004, 14:57   #5
TP-Member
 
Benutzerbild von cemo999
 
Registriert seit: Aug 2004
Ort: Österreich
cemo999 macht alles soweit korrekt
das script wird includiert und das session_start() ist bereits in der pwd abfrage vorhanden die auch bei jedem aufruf includiert ist
__________________
Lebe jeden Tag als ob es dein letzter wäre...
-
...es könnte dein letzter sein!
cemo999 ist offline   Mit Zitat antworten
Alt 22.12.2004, 15:01   #6
TP-Member
 
Benutzerbild von cemo999
 
Registriert seit: Aug 2004
Ort: Österreich
cemo999 macht alles soweit korrekt
achja und bzgl.

Zitat:
dass sein Code so *tja - mir fehlen die Worte* geschrieben ist, dass man da 50% blind raus löschen kann ohne was neu zu schreiben und es immer noch funktionieren würde....
was könntest denn z.B. rauslöschen ??
__________________
Lebe jeden Tag als ob es dein letzter wäre...
-
...es könnte dein letzter sein!
cemo999 ist offline   Mit Zitat antworten
Alt 22.12.2004, 15:19   #7
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Zitat:
das script wird includiert und das session_start() ist bereits in der pwd abfrage vorhanden die auch bei jedem aufruf includiert ist
Naja, ich würd die fehlerhafte Variable einfach Schrittweise immer ein tacken tiefer mal mit echo ausgeben und dann nachgucken, ab wann das nicht mehr stimmt! Dann lässt sich dass recht schnell herausfinden, ab wann er streikt!

Zitat:
was könntest denn z.B. rauslöschen ??
Generell geh einfach mal jede Zeile durch und frag dich, ob das wirklich von nöten ist; bzw. ob es da nicht einen viel sinnvolleren Weg gibt!:
Mal so; ohne lange zu suchen:
PHP-Code:
//Was soll das?
$aid $_SESSION['aid']; 
$flaeche $_POST['flaeche']; 
$alt $_POST['alt']; 
$massiv $_POST['massiv']; 
$geschmiedet $_POST['geschmiedet']; 
$geschm $_POST['geschm']; 
$zuschlag $_POST['zuschlag']; 
$s_zuschlag $_POST['s_zuschlag'];

...

//PHP ist eine dynamische Programmiersprache; du musst doch nicht extra jede Variable einzeln behandeln!
$art_nr ereg_replace("'","´",$_POST['art_nr']); 
$benennung ereg_replace("'","´",$_POST['benennung']); 
$stueck ereg_replace("'","´",$_POST['stueck']); 
$material ereg_replace("'","´",$_POST['material']); 
$bemerkung ereg_replace("'","´",$_POST['bemerkung']); 
$art_nr trim($art_nr); 
$benennung trim($benennung); 
$stueck trim($stueck); 
$material trim($material); 
$bemerkung trim($bemerkung);

//Willkommen in einer Welt mit eregi!
 
or $material == "A"
 
or $material == "E"
 
or $material == "N"
 
or $material == "S"
 
or $material == "V"

//Dann sind auch immer sehr schön zu lesen die {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ hunderten sinnlosen geschweiften Klammern ;)

//Ein weiterer Höhepunkt:
mssql_query(" UPDATE pps_artikel SET abmessungen = '', flaeche = '$flaeche', f_zuschlag = '$zuschlag', p_zuschlag = '$p_zuschlag', typ = '6' WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ1 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ2 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ3 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ4 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ5 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ6 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ7 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ8 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ9 WHERE aid = $aid "); 
mssql_query(" DELETE FROM pps_typ10 WHERE aid = $aid "); 
mssql_query(" INSERT INTO pps_typ6 (aid, alt, massiv, geschmiedet, zuschlag, s_zuschlag) VALUES ('$aid', '$alt', '$massiv', '$geschmiedet', '$zuschlag', '$s_zuschlag') "); 

//Auch atemberaubend:
session_unregister('flaeche'); 
    
session_unregister('alt'); 
    
session_unregister('massiv'); 
    
session_unregister('geschmiedet'); 
    
session_unregister('zuschlag'); 
    
session_unregister('s_zuschlag'); 

    
session_unregister('art_nr'); 
    
session_unregister('benennung'); 
    
session_unregister('stueck'); 
    
session_unregister('material'); 
    
session_unregister('bemerkung'); 

session_unregister('case'); 
session_register('case'); 
$case $_SESSION['zcase'];

 
session_unregister('flaeche'); 
    
session_unregister('alt'); 
    
session_unregister('massiv'); 
    
session_unregister('geschmiedet'); 
    
session_unregister('zuschlag'); 
    
session_unregister('s_zuschlag'); 

    
session_register('flaeche'); 
    
session_register('alt'); 
    
session_register('massiv'); 
    
session_register('geschmiedet'); 
    
session_register('zuschlag'); 
    
session_register('s_zuschlag'); 

    
session_unregister('art_nr'); 
    
session_unregister('benennung'); 
    
session_unregister('stueck'); 
    
session_unregister('material'); 
    
session_unregister('bemerkung'); 

    
session_register('art_nr'); 
    
session_register('benennung'); 
    
session_register('stueck'); 
    
session_register('material'); 
    
session_register('bemerkung'); 

session_unregister('case'); 
session_register('case'); 
naja, dass jetzt nur aus einer Datei^^
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 22.12.2004, 15:51   #8
TP-Member
 
Benutzerbild von cemo999
 
Registriert seit: Aug 2004
Ort: Österreich
cemo999 macht alles soweit korrekt
Also ok, ich geb zu dass einige der angeführten zeilen auch mir mittlerweile sinnlos erscheinen, aber da ich meine php-kenntnisse aus 99,9% selbststudium habe verwende ich oft lieber befehle, die ich kenne, und von denen ich weiß, dass sie funktionieren und schreibe lieber 3 zeilen mehr als dass ich nach einem anderen befehl suche, der das alles vielleicht könnte, dessen zuverlässigkeit ich jedoch nicht kenne.

... bzg. der querys ist mir grade ein licht aufgegangen, aber wenn man täglich zwischen 14 und 16 stunden vorm computer sitzt und programmiert da hat man schon hin und wieder mal ein blackout

ich bin ganz deiner meinung dass man gewisse dinge auch sicher einfacher lösen kann, jedoch war das was mir während der ganzen programmierung fehlte ZEIT!!! Also schrieb ich das ganze so dass ich mir sicher sein konnte, dass es funktioniert!!

achja, wieso kann man bei einer Bedingungsabfrage mit switch .. case eigentlich nur 31xcase + 1xdefault verwenden???
__________________
Lebe jeden Tag als ob es dein letzter wäre...
-
...es könnte dein letzter sein!
<