WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP script schreibt unzuverlässig in MySQL db (http://www.wcm.at/forum/showthread.php?t=107755)

row 04.09.2003 14:32

PHP script schreibt unzuverlässig in MySQL db
 
Hi Leute, ich habe einen Online Fragebogen erstellt der mit einer Session das Sammeln von Antworten über mehrere Seiten ermöglicht. Auf Seite 1 bekommt der User eine survey ID durch folgendes Script:
PHP-Code:

session_start();
$zufall=md5 (uniqid (rand()));
$_SESSION["username"] = "$zufall";
$survey_id $_SESSION["username"]; 

Dann wird der User per HTML Forms befragt, z.B. hier soll er sich eine Aktivität aussuchen:


Nenne die Aktivität hier:
<input name="activity" type="text" size="30" maxlength="100"></P>

Via POST wird das Ergebnis an das folgende PHP Skript weitergeleitet und das schreibt das Ergebnis in eine MySQL Datenbank:
PHP-Code:

session_start();
$survey_id $_SESSION["username"];
$sql "update tels SET activity = '$activity' WHERE session = '$survey_id'  ";
$res send_sql($db,$sql);
mysql_free_result($res); 

Normalerweise arbeitet das Script einwandfrei, nur manchmal versagt das Script und es wird mir nichts unter der ID in die Datenbank eingetragen... Die ID-session wird angelegt und auch in die MySQL-db eingetragen aber dann geht irgendwie die UserID für's script verloren und die weiteren Usereingaben werden nicht mehr eingetragen. Der Fehler tritt am meisten auf wenn ich die Seite zum ersten Mal teste :(

Findet irgendwer den Bug? Bitte Hilfe!

P.S:
Die function send_sql is per include("funk.php") eingebunden;
PHP-Code:

function send_sql($db$sql) {
   if (! 
$res=mysql_db_query($db$sql)) {
   echo 
mysql_error();
   exit;
   }
   return 
$res;
 } 


SingleParty.cc 05.09.2003 07:40

Hidden field
 
Schreibst Du die SessionID im HTML-Form in ein Hidden Field?

Falls nicht, dann gibt es Probleme, wenn ein User die Cookies deaktiviert hat und somit die ID nicht übergeben wird.

row 05.09.2003 10:47

@SingleParty.cc

Nach meinen letzten Änderungen läuft das Ding jetzt stabil!
Die Ursache war glaub ich dass session_start(); nicht als erstes aufgerufen wurde, sondern auf den fehlerhaften Seiten etwas weiter unten stand. Und wie steht's eh tausendmal überall ... session aufrufen bevor Code an den Client gesendet wird.

Die User kriegen keine Cookies (war mir zu unsicher). Mit einem hidden field wird auch nicht übergeben.
Die jeweilige surveyID bekomme ich einfach per
PHP-Code:

session_start();
$survey_id $_SESSION["username"]; 

Am Ende vom Fragebogen wird die session einfach zerstört.


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag