初心者のための携帯用PHP簡単ログイン画面作成方法

このQ&Aのポイント
  • 初心者の方でも簡単に携帯サイトのログイン画面を作成する方法を紹介します。会員データを読み込み、当該データを取得する処理を解説します。
  • 携帯用PHPでログイン画面を作成する際のポイントを解説します。会員データをファイルから読み込んで、指定されたデータを取得する方法について紹介します。
  • 初心者向けの携帯用PHPログイン画面作成方法を解説します。会員データを読み込み、該当するデータを取得する処理について詳しく説明します。
回答を見る
  • ベストアンサー

【初心者】携帯用PHP簡単ログイン画面

はじめまして。 mana5150と申します。 最近プログラミングの勉強を始めたばかりで全くの初心者です。 わからない部分が多く皆様のお知恵を拝借させて頂きたく投稿致しました。 私は今本を参考にしながら携帯サイトの簡単ログイン画面を作ろうとしているのですが、以下の箇所が全くといっていい程理解できません。本やサイトなど見ながら理解しようとしているのですがどういった処理の流れなのか全くイメージが掴めません・・・どなたか解説して頂けないでしょうか?初心者的質問になってしまうのですが何卒よろしくお願い致します。 PHP×携帯サイト-デベロッパーズバイブル http://www.amazon.co.jp/PHP%C3%97%E6%90%BA%E5%B8%AF%E3%82%B5%E3%82%A4%E3%83%88-%E3%83%87%E3%83%99%E3%83%AD%E3%83%83%E3%83%91%E3%83%BC%E3%82%BA%E3%83%90%E3%82%A4%E3%83%96%E3%83%AB-%E8%8D%92%E6%9C%A8-%E7%A8%94/dp/4797348461/ref=sr_1_1?ie=UTF8&s=books&qid=1228929437&sr=8-1 //会員データを読み込む $member_array = array(); $filename = 'member_data.txt'; $handle = fopen($filename, 'r'); while(($member = fgetcsv($handle) !== false)){ $member_array[] = $member; } fclose($handle); //会員データから当該データを取得する $name = ''; foreach ($member_array as $member){ if(strcmp($member[0],$mobile_id) === 0 && strcmp($member[1], $carrier) === 0) { $name = $member[2]; } }

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

小生は同書籍を購入し、今現在手元にある状態で書いています。 さて、この書籍ですが冒頭【はじめに】の項目で書かれているように、対象読者を『PHPでWebサイト向けプログラミングをしたことがある方』となっています。 まずは、パソコン向けのPHPプログラミング書籍でPHPの基礎的な事を身に付け、次にこの書籍に移ると早道だと思いますよ。 他には、携帯電話向けサイト作成の解説本も役に立つと思います。 それはともかく、書かれたプログラムを簡単に解説すると、 member_data.txtの中身は aaaaaaaaaaaaaa,docomo,Yamada[改行] bbbbbbbbbbbbbb,au,Tanaka[改行] といった形で、一行毎に会員(メンバー)データが並べられていて、会員毎のデータはコンマ(,)で区切られた、携帯電話ID、携帯電話会社、会員名と並べられたCSV形式のデータです。 最初のWhileループ内で、member_data.txtに書かれた会員データを一行ずつ読み込み、配列に格納します。 $member_arrayに全員分読み込みます。 次の、foreachループ内では、$member_arrayの各それぞれの会員データの詳細と携帯電話から取得された携帯ID(加入者ID?)と、携帯電話会社を比較して、その会員が誰であるかを検索しています。 $mobile_id、$carrierの取得ロジックは質問内には存在しない別の場所で設定された、携帯ID、および携帯会社が格納されています。 すべてのメンバーが検索され終わった時点でも、$nameが''(空白文字列)のままだった場合、その携帯電話の持ち主は会員ではないことがわかります。 というのが、簡単な解説ですかね。

mana5150
質問者

お礼

