1

我试图简单地设置一个变量并将其传递回与调用相同的 PHP 脚本,但是它不起作用。

第一次运行脚本时,我看到了我希望在屏幕上看到的内容

您的商店是美国,您的语言是 en

如果我然后选择英国并按提交,我会看到以下行

您的商店是,您的语言是 en

我的示例代码是

<?php
if(isset($_POST['submit'])){
    $store = $_GET['store'];
    $lang=en;
}
else 
{
$store=143441;
$lang=en;
} 
switch ($store)
 {
case "143441":
$storename="USA";
break;
case "143444":
$storename="UK";
break;
}
?>
<head>
</head>
<body>
<form name="store" method="post" action="test.php">
<select name="Store">
<option value="143441">USA</option>
<option  value="143444">UK</option>
</select>
<INPUT TYPE="submit" name="submit" value="submit">
</form>
<?php  echo "Your store is " . $storename . " and your language is " . $lang; ?>
</body>
</html>
4

3 回答 3

1

您的示例代码:

if(isset($_POST['submit'])){
    $store = $_GET['store'];

您的问题是您正在混合 $_POST 和 $_GET。

由于您的表单正在执行 POST 操作,因此您应该对这两行都使用 $_POST。

如果您不确定它是一个帖子还是一个获取请求,您也可以使用 $_REQUEST,但通常在您的情况下使用 $_POST 会更好,因为您知道它总是一个帖子。

于 2010-10-01T09:33:47.267 回答
1

在第一个 if 子句中使用

$store = $_POST['Store'];  //be aware of the upper case!!!!!

代替

$store = $_GET['store'];

一切都会好起来的。

于 2010-10-01T09:38:25.370 回答
0

您应该使用$_POST['store']而不是,$_GET['store']因为它是一个 POST 请求参数。

<?php
if(isset($_POST['submit'])){
    $store = $_POST['store'];
    $lang='en';
}
else{
    $store=143441;
    $lang='en';
} 
switch ($store){
case "143441":
   $storename="USA";
   break;
case "143444":
   $storename="UK";
   break;
}
?>
于 2010-10-01T09:33:47.130 回答