TeCe
Erfahrenes Mitglied
Hallo, hab das Board schon ein paar Stunden lang durchsucht aber wieder Nichts auf mein Problem passendes gefunden.
Ich habe ein kleines *gähn* LoginSystem geschrieben, welches nach erfolgreichem Login, mir ein Klassenobjekt mittels serialize in eine session-variable schreibt und beim neuaufbau der session wieder unserialized herstellt - was übrigens auch sehr gut klappt, zumindest auf meinem Test-System: Linux_Apache2_PHP5.
Nachdem ich nun alles soweit getestet und optimiert habe wurde es Zeit die Geschichte auch mal online zu stellen, jedoch ohne Erfolg:
Ab dem 2. Link ist die Session wieder tot - laut phpinfo(), print_r($_SESSION); etc. ist die PHPSESSID beim gleichen geblieben.
Dann ist mir aufgefallen das selbst meine register.php nicht ganz so läuft wie sie sollte, also beschränke ich mich vorerst nur auf diese, in der Hoffnung das sich der Rest auf die selbe Weise lösen läßt:
(lieber zu viel code als zu wenig...)
Ausgabe:
beim ersten Aufruf der Seite ist alles fein in Deutsch, nachdem ich dann den übersetzungsLink angeklickt habe sind lediglich nur noch Überschrift und Textarea übersetzt, alles Andere bleibt leer?
also eine if-Abfrage tut ihre Sache, aber assoziativ auf die interne Variable $lang zuzugreifen haut nicht hin!?
Wie gesagt, auf meinem lokalen Testserver läuft alles einwandfrei, nur nicht auf den 3 Webspaces, von 3 verschiedenen Anbietern...?
Ich habe ein kleines *gähn* LoginSystem geschrieben, welches nach erfolgreichem Login, mir ein Klassenobjekt mittels serialize in eine session-variable schreibt und beim neuaufbau der session wieder unserialized herstellt - was übrigens auch sehr gut klappt, zumindest auf meinem Test-System: Linux_Apache2_PHP5.
Nachdem ich nun alles soweit getestet und optimiert habe wurde es Zeit die Geschichte auch mal online zu stellen, jedoch ohne Erfolg:
Ab dem 2. Link ist die Session wieder tot - laut phpinfo(), print_r($_SESSION); etc. ist die PHPSESSID beim gleichen geblieben.
Dann ist mir aufgefallen das selbst meine register.php nicht ganz so läuft wie sie sollte, also beschränke ich mich vorerst nur auf diese, in der Hoffnung das sich der Rest auf die selbe Weise lösen läßt:
Code:
<?
/*
* Created on 2005-11-04
*
*/
include("config.php");// <--hier wird das session_start(); aufgerufen
$de = array("user" => "gewünschter Benutzername", "pass" => "gewünschtes Passwort", "name" => "Name", "vorname" => "Vorname", "firma" => "Firma", "strasse" => "Straße", "plz" => "Postleitzahl", "ort" => "Ort", "land" => "Land", "ustnr" => "UstNR", "tel" => "Telefon", "email" => "email", "fax" => "Fax", "sonstiges" => "Sonstiges");
$en = array("user" => "preferred username", "pass" => "preferred password", "name" => "Name", "vorname" => "Surname", "firma" => "Firm", "strasse" => "Street", "plz" => "Postalcode", "ort" => "Place", "land" => "Land", "ustnr" => "TAX-Account-Number", "tel" => "Telephone", "email" => "email", "fax" => "Fax", "sonstiges" => "more information");
$lang = array("de" => $de, "en" => $en);
isset($_GET['lang']) ? $_SESSION['lang'] = $_GET['lang'] : $_SESSION['lang'] = "de";
?>
<html>
<body>
<?
echo $_SESSION[lang]=="de" ? "<a href=?lang=en>in English</a><br /><br />" : "<a href=?lang=de>in Deutsch</a><br /><br />";
echo "<pre>";
print_r($_SESSION);
print_r($lang[$_SESSION['lang']]);
echo "</pre>";
/**
* process form-date
**/
$error = "<H3>";
if( !empty($_POST[register][user]) &&
!empty($_POST[register][pass]) &&
!empty($_POST[register][firma]) &&
!empty($_POST[register][strasse]) &&
!empty($_POST[register][plz]) &&
!empty($_POST[register][ort]) &&
!empty($_POST[register][land]) &&
!empty($_POST[register][email])) {
if($config[backend][type] == "mysql") {
mysql_connect($config[backend][host], $config[backend][user], $config[backend][pass]);
mysql_select_db($config[backend][database]);
$user = mysql_num_rows(mysql_query("SELECT * FROM traders WHERE user='$_POST[register][user]' ;"));
$firma = mysql_num_rows(mysql_query("SELECT * FROM traders WHERE firma='$_POST[register][firma]' ;"));
$email = mysql_num_rows(mysql_query("SELECT * FROM traders WHERE email='$_POST[register][email]' ;"));
if($user>0) $_SESSION[lang]=="de" ? $error.="Fehlerhafter Benutzername<br />" : $error.="Invalid Username<br />";
else if($firma>0) $_SESSION[lang]=="de" ? $error.="Fehlerhafter Firmenname<br />" : $error.="Invalid Firmname<br />";
else if($email>0) $_SESSION[lang]=="de" ? $error.="Fehlerhafte Mailadresse<br />" : $error.="Invalid Mailaddress<br />";
else {
@mysql_query("INSERT INTO traders(user, pass, name, vorname, firma, strasse, plz, ort, land, ustnr, tel, email, fax, sonstiges, registered, state) VALUES('".$_POST[register][user]."', '".md5($_POST[register][pass])."', '".$_POST[register][name]."', '".$_POST[register][vorname]."', '".$_POST[register][firma]."', '".$_POST[register][strasse]."', '".$_POST[register][plz]."', '".$_POST[register][ort]."', '".$_POST[register][land]."', '".$_POST[register][ustnr]."', '".$_POST[register][tel]."', '".$_POST[register][email]."', '".$_POST[register][fax]."', '".$_POST[register][sonstiges]."', NOW(), 0) ;");
foreach($_POST[register] as $registrar => $val) $info .= $registrar." :: ".$val."\n";
}
} else {
$handle = fopen ($config[backend][host],"r");
fgetcsv ($handle, 1024, ";");//erste Zeile überspringen
$valid = "";
$id=1;
while ( ($data = fgetcsv($handle, 1024, ";")) !== FALSE ) {
$id++;
if($data[1] == $_POST[register][user]) $valid .= $lang[$_SESSION[lang]][user].", ";
if($data[5] == $_POST[register][firma]) $valid .= $lang[$_SESSION[lang]][firma].", ";
if($data[12] == $_POST[register][email]) $valid .= $lang[$_SESSION[lang]][email].", ";
}
fclose ($handle);
if (strlen($valid)>1) echo $_SESSION[lang]=="de" ? $error.="Umzuläßige Eingaben in ".substr($valid,0,-2)."<br />" : $error.="Invalid Submissions in ".substr($valid,0,-2)."<br />";
else {
$_POST[register][pass] = md5($_POST[register][user]);
foreach($_POST[register] as $entry) $write .= $entry.";";
$wrfile = fopen($config[backend][host],"a");
fwrite($wrfile, $id.";".$write.time().";;;;0\n");
fclose($wrfile);
}
}
echo $_SESSION[lang]=="de" ? "<H1>Ihre Daten wurden an uns weitergeleitet.<br />Sobald wir Ihre Angaben geprüft haben, bekommen Sie von uns eine Bestätigungsmail.</H1>" : "<H1>Your data has been sent. We will will inform you by mail, after we've validated</H1>";
} else $_SESSION[lang]=="de" ? $error.="Bitte alle mit * gekennzeichneten Felder ausfüllen!<br />" : $error.="Please fill in all *-marked fields<br />";
if(strlen($error)>4) echo "<H3>".$error."</h3>";
?>
<form method="post">
<table>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][user]?>:</td>
<td align=left"><input type="text" name="register[user]" value="<?=$register[user]?>" />
</tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][pass]?>:</td>
<td align=left"><input type="password" name="register[pass]" value="<?=$register[pass]?>" />
</tr>
<tr>
<td align="right" width="400"><?=$lang[$_SESSION[lang]][name]?>:</td>
<td align=left"><input type="text" name="register[name]" value="<?=$register[name]?>" />
</tr>
<tr>
<td align="right" width="400"><?=$lang[$_SESSION[lang]][vorname]?>:</td>
<td align=left"><input type="text" name="register[vorname]" value="<?=$register[vorname]?>" />
</tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][firma]?>:</td>
<td align=left"><input type="text" name="register[firma]" value="<?=$register[firma]?>" />
</tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][strasse]?>:</td>
<td align=left"><input type="text" name="register[strasse]" value="<?=$register[strasse]?>" />
</tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][plz]?>:</td>
<td align=left"><input type="text" name="register[plz]" value="<?=$register[plz]?>" />
</tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][ort]?>:</td>
<td align=left"><input type="text" name="register[ort]" value="<?=$register[ort]?>" />
</tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][land]?>:</td>
<td align=left"><input type="text" name="register[land]" value="<?=$register[land]?>" />
</tr>
<tr>
<td align="right" width="400"><?=$lang[$_SESSION[lang]][ustnr]?>:</td>
<td align=left"><input type="text" name="register[ustnr]" value="<?=$register[ustnr]?>" />
</tr>
<tr>
<td align="right" width="400"><?=$lang[$_SESSION[lang]][tel]?>:</td>
<td align=left"><input type="text" name="register[tel]" value="<?=$register[tel]?>" />
</tr>
<tr>
<tr>
<td align="right" width="400">*<?=$lang[$_SESSION[lang]][email]?>:</td>
<td align=left"><input type="text" name="register[email]" value="<?=$register[email]?>" />
</tr>
<tr>
<td align="right" width="400"><?=$lang[$_SESSION[lang]][fax]?>:</td>
<td align=left"><input type="text" name="register[fax]" value="<?=$register[fax]?>" />
</tr>
<tr>
<td align="right" width="400"><?=$lang[$_SESSION[lang]][sonstiges]?>:</td>
<td align="center"><textarea name="register[sonstiges]" rows=20 cols=60><?
echo empty($register[sonstiges]) ?
$_SESSION[lang]=="de" ? "Was sollten wir sonst noch wissen?" : "Is there anything else we should know?"
: $register[sonstiges];
?></textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Abschicken" caption="Abschicken"></td>
</tr>
</table>
</form>
</body>
</html>
Ausgabe:
beim ersten Aufruf der Seite ist alles fein in Deutsch, nachdem ich dann den übersetzungsLink angeklickt habe sind lediglich nur noch Überschrift und Textarea übersetzt, alles Andere bleibt leer?
also eine if-Abfrage tut ihre Sache, aber assoziativ auf die interne Variable $lang zuzugreifen haut nicht hin!?
Code:
$lang[$_SESSION[lang]][email]
Wie gesagt, auf meinem lokalen Testserver läuft alles einwandfrei, nur nicht auf den 3 Webspaces, von 3 verschiedenen Anbietern...?