iT邦幫忙

0

PHP Session 手機執行問題

在電腦上可執行,但無法在手機遊覽器上運作

直接丟碼
-->

index.php

<?
session_start();
if($_SESSION['login']!='t'){
    header('Location: ./login.php');
}
?>

login.php

<?
session_start();
if($_SESSION['login']!='f'){
    header('Location: ./');
}
?>

<html>
<head>
    <meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
    <title>請先登入-管理者頁面</title>
    <!-- Bootstrap -->
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" crossorigin="anonymous">
	<style>
		.container-d{
			height: 100vh;
		}
		.row-d{
			height: 100%;
		}
	</style>
  </head>
  <body>
  	<!-- body code goes here -->
	<div class="container container-d ">
	  <div class="row align-items-center row-d ">
		<div class="col-3"></div>
		<div class="col-6">
		  <div class="card">
		    <div class="card-body">
			  <form method="post" action="login_auth.php">
				  <div class="form-group">
				    <label for="Password">密碼</label>
				    <input type="password" class="form-control" id="Password" name="Password" placeholder="密碼">
			    </div>
				  <button type="submit" class="btn btn-outline-primary">驗證</button>
			  </form>
            </div>
	      </div>
		</div>
		<div class="col-3 "></div>
	  </div>
	</div>
	<!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
	<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" crossorigin="anonymous"></script>
	<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" crossorigin="anonymous"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" crossorigin="anonymous"></script>
  </body>
</html>

login_auth.php

<?
session_start();
if($_POST["Password"]=="000000"){
    $_SESSION['login']='t';
    header('Location: ./');
}else{
    header('Location: ./login.php');
}
?>
1

你也不說不能運做的情況是什麼。

有先在pc上模擬手機版過嘛?
不能操作,什麼東西不能操作??不能動?白頁?沒作用??

手機有上網嘛??

看更多先前的回應...收起先前的回應...
摳宇 iT邦新手 5 級 ‧ 2020-10-05 23:01:48 檢舉

顯示:重新導向過多

摳宇 iT邦新手 5 級 ‧ 2020-10-05 23:01:57 檢舉

有...

摳宇 iT邦新手 5 級 ‧ 2020-10-05 23:02:27 檢舉

沒有在模擬器上運作過

摳宇 iT邦新手 5 級 ‧ 2020-10-05 23:06:07 檢舉

沒裝

淺水員 iT邦高手 3 級 ‧ 2020-10-05 23:39:42 檢舉

你沒考慮到 $_SESSION['login'] 還沒被設定任何值的情況
(它既不是 't' 也不是 'f'

摳宇 iT邦新手 5 級 ‧ 2020-10-06 00:33:28 檢舉

我用的是 "!="吧

摳宇 iT邦新手 5 級 ‧ 2020-10-06 00:40:24 檢舉

如果"登入狀態"不等於"t"--->導向至login.php

淺水員 iT邦高手 3 級 ‧ 2020-10-06 00:48:43 檢舉

但是你從來沒設定過 $_SESSION['login'] 是什麼阿。
就像「如果你不是女生,請去男廁」「如果你不是男生,請去女廁」但是今天有個連自己性別都不知道的,不就被踢來踢去?
login.php 可以改這樣

<?
session_start();
//如果已登入就回 index.php
if($_SESSION['login']=='t'){ 
    header('Location: ./');
}
?>
摳宇 iT邦新手 5 級 ‧ 2020-10-06 06:49:08 檢舉

喔,懂了,那為啥電腦可執行 ?

摳宇 iT邦新手 5 級 ‧ 2020-10-06 06:49:20 檢舉

._.

摳宇 iT邦新手 5 級 ‧ 2020-10-06 06:57:35 檢舉

還是是瀏覽器快取 :\

摳宇 iT邦新手 5 級 ‧ 2020-10-06 07:04:58 檢舉

login.php改成
"""

"""

我只能先跟你說。你的邏輯不及格。
if的用法不能這樣用的。會搞死你自已。
就目前你的程式碼,我會直接0分給你。

建議你,先放棄你目前的架構及其判斷式。
重新想另外一種方式來達到你的目的。

這是你學習的過程,我就先不講明了。
當然你可以參考其它人給你的建議。
但我認為最好是你自已去思考怎麼去用if。

重點是,先學會怎麼去問對問題及述說問題。

如果真的想不出來。我再給你一些基本的架構觀念

1
小魚
iT邦大師 1 級 ‧ 2020-10-06 00:27:01

我很好奇在電腦可以執行的原因,
如同淺水員大大說的,
當它不是t也不是f的時候,
就在兩個頁面之間踢來踢去...

看更多先前的回應...收起先前的回應...
摳宇 iT邦新手 5 級 ‧ 2020-10-06 00:32:58 檢舉

我是用"!="

摳宇 iT邦新手 5 級 ‧ 2020-10-06 00:40:36 檢舉

如果"登入狀態"不等於"t"--->導向至login.php

淺水員 iT邦高手 3 級 ‧ 2020-10-06 00:51:42 檢舉

我猜是先前開發時有設定過 $_SESSION['login']
然後改完程式碼後,瀏覽器沒關閉就直接測試

看起來是沒有問題, session 的設定樓主是寫在 login_auth.php 裡面,登入成功才給值

小魚 iT邦大師 1 級 ‧ 2020-10-06 07:51:50 檢舉

但是執行網站正常應該是直接進入首頁啊.

我不過問他這樣寫程式的用意。這是一個初學者必要的過程。
我只想教他先學會如何問對問好問題。
這樣才不會一個問題說了半天大家都不知道的情況。

pc瀏覽器,可以用f12來調整,進入手機測試的模式。
先學會善用f12大法。
並學會述說你的問題。及碰撞的情況。

1
japhenchen
iT邦大師 1 級 ‧ 2020-10-06 07:46:37

試試

<?
session_start();
if($_SESSION['login']!='t'){
    header('Location: ./login.php');
    exit;
}
?>

(每一個header("location: 都要比照辦理)

我要發表回答

立即登入回答