dsklzerpx64815631 2016-08-05 03:30 采纳率: 100%
浏览 18

无法弄清楚错误页面被触发的原因

Why does unexpectedReserveError.html get triggered? As the code stands, does that mean the session token are not matching? I'm super bad at PHP ...

EDIT

Adding a description of the problem. As this code stands, it works fine for its purposes, ie, there's a htm form (second code set), and that transmits its variables to the backend page (first code set). What is puzzling to me is that the error page randomly happens. And a lot of people complain that the error page pops up, and thus abandon the page.

I've only been able to trigger the error page once, and only once, and even with that, there were no obvious clues why that happened. Thus my question on top is that .. since if you look at the code, you can see that there is a session token matching which if it doesn't work, it triggers the unexpectedReserveError.html page? (there are two error pages, the header('location: URL/reserveError.html'); & header('location: URL/unexpectedReserveError.html');

Bottom line, I'm trying to figure out under what circumstances the unexpectedReserveError page is getting triggered because it's causing problems.

BackendPage

<?php

session_start();

  if ($_POST['token'] == $_SESSION['token']) {

        foreach($_POST as $key => $value) {
        if(ini_get('magic_quotes_gpc'))
          $_POST[$key] = stripslashes($_POST[$key]);
          $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
    }



                    $nights = $_POST['nights']; 
                    $arrivals = $_POST['arrivals'];
                    $male = $_POST['male']; 
                    $female = $_POST['female']; 
                    $rooms = $_POST['rooms']; 
                    $type = $_POST['type']; 
                    $name = $_POST['name']; 
                    $address = $_POST['address']; 
                    $zip = $_POST['zip']; 
                    $telephone = $_POST['telephone']; 
                    $email = $_POST['email_again']; 
                    $cell = $_POST['cell']; 
                    $message = $_POST['message']; 
                    $date = $_POST['date'];

                    require 'PHPMailerAutoload.php';

                  $mail = new PHPMailer;
                  $mail->CharSet = 'UTF-8';
                  $mail->isSMTP();  
                  //$mail->SMTPDebug = 4; // debugging: 1 = errors and messages, 2 = messages only
                  $mail->Host = 'tls://smtp.gmail.com:587'; // Specify main and backup SMTP servers
                  $mail->SMTPAuth = true;                               // Enable SMTP authentication
                  $mail->Username = '';                 // SMTP username
                  $mail->Password = ''; 
                  $mail->addReplyTo( '', 'Hotel' );
                  $mail->AddCC('', 'Hotel');
                  $mail->addAddress(  $email, $first_name );
                  $mail->SetFrom('', '');
                  $mail->isHTML(true);                             
  // Set email format to HTML

                    $mail->Subject = 'Hotel Room Request';


                    $mail->Body = "<table width='600'><tr><td colspan='2' height='20'><p style='text-align:center; font-size:20px; color:#ddd; padding:0px; margin:0px;'>Copy of Your Reserve Form</p></td></tr>"
                                  ."<tr><td colspan='2'  height='80' width='600'><p style='color:#d1502d;font-size:50px;text-align:center;padding:0px; margin:0px;'>Hotel</p></td></tr>"
                                                ."<tr><td colspan='2'  height='60' width='600' style='text-align:center; color:#606060;font-size:20px;padding:0px; margin:0px;'>Los Angeles, CA </td></tr>"
                                                ."<tr><td colspan='2'  height='30' width='600' style='text-align:center;'><h3 style='color:#d1502d; '>Come and Explore  Los Angeles</h3></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Number of Nights: </p></td><td height='20' width='300'> <p style='font-size:20px; color:gray; padding:10px; margin:0px;'>$nights</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Arrival Time: </p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px;'>$arrivals</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Date:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $date</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Number of Guests - (Gender: male): </p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px;'>$male</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Number of Guests - (Gender: female):</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $female</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Number of Rooms:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $rooms</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Type of Room:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $type</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Name:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $name</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Address:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $address</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Zip:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $zip</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Telephone:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $telephone</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Cell:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $cell</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Email:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $email</p></td></tr>"
                                                ."<tr><td height='20' width='300'><p style='font-size:20px; color:gray; padding:10px; margin:0px; text-align:right;'>Your Message:</p></td><td height='20' width='300'><p style='font-size:20px; color:gray; padding:0px; margin:10px;'> $message</p></td></tr>"
                                                ."<tr><td colspan='2'  height='15' width='600'><p style=' text-align:center;padding:0px; margin:0px;'><a style='color:#d1502d;font-size:15px;text-align:center;padding:0px; margin:0px;text-decoration:none;'href='url'>Visit Our Site</a></p></td></tr></table>";


                    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';

                    if(!$mail->send()) {
                        header('location: URL/reserveError.html');

                    } else {
                        header('location: URL/reserveResult.html');

                    }

    }

    else {
            header('location: URL/unexpectedReserveError.html');
    }

This is the html form page:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="utf-8">
  <link href="favicon.ico" rel="icon" type="image/x-icon" />
  <title>Hotel</title>
  <link rel="stylesheet" type="text/css" href="css/default.css">
  <link rel="stylesheet" type="text/css" href="css/default.date.css">  
  <link href="css/bootstrap.min.css" rel="stylesheet" />
  <link href="css/style.css" rel="stylesheet" />
    <style type="text/css">
    .error {
      color:red;
    }
    body {
      padding-top: 146px;
      padding-top:175px;
    }
    .language_choice_english {
      padding-right: 1%
    }

    .language_choice_japanese {
        padding-right: 3%;
    }
  </style>
</head>


<body>

    <script src="js/jquery-1.11.2.min.js"></script>
    <script src="js/jquery.validate.js"></script>
    <script src="js/additional-methods.js"></script>
      <script> 
          $(document).ready(function () {

              $('#reserveForm').validate({ 
                  rules: {
                      name: {
                          required: true
                      },
                      address: {
                          required: true
                      },
                      zip: {
                        required: true
                      },
                      telephone: {
                        required: true
                      },
                      email: {
                        required: true
                      },
                      email_again: {
                        equalTo: "#cemail"
                      },
                      nights: {
                        required: true
                      },
                      arrivals: {
                        required: true
                      },
                      male: {
                        required: true
                      },
                      female: {
                        required: true
                      },
                      rooms: {
                        required: true
                      },
                      type: {
                        required: true
                      },
                      date: {
                        required: true
                      }
                  }
              });
          });
      </script>
</head>
<body>

<?php
session_start(); //allows use of session variables

if (!isset($_SESSION['token']) && $_SESSION['token'] == $_POST['token']) {

  $token = base64_encode(openssl_random_pseudo_bytes(32));
  $_SESSION['token'] = $token;
}

else {
  $token = base64_encode(openssl_random_pseudo_bytes(32));
  $_SESSION['token'] = $token;
}


?>


  <nav class="navbar navbar-default navbar-fixed-top">
    <a class="brand pull-left" href="index.html">
            <img id="Logo" src="./images/logo.gif" alt="Hotel">
            </a>
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
       <a class="navbar-brand" href="index.html"><span id="overall_title">Hotel</span><small id="description_of_city">Los Angeles</small></a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav navbar-right">
        <li><a href="about.html">About</a></li>
        <li><a href="rooms.html">Rooms & information</a></li>
        <li><a href="reserve.php">Book to Reserve</a></li>
        <li><a href="location.html">Location Info</a></li>
        <li><a href="additional.html">Additional Info</a></li>
        <li><a href="contact.php">Contact</a></li>
      </ul>
    </div><!-- /.navbar-collapse -->
    <ul class="nav navbar-nav navbar-right">
        <p class="pull-right language_choice_english"><a href="reserve.php">English</a></p>
        <p class="pull-right language_choice_japanese"><a href="reserve-ja.php"><span lang="ja">日本語</span></a></p>
    </ul>
  </div><!-- /.container-fluid -->
</nav>

<div id="main-container" class="col-xs-12">


  <form class="form-horizontal"  method="POST" action="bookInformation.php" id="reserveForm" autocomplete="off">

 <p><a href="rules.html" target="_blank">Rules and Regulations of  Hotel</a></p>

            <div>
            <label>* Required fields</label>
            </div>


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


            <div class="form-group">
              <label for="cnights" class="col-sm-2 control-label">* Number of Nights</label>
              <div class="col-sm-10">
              <select id="cnights" class="form-control" name="nights">                 
                <option value="">Number of Nights</option>
                <option <?php if ($nights == 1 ) echo 'selected' ; ?> value="1">1</option>
                <option <?php if ($nights == 2 ) echo 'selected' ; ?> value="2">2</option>
                <option <?php if ($nights == 3 ) echo 'selected' ; ?> value="3">3</option>
                <option <?php if ($nights == 4 ) echo 'selected' ; ?> value="4">4</option>
                <option <?php if ($nights == 5 ) echo 'selected' ; ?> value="5">5</option>
                <option <?php if ($nights == 6 ) echo 'selected' ; ?> value="6">6</option>
                <option <?php if ($nights == 7 ) echo 'selected' ; ?> value="7">7</option>
                <option <?php if ($nights == 8 ) echo 'selected' ; ?> value="8">8</option>
                <option <?php if ($nights == 9 ) echo 'selected' ; ?> value="9">9</option>
                <option <?php if ($nights == 10 ) echo 'selected' ; ?> value="10">10</option>
              </select>
            </div>
            </div>


            <div class="form-group">
              <label for="carrivals" class="col-sm-2 control-label">* Time of Arrival</label>
               <div class="col-sm-10">
              <select id="carrivals" class="form-control" name="arrivals">
                <option value="">Time of Arrival</option>
                <option <?php if ($arrivals == 14 ) echo 'selected' ; ?> value="14">14</option>
                <option <?php if ($arrivals == 15 ) echo 'selected' ; ?> value="15">15</option>
                <option <?php if ($arrivals == 16 ) echo 'selected' ; ?> value="16">16</option>
                <option <?php if ($arrivals == 17 ) echo 'selected' ; ?> value="17">17</option>
                <option <?php if ($arrivals == 18 ) echo 'selected' ; ?> value="18">18</option>
                <option <?php if ($arrivals == 19 ) echo 'selected' ; ?> value="19">19</option>
                <option <?php if ($arrivals == 20 ) echo 'selected' ; ?> value="20">20</option>
                <option <?php if ($arrivals == 21 ) echo 'selected' ; ?> value="20">21</option>
              </select>
            </div>
            </div>

          <div class="form-group">
            <label for="cdate" class="col-sm-2 control-label">* Check-In Date</label>
              <div class="col-sm-10">
                <input class="datepicker" type="text" placeholder="Please pick a date" id="cdate" name="date">
              </div>
          </div>


           <div class="form-group">
              <label for="cmale" class="col-sm-2 control-label">* Number of People</label>
               <div class="col-sm-10">
              <select id="cmale" class="form-control" name="male">
                <option value="">Gender Male</option>
                <option <?php if ($male === 0 ) echo 'selected' ; ?> value="0">0</option>
                <option <?php if ($male == 1 ) echo 'selected' ; ?> value="1">1</option>
                <option <?php if ($male == 2 ) echo 'selected' ; ?> value="2">2</option>
                <option <?php if ($male == 3 ) echo 'selected' ; ?> value="3">3</option>
                <option <?php if ($male == 4 ) echo 'selected' ; ?> value="4">4</option>
                <option <?php if ($male == 5 ) echo 'selected' ; ?> value="5">5</option>
                <option <?php if ($male == 6 ) echo 'selected' ; ?> value="6">6</option>
                <option <?php if ($male == 7 ) echo 'selected' ; ?> value="7">7</option>
                <option <?php if ($male == 8 ) echo 'selected' ; ?> value="8">8</option>
                <option <?php if ($male == 9 ) echo 'selected' ; ?> value="9">9</option>
                <option <?php if ($male == 10 ) echo 'selected' ; ?> value="10">10</option>
              </select>
            </div>
            </div>


            <div class="form-group">
              <label class="col-sm-2 control-label">* Number of People</label>
               <div class="col-sm-10">
              <select class="form-control" name="female">
                <option value="">Gender Female</option>
                <option <?php if ($female === 0 ) echo 'selected' ; ?> value="0">0</option>
                <option <?php if ($female == 1 ) echo 'selected' ; ?> value="1">1</option>
                <option <?php if ($female == 2 ) echo 'selected' ; ?> value="2">2</option>
                <option <?php if ($female == 3 ) echo 'selected' ; ?> value="3">3</option>
                <option <?php if ($female == 4 ) echo 'selected' ; ?> value="4">4</option>
                <option <?php if ($female == 5 ) echo 'selected' ; ?> value="5">5</option>
                <option <?php if ($female == 6 ) echo 'selected' ; ?> value="6">6</option>
                <option <?php if ($female == 7 ) echo 'selected' ; ?> value="7">7</option>
                <option <?php if ($female == 8 ) echo 'selected' ; ?> value="8">8</option>
                <option <?php if ($female == 9 ) echo 'selected' ; ?> value="9">9</option>
                <option <?php if ($female == 10 ) echo 'selected' ; ?> value="10">10</option>
              </select>
            </div>
            </div>




            <div class="form-group">
              <label class="col-sm-2 control-label">* Number of Rooms</label>
               <div class="col-sm-10">
              <select class="form-control" name="rooms">
                <option value="">Number of Rooms</option>
                <option <?php if ($rooms == 1 ) echo 'selected' ; ?> value="1">1</option>
                <option <?php if ($rooms == 2 ) echo 'selected' ; ?> value="2">2</option>
                <option <?php if ($rooms == 3 ) echo 'selected' ; ?> value="3">3</option>
                <option <?php if ($rooms == 4 ) echo 'selected' ; ?> value="4">4</option>
                <option <?php if ($rooms == 5 ) echo 'selected' ; ?> value="5">5</option>
                <option <?php if ($rooms == 6 ) echo 'selected' ; ?> value="6">6</option>
                <option <?php if ($rooms == 7 ) echo 'selected' ; ?> value="7">7</option>
                <option <?php if ($rooms == 8 ) echo 'selected' ; ?> value="8">8</option>
                <option <?php if ($rooms == 9 ) echo 'selected' ; ?> value="9">9</option>
                <option <?php if ($rooms == 10 ) echo 'selected' ; ?> value="10">10</option>
              </select>
            </div>
            </div>

            <div class="form-group">
              <label class="col-sm-2 control-label">* Type of Room</label>
               <div class="col-sm-10">
              <select class="form-control" name="type">
                <option value="">Type of Room</option>
                <option <?php if ($type == B ) echo 'selected' ; ?> value="B">B</option>
                <option <?php if ($type == C ) echo 'selected' ; ?> value="C">C</option>
                <option <?php if ($type == D ) echo 'selected' ; ?> value="D">D</option>
                <option <?php if ($type == E ) echo 'selected' ; ?> value="E">E</option>
                <option <?php if ($type == F ) echo 'selected' ; ?> value="F">F</option>
                <option <?php if ($type == G ) echo 'selected' ; ?> value="G">G</option>
                <option <?php if ($type == H ) echo 'selected' ; ?> value="H">H</option>
                <option <?php if ($type == I ) echo 'selected' ; ?> value="I">I</option>
                <option <?php if ($type == J ) echo 'selected' ; ?> value="J">J</option>
                <option <?php if ($type == K ) echo 'selected' ; ?> value="K">K</option>
              </select>
            </div>
            </div>

        <div class="form-group">
            <label for="cname" class="col-sm-2 control-label">* Name</label>
             <div class="col-sm-10">
                <input class="form-control" placeholder="Name" id="cname" type="text" name="name" value="<?php if(isset($name)) { echo $name; }?>">
              </div>
        </div>


            <div class="form-group">
                <label for="caddress" class="col-sm-2 control-label">* Address</label>
                 <div class="col-sm-10">
                <input class="form-control" id="caddress" placeholder="Address" type="text" name="address" value="<?php if(isset($address)) { echo $address; }?>">
                </div>
            </div>


            <div class="form-group">
                <label for="czip" class="col-sm-2 control-label">* Zip</label>
                 <div class="col-sm-10">
                <input id="czip" class="form-control" placeholder="Zip" type="text" name="zip" value="<?php if(isset($zip)) { echo $zip; }?>">
              </div>
            </div>


           <div class="form-group">
                <label for="ctelephone" class="col-sm-2 control-label">* Telephone Number</label>
                 <div class="col-sm-10">
                <input id="ctelephone" class="form-control" placeholder="Telephone Number" type="text" name="telephone" value="<?php if(isset($zip)) { echo $zip; }?>">
                </div>
            </div>

            <div class="form-group">
                <label for="ccellphonenumber" class="col-sm-2 control-label">Cell Phone Number</label>
                 <div class="col-sm-10">
                <input id="ccellphonenumber" class="form-control" placeholder="Cell Phone Number" type="text" name="cell" value="<?php if(isset($cell)) { echo $cell; }?>">
              </div>
            </div>



            <div class="form-group">
                <label for="cemail" class="col-sm-2 control-label">* Email</label>
                 <div class="col-sm-10">
                <input id="cemail" class="form-control" placeholder="Email" type="text" name="email">
              </div>
            </div>

           <div class="form-group">
                <label for="cemail" class="col-sm-2 control-label">* Email Address Confirmation</label>
                 <div class="col-sm-10">
                <input id="cemail2" class="form-control" placeholder="Email" type="text" name="email_again">
              </div>
            </div>


          <div class="form-group">
            <label class="col-sm-2 control-label">Message</label>
             <div class="col-sm-10">
             <textarea class="form-control" rows="3" name="message" value="<?php if(isset($message)) { echo $message; }?>"></textarea>
           </div>
          </div>


    <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">Submit</button>
    </div>
  </div>      

</form>

</div>


  <footer class="col-xs-12 roomsFooter">  

    <div class="row">
        <div class="col-md-4">2015  Hotel -- All rights reserved</div>
        <div class="col-md-4">Terms of Use</div>
       <div class="col-md-4">Facebook / Twitter / Instagram </div>
    </div>  
  </footer>

<script src="js/picker.js"></script>
<script src="js/picker.date.js"></script>
<script>
$(document).ready(function(){
  $('.datepicker').pickadate();
});
</script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/scripts.js"></script>

</body>
</html>

EDIT

Session Token Stuff from Second Code Set Above

<?php
session_start(); //allows use of session variables

if (!isset($_SESSION['token']) && $_SESSION['token'] == $_POST['token']) {

  $token = base64_encode(openssl_random_pseudo_bytes(32));
  $_SESSION['token'] = $token;
}

else {
  $token = base64_encode(openssl_random_pseudo_bytes(32));
  $_SESSION['token'] = $token;
}


?>

And this: <input type="hidden" name="token" value="<?php echo $token; ?>" />

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 基于卷积神经网络的声纹识别
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
    • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
    • ¥15 CSAPPattacklab
    • ¥15 一直显示正在等待HID—ISP
    • ¥15 Python turtle 画图
    • ¥15 stm32开发clion时遇到的编译问题