ご丁寧な解説ありがとうございます! どうしてもPHPで携帯サイトを作らなければいけない状況となりかなり焦っています・・・ また機会があればご指導の程よろしくお願い致します。

その他の回答 (1)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

プログラムの意味はBellBellさんのいうとおりです。 ただ・・・ この本は、持っていませんが、ここで書かれた方法は非現実的です。この本の他のところに、データベースを使用した方法でも書いてあれば、別ですが、もし全編がこの調子でしたら、PHPやロジックに関しては、あまり信用しない方がいいでしょう。 10人、20人ならともかく、何万人ものユーザデータをファイルから読み込んで、頭から1件ずつ比較するなど、考えられません。 携帯特有の話に関しては、amazonのレビューを見る限りでは、良書のようですね。

mana5150
質問者

お礼

ご回答頂きありがとうございます! アドバイスを頂けて非常に参考になります。 今後も機械があればご指導の程よろしくお願い致します。

関連するQ&A

  • 配列を使って値を受け取る方法で困っています(PHP)

    こんにちは、よろしくお願い致します。 現在使用している環境が2つあります。 Win2000+Apache1.3+PHP4.2.3 RedHatLinux8.0+Apache1.3+PHP4.2.3 そのうちLinux環境の方では、配列がうまく使えません。 お手数ですが、具体的な結果は test.html、test.phpのソースと実行結果をご覧下さい。 両方の環境のApacheやPHPの設定ファイルをチェックしたのですが 特に怪しいところはなく、とても困ってます。 アドバイスお願い致します。 (test.html)-- <HTML><BODY> <form action=./test.php method=post> <input type=input name=a[0] value="1"> <input type=input name=b[0] value="12"> <input type=input name=c[0] value="123"> <input type=input name=d[0] value="1234"> <input type=input name=e[0] value="12345"> <input type=input name=f[0] value="123456"> <input type=submit name=submit value="OK"> </form> </BODY></HTML> ------------ (test.php)-- <?php print_r($HTTP_POST_VARS); ?> ------------ 【 Win環境の結果 】 Array ( [a] => Array ( [0] => 1 ) [b] => Array ( [0] => 12 ) [c] => Array ( [0] => 123 ) [d] => Array ( [0] => 1234 ) [e] => Array ( [0] => 12345 ) [f] => Array ( [0] => 123456 ) [submit] => OK ) 【 Linux環境の結果 】 Array ( [a] => Array ( [0] => 1 ) [b] => Array ( [0] => 12 ) [c] => Array ( [0] => 123 ) [d] => Array ( [0] => ) [e] => Array ( [0] => 5 ) [f] => Array ( [0] => 56 ) [submit] => OK )

    • ベストアンサー
    • PHP
  • PHPにて所有者名を変更出来る方法を教えて下さい。

    下記プログラムのように、あるサーバーの中のデーターをディレクトリー(/hogehoge)ごと別の ディレクトリー(../test)にコピーを行い、FFFTPにてファイルの更新を行いたいのですが、 コピー後は所有者名が変わってしまい属性(パーミッション)の変更が出来ず、修正や削除も出来ません。 どうも所有者名がApacheになっているようです。 勿論プログラム上からなら削除や修正は可能ですが、どうしてもFFFTPから操作出来ないと困るのです。 プログラムから所有者名を指定する方法を教えて戴きたいのです。 FFFTPで見ますと、所有者名は今までのどのファイルもディレクトリーも数字で、「1664」ですが、 PHPで作成コピーしたファイルを見ますと「48」です。 所有者名を「1664」にしたいのです。 そうすればパーミッションの変更が出来ると思います。 因みにこの方法を試しましたが変更出来ませんでした。 使い方が間違っているのでしょうか。それともスーパーユーザでないからかもしれません。 スーパーユーザにはどうしてなれるのでしょうか。 // 使用するファイル名とユーザ名 $file_name= "foo.php"; $path = "/home/sites/php.net/public_html/sandbox/" . $file_name ; $user_name = "root"; // ユーザを設定します chown($path, $user_name); 所有者名変更方法(末端の階層ディレクトリー及びファイルまで)をご教授下さいませ。 以上宜しくお願い致します。 <?php //あらかじめ指定された元フォルダ名 $imageDir = "hogehoge"; // 作りたいフォルダ構造 $structure = '../test'; // 入れ子構造を作るには、$recursive パラメータを // mkdir() に指定しなければなりません if (!mkdir($structure, 0777, true)) { die('Failed to create folders...'); } chmod($structure, 0777); $path = '../test/'; $user_name = 'myname'; // ユーザを設定します chown($path, $user_name); //あらかじめ指定されたコピー先フォルダ名 $destDir = "../test"; copyDirectory($imageDir,$destDir); function copyDirectory($imageDir, $destDir) { $handle=opendir($imageDir); while($filename=readdir($handle)) { if(strcmp($filename,".")!=0 && strcmp($filename,"..")!=0) { if(is_dir("$imageDir/$filename")) { if(!empty($filename) && !file_exists("$destDir/$filename")) mkdir("$destDir/$filename"); copyDirectory("$imageDir/$filename","$destDir/$filename"); } else { if(file_exists("$destDir/$filename")) unlink("$destDir/$filename"); copy("$imageDir/$filename","$destDir/$filename"); } } } } print ディレクトリー作成成功しました。 ?>

    • 締切済み
    • PHP
  • PHP エラーについて

    ファイルをテンプレ&mysqlを使って自動生成するスクリプトを書いているのですが 以下のエラーが出ます。 Fatal error: Call to a member function append() on a non-object in /home/stylenavi/www/httpdocs/test/file_make2.php on line 52 while ($rb2 = mysql_fetch_array($rb)) で値はDBから取れているのですが、 それが次の行でエラーになる理由がわかりません。 どなたかお力ぞえ頂けないでしょうか。 よろしくお願いいたします。 ---------------------------------------------------------------------- <?PHP require_once("Smarty.class.php"); $s=mysql_connect("hogehoge.db.sakura.ne.jp","hogehoge","hoge") or die("失敗しました"); mysql_select_db("hogehoge",$s); $sql = "SET NAMES utf8"; $result = mysql_query($sql); $template = "../templates/itiran_page_test.tpl"; $sakuin = "sakuin1"; //フッターリンク(1)のキー定義 $h_link = "sakuin1"; //下層ページファイル名一覧の取得 $ra=mysql_query("select * from sougou_db where key5 LIKE 'sakuin1'"); while ($ra2 = mysql_fetch_array($ra)) { $ra3 = array($ra2[filename]); foreach( $ra3 as $value ){ //テンプレートの読み込み $contents = file_get_contents( $template); // 作成するファイル名の指定 $file_name = $dir.$value; //ページ要素の取得とテンプレートへの挿入 $rb=mysql_query("select * from sougou_db where (filename = '$value')"); while ($rb2 = mysql_fetch_array($rb)) { //echo $rb2[title]; //⇒ちゃんと表示できます            $objSmarty->append('data2',$rb2); } //索引一覧の取得とテンプレートへの挿入 $rc=mysql_query("select * from sougou_db where (key5 = '$sakuin') "); while ($rc2 = mysql_fetch_array($rc)) { //$objSmarty->append('data3',$rc2); //echo $rc2[title]; } //フッターリンクの取得とテンプレートへの挿入 $rd=mysql_query("select * from sougou_db where (key5 = '$h_link') "); while ($rd2 = mysql_fetch_array($rd)) { //$objSmarty->append('data4',$rd2); //echo $rd2[title]; } if( !file_exists($file_name) ){ touch( $file_name ); chmod( $file_name, 0666 ); echo('Info - ファイル作成完了。 file name:['.$file_name.']'); $handle = fopen( $file_name, 'w'); fwrite( $handle, $contents); fclose( $handle ); }else{ // すでにファイルが存在する為エラーとする echo('Warning - ファイルが存在しています。 file name:['.$file_name.']'); exit(); } } } ?>

    • ベストアンサー
    • PHP
  • PHP 多次元配列のソート

    $array = array( array("address" =>"eeee@dddd.ddd","name" => "あいう"), array("name" => "はざま","address" => "cccc@dddd.ddd"), array("name" => "かきく","address" => "tttt@ccc.eee"), array("name" => "さく","address" => "bbbb@dddd.ddd"), array("name" => "あか","address" => "aaaa@dddd.ddd") ); 上記のような多次元配列があった場合 sort($array); とすると 以下のようなデフォルトの配置が Array ( [0] => Array ( [address] => eeee@dddd.ddd [name] => あいう ) [1] => Array ( [name] => はざま [address] => cccc@dddd.ddd ) [2] => Array ( [name] => かきく [address] => tttt@ccc.eee ) [3] => Array ( [name] => さく [address] => bbbb@dddd.ddd ) [4] => Array ( [name] => あか [address] => aaaa@dddd.ddd ) ) 上記の並びが Array ( [0] => Array ( [address] => eeee@dddd.ddd [name] => あいう ) [1] => Array ( [name] => あか [address] => aaaa@dddd.ddd ) [2] => Array ( [name] => かきく [address] => tttt@ccc.eee ) [3] => Array ( [name] => さく [address] => bbbb@dddd.ddd ) [4] => Array ( [name] => はざま [address] => cccc@dddd.ddd ) ) nameキーの値をもとにあいうえお順にならびかえられます。 がこれをnameキーではなく addressキーで並び替えたいと思ったとき、 usort($array , function($a,$b){ if($a["address"]< $b["address"]){ return -1; }else{ return 1; } } ); と上記のようのおこなうと Array ( [0] => Array ( [name] => あか [address] => aaaa@dddd.ddd ) [1] => Array ( [name] => さく [address] => bbbb@dddd.ddd ) [2] => Array ( [name] => はざま [address] => cccc@dddd.ddd ) [3] => Array ( [address] => eeee@dddd.ddd [name] => あいう ) [4] => Array ( [name] => かきく [address] => tttt@ccc.eee ) ) とうまくaddressキーでabcdの順にソートできています。 次に usort($array , function($a,$b){ return strcmp($a["address"],$b["address"])? -1:1; } ); と上記のようにstrcmp関数を使うと Array ( [0] => Array ( [name] => あか [address] => aaaa@dddd.ddd ) [1] => Array ( [name] => さく [address] => bbbb@dddd.ddd ) [2] => Array ( [name] => かきく [address] => tttt@ccc.eee ) [3] => Array ( [name] => はざま [address] => cccc@dddd.ddd ) [4] => Array ( [address] => eeee@dddd.ddd [name] => あいう ) ) うまくソートできませんでした。 この、直接 $a, $bの大小を条件とした場合と strcmp — バイナリセーフな文字列比較をおこなうstrcmp とは、どのような処理の違いがあるのでしょうか?

    • ベストアンサー
    • PHP
  • 掲示板作成を目的とした初心者向けのPHP教本を探し

    PHPで”電子掲示板”を作成しようと http://www.amazon.co.jp/%E4%BD%9C%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%B6PHP%E3%81%AB%E3%82%88%E3%82%8BWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%85%A5%E9%96%80%E2%80%95XAMPP-jQuery-HTML5%E3%81%A7%E4%BD%9C%E3%82%8B%E3%82%A4%E3%83%9E%E3%83%89%E3%82%AD%E3%81%AEWeb%E3%82%B5%E3%82%A4%E3%83%88-%E6%B8%85%E9%87%8E-%E5%85%8B%E8%A1%8C/dp/4798030589/ref=sr_1_1?ie=UTF8&qid=1383826655&sr=8-1&keywords=%E4%BD%9C%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%B6php 以上、サイトの本の   ”作りながら基礎から学ぶPHPによるWebアプリケーション入門”  を60%やりました。  その本のカスタマー‐レビューは星”1個半”でかなり悪いです。    既に60%自分なりに勉強しました。       その教本の内容で疑問があれば直ぐ、ネットの質問サイトに書き込みをして、回答を得ながら勉強していました。  ところが、質問するたびに、「その本は内容に不備があるので、捨てたほういいですよ。」と、回答  をが多くて、仕方なく他の本に乗り換える決心がつきました。    目標は、スキルアップと”電子掲示板”を作成できるようになることで、サイドビジネスの糧(かて)にすることが目的です。  他に※初心者向けで、お勧めのPHPの教本はございませんか!?  amazon.co.jpで”php プログラミング”で調べた結果、以下のたくさんの製品がヒットしました。  http://www.amazon.co.jp/s/ref=nb_sb_ss_i_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Dstripbooks&field-keywords=php+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0&sprefix=PHP%2Cstripbooks%2C384 基礎・入門編のレベル範囲での選択肢になりますが、なるべく現在版がいいかなと思われます。 以上よろしくお願いします。  

    • ベストアンサー
    • PHP
  • php で URLにIDを付けたいのですが

    PHPを使用して会員個々のHPを作成しようと思っています。 よくURLに●ttp://********/ID=●●●というようにIDを割り振った URLを見かけますが、PHPの本を見ても、WEB上を検索してもその 手法が載っているところがありません。データベースには会員さんの ハンドルネームが登録されているので、そのデータベースにある ハンドルネームをIDとして個々のHPにくっつけたいのですが、 どのようにするとURLにIDをくっつけられるのでしょうか。 丸投げで失礼に当たってしまいますが、参考意見等でも結構ですの で糸口だけでもアドバイスをお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのarray配列について初心者の質問です。

    サイトを見ながらPHPを勉強しています。 入力チェックとエラー表示(1) - PHP基礎講座 http://www.phppro.jp/school/phpschool/vol6/2 で、 $error_message = array(); のarrayの使い方がよくわかりません。 arrayとは <?php $data = array("1"=>"ああああ","2"=>"ああああ","3"=>"ああああ"); ?> と言うように、()内に配列していく関数ですよね。()内に何もない場合はどういう様な動きになるのか、よくわかりません。このように書くと、()の中に連想配列で、$error_messageが読み込まれていくのでしょうか??? うまく質問も出来ない位の知識ですが、解説お願いします。

    • ベストアンサー
    • PHP
  • php 2つの配列の内、片方を元にして、1つの配列にしたい

    Data AとData Bをもとに Data Cを作成したいのです。 ※DataAに無くても、DataBにあるものはDataCに格納したい。 *Data A* ---------------------------- index | indexA | Name ---------------------------- 1    100   A_Test1 2    101   A_Test2 3    102   A_Test3 4    103   A_Test4 5    104   A_Test5 6    105   A_Test6 7    106   A_Test7 *Data B* ---------------------------- index | indexA | flg ---------------------------- 11   100   1 12   101   0 13   102   1 14   103   1 15   104   1 16   106   0 *Data C* indexAをkeyに結合 ------------------------------- index | ndexA | Name | flg ------------------------------- 1    100  A_Test1  1 2    101  A_Test2  0 3    102  A_Test3  1 4    103  A_Test4  1 5    104  A_Test5  1 6    NULL  A_Test6  0 7    106  A_Test7  0 arrayDataA = Array( [0] => Array([indexA]=> 100 [Name] = A_Test1           [1] => Array([indexA]=> 101 [Name] = A_Test2           [2] => Array([indexA]=> 102 [Name] = A_Test3           [3] => Array([indexA]=> 103 [Name] = A_Test4           [4] => Array([indexA]=> 104 [Name] = A_Test5           [5] => Array([indexA]=> 105 [Name] = A_Test6           [6] => Array([indexA]=> 106 [Name] = A_Test7          )) arrayDataB = Array( [0] => Array([indexA]=> 100 [flg] = 1           [1] => Array([indexA]=> 101 [flg] = 0           [2] => Array([indexA]=> 102 [flg] = 1           [3] => Array([indexA]=> 103 [flg] = 1           [4] => Array([indexA]=> 104 [flg] = 1           [5] => Array([indexA]=> 106 [flg] = 1          )) というところまで格納するこはできたのですが この、arrayDataAとarrayDataBを元に arrayDataCを作成したいのです。 初歩的なことかと思いますが、 どのように、プログラムを書くと実現できるのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ★PHP★オブジェクトの並び替えを教えてください

    下記の[ss_category] の並びはそのままで、 [item] [0][1][2]のデータの並び替えの方法を教えてください。 ([2]のデータを一番上にしたいということです。) ご存知の方がおりましたらよろしくお願いします。 SimpleXMLElement Object ( [id] => 0.228142001317192226 [name] => aaa [ss_category] => Array ( [0] => SimpleXMLElement Object ( [id] => 0.697361001317192236 [name] => aaawww [description] => SimpleXMLElement Object ( ) [item] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => [name] => ええ ) [id] => 0.192165001317265048 [name] => ええ1 [description] => ええ1 [applyer] => ええ1 [ask_to] => SimpleXMLElement Object ( ) [upd_time] => 1317281103 [time_stamp] => 1317222000 [attach_file] => 0.192165001317265048 [attach_filename] => sql.txt ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => [name] => あああ ) [id] => 0.123983001317265270 [name] => あああ1 [description] => ああ1 [applyer] => ああ1 [ask_to] => SimpleXMLElement Object ( ) [upd_time] => 1317265632 [time_stamp] => 1317222000 [attach_file] => 0.123983001317265270 [attach_filename] => idm780.zip ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => [name] => www ) [id] => 0.955786001317265700 [name] => www [description] => www [applyer] => www [ask_to] => SimpleXMLElement Object ( ) [upd_time] => 1317265700 [time_stamp] => 1317222000 [attach_file] => 0.955786001317265700 [attach_filename] => idm780.zip ) ) ) [1] => SimpleXMLElement Object ( [id] => 0.706559001317265020 [name] => ああ [description] => ああ ) ) )

    • ベストアンサー
    • PHP
  • php ログインについて

    php ログインについて phpでログイン画面を作っているのですがログインできません。エラー等々もでず、「スタッフコードかパスワードが違います」になります。ちなみにDBにはスタッフのデータはしっかり存在します。 コードとパスワードを正しく入力しているにもかかわらずログインできません。 ソースはこちらです [staff_login.php] <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>ログイン</title> </head> <body> スタッフログイン<br/> <br/> <form method="post" action="staff_login_check.php"> スタッフコード<br/> <input type="text" name="code"><br/> パスワード<br/> <input type="password" name="pass"><br/> <br/> <input type="submit" value="ログイン"> </form> </body> </html> [staff_login_check.php] <?php try { $staff_code=$_POST['code']; $staff_pass=$_POST['pass']; $staff_code=htmlspecialchars($staff_code); $staff_pass=htmlspecialchars($staff_pass); $staff_pass=md5($staff_pass); $dsn='mysql:dbname=*****;host=********'; $user='*********'; $password='********'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT name FROM mst_staff WHERE code=? AND password=?'; $stmt=$dbh->prepare($sql); $data[]=$staff_code; $data[]=$staff_pass; $stmt->execute($data); $dbh = null; $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { print'スタッフコードかパスワードが違います<br/>'; print'<a href="staff_login.html">戻る</a>'; } else { header('Location: staff_top.php'); } } catch(Exception $e) { print'エラーが発生しました'; exit(); } ?> 解決方法、ご指摘ございましたら教えていただきたいです。

    • ベストアンサー
    • PHP