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

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

PHP

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

CodeIgniter

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

Q&A

解決済

2回答

2119閲覧

Codeigniter3の「form_validation」がうまいこと動作しない

tartnac

総合スコア18

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

PHP

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

CodeIgniter

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

0グッド

0クリップ

投稿2018/11/07 07:45

編集2018/11/07 12:25

旧サイトから新サイトに引っ越した際に問題発生

旧サイトのデータを丸っと全部コピーして、新サイトに全てそのままアップロードしました。
その際に変更した箇所はルートに設置してある .htaccess の中身(www を無しに統一、http から https にする)と、
ルートに設置してある index.php の中身($system_path の部分を変更)、
application\config内にある config.php と database.php くらいだと思います。

……にも関わらず、今まで動いていた「お問い合わせフォーム」で異常が発生してしまい、頭を抱えております。

php

1// application/controllers/Contact.php 2class Contact extends CI_Controller { 3 public function index() 4 { 5 $this->load->helper(array('form')); 6 $this->load->library(array('session', 'form_validation')); 7 8 $config = array( // ホントは他にもいっぱいあります 9 array( 10 'field' => 'username', 11 'label' => 'お名前', 12 'rules' => 'trim|required', 13 'errors' => array( 14 'required' => '%s は必須です。', 15 ) 16 ) 17 ); 18 $this->form_validation->set_rules($config); 19 20 if ($this->form_validation->run() == FALSE) // バリデーションチェック失敗。入力画面に戻る 21 { 22 $this->ticket = md5(uniqid(mt_rand(), TRUE)); // トークン生成 23 $this->session->set_userdata('ticket', $this->ticket); // トークンをクッキーにセット 24 25 $this->load->view('contact_view', $data); 26 } 27 else // バリデーションチェックOK。メール送信処理へ移る 28 { 29 ~ メールの送信処理 ~ 30 } 31 } 32}

php

1// application/views/contact_view.php 2<div class="contact"> 3 <div class="title"> 4 お問い合わせ 5 </div> 6 <?php echo validation_errors(); ?> 7 <?php echo form_open('contact'); ?> 8 <?php echo form_hidden('ticket', $this->ticket); ?> 9 <dl> 10 <dt>お名前</dt> 11 <dd><input type="text" name="username" value="<?php echo set_value('username'); ?>"></dd> 12 </dl> 13 <div class="submit"> 14 <input class="button" type="submit" value="送信する"> 15 </div> 16 </form> 17</div>

以前まで(サイトの引っ越し前まで)は何ら問題なく動作していたのに、
サイトを引っ越ししてから動作しなくなってしまいました。
もしや https にしたら何か特別なことをしなければならなかったりするのでしょうか?

具体的にどうおかしいのか?

お名前欄を空欄にしたまま「送信する」ボタンを押すと、今までであればエラーメッセージが表示されていました。
ところが何も無かったかのようにただページが更新される(ような感じになる)だけなんです。
お名前欄に何か適当に入力したとしても、「送信する」ボタンを押すとそれもまた同じようにページが更新されるだけ。
それも今までは入力した文字がそのまま残っていたはずなのに、何故か空欄に戻ってしまう。

「送信する」ボタンを押してもif ($this->form_validation->run() == FALSE)のところを通過できない。
いや、それもあるけどそもそも何で<?php echo set_value('username'); ?>が効いていないのか……?
色々コードをいじったりしても、何やかんやしてもわからないんです。

3日間考えてもわからないままなんです

「15分調べてもわからないことは、質問しよう! (teratail!)」
とはいえ、何でもかんでもすぐに聞いてばかりは考えもの。
……でももう無理、限界なんです。旧サイトのデータをほとんどそのまま持ってきているのに……ナンデ!!
どなたかヒントだけでもお教えいただけませんでしょうか。よろしくお願いいたします。

【追記】変更した .htaccess の中身

htaccess

