個人的にphpで今webアプリを作成しています。
ただいま、
ログイン
↓
制御チェック&入力値チェック
↓
ホーム
↓ ← ここがうまくいかない
制御チェック
という風になっております。
ホームでボタンを押したとき、
ホームのソース内で$_POSTの判定を行いたいのですが、
ボタンを押した瞬間、ログインまで戻ってしまいます。
ホームのformでaction=""を設定しているのですが、
どうやらログインからURLが変わっていないため、
ログイン画面に戻ってしまうことが分かりました。
ログインからホームのファイルを指定して遷移させればいいのですが、
そうしたくはなく、一旦チェックを挟む、
URLが変わらない、つまり自分自身を指定した場合、
一番最初のログインに戻ってしまうと考えています。
このような処理のルートでもうまくできる方法があるのでしょうか?
controller_login.php
php
1<?php 2$webroot = $_SERVER['DOCUMENT_ROOT']; 3include_once($webroot . '/classes/controllers/login/controller_login_base.php'); 4 5class Controller_Login extends Controller_Login_Base{ 6 /** 7 * @desc ログインフォームを表示する 8 */ 9 public function show_login_form() { 10 $input_info = parent::$view->show_login_form(); 11 if(!empty($input_info)){ 12 $this->_check_input_info($input_info); 13 } 14 } 15 16 /** 17 * @desc 入力された値をチェックする 18 * @param array $input_info 入力された情報 19 * @return array|string 会員情報|エラーメッセージ 20 */ 21 private function _check_input_info($input_info) { 22 try{ 23 $results = parent::$logic->check_input_info($input_info); 24 if(is_array($results)) { 25 // TODO:管理メソッドに会員情報を持たせる 26 $this->check_process(PROCESS_HOME); 27 return true; 28 } 29 else { 30 parent::$view->show_login_form($results); 31 } 32 }catch(PDOException $e) { 33 print('connection ERROR!:'.$e->getMessage()); 34 return $e; 35 } 36 } 37}
view_login.php
php
1<?php 2class View_Login{ 3 /** 4 * @desc ログイン画面を表示する 5 */ 6 public function show_login_form($message = NULL) { 7 if(isset($_POST["id"]) && isset($_POST["password"])) { 8 // 入力値情報 9 $input_info = array(); 10 // ログインボタンが押された場合 11 if(isset($_POST["id"]) && isset($_POST["password"])) { 12 $input_info = [ 13 'id' => $_POST["id"], 14 'password' => $_POST["password"] 15 ]; 16 $_POST = NULL; 17 } 18 return $input_info; 19 } 20?> 21<html> 22 <head> 23 <meta name="generator" 24 content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-html5/tree/c63cc39" /> 25 <title></title> 26 <link rel="stylesheet" type="text/css" href="stylesheets/main.css" /> 27 </head> 28 <body> 29 <div class="form-wrapper"> 30 <h1>Sign In</h1> 31 <?php 32 if(!is_null($message)) { 33 echo '<a><font color="red">' . $message .' </font></a>'; 34 } 35 ?> 36 <form method="post" action=""> 37 <div class="form-item"> 38 <input type="number" name="id" id="useid" required="required" placeholder="Employee_number" /> 39 </div> 40 <div class="form-item"> 41 <input type="password" id="password" name="password" required="required" placeholder="Password" /> 42 </div> 43 <div class="button-panel"> 44 <input type="submit" class="button" id="login" value="Sign In" /> 45 </div> 46 </form> 47 <div class="form-footer"> 48 <p> 49 <a href="#">Forgot password?</a> 50 </p> 51 </div> 52 </div> 53 </body> 54</html> 55<?php 56 } 57} 58
controller_home.php
php
1<?php 2$webroot = $_SERVER['DOCUMENT_ROOT']; 3include_once($webroot . '/classes/controllers/home/controller_home_base.php'); 4class Controller_Home extends Controller_Home_Base { 5 /** 6 * @desc ホーム画面を表示する 7 */ 8 public function show_home(){ 9 $input_info = parent::$view->show_home(); 10 } 11}
view_home.php
php
1<?php 2class View_Home{ 3 public function show_home(){ 4 switch($_POST['home']){ 5 case $_POST['home'] === 'start': 6 // 処理 7 break; 8 default: 9 break; 10 } 11?> 12<html> 13 <head> 14 <meta name="generator" content="HTML Tidy for HTML5 (experimental) for Windows https://github.com/w3c/tidy-html5/tree/c63cc39" /> 15 <title>JobManager</title> 16 <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" /> 17 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 18 <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> 19 <link rel="stylesheet" type="text/css" href="/stylesheets/main.css" /> 20 </head> 21 <body> 22 <nav class="navbar navbar-default navbar-static-top navbar-inverse"> 23 <div class="container"> 24 <ul class="nav navbar-nav"> 25 <li class="active"> 26 <a><span class="glyphicon glyphicon-home"></span> ホーム</a> 27 </li> 28 <li> 29 <a><span class="glyphicon glyphicon-user"></span> メンバー</a> 30 </li> 31 <li class="dropdown"> 32 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><span class="glyphicon glyphicon-info-sign"></span> 機能</a> 33 <ul class="dropdown-menu" role="menu"> 34 <li> 35 テスト 36 </li> 37 </ul> 38 </li> 39 </ul> 40 <ul class="nav navbar-nav navbar-right"> 41 <li class="navbar-right"> 42 <a><span class="glyphicon glyphicon-book"></span> アカウント設定</a> 43 </li> 44 </ul> 45 </div> 46 </nav> 47 <div class="jumbotron text-center"> 48 <div class="container"> 49 <a href="/" class="lang-logo"> 50 <img src="/config/images/lang-logo.png" /> 51 </a> 52 <h1>絶対お仕事便利にするマン</h1> 53 <p>あなたのお仕事をお助けします!</p> 54 <form method="post" action=""> 55 <a><button type="submit" value="start" name="home" class="btn btn-lg btn-default"><span class="glyphicon glyphicon-hand-right"></span>はじめる</a> 56 </form> 57 </div> 58 </div> 59 <div class="container"> 60 <div class="alert alert-info text-center" role="alert">もし、このアプリにについて詳しく知りたい場合は 61 <a class="alert-link">ヘルプ</a>をご覧下さい</div> 62 <div class="row"> 63 <div class="col-md-6"> 64 <h3>リリース履歴</h3> 65 <ul> 66 <li> 67 test 68 </li> 69 </ul> 70 </div> 71 </div> 72 </div> 73 </body> 74</html> 75<?php 76 } 77} 78 79