其想法是,一个脚本使用参数调用另一个脚本,然后被调用的脚本使用相同的参数重新调用它的调用脚本。
调用脚本
<?php
//search_members - Test.php
$id = '9999';
$search_1 = '';
$search_2 = 'Bloggs';
$sort = '3';
echo '<a class="results" href="editmember - TEST.php?id=' . $id . '&search_1=' . $search_1 . '&search_2=' . $search_2 . '&sort=' . $sort .'">View</a>';
?>
调用的脚本
//edit_member - TEST.php
session_start();
if (isset($_POST['exit']))
{
$id = $_POST['id'];
$first_name = $_POST['first_name'];
//Passed Parameters
//$search_1 = $_POST['search_1'];
//$search_2 = $_POST['search_2'];
//$sort = $_POST['sort'];
echo 'Display Parameters 2</p>';
echo 'search_1' . $search_1 . '</p>'; //NOTDEFINED error???
echo 'search_2' . $search_2 . '</p>'; //NOTDEFINED error???
echo 'sort' . $sort . '</p>'; //NOTDEFINED error???
echo '</p>';
echo '<a class="results" style="bold;color:black" href="search_members - Test.php?search_1=' . $search_1 . '&search_2=' . $search_2 . '&sort=' . $sort. '">Continue Search</div>'; //V2
exit();
}
else
{
$id = '9999';
$first_name = 'Fred';
// Set passed parameter variables
$search_1 = $_GET['search_1'];
$search_2 = $_GET['search_2'];
$sort = $_GET['sort'];
echo 'Display Parameters 1</p>';
echo 'search_1' . $search_1 . '</p>';
echo 'search_2' . $search_2 . '</p>';
echo 'sort' . $sort . '</p>';
echo '</p>';
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr><td><label for="id">ID:</label></td>
<td><input type="text" id="id" name="id" maxlength="6" size="6" value="<?php if (!empty($id)) echo $id; ?>"></input></td>
</tr>
<tr><td><label for="first_name">First Name:</label></td>
<td><input type="text" id="first_name" name="first_name" maxlength="30" size="30" value="<?php if (!empty($first_name)) echo $first_name; ?>"></input></td>
</tr>
<!--Passed Parameters Stored
<input type="hidden" id="search_1" name="search_1" value="<?php echo $search_1; ?>"></label>
<input type="hidden" id="search_2" name="search_2" value="<?php echo $search_2; ?>"></label>
<input type="hidden" id="sort" name="sort" value="<?php echo $sort; ?>"></label>
-->
</table>
<p class="text_centered">
<input type="submit" value="Exit" name="exit" />
<input type="submit" value="Update" name="update" />
<input type="submit" value="Delete" name="delete" />
</p>
</form>
</div>
<?php
}
?>
问题是为什么上面显示的格式的脚本会为保存参数的变量产生“未定义”错误。这就像 $_GET 设置的变量在 POST 后被清除。 有人能解释一下这是为什么吗?
如果取消注释下面所示的部分,则脚本可以正常工作。
//Passed Parameters
//$search_1 = $_POST['search_1'];
//$search_2 = $_POST['search_2'];
//$sort = $_POST['sort'];
<!--Passed Parameters Stored
<input type="hidden" id="search_1" name="search_1" value="<?php echo $search_1; ?>"></label>
<input type="hidden" id="search_2" name="search_2" value="<?php echo $search_2; ?>"></label>
<input type="hidden" id="sort" name="sort" value="<?php echo $sort; ?>"></label>
-->
这可能是由于完全无法理解 php 脚本的工作原理......但我只是在学习。
提前感谢您的回复:)
$_GET、$_POST 和所有其他变量都会针对每个请求重置。 PHP 文件针对请求运行,当 HTML 发送到浏览器时,程序退出,变量被清除。
要存储请求之间的任何信息,您需要将它们放入
$_SESSION
数组中。
$_SESSION['search_1'] = $_GET['search_1'];
$_SESSION['search_2'] = $_GET['search_2'];
$_SESSION['sort'] = $_GET['sort'];
您可以访问它们
echo '<p>search_1' . $_SESSION['search_1'] . '</p>'; //NOTDEFINED fixed
echo '<p>search_2' . $_SESSION['search_2'] . '</p>'; //NOTDEFINED fixed
echo '<p>sort' . $_SESSION['sort'] . '</p>'; //NOTDEFINED fixed