Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在登录后在php中实现欢迎消息的过渡效果?_Javascript_Php_Html_Cookies - Fatal编程技术网

Javascript 如何在登录后在php中实现欢迎消息的过渡效果?

Javascript 如何在登录后在php中实现欢迎消息的过渡效果?,javascript,php,html,cookies,Javascript,Php,Html,Cookies,我有以下代码在网站上设置cookie: if (isset($_COOKIE[$_first_name.$_last_name])){ echo '<html><head></head><body></br></br></br><h1><center>Hello, '.$_COOKIE[$_first_name.$_last_name].'! Welcome back!</

我有以下代码在网站上设置cookie:

if (isset($_COOKIE[$_first_name.$_last_name])){
     echo '<html><head></head><body></br></br></br><h1><center>Hello, '.$_COOKIE[$_first_name.$_last_name].'! Welcome back!</center></h1></body></html>';
     sleep(2);
     header('Location: ../index.php');   
    }                         
   else if (setcookie( $_first_name.$_last_name, $_first_name.' '.$_last_name, time() + 60*60*24*5))
   ;
if(isset($\u COOKIE[$\u first\u name.$\u last\u name])){
回音“


你好,$\u COOKIE[$\u first\u name.$\u last\u name]”欢迎回来; 睡眠(2); 标题('Location:../index.php'); } else if(setcookie($\u first\u name.$\u last\u name,$\u first\u name.''.$\u last\u name,time()+60*60*24*5)) ;
第一次它会注册名字,第二次,它不会给我欢迎的信息,会立即引导我到主页。我希望它等待2秒钟,让用户看到欢迎消息,然后自动将用户引导到主页

更多信息

<?php
//error_reporting(E_ERROR);
session_start();
include('loginScript.php'); // Includes Login Script

if(isset($_SESSION['login_user'])){
}
?>
<html> 
...
...
</html>

...
...
在上面的代码中,我调用了loginScript.php,其中包含检查cookie的代码

loginScript.php文件中的节
if($rows==1){
$result=mysqli\u fetch\u数组($query);
$\u会话['login\u user']=$username;//初始化会话
//$\会话['items'][]=$username;
$\会话['firstname']=$result['firstname'];
$\u first\u name=$\u会话['firstname'];
$\会话['lastname']=$result['lastname'];
$\u last\u name=$\u会话['lastname'];
如果(isset($\u COOKIE[$\u first\u name.$\u last\u name])){
回声“


你好, “.$\u COOKIE[$\u first\u name.$\u last\u name]。”!欢迎回来! '; ob_flush(); 冲洗(); //睡眠(2); echo“设置超时(()=> {document.location.href='index.php'},2000);“; } else if(setcookie($\u first\u name.$\u last\u name,$\u first\u name.) “.$”姓氏,时间()+60*60*24*5)){ //整个登录页面其余部分的代码 } } 否则{ $error=“用户名或密码无效”; } mysqli_close($connection);//闭合连接
首先,如果不在php中刷新,就不能对输出进行
睡眠。你得打电话

ob_flush();
flush();
为了迫使php在睡觉和执行其余代码之前输出内容

其次,在更改标题之前不能输出任何内容-在您的情况下,设置位置标题。一个简单的解决方法是使用javascript重定向页面。所以你会有这样的东西:

if (isset($_COOKIE[$_first_name.$_last_name])){
     echo '<html><head></head><body></br></br></br><h1><center>Hello, '.$_COOKIE[$_first_name.$_last_name].'! Welcome back!</center></h1></body></html>';
     ob_flush();
     flush();
     sleep(2);
     echo "<script>document.location.href='index.php'</script>";  
     die(); //added to prevent the rest of the output
    }                         
   else if (setcookie( $_first_name.$_last_name, $_first_name.' '.$_last_name, time() + 60*60*24*5))
   ;

最后但并非最不重要的是,正如李察在评论中提到的,从客户端处理这一切实际上是一个更好的实践,那么你也将对过渡等的更多控制权,这将超出这个问题的范围,但是你可以考虑重新设计程序流程,正如他所建议的那样。否则,上述解决方法应该可以满足您的需要。

通过css3实现过渡效果,通过Ajax(JS)将表单发送到服务器,并在成功完全“登录”后使用JS创建重定向到新页面。我有两个问题,第一个问题,如果我使用第二个代码,在显示欢迎信息后,它将引导我首先返回登录页面,然后返回主页。但是我不想要登录页面。第二个问题是,如果我使用第一个代码,它会工作,它不会向我显示登录页面,并且会直接显示主页,但是,它不会等待2秒,我也将其更改为4秒,但它会非常快地指示我。它看起来并不是在睡觉,它只是在几秒钟内显示欢迎信息。是的<代码>刷新也依赖于服务器,请查看此处的文档。这就是为什么第一种方法是不可取的。至于第二种方法,为什么不让它显示登录页面?是否因为页面下方还有其他输出?如果您将登录页面输出包装在
else If(setcookie..)
中,那么您将看不到登录页面的其余部分,因此欢迎说明在哪个页面上没有区别。我已经编辑了答案以显示你可以在哪里添加代码。我刚刚编辑了这篇文章。你能查一下上面的“更多信息”部分吗?因为我是从另一个php文件调用SetCookie,而且SetCookie嵌入到另一个if语句中,所以我也展示了它。添加一个
die()
退出脚本的其余部分而不输出它们。这不是最好的做法,但它经常被使用,只要确保您完成了所有任务并关闭了所有需要关闭的任务。
if (isset($_COOKIE[$_first_name.$_last_name])){
     echo '<html><head></head><body></br></br></br><h1><center>Hello, '.$_COOKIE[$_first_name.$_last_name].'! Welcome back!</center></h1></body></html>';
     ob_flush();
     flush();
     sleep(2);
     echo "<script>document.location.href='index.php'</script>";  
     die(); //added to prevent the rest of the output
    }                         
   else if (setcookie( $_first_name.$_last_name, $_first_name.' '.$_last_name, time() + 60*60*24*5))
   ;
if (isset($_COOKIE[$_first_name.$_last_name])){
     echo '<html><head></head><body></br></br></br><h1><center>Hello, '.$_COOKIE[$_first_name.$_last_name].'! Welcome back!</center></h1></body></html>';
     ob_flush();
     flush();
     //sleep(2);
     echo "<script>setTimeout(()=>{document.location.href='index.php'},2000);</script>";  
    }                         
   else if (setcookie( $_first_name.$_last_name, $_first_name.' '.$_last_name, time() + 60*60*24*5)){
// Code of rest of the entire login page
}