我在使用SESSION变量时遇到了问题。我计划每次用户在generar.php脚本上点击“提交”时都会将数据添加到SQL中。我也指望第一个pag index.html的登录数据,这里是即时通讯有问题,每当我点击“提交”它将清理变量。我查了几个 论坛寻找答案,但我仍然没有答案。有任何想法吗?PHP - 如何在表单提交后继承SESSION变量
的index.html
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Creacion de receta</title>
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<body>
<br>
<div style="text-align: center;"><img style="width: 125px; height: 125px;" alt="Rpi" src="large_logo_white.png"><br></div>
<br>
<table style="text-align: left; margin-left: auto; margin-right: auto;">
<form method="post" action="generar.php">
<tbody>
<tr>
<td>Codigo del Medico</td>
<td><input name="v_codigo"><br>
</td>
</tr>
<tr>
<td>Cedula del paciente</td>
<td><input name="v_cedula"><br>
</td>
</tr>
<tr>
<td> Enviar</td>
<td align="right"><input name="submit" value="Enviar" type="submit"></td>
</tr>
</tbody>
</form>
</table>
<br>
</body>
</html>
generar.php
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Creacion de receta</title>
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<tbody>
<tr>
<td>Medicamento</td>
<td>
<select name="v_meds"><option>Seleccionar</option><option>Rojo</option><option>Verde</option><option>Azul</option><option>Amarillo</option><option>Blanco</option><option>Negro</option></select>
<br>
</td>
</tr>
<tr>
<td>Via</td>
<td>
<select name="v_via"><option>Seleccionar</option><option>Oral</option><option>Rectal</option><option>Nasal</option><option>Otica</option><option>Oftalmica</option><option>Vaginal</option><option>Topica</option></select>
<br>
</td>
</tr>
<tr>
<td>Frecuencia</td>
<td>
<select name="v_frec"><option>Seleccionar</option><option>6</option><option>8</option><option>12</option><option>24</option></select>
<br>
</td>
</tr>
<tr>
<td>Duracion</td>
<td>
<select name="v_dur"><option>Seleccionar</option><option>5</option><option>7</option><option>15</option><option>30</option><option>PRN10</option><option>PRN20</option><option>PRN30</option></select>
<br>
</td>
</tr>
<tr>
<td> Enviar</td>
<td align="right"><input name="submit" value="Enviar" type="submit"></td>
</tr>
<tr>
<td style="text-align: center;" colspan="2" rowspan="1"><a href="view.php">Ver historial de recetas</a></td>
</tr>
</tbody>
</form>
<?php
error_reporting(E_ALL);
session_start();
if (isset($_REQUEST['v_codigo']) || isset($_REQUEST['v_cedula'])) {
$codigo = $_REQUEST['v_codigo'];
$cedula = $_REQUEST['v_cedula'];
}
$_SESSION['sesion_codigo'] = $codigo;
$_SESSION['sesion_cedula'] = $cedula;
//$codigo1 = $_SESSION['sesion_codigo'];
//$cedula1 = $_SESSION['sesion_cedula'];
$tabla = 'p'.$cedula1;
print 'Codigo: ' . $codigo . '<br/>';
print 'Cedula: ' . $cedula . '<br/>';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name1 = $_POST['v_meds'];
\t $name2 = $_POST['v_via'];
\t $name3 = $_POST['v_frec'];
\t $name4 = $_POST['v_dur'];
if ($name1 == 'Seleccionar' || $name2 == 'Seleccionar' || $name3 == 'Seleccionar' || $name4 == 'Seleccionar') {
echo "Receta contiene errores, favor llenar correctamente el formulario.<br/>";
} else {
echo $name1 . $name2 . $name3 . $name4;
}
}
?>
</body>
</html>
EDIT 1: 我改变在session_start();到html文件的开头。但有同样的结果。我第一次选择变量$ codigo和$ cedula他们是正确的设置,当我点击提交按钮他们disapear。这个想法是,点击提交按钮后,我保持losgin数据连续发送多个请求。
下面的每个步骤的图像。再次感谢所有花时间回答的人。
登录数据: codigovar cedulavar
First time the page is loaded After clicking the submit button
编辑2:我还使用@RamRaider码建议填写,只有当他们被填充的变量。
要使用会话,您需要包含'session_start();'在php脚本的顶部 - 你有没有这样做? – RamRaider
是的! <?php error_reporting(E_ALL); session_start(); – JCarax
你想说会话变量在表单提交后会被破坏? –