1suPHP_ConfigPath /home/myname/mydomain.net/xserver_php/ 2AddHandler fcgid-script .php .phps 3FCGIWrapper "/home/myname/mydomain.net/xserver_php/php-cgi" .php 4FCGIWrapper "/home/myname/mydomain.net/xserver_php/php-cgi" .phps 5 6RewriteEngine on 7 8# httpsに統一 9RewriteCond %{HTTPS} off 10RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 11 12# wwwなしに統一 13RewriteCond %{HTTP_HOST} ^www.mydomain.net 14RewriteRule ^(.*)$ https://mydomain.net/$1 [R=301,L] 15 16# CodeIgniter用 17RewriteCond $1 !^(index.php|.+.css$|.+.js$|.+.gif$|.+.png$|.+.jpg$) 18RewriteRule ^(.*)$ /index.php?/$1 [L]

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Codeigniter詳しくないので一般的な観点からの確認をしていただきたいのですが、

  1. viewからpostされたときのコントローラはきちんと連携できているのでしょうか?index()メソッドの冒頭で何か出力するとかしてみてください。
  2. 他の画面でおかしいと気づいたことはありますか?CSSが適用されていないとか画像が表示されていないとか
  3. ローカルPCで同じデータ同じコードで環境再現できますか?

投稿2018/11/07 08:07

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tartnac

2018/11/07 09:21

mts10806さん、いつもご親切に回答くださってありがとうございます。 まさかの事態でしたが……1. の時点で明らかにおかしい感じでした。 というのも普通に view から「送信する」ボタンを押しても Controller側でPOSTされてきた値を受け取れていませんでした。 2. の方は何もおかしいところは見当たらない感じです。CSSも適用されてますし、その他パス関係も全て通っています。不動産の賃貸サイトなんかによくある各種条件のチェックボックスにチェックを入れて、MySQLデータベースから該当の物件を抽出して表示する系のプログラムも、同じサイト内で普通に動いています。 3. ローカルPCではまだ試しておらずでした。やってみます!
tartnac

2018/11/07 10:36

1. については未だわからず奮闘中ですが、とりあえず 3. のローカルPCでは何の問題もなく動きました~。 元々引っ越す前もレンタルサーバーは xserver でしたので、やはり僕が変更した .htaccess が原因なのかもです……。
m.ts10806

2018/11/07 11:06

んー のなるとおっしゃる通り .htaccessか ドキュメントルートか ルーティングか どれかっぽいですね ひとつずつ潰していくしかないですね。
tartnac

2018/11/07 11:53

ですね!集中的にそのあたりを探ってみます。ありがとうございました!
tartnac

2018/11/07 12:12

あああああ!意味がわからないままではありますが、原因がわかりました! 【追記】に示した .htaccess 内の # wwwありに統一 RewriteCond %{HTTP_HOST} ^www.mydomain.net RewriteRule ^(.*)$ https://mydomain.net/$1 [R=301,L] ↑これをコメントアウトしたら正常に動作しました! なぜなのかサッパリわからないのですが、う~ん……とりあえずこれを削除して様子をみてみようと思います!
tartnac

2018/11/07 12:19

解決しましたぁぁぁ! application\config内にある config.php の中に $config['base_url'] = 'https://www.mydomain.net/'; って記載をしていたんですが、こいつのせいだったみたいです! これを $config['base_url'] = 'https://mydomain.net/'; のように www を削ってやったら、ちゃんと正常に動くようになりました! .htaccess の www を無くす設定とバッティングしちゃってたんですね。 mts10806さんのヒントがあったからこそ解決できました……(泣きそう) ホントにありがとうございました!!感謝です!!
m.ts10806

2018/11/07 12:40

解決につながったようで何よりです
guest

0

application\config内にある config.php の中に
$config['base_url'] = 'https://www.mydomain.net/';
って記載をしていたんですが、これを
$config['base_url'] = 'https://mydomain.net/';
のように www を削ってやったら、ちゃんと正常に動くようになりました!

htaccess

1# wwwなしに統一 2RewriteCond %{HTTP_HOST} ^www.mydomain.net 3RewriteRule ^(.*)$ https://mydomain.net/$1 [R=301,L]

.htaccess のこの www を無くす設定とバッティングしちゃってたようです(T-T)

投稿2018/11/07 12:23

tartnac

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問