php脚本有时会收到发布数据,有时却不会。似乎是缓存问题

时间:2018-11-17 03:27:05

标签: php

我正在将HTML表单(使用JavaScript验证表单)中的发布数据提交到php脚本

几个小时前,我意识到我正在发送空数据,所以我解决了这个问题,即使我正在发送它,现在我仍然没有在服务器端收到过帐数据。

当我在服务器端回显post变量时,我可以看到在删除回显时所回显的变量,它始终告诉我“无登录信息”。我试图评论/取消评论回声几次,它一直显示相同的问题。似乎有些缓存。

我试图使用clearstatcache()禁用缓存;和

header("Content-Type: text/html");

header("Expires: 0");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");   

它不起作用。也许这是html表单方面的某种缓存,显然它一直在发送错误(空)数据。

当我删除“无登录信息”部分时,它告诉我“用户不存在”,就像登录信息确实丢失一样。

我需要补充一点,这段代码已经运行了好几年了。除了用于防止缓存的第一行之外,我没有更改它(但这是在问题出现之后)。新的代码是html表单,它称为此php代码。 部分php代码如下

<?php
clearstatcache();
header("Content-Type: text/html");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
include("conexion/conexion.php");

//$form_password=$_GET['form_password'];
//$form_email=$_GET['form_email'];
$form_password=$_POST['form_password'];
$form_email=$_POST['form_email'];

//echo "form_password=$form_password";
//echo "form_email=$form_email";



function autentificar(){

 global $form_email,$form_password;

 echo "form_password=$form_password";
 echo "form_email=$form_email";

 //exit();
 $mensaje=1;

if($form_email=='' || $form_password=='')
{
    $mensaje="No login information";
    //echo "form_password=$form_password";
    //echo "form_email=$form_email";
}
else
{
    $con=openDB();
    if(!$con)
   {
       $mensaje="Database connection not opened";
       //exit();
    }
    else
    {

 $query="SELECT USERCODE,NAME,AES_DECRYPT(UNHEX(PASSWORD),UNHEX(SHA2('xxxxx',512))) ,USERTYPE,BALANCE,ACTIVELESSONSTATUS,ACTIVELESSONCODEVAR FROM USERS WHERE EMAIL='$form_email'";

 //echo "query=$query";
 //exit();
 //$query="SELECT * FROM usuario ";
 $resultado=genesis_exec($con,$query);
 //$resultado=mysql_query($query,$con);


 if(!$resultado)
 {
     $mensaje="Error en la sentencia SQL";
     echo "Sentencia: $query <br>";
     echo "Error: ".mysql_error();
     closeDB($con);
     exit();
 }
 else
 {
     $fila=genesis_fetch_row($resultado);

     if(!$fila)
     {
        $mensaje="User does not exist";
     }
     else
     {
        $user=genesis_result($resultado,1);
        $name=genesis_result($resultado,2);
        $p=genesis_result($resultado,3);
        $type=genesis_result($resultado,4);
        $balance=genesis_result($resultado,5);
        $status=genesis_result($resultado,6);
        $lesson=genesis_result($resultado,7);
        if($p!=$form_password)
        {
           $mensaje="Incorrect password";

           /*echo "user=$user";
           echo "name=$name";
           echo "p=$p";
            echo "type=$type";

           echo "$mensaje";
           exit();*/
        }
        else
        {
             //AQUI ABRE LA SESION
             //para abrir sesion y usar Header no se debe haber hecho ninguna salida
             session_start();                   //aqui se abre la sesion por primera vez
             $SESION=session_id();

             $query="UPDATE USERS SET SESSIONID='$SESION' WHERE USERCODE='$user'";
             $resultado=genesis_exec($con,$query);
             //Aqui registra las variables de sesion
             $_SESSION['TIPO_USUARIO']=$type;       //usar esto si register_globals=off
            $_SESSION['COD_USUARIO']=$user;                 //usar esto si register_globals=off
            $_SESSION['NOMBRE_USUARIO']=$name;
            $_SESSION['BALANCE']=$balance;
            $_SESSION['ACTIVE_LESSONSTATUS']=$status;
            $_SESSION['LESSON_CODEVAR']=$lesson;
             $mensaje=1;      //solo devuelve 1 si el usuario se autentificó con éxito
            if($pagina=="" && $type=="STUDENT") $pagina="lesson.htm";  //valor por defecto
            if($pagina=="" && $type!="STUDENT") $pagina="opportunities.htm";  //valor por defecto

            }
         }
      }
     genesis_commit($con);
     closeDB($con);
   }

  }

return $mensaje;
}//fin autentificar()

部分客户端代码如下

<form id="sky-form" class="sky-form" method="post" onsubmit="return validate()" action="login.php">
            <header>Login form</header>

            <fieldset>                  
                <section>
                    <div class="row">
                        <label class="label col col-4">E-mail</label>
                        <div class="col col-8">
                            <label class="input">
                                <i class="icon-append icon-user"></i>
                                <input type="email" name="form_email" id="form_email">
                            </label>
                        </div>
                    </div>
                </section>

                <section>
                    <div class="row">
                        <label class="label col col-4">Password</label>
                        <div class="col col-8">
                            <label class="input">
                                <i class="icon-append icon-lock"></i>
                                <input type="password" name="form_password" id="form_password">
                            </label>
                            <div class="note"><a href="#sky-form2" class="modal-opener">Forgot password?</a></div>
                        </div>
                    </div>
                </section>
                <!--
                <section>
                    <div class="row">
                        <div class="col col-4"></div>
                        <div class="col col-8">
                            <label class="checkbox"><input type="checkbox" name="remember" checked><i></i>Keep me logged in</label>
                        </div>
                    </div>
                </section>
                -->
            </fieldset>
            <footer>
                <div class="fright">
                <a href="register.html" class="button button-secondary">Register</a>
                <button type="submit" class="button">Log in</button>
                </div>

            </footer>
        </form>         

并且验证功能在后面

<script type="text/javascript">
function validate()
{
  //alert('validate');
  if(document.getElementById("form_email").value=='')
  {
    alert('Enter the email');
    return false;
  }  

  if(document.getElementById("form_password").value=='')
  {
    alert('Enter the password');
    return false;
  }
  //alert(document.getElementById("form_email").value);
  //alert(document.getElementById("form_password").value);
  return true;
}
</script>

我需要说的是,实际上由于表单和javascript的问题而没有发送数据时,一切都开始了。但是我现在有信心发送数据,因为当我在服务器端回显发布数据时,当我不回显数据时它显示数据,它说“没有登录信息”

重要更新:我从服务器上删除了文件login.php,但仍从服务器收到消息“没有登录信息”。到底是怎么回事 ?请帮助

1 个答案:

答案 0 :(得分:0)

我必须将两个文件合并到一个文件中,并且现在可以正常工作