将变量从一个脚本传递到另一个脚本?

时间:2013-08-17 17:59:16

标签: php jquery html sql

所有

我一直在努力解决这个问题,我不确切地知道我做错了什么。我有一个PHP文件,里面有多个脚本,包括PHP和jquery部分。我正在尝试将PHP变量从html Head部分传递给Body。每个都在他们自己的PHP脚本部分,因为我之间有一个jquery脚本,也在头部。以下是相关代码。如何将$ reset_question php变量从顶部传递到底部?

我刚刚添加了“提交3”按钮以显示我遇到问题的表单。也许在我的语法中有什么东西?

<head>
<?php
  require_once('../connectvars.php');
  session_start();
  $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
  // Clear the error message
  $error_msg = "";

  // other code that I'm not having a problem with

if (!isset($_SESSION['email'])) {
if (isset($_POST['submit3'])) {

  // Grab the user-entered log-in data
  $email = mysqli_real_escape_string($dbc, trim($_POST['email']));
  $first_name = mysqli_real_escape_string($dbc, trim($_POST['first_name']));
  $last_name = mysqli_real_escape_string($dbc, trim($_POST['last_name']));

  if (!empty($first_name) && !empty($last_name) && !empty($email) ) {
    // Make sure someone isn't already registered using this username
    $query = "SELECT * FROM user_database WHERE email = '$email' AND first_name = '$first_name' AND last_name = '$last_name'";
    $data = mysqli_query($dbc, $query);
    if (mysqli_num_rows($data) == 1) {
      // The username exists
      $query = "SELECT reset_question FROM user_database where email='$email'";
      mysqli_query($dbc, $query);

      // Confirm success with the user
      while($row = mysqli_fetch_array($data)) {
        $reset_question = $row['reset_question'];
      }
        exit();
      }
      else {
      // An account doesn't exist for this e-mail
        echo '<p class="error">All of your information was not recognized. Please complete the information correctly or sign-up to register.</p>';
        $email = "";
      }
    }
    else {  
      echo '<p class="error">You must enter all of the required data.</p>';
    }
$_SESSION['reset_question'] = $reset_question;
  }
}


// Insert the page header
require_once('../reference/header_sub.php');

// If the session var is empty, show any error message and the log-in form; otherwise confirm the log-in
if (empty($_SESSION['email'])) {
echo '<p class="error">' . $error_msg . '</p>';
// closing bracket is down below 
?>

// other code that I'm not having a problem with

//jquery script
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script>
<script>

// jquery isn't having any issues that I can see

</script>

</head>

<body>

<div id="allcontent" style="position:relative;top:-20px;">

<?php
// Insert the tabbed navigation
  require_once('../reference/tabs_sub.php');
?>

<br />

<fieldset> 

<!-- html forms that I've not having problems with -->

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <table class="reset">
  <tr><td colspan="2" ><legend style="font-weight:bold;font-size:15px;height:25px;">Reset your password</legend></td></tr>
  <tr><td class="register" ><label for="first_name">First Name:</label></td>
  <td><input style="width:200px;" type="text" name="first_name" value="<?php if (!empty($first_name)) echo $first_name; ?>" /><br /></td></tr>
  <tr><td class="register" ><label for="last_name">Last Name:</label></td>
  <td><input style="width:200px;" type="text" name="last_name" value="<?php if (!empty($last_name)) echo $last_name; ?>" /><br /></td></tr>
  <tr><td class="register" ><label for="email">E-mail:</label></td>
  <td><input style="width:200px;" type="text" name="email" value="<?php if (!empty($email)) echo $email; ?>" /><br /></td><td><input type="submit" value="Submit" name="submit3" class="submit3"/></td></tr>
  </table>
</form>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">  
  <table class="answer">
    <tr><td colspan="2" class="remember" >Please answer the following question!</td></tr>   
    <tr><td class="remember" >What is: <?php $_SESSION['reset_question']; ?>?</td></tr>
    <tr><td ><input style="width:200px;" type="text" name="reset_answer" value="<?php if (!empty($reset_answer)) echo $reset_answer; ?>"/></td></tr>
  </table>
</form>

</fieldset>

<?php
} // closing bracket from above opening bracket
else {
// Confirm the successful log-in
  echo('<p class="login">You are logged in as ' . $_SESSION['email'] . '.</p>');
  require_once('/download.php');
}
?>

<?php
// Insert the page footer
require_once('../reference/footer.php');
mysqli_close($dbc);
?>

</div>

</body>

2 个答案:

答案 0 :(得分:0)

看起来你的变量$ reset_question只存在于while循环的范围内

while($row = mysqli_fetch_array($data)) {
    $reset_question = $row['reset_question'];
    //....
}

而是在while循环之外初始化变量。

$reset_question = '';
while($row = mysqli_fetch_array($data)) {
    $reset_question = $row['reset_question'];
    //....
}

答案 1 :(得分:0)

从任何括号中声明您的变量。只需在PHP脚本范围内,您就可以在文件中的任何位置获取它,在较低的脚本中传递(访问)它不需要任何其他内容。

宣布/初始化它的最佳位置是

之前
$reset_question = 'Defaut Question';
if (!empty($first_name) && !empty($last_name) && !empty($email) )
{

如果您在条件中没有获得$ reset_question的任何内容,那么您将获得'Defaut Question'

Upadte:再试一次,我相信你至少会得到“什么是Defaut问题?”  在$reset_question = 'Defaut Question';之后写$error_msg = "";作为

$error_msg = "";
$reset_question = 'Defaut Question';