• ベストアンサー

PHPで以下のようなものを実現したいのですが

以下を前提とする。  データベース:mysql 5.0.45  テーブル名:user  項目名:id、名前  phpバージョン:PHP 5.2.4   (1)http://サーバ.index.php?id=xxxxにアクセス (2)テーブル(user)の項目idに{xxxx}があるかどうか確認 (3)あれば、http://サーバ/index.htmlへ、  なければ、http://サーバ/error.htmlへリダイレクト 以上のようなふるまいを実現したいのですが、 PHP初心者のため、ご教授いただければと思います。 よろしくお願いいたします!

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ざっくりとこんな感じでどうでしょう? (一応最低限のバリデートはいれてあります。) <?PHP $host='localhost'; $user='root'; $passwd='hogehoge'; $db='fugafuga'; $link=mysql_connect($host,$user,$passwd) or die(mysql_error()); mysql_select_db($db,$link); $id=isset($_REQUEST["id"])?$_REQUEST["id"]:null; if(! preg_match("/^[0-9]{1,10}$/",$id)) $id=null; //10ケタ以内の数字が有効 $sql="select id from user where 1 "; $sql.=" AND id='".mysql_real_escape_string($id)."'"; $res=mysql_query($sql,$link) or die($sql."<br>".mysql_error()); $row = mysql_fetch_array($res,MYSQL_ASSOC); $url=isset($row["id"])?"index.htm":"error.htm"; header("Location:".$url); exit; ?>

Reptilez
質問者

お礼

助かりました。 ありがとうございます。

Reptilez
質問者

補足

$url=isset($row["id"])?"index.htm":"error.htm"; header("Location:".$url); 早速ありがとうございます! すごく助かりました! テストしながら試していきたいと思います。 また、上記の部分でリダイレクトしていると思いますが、こちらをリダイレクトではなく、htmlを吐き出すということはできますでしょうか。 この場合、printやヒアドキュメント等を使う形になるのでしょうか。

その他の回答 (1)

回答No.1

> (2)テーブル(user)の項目idに{xxxx}があるかどうか確認 これはまずクエリを考える必要があります。 参考になるようにマニュアルを示しておきますね。

参考URL:
http://dev.mysql.com/doc/refman/5.1/ja/select.html
Reptilez
質問者

お礼

助かりました。 ありがとうございます。

関連するQ&A

  • PHPからMySQLの起動について

    PHPからMySQLの起動について レンタルサーバーを借りてPHP,MySQLの勉強をしています。 PHPからMySQLの起動ができなくて困っていますので、教えていただきたいのですが、 <?PHP $dbkidou = mysql_connect("どこのサーバーか","ユーザー名","パスワード"); //データベースの起動ができなかった場合 if ($dbkidou == False) { print ("error"); exit; } $db = "データベースの名前"; ?> まずレンタルサーバーのドメインを「abc.com」としています。これに対するユーザー名が「def」、パスワードが「ghi」です。 そしてMySQLデータベースは「jkl_m」,「jkl_n」の2つを設けていて(phpMyAdminで作成しました)MySQLユーザ名が「opq」、パスワードが「rst」です。今回は「jkl_m」のサーバーを起動させたいのですが、上記PHP文の、 どこのサーバーか ユーザー名 パスワード データベースの名前 の各部分にどれを書けば良いのでしょうか? 何通りか試しているのですが、うまくいかないんです…

    • ベストアンサー
    • PHP
  • PHP phpMyAdmin

    hetemlのmysqlを利用しているのですが phpからmysqlへの格納が上手くいきません。 ■phpソース <?php $link = mysql_connect('サーバー名','ユーザー名','パスワード'); mysql_select_db('データベース名'); mysql_query("INSERT INTO myname VALUES ('test')"); echo mysql_errno($link); echo mysql_error($link); ?> ■phpMyAdmin テーブル myname を作成済 phpはエラーを出していないのですが テーブル myname のフィールドに test が格納されません。(変化ありません)

    • 締切済み
    • PHP
  • Yomi-search(PHP)を設置する際のconfig.phpの設定

    http://sql.s28.xrea.com/src/ の手順でYomi-sseach(PHP)を設置する際にconfig.phpの設定をしてサーバーへUPし、パーミッションの変更までしてみましたがセットアップ画面に行き着きません。どなたか詳しい方がいらっしゃいましたら、ぜひ教えて下さい!あほなので出来れば分かり易く具体的に・・・。贅沢行って申し訳有りません。詳細は以下のとおりです。 ・サーバー:ロリポップ ・MySQL:作成済み ・パーミッションは合っているかちょっと不明 <?php #データベース設定 $cfg = array( #'db_sql' =>'sqlite', #SQLサーバ名 'db_sql' =>'mysql', #SQLサーバ名 'db_host' =>'localhost', #SQLのホスト名 'db_user' =>'MySQLのユーザ名', #SQLのユーザ名 'db_password' =>'MySQLのパスワード', #SQLのパスワード 'db_database' =>'MySQLのデータベース名', #SQLのデータベース名 'sqltb' =>'ys_', #テーブルのプレフィックス ) ?> 上記のホスト名・テーブルのプレフィックスは意味が分かってないので自信ありません。

    • 締切済み
    • PHP
  • PHP+MySQL on さくらサーバー

    さくらサーバーで、プレミアムプランで契約しています。 PHP4.3.10、MySQL 4.0.26で、以下のPHPファイルを埋め込んだphpファイルを実行すると、エラーが生じます。なんか、初歩的なことを勘違いしているのではないかと言う気がするのですが、何が問題なのでしょうか。 データベースのユーザー名は、xxx パスワードは、yyy データベース名は、xxx(一つのみ割り当て) Userというテーブルがあります。 <?php $conn = mysql_connect("mysql11.db.sakura.ne.jp","xxx","yyy"); mysql_select_db("xxx", $conn); $sql = 'SELECT * from User'; mysql_query($sql, $conn)); ?>

    • ベストアンサー
    • MySQL
  • PHPでMySQLのデータを読み込んだ際の文字化けについて

    宜しくお願いいたします。 PHPからMySQLのデータを参照して、HTML上に文字を表示させたら、文字化けしてしまいます。具体的には ・・・ログインIDとパスワードを送信して、その情報をMySQL上のデータベースで参照し、そのレコードにあるユーザー名をHTMLで表示する・・・ といった事を行います。ログインIDはURLからGETで送って、パスワードはPOSTで送っています。送られてきたIDとパスワードで、 <?php $userlist = mysql_query("select * from テーブル名 where id = '$ID' and password= '$password'",${接続ID}); $user = mysql_fetch_array(${userlist}); ?> といった形で『$user』にレコードを配列として代入して、HTML上の必要な箇所で、 <?php print "${user['name']}" ?> といった形でそのIDとパスワードのユーザー名を表示しています。ところが、実際にブラウザで表示させると、データベースには 『アドミニストレーター』 とカタカナで入力しているのですが、HTMLでは、 『・「・ノ・゜・ヒ・ケ・ネ・・シ・ソ。ン』 と化けて表示されます。 HTML上の文字などは特に化けていません。データベースから抽出した文字だけが化けてしまいます。 どなたか、この現象を解決するヒントを教えて下さい!お願いします!!

    • ベストアンサー
    • MySQL
  • PHPとSQLによるaタグ(リンク)の貼り付け方

    PHP・SQL初心者です。 MySQLとPHPでサイトを構築しています。 データベースへの接続・テーブル内容の表示等はできるのですが、リンクをどのようにすれば貼り付けることができるのかわからなかったため質問させていただきました。 ID 名前 友達1 友達2 ・・・ 1 田中 佐藤 前田 2 山田 XXX XXX 3 佐藤 XXX XXX 4 前田 XXX XXX ・ ・ このようなデータベースを用意し、 名前が「田中」さん(ID が 1)のページに ------------------------------------------- 田中さんの友達 友達1:佐藤 友達2:前田 ------------------------------------------- このように表示し、 「佐藤」「前田」の箇所にデータベースの「ID」を利用してリンクを貼り付けたいと考えております。 データの抽出・画面への表示は、 $quryset = mysql_query("SELECT ID,名前,友達1,友達2 FROM テーブル名 WHERE ID= '1' "); while ($data = mysql_fetch_array($quryset)){} このような関数で行っております。 表示は問題なくできているのですが、 表示の「佐藤」「前田」の箇所にリンクを設定するの方法がわかりません。 「ID」 = 1 の情報を表示しているため「山田」と表示している箇所に <a href="http://XXXX.com/$data[ID].php">山田</a> と設定してリンクをつけることはできます。 友達の欄の「佐藤」「前田」の箇所にリンクをつけることができません。 データベースの「ID」欄、を利用して ------------------------------------------- 田中さんの友達 友達1:<a href="http://XXXX.com/ID名.php">佐藤</a>    ID名=佐藤さんのID欄にある2 友達2:<a href="http://XXXX.com/ID名.php">前田</a>    ID名=前田さんのID欄にある4 ------------------------------------------- ↓↓↓ IDが抽出されて ------------------------------------------- 田中さんの友達 友達1:<a href="http://XXXX.com/2.php">佐藤</a> 友達2:<a href="http://XXXX.com/4.php">前田</a> ------------------------------------------- このような形で表示できれば理想なのですが、 使用する関数やSQLの構文がわかりません。 初心者のため、考え方が根本的に間違っているのかもしません。 お詳しい方、まったく別の方法でも構いませんので解決する方法をご教授頂ければ幸いです。

    • ベストアンサー
    • PHP
  • PHP Version 5.2.9-1 でMySQLがつかえない

    こんにちは。自分のサーバーを立てようとトライしています。 まず環境を書きます。 Windows Server 2003 PHP Version 5.2.9-1 MySQL ver 5.1 [php.int] Client API version 5.1.33 PHPのセットアップは、完了しました。(phpinfo()が正しく動作することを確認) MySQLも正しくインストールできて、コマンドプロンプトや、GUIツールなどからはデーターベースの作成、削除、値の書き込みなどもできています。 PHPのインストール画面で、MySQLのオプションもつけてインストールしました。 libmysql.dllは、[MySQLインストールディレクトリ]\MySQL Server 5.1\binとPHPインストールディレクトリと、system32にあります。 php_mysql.dllはphp.intで設定したとおり[phpインストールディレクトリ]\extにあります。 この環境で、mysqlを動かそうと、テストをしてみました。 http://www.phpbook.jp/database/mysql/index3.html の画面下部「テスト」という項目のを使ってみました。こいつを動かそうとすると、HTTP500が帰ってきます。(ユーザー名と、パスワードは指定しなおしてあります) どなたかこの原因がわかる方はいらっしゃいますでしょうか?お力を貸していただければ幸いです。

    • 締切済み
    • PHP
  • PHP+mySQL認証画面

    サーバーの引っ越しで新しいサーバーにてプログラムの動作確認を行っています。 管理者パネルに入るのに、PHPで作成した認証プログラムでログインしようとすると、入力しても何度も聞いてきて入れません。 旧 MySQL5.0.22   phpMyAdmin2.8.2.4 新 MySQL5.1.69 phpMyAdmin3.5.8.1  IDとパスワードはデータベースで設定。 管理者パネルで変更できるようになっている。 $sv = "**"; $dbname = "**"; $user = "**"; $pass = "**"; ログイン認証 //データベースに接続する $conn = mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die("データーベース接続エラー"); $sql = "SELECT id, pass FROM pass_t WHERE pno=1"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $db_user_id=$row['id']; $db_password=$row['pass']; } if(!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] != "$db_user_id" || $_SERVER["PHP_AUTH_PW"] != "$db_password") { header("WWW-Authenticate: Basic realm=\"login\""); header('HTTP/1.0 401 Unauthorized'); echo "ユーザー名またはパスワードが間違っています。<br>"; echo "もう一度はじめからやり直してください。"; exit; } 細々変えて試してみましたが駄目でした。 まだまだわからないことだらけの初心者なので、どうにもならずで 解決策がありましたらぜひ教えて頂けますと幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPデータベース・テーブルの移行

    PHPとMySQLを使ってサイト構築しています。 MySQLのデータベース「group_color」にはテーブル「pink」とテーブル「blue」があります。 サイトでログインしている会員ユーザーの情報が「pink」に入っていてユーザーが ”ブルーグループに変更する”というボタンを押すと、テーブルpinkに入っている情報がテーブルblueに移行するようにしたいのですが、PHPの表記はどのようになりますか? 「ログインしている会員の情報」を移行させたいです。 テーブルのフィールドは ・id ・name ・birthday となっています。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • どんなディレクトリでもindex.phpへ飛ばす

    http://ドメイン/abc/ http://ドメイン/eee123/ http://ドメイン/xyz/ このようにドメイン直下でどんなディレクトリが指定されても index.phpに飛ばして処理できるようにしたいのですが、 一般的にはどのような方法が使われているのでしょうか。 とりあえず下のようなリダイレクトをやってみたのですが、 index.php用のcssが読み込めなくなってしまいます。 RewriteEngine on RewriteRule ^(.*)$ index.php [L] (おそらくcssもリダイレクトしてしまっている) レンタルサーバなのでapache設定は.htaccessには 書き込めますが、httpd.confには書き込めません。 ちなみに目的は指定されたディレクトリ名で データベースを検索するなどします。