混淆通过多个脚本将变量传递给php

时间:2014-11-15 02:30:30

标签: javascript php variables

我很难将变量从第一种形式传递给第二种形式。涉及四个脚本:debug.php,getVar.php,printme.php和scripta.php。运行debug.php并输入“blah”作为“密码继续”,从下拉列表中选择scripta.php并点击“提交”,我希望看到所有脚本的$ dbpass =“blah”。我在第一页看到它,但是在按下第二页“提交”按钮后,一旦在“printme.php”内部忘记了该值。我怀疑这与变量范围有关。任何帮助表示赞赏。

debug.php:

<html>
<body>
<form name="gateway" action= "" method="POST">
<fieldset>
<label>password to continue:</label>
<input type="text" id="dbpass" name="dbpass">
<label>Select Script:</label>
<select name="scriptSelect" id="scriptSelect">
<option value="">Please make a selection</option>
<option value="scripta.php">scripta</option>
</select>
<input name="updateGateway" type="submit" value="Submit">
<input name="resetForm" id="resetForm" type="reset" value="Reset Form">
</fieldset>
</form>
</body>
</html>

<script type="text/javascript">
document.getElementById('scriptSelect').addEventListener('change', function(e){
        var selected_value = e.target.value;
        document.forms['gateway'].action = selected_value;
        alert(selected_value);
});
</script>

scripta.php:

<html>
<body>
<?php require 'getVar.php'; ?>
<form name="secondform" action= "printme.php" method="POST">
<fieldset>
<label>Hit submit to continue:</label>
<input name="updateScripta" type="submit" value="Submit">
</fieldset>
</form>
</body>
</html>

getVar.php:

<?php
if (isset($_POST['dbpass'])) {
        $dbpass = @$_POST["dbpass"];
}
echo "you entered $dbpass";
?>

printme.php:

<?php
echo "Inside of printme, you entered $dbpass";
?>

由于

2 个答案:

答案 0 :(得分:0)

  1. 在scripta.php中,在表单标记内的某处添加行<input type="hidden" name="dbpass" value="<? echo $dbpass ?>" />
  2. 在printme.php中,在页面顶部添加此行<? $dbpass = $_POST['dbpass'] ?>
  3. 您提供的脚本中可能存在其他错误。完成上述更改后请回来查看。

答案 1 :(得分:0)

Mate ......这不是它的工作方式...... 每个请求都是独立的 ......

为了将值从一个脚本传递到另一个脚本,您可以使用会话($_SESSION),或者需要重新发布变量。

另外,我不知道你要完成什么,而是以明文形式传递密码......


重新发布变量

在scripta.php中添加此

<input name="dbpass" value="<?php $dbpass; ?>" type="hidden"/>

到你的表格。这会将$dbpass中包含的值发送到隐藏值。

然后,在printme.php中,您需要检索该值,因此只需要getVar.php script

require 'getVar.php';
echo "Inside of printme, you entered $dbpass";

使用会话:

更改 getVar.php

session_start();
if (isset($_POST['dbpass'])) {
    $_SESSION['dbpass'] = $_POST["dbpass"]; // you don't need that @
} else {
    $_SESSION['dbpass'] = null;
}

然后在后续脚本中,每次要访问dbpass时只需使用

session_start();
$_SESSION['dbpass']

示例:

<?php
session_start();
$_SESSION['dbpass']
echo "Inside of printme, you entered $dbpass";