質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • PHP

    19920questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CodeIgniter

    270questions

    CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

[Codeigniter]URLの表示

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 952

yclin_tagaya

score 19

初めて質問を致します。
お手柔らかにお願い致します

Codeigniterで管理者ログイン画面作成しています。
無事にログインできたが、
URLは
http://xxx.xxx.com/admin/user_list
のはずだが、
http://xxx.xxx.com/admin/login_validation
のままになっています。

また、user_listに同じ結果が二回繰り返されていますが、それはなぜでしょうか?


<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Admin extends CI_Controller {

  public function __construct(){
    parent::__construct();

    $this->load->model('Abstruct');
  }

    public function login(){

      $this->load->helper('form');
      $this->load->view('admin/login');

    }

    public function login_validation(){
      $this->load->library("form_validation");

      $this->form_validation->set_rules("account", "アカウント", "required|trim|callback_validate_credentials");
      $this->form_validation->set_rules("password", "パスワード", "required|trim");
      //エラーメッセージ
      $this->form_validation->set_message('required', '%sを入力してください。');

      if($this->form_validation->run()){
          $this->validate_credentials();
         } else {
         $this->load->view("admin/login");
    }
    }

    public function validate_credentials(){

      $admin_account = "admin";
      $admin_passwd = "admin";
      $check_posted_account = $this->input->post("account");
      $check_posted_passwd = $this->input->post("password");

      if ($check_posted_account == "admin" and $check_posted_passwd == "admin"){
            $this->user_list();
          } else {
            $this->form_validation->set_message("validate_credentials", "ユーザー名かパスワードが異なります。");
            return false;
            }
      }
    public function user_list(){

    $data['records'] = $this->db->get('user')->result_array();
    $this->load->view('admin/user_list',$data);
  }

}


設定画面
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>大事なワードは28文字以内に。平均32文字程度に。</title>

</head>

<body>
  
<?php foreach ($records as $row): ?>
<table border="1">
<tr>
<td>FB_ID</td>
<td>FB_NAME</td>
<td>TYPE</td>
</tr>
<tr>
<td><?=$row['fb_id']?></td>
<td><?=$row['name']?></td>
<td><?=$row['type']?></td>
</tr>
<?php endforeach; ?>
</table>

</body>
</html>

表示画面
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>大事なワードは28文字以内に。平均32文字程度に。</title>

</head>

<body>
  
<table border="1">
<tr>
<td>FB_ID</td>
<td>FB_NAME</td>
<td>TYPE</td>
</tr>
<tr>
<td>XXXXX</td>
<td>XXXXX</td>
<td>XXXXX</td>
</tr>
</table>

</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>大事なワードは28文字以内に。平均32文字程度に。</title>

</head>

<body>
  
<table border="1">
<tr>
<td>FB_ID</td>
<td>FB_NAME</td>
<td>TYPE</td>
</tr>
<tr>
<td>XXXXX</td>
<td>XXXXX</td>
<td>XXXXX</td>
</tr>
</table>

</body>
</html>

以上二点の解決策を教えて頂けると幸いです。
どうぞよろしくお願い致します。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

public function validate_credentials(){

      $admin_account = "admin";
      $admin_passwd = "admin";
      $check_posted_account = $this->input->post("account");
      $check_posted_passwd = $this->input->post("password");

      if ($check_posted_account == "admin" and $check_posted_passwd == "admin"){
             //redirectしなければそのままuser_listのviewが呼ばれます。
            //$this->user_list();
            redirect('admin/user_list');
          } else {
            $this->form_validation->set_message("validate_credentials", "ユーザー名かパスワードが異なります。");
            return false;
            }
      }

login_validationにpostされた後
login_validation内でvalidate_credentialsメソッドを呼び出して、
その後user_listをメソッドとして呼び出してしまっています。

その為、遷移させたいのであれば
redirectで遷移させてはいかがでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/16 16:37

    早速のご回答ありがとうございます!
    実はおっしゃった通り、redirectに変更したら、

    Fatal error: Call to undefined function redirect()
    というエラーが出てきました・・・

    A PHP Error was encountered
    Severity: Warning
    Message: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/ci/application/controllers/Admin.php:43)
    Filename: core/Common.php
    Line Number: 573
    Backtrace:

    お忙しい中申し訳ありませんが、
    お分かりなりましたら教えていただけたらと思います。
    よろしくお願い致します。

    キャンセル

  • 2015/07/16 16:48

    一番先頭に
    $this->load->helper('url');
    を入れたら直りました。

    どうもありがとうございました!
    今後とも宜しくお願い致します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19920questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CodeIgniter

    270questions

    CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。