ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
286
286
EMPFEHLEN
-
Hallo,
ich arbeite teils auf einem Server teils im/mit XAMPP.
Mein Problem ist folgendes: Ich binde auf einer PHP-Seite andere Seiten mittels "include" ein. Diese "includes" sind abhängig von Sessionvariablen.
Die Formulardaten werden wie gewohnt mit $_POST übergeben und in einem $_SESSION-Array gespeichert.
meine index.php seite sieht (gekürzt) wie folgt aus:
PHP-Code:<?php session_start();?>HTML-Code:<html><head></head><body>
usw...PHP-Code:<?php
if ($_POST['name'] != "")
{
$_SESSION['name'] = $_POST['name'];
}
if ($_POST['system'] != "")
{
$_SESSION['system'] = $_POST['system'];
} ?>
Die Session wird auch beim ersten Post gefüllt und man gelangt auf die system.php , aber füllt man das formular der system.php aus (mit den Systemen). So wird nun auch die $_POST('system') richtig übergeben, denn die $_SESSION['system'] ist dann gefüllt. Jedoch die $_SESSION['name'] ist dann leer...PHP-Code:<?php if ($_SESSION['name']!="" and $_SESSION['system']=="")
include("system.php");?>
Ich will aber das sowohl $_SESSION['name'] als auch $_SESSION['system'] existent bleiben
Hat jemand eine ´Vermutung?
weiterer Hinweis: auf dem Localhost (XAMPP) läuft das Prima nur auf dem Server passiert immer wieder das obengenannte Spektakel.
Ich hab mal was über den session.bug_compat gelesen, weiß aber nicht ob das damit zusammenhängt
Danke im Vorraus
-
04.08.09 14:29 #2
Hi,
$_SESSION["name"] ist leer, aber der Index selbst existiert noch?
Steht register_globals vielleicht auf "on" und setzt du irgendwo $name = ''; ?
Wie sieht denn der Inhalt von system.php aus, speziell das Formular und wie werden die Daten dann verarbeitet?
Zu session.bug_compat kann ich leider nichts sagen!
Gruß
-
Also die $_SESSION['name'] ist beim ersten mal befüllen durch $_POST['name'] gefüllt... nachdem die $_SESSION['name'] gefüllt ist wird ein zweites formular included, wo sich ein 2. formular befindet und die variable $_SESSION['system'] durch einen Post $_POST['system'] gesetzt wird.
die register_globals ändert nix an der funktionalitätSteht register_globals vielleicht auf "on" und setzt du irgendwo $name = ''; ?
auch $name = " "; wird nicht gesetzt, bzw. ist diese Variable garnicht in meinem Script vorhanden.
lediglich $_SESSION['name']=" "; wird gesetzt, wenn der User bei eingabe des/der systeme auf "zurück" statt "weiter" geht. Aber ich klicke richtig und im XAMPP funktioniert das auch alles super nur der SERVER (MS 2003) löscht $_SESSION['name'].
und um nochmal alle unklarheiten zu beseitigen schick ich im folgenden mal das script mehr oder minder vollständig.
PHP-Code:<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache" />
<META HTTP-EQUIV="Expires" CONTENT="-1" />
<meta http-equiv="cache-control" content="no-cache" />
<?php
if ($_POST['name'] != "")
{
$_SESSION['name'] = $_POST['name'];
};
if ($_POST['system'] != "")
{
$_SESSION['system'] = $_POST['system'];
};
?>
</head>
<body>
<?php
if ($_SESSION['name']=="")
include("userdata.php");
?>
<?php
if ($_SESSION['name']!="" and $_SESSION['system']=="")
include("system.php");
?>
<?php
print_r($_SESSION); //liefert mir das Resultat zurück , dass beim 1. mal die SESSION[name] gefüllt ist, beim zweiten mal jedoch nicht mehr (aber nur auf dem SERVER)
?>
</body>
</html>
-
Hi, es könnte sein das das Session cookie bei dir nicht gespeichert wird, vielleicht blogt es dein Browser ja?
Denn soweit wie das in dem Script ist sollte es Funktionieren.
Kontrollier aber mal dein Script, vielleicht hast du an einer stelle sowas geschrieben
ist ein beliebter Fehler, der die Variable leert.PHP-Code:if ($_SESSION['name']="")
-
Hallo,
ja ich hab $_SESSION['name']=""; drin, aber nur an der Stelle, wo der User beim formular auf den Zurückbutton drückt und somit ein post ausgelöst wird:
system.php
daraufhin wird in der index.php folgendes ausgelöst:HTML-Code:<form id='system' method='post'> <input type="text" name='system'/> <input type="submit" value='weiter'/> <input type="submit" name="backwards" value='zurück'/> </form>
aber den beliebten fehler mit if($_POST['name']=""); oder dergleichen, hab ich nach mehrfachen suchen nicht drinPHP-Code:<?php
if ($_POST['system'] != "")
{
$_SESSION['system'] = $_POST['system'];
};
if (isset($_POST['backwards']))
{
$_SESSION['system']="";
$_SESSION['name']="";
}
und wie bereits gesagt es funktioniert im XAMPP vollkommen richtig, nur auf dem Server nicht.Geändert von Greyschen (05.08.09 um 08:03 Uhr)
-
Könntest du die Kompletten Scripte Posten?
-
Ok wenns hilfreich ist.
Aber nich beschweren, wenns zuviel code ist. Ich durchlauf vorerst nur die beiden ersten Abläufe für das Formular. Es wird nach und nach der User um Eingaben gebeten, welche dann schlussendlich in einem Dokument gedruckt werden. Läuft auch alles bereits vollkommen richtig auf dem Localhost.
Sorry das ich nun mit den Originalbezeichnungen handle.
Also die $_SESSION['system'] heißt eigtl. $_SESSION['sysenvi']
und die $_POST['system'] heißt eigtl. $_POST['sysenvi']
und die betreffenden Dateien (vorerst) : userdata.php und systemenvironment.php
die Index.php
die userdata.phpPHP-Code:<?php
session_start();
$roles = "";
$count = count($_SESSION['roles']);
for ($i=0; $i<$count; $i++)
{
if ($i!=$count-1)
{
$roles .= $_SESSION['roles'][$i].", ";
}
else
{
$roles .= $_SESSION['roles'][$i];
}
}
$clients = "";
$count = count($_SESSION['clients']);
for ($i=0; $i<$count; $i++)
{
if ($i!=$count-1)
{
$clients .= $_SESSION['clients'][$i].", ";
}
else
{
$clients .= $_SESSION['clients'][$i];
}
}
$systemstring = "";
$count = count($_SESSION['systemfield']);
for ($i=0; $i<$count; $i++)
{
if ($i!=$count-1)
{
$systemstring .= $_SESSION['systemfield'][$i].", ";
}
else
{
$systemstring .= $_SESSION['systemfield'][$i];
}
}
?>
<?php
if (isset($_POST['print']) and $_SESSION['roles']!="")
{
$antrag = file_get_contents('Muster.rtf');
$antrag = str_replace('==Start==', $_SESSION['Start'], $antrag);
$antrag = str_replace('==Ende==', $_SESSION['Ende'], $antrag);
$antrag = str_replace('==Grund==', $_SESSION['Grund'], $antrag);
$antrag = str_replace('==Name==', $_SESSION['name'], $antrag);
$antrag = str_replace('==Vorname==', $_SESSION['vorname'], $antrag);
$antrag = str_replace('==Strasse==', $_SESSION['strasse'], $antrag);
$antrag = str_replace('==PLZ==', $_SESSION['plz'], $antrag);
$antrag = str_replace('==Ort==', $_SESSION['ort'], $antrag);
$antrag = str_replace('==Telefon==', $_SESSION['telefon'], $antrag);
$antrag = str_replace('==Email==', $_SESSION['email'], $antrag);
$antrag = str_replace('==Systemlandschaft==', $_SESSION['sysenvi'], $antrag);
$antrag = str_replace('==Mandanten==', $clients, $antrag);
$antrag = str_replace('==Systeme==', $systemstring, $antrag);
$antrag = str_replace('==Rollen==', $roles, $antrag);
$antrag = str_replace('==Rollen==', $_SESSION['roles'], $antrag);
header('Content-Type: application/rtf');
header('Content-Disposition: attachment; filename="Antrag.doc"');
print $antrag;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache" />
<META HTTP-EQUIV="Expires" CONTENT="-1" />
<meta http-equiv="cache-control" content="no-cache" />
<link rel="stylesheet" type="text/css" href="../css/format.css" />
<link rel="stylesheet" type="text/css" href="../css/calendar.css" />
<script src="../javascript/calendar.js" type="text/javascript" language="Javascript"></script>
<script src="../javascript/inputs.js" type="text/javascript" language="Javascript"></script>
<script src="../javascript/general.js" type="text/javascript" language="Javascript"></script>
<script src="../javascript/tooltip.js" type="text/javascript" language="Javascript"></script>
<script src="../javascript/ajax.js" type="text/javascript" language="Javascript"></script>
<?php
if ($_POST['name'] != "")
{
$_SESSION['name'] = $_POST['name'];
$_SESSION['vorname'] = $_POST['vorname'];
$_SESSION['strasse'] = $_POST['strasse'];
$_SESSION['plz'] = $_POST['plz'];
$_SESSION['ort'] = $_POST['ort'];
$_SESSION['telefon'] = $_POST['telefon'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['Start'] = $_POST['Start'];
$_SESSION['Ende'] = $_POST['Ende'];
$_SESSION['Grund'] = $_POST['Grund'];
};
if ($_POST['sysenvi'] != "")
{
$_SESSION['sysenvi'] = $_POST['sysenvi'];
};
if ($_POST['systemfield'] != "")
{
$_SESSION['systemfield'] = $_POST['systemfield'];
};
if ($_POST['clients'] != "")
{
$_SESSION['clients'] = $_POST['clients'];
};
if ($_POST['roles'] != "")
{
$_SESSION['roles'] = $_POST['roles'];
};
if (isset($_POST['backtoroles']))
{
$_SESSION['roles']="";
}
if (isset($_POST['backtoclients']))
{
$_SESSION['roles']="";
$_SESSION['clients']="";
}
if (isset($_POST['backtosystems']))
{
$_SESSION['roles']="";
$_SESSION['clients']="";
$_SESSION['systemfield']="";
}
if (isset($_POST['backtosysenvi']))
{
$_SESSION['roles']="";
$_SESSION['clients']="";
$_SESSION['systemfield']="";
$_SESSION['sysenvi']="";
}
if (isset($_POST['backtouserdata']))
{
$_SESSION['roles']="";
$_SESSION['clients']="";
$_SESSION['systemfield']="";
$_SESSION['sysenvi']="";
$_SESSION['name']="";
}
?>
</head>
<body onload="datewriter();">
<center>
<div class="background">
<br />
<?php
if ($_SESSION['name']=="")
include("userdata.php");
?>
<?php
if ($_SESSION['name']!="" and $_SESSION['sysenvi']=="")
include("systemenvironment.php");
?>
<?php
if ($_SESSION['name']!="" and $_SESSION['sysenvi']!="" and $_SESSION['systemfield']=="")
include("systems.php");
?>
<?php
if ($_SESSION['name']!="" and $_SESSION['sysenvi']!="" and $_SESSION['systemfield']!="" and $_SESSION['clients']=="")
include("clients.php");
?>
<?php
if ($_SESSION['name']!="" and $_SESSION['sysenvi']!="" and $_SESSION['systemfield']!="" and $_SESSION['clients']!="" and $_SESSION['roles']=="")
include("clientroles.php");
?>
<div id="entries" class="choicefield">
<div class="subtitle"> :: Daten </div>
<hr />
<div class="uservalues">
<table>
<tr>
<td style="width:230px">
Name: <?php echo $_SESSION['name']; ?><br />
Vorname: <?php echo $_SESSION['vorname']; ?><br />
</td>
<td style="width:230px">
Straße: <?php echo $_SESSION['strasse']; ?><br />
PLZ/Ort: <?php echo $_SESSION['plz']." ".$_SESSION['ort']; ?><br />
</td>
<td style="width:230px">
Telefon: <?php echo $_SESSION['telefon']; ?><br />
E-Mail: <?php echo $_SESSION['email']; ?><br />
</td>
</tr>
</table>
</div>
<hr />
<div class="uservalues">
<table>
<tr>
<td style="width:230px">
von: <?php echo $_SESSION['Start']; ?>
</td>
<td style="width:230px">
bis: <?php echo $_SESSION['Ende']; ?>
</td>
<td style="width:230px">
Grund: <?php echo $_SESSION['Grund']; ?>
</td>
</tr>
</table>
</div>
<hr />
<div class="uservalues">
<table>
<tr>
<td>
Systemlandschaft: <?php echo $_SESSION['sysenvi']; ?>
</td>
</tr>
</table>
</div>
<hr />
<div class="uservalues">
<table>
<tr>
<td>
Systeme:
<?php
$systemstring = "";
$count = count($_SESSION['systemfield']);
for ($i=0; $i<$count; $i++)
{
if ($i!=$count-1)
{
$systemstring .= $_SESSION['systemfield'][$i].", ";
}
else
{
$systemstring .= $_SESSION['systemfield'][$i];
}
}
echo $systemstring;
?>
</td>
</tr>
<tr>
<td>
Mandanten:
<?php
$clients = "";
$count = count($_SESSION['clients']);
for ($i=0; $i<$count; $i++)
{
if ($i!=$count-1)
{
$clients .= $_SESSION['clients'][$i].", ";
}
else
{
$clients .= $_SESSION['clients'][$i];
}
}
echo $clients;
?>
</td>
</tr>
<tr>
<td>
Rollen:
<?php
$roles = "";
$count = count($_SESSION['roles']);
for ($i=0; $i<$count; $i++)
{
if ($i!=$count-1)
{
$roles .= $_SESSION['roles'][$i].", ";
}
else
{
$roles .= $_SESSION['roles'][$i];
}
}
echo $roles;
?>
</td>
</tr>
</table>
</div>
</div>
<?php
if ($_SESSION['roles']!="")
{
echo"<form method='post'>";
echo"<input type='submit' name='print' value='Antrag ausfüllen und Drucken' /><br />";
echo"<input type='submit' name='backtoroles' value='zurück' />";
echo"</form>";
}
?>
<br /><br />
</div>
</center>
</body>
</html>
und die systemenviroment.phpPHP-Code:<div id="userdatafield" class="choicefield">
<div class="subtitle"> :: Nutzerdaten </div>
<hr />
<form method="post" name="userdata" id="firstform">
<table>
<tr>
<td class="leftcol">
<div class="uservalues"> Name: </div>
<div class="uservalues"> Vorname: </div>
</td>
<td class="rightcol">
<input type="text" id="name" name="name" class="uservaluefields" value="" onblur="checkinput_userdata(this)" /> <br />
<input type="text" id="vorname" name="vorname" class="uservaluefields" value="" onblur="checkinput_userdata(this)"/> <br />
</td>
<td class="leftcol">
<div class="uservalues"> Straße: </div>
<div class="uservalues"> PLZ: </div>
<div class="uservalues"> Ort: </div>
</td>
<td class="rightcol">
<input type="text" id="strasse" name="strasse" class="uservaluefields" value="" onblur="checkinput_userdata(this)"/> <br />
<input type="text" id="plz" name="plz" class="uservaluefields" value="" onblur="checkinput_userdata(this)"/> <br />
<input type="text" id="ort" name="ort" class="uservaluefields" value="" onblur="checkinput_userdata(this)"/> <br />
</td>
<td class="leftcol">
<div class="uservalues"> Telefon: </div>
<div class="uservalues"> E-Mail: </div>
</td>
<td class="rightcol">
<input type="text" id="telefon" name="telefon" class="uservaluefields" value="" onblur="checkinput_userdata(this)"/> <br />
<input type="text" id="email" name="email" class="uservaluefields" value="" onblur="checkinput_userdata(this)"/> <br />
</td>
</tr>
</table>
<br />
:: Antragsgrund und Antragsgültigkeit
<hr />
<table>
<tr>
<td class="leftcol">
<div class="uservalues" > von: </div>
</td>
<td class="rightcol">
<input type="text" id="begindate" class="uservaluefields2" name="Start" value="" onblur="existdatechecker(this)"/>
<img src="../images/icons/icon_kalender.gif" id="Von-Kalender" alt="Von-Kalender" onclick="displayDatePicker('Start', false, 'dmy', '.')"/>
</td>
<td class="leftcol">
<div class="uservalues"> bis: </div>
</td>
<td class="rightcol">
<input type="text" id="enddate" class="uservaluefields2" name="Ende" onblur="existdatechecker(this)" value=""/>
<img src="../images/icons/icon_kalender.gif" id="Bis-Kalender" alt="Bis-Kalender" onclick="displayDatePicker('Ende', false, 'dmy', '.')"/>
</td>
<td class="leftcol">
<div class="uservalues"> Grund: </div>
</td>
<td class="rightcol">
<select name="Grund" class="uservaluefields" size="1" id="reason_choice" style="width:136px">
<option value="">bitte auswählen</option>
<option value="Neueinrichtung">Neueinrichtung</option>
<option value="Löschung">Löschung</option>
<option value="Sperrung">Sperrung</option>
<option value="Änderung">Änderung</option>
</select>
</td>
</tr>
</table>
<br />
<div class="buttoncontainer" style="">
<input type="submit" value="weiter" id="firstbutton" onclick="return checkallinputs()" />
<input type="reset" onclick="first_reset()" value="zurücksetzen" />
</div>
</div>
PHP-Code:<form name="systemenvironment" method="post" >
<div id="systemenvironmentfield" class="choicefield" style="">
<div class="subtitle"> :: Auswahl - Systemlandschaft</div>
<hr />
<table class="systemenvironment" style="border:1px">
<?php
$link = mysql_connect("localhost", "root", "");
if (!$link)
die("Kann den Server nicht erreichen.");
if (!mysql_select_db("nutzerantraege", $link))
die("Kann die Datenbank nicht anwählen.");
$sql = "SELECT DISTINCT `Systemlandschaft` FROM `nutzerantrag` ORDER BY `Systemlandschaft` ASC ";
$result = mysql_query($sql);
$num_results = mysql_num_rows($result);
//echo "<tr>\n";
//echo "<td class='normalcol'>\n";
for ($i=0; $i < $num_results; $i++)
{
$systemenvironment[$i]= mysql_result($result,$i,0);
//echo $systemenvironment[$i];
};
echo "<tr>\n";
echo "<td class='normalcol'>\n";
for ($a=0; $a < $num_results; $a=$a+3)
{
echo "<input type='radio' name='sysenvi' value='".$systemenvironment[$a]."'/>".$systemenvironment[$a]."<br />\n";
$max=$a;
};
echo "</td>\n";
echo "<td class='normalcol'>\n";
for ($b=1; $b < $num_results; $b=$b+3)
{
echo "<input type='radio' name='sysenvi' value='".$systemenvironment[$b]."'/>".$systemenvironment[$b]."<br />\n";
if (($b+2 == $max) and ($num_results%3==1))
{
echo "<br />\n";
}
};
echo "</td>\n";
echo "<td class='normalcol'>\n";
for ($c=2; $c < $num_results; $c=$c+3)
{
echo "<input type='radio' name='sysenvi' value='".$systemenvironment[$c]."'/>".$systemenvironment[$c]."<br />\n";
if (($c+1 == $max) and ($num_results%3>=1))
{
echo "<br />\n";
}
};
echo "</td>\n";
echo "</tr>\n";
mysql_close($link);
?>
</table>
<br />
<div class="buttoncontainer" style="">
<input type="submit" value="weiter"/>
<input type="submit" value="zurück" name="backtouserdata" />
<input type="reset" value="zurücksetzen"/>
</div>
</div>
</form>
-
05.08.09 09:59 #8
Hi,
sorry, aber fehlt da nicht die system.php ?
Das ist, nebenbei bemerkt, unsauber. Du kannst str_replace() Arrays mit beliebig vielen Werten übergeben:PHP-Code:$antrag = file_get_contents('Muster.rtf');
$antrag = str_replace('==Start==', $_SESSION['Start'], $antrag);
$antrag = str_replace('==Ende==', $_SESSION['Ende'], $antrag);
$antrag = str_replace('==Grund==', $_SESSION['Grund'], $antrag);
$antrag = str_replace('==Name==', $_SESSION['name'], $antrag);
$antrag = str_replace('==Vorname==', $_SESSION['vorname'], $antrag);
// etc.
$antrag = str_replace('==Rollen==', $_SESSION['roles'], $antrag);
GrußPHP-Code:$search = array('==Start==', '==Ende==',);
$replace = array($_SESSION["Start"], $_SESSION["Ende"],);
$antrag = str_replace($search, $replace, file_get_contents('Muster.rtf'));
-
danke für den hinweis.
aber die system.php heißt wie ich zuvor geschrieben hab: systemenvironment.php ich habs in den vorherigen posts nur kürzer gefasst um keine verwirrung zu stiften. also siehe meinen vorherigen post die fettgeschriebenen Hinweise.
zu dem hab ich auch geschrieben, dass nur die ersten beiden formulare included werden, da schon bei diesen beiden der fehler auftritt.
demnach fehlen auch die clients.php und clientroles.php... tut ja aber zu nächst nicht zur sache es soll wirklich nur um die ersten beiden formulare gehen userdata.php und systemenvironment.phpGeändert von Greyschen (05.08.09 um 12:18 Uhr)
-
Problem gefunden (mehr oder weniger)
Es lag/liegt an der Konfiguration des Servers. Auf diesem laufen in einem Anwendungspool ASP Seiten vollständig und PHP Seiten nur begrenzt. Also entschuldigt mich für diesen sinnlosen Hilfe-post.
Es lag auch nicht an der PHP.ini... Da ist irgendwas mit dem Server falsch konfiguriert...
also ab hier Thread closed
Ähnliche Themen
-
Vermutlich Sessionproblem - Login
Von humsdigga im Forum PHPAntworten: 6Letzter Beitrag: 05.07.09, 10:46 -
Sessionproblem
Von leuktra im Forum PHPAntworten: 7Letzter Beitrag: 30.12.07, 21:13 -
Sessionproblem
Von MaxMara im Forum PHPAntworten: 5Letzter Beitrag: 30.05.06, 14:07 -
Sessionproblem
Von Wolfsbein im Forum PHPAntworten: 8Letzter Beitrag: 31.10.02, 19:50





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren