 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.12.2004, 12:43
|
#1
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
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!
|
|
|
22.12.2004, 12:50
|
#2
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
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).
|
|
|
22.12.2004, 13:40
|
#3
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
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 == 0 && $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 > 0 && $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!!
__________________
Lebe jeden Tag als ob es dein letzter wäre... - ...es könnte dein letzter sein!
|
|
|
22.12.2004, 14:51
|
#4
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
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^^!
|
|
|
22.12.2004, 14:57
|
#5
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
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!
|
|
|
22.12.2004, 15:01
|
#6
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
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!
|
|
|
22.12.2004, 15:19
|
#7
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
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^^!
|
|
|
22.12.2004, 15:51
|
#8
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
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!
< | | |