我想编写一个像这样工作的网页:
- 输入用户的数字,
- 使用数字显示一些信息,
- 为用户提供将该号码和信息用于某种目的的选项,
- 如果要求,请使用提供的号码和信息。
我在最后一步遇到问题 - 在用户选择使用该号码的选项后,号码消失了 - 它不再设置。我尝试将数字设置为静态,这就是我在 PHP 以外的语言中执行此操作的方式。我还尝试了一个名为$GLOBALS数组的东西,但这并没有帮助。
下面是说明该问题的源代码。
在 PHP 中必须有一种标准或原型来处理这种交互的方法,但我并不精通它。任何建议或更正将不胜感激!
<h2>Give Me a Number</h2>
<form method="post">
<label for="MyNumber">Number Please</label>
<input type="text" id="MyNumber" name="MyNumber">
<input type="submit" name="view" value="View Number">
</form>
<?php
static $MyNumber;
if (isset($_POST['view']))
{
try
{
// Get the Number from the post variable for binding
$MyNumber = $_POST['MyNumber'];
echo "Your Number is ", $MyNumber, " on Line 24";
echo "<br>", "Your GLOBAL Number is ", $GLOBALS['MyNumber'], " on Line 25";
}
catch(PDOException $error)
{
echo $sql . "<br>" . $error->getMessage();
}
}
if (isset($_POST['view']))
{
if ($MyNumber > 0 )
{ ?>
<h2>Again, Your Number is <?php echo $MyNumber, " on Line 40"; ?> </h2>
<h2>Again, Your Number is <?php echo $GLOBALS['MyNumber'], " on Line 41"; ?> </h2>
<table>
<thead>
<tr>
<th>My Number</th>
<th>Global Number</th>
</tr>
</thead>
<tbody>
<?php
for ($i = 1; $i <= $MyNumber; $i++)
{ ?>
<tr>
<td><?php echo $MyNumber; ?></td>
<td><?php echo $GLOBALS['MyNumber']; ?></td>
</tr>
<?php
} ?>
</tbody>
</table>
<?php
}
else
{ ?>
<blockquote>No NUMBER !!!! on Line 68</blockquote>
<?php
} ?>
<form method="post">
<input type="submit" name="use" value="Use My Number">
</form>
<?php }?>
<?php
//////////////// USE the NUMBER //////////////////
if (isset($_POST['use']))
{
if (isset($MyNumber) )
{
echo "I can USE (", $MyNumber, ") My Number !!!";
echo "<br>", "and(", $GLOBALS['MyNumber'], ") My GLOBAL Number!";
}
else
{
echo "Hey, what happened to (", $MyNumber, ")? I wanted to use it!";
echo "<br>", "Hey, GLOBAL (", $GLOBALS['MyNumber'], ") is gone also!";
}
}
?>
你不应该在 PHP 中使用全局变量。这被认为是不好的做法。
您应该做的是使用"使用我的号码"在表单中创建隐藏输入。这样,您可以将您的号码传递给下一个帖子。
<form method="post">
<input type="hidden" name="MyNumber" value="$_POST['MyNumber']">
<input type="submit" name="use" value="Use My Number">
</form>
在多个请求中存储数据的另一种方法是使用会话。
在通行证的顶部设置session_start((;以激活会话。然后,您可以将您的号码存储到 $_SESSION['MyNumber'] 中。然后,此变量将保留在多个页面请求中。更多信息可以在这里找到。