carrollのプロフィール
- ベストアンサー数
- 13
- ベストアンサー率
- 61%
- お礼率
- 0%
ヽ(´ー`)ノ
- 登録日2005/04/01
- DBを用いたCGI認証スクリプト(perl、mysql)
DBに一行一ユーザーの情報があり(メールアドレス 、パスワード)、 IDをメールアドレスとし、 入力したメールアドレスが登録されているか 入力したメールアドレスのパスワードがあっているか、 をチェックするスクリプトです。 初心者のためいろいろのサイトを見ながら作りましたが、下記のソースで何とか動いています。 が、これでよいのか(スマートかどうか)、もっと簡単な方法があるのかどうかをお聞きしたく、質問させていただきました。よろしくお願いいたします。 #!/usr/bin/perl use DBI; use CGI; require "cgi-lib.pl"; #フォームからIDとPWを受け取る &ReadParse(*form); $input_id= "$form{'アイディー'}"; $input_pw= "$form{'パスワード'}"; $TABLE_name = 'メールアドレス'; $form = CGI->new; $ret = eval{ $dbh = DBI->connect('DBI:*******************) }; if ( !$ret ) { print "接続エラーが発生しました\n"; exit(); } else{ print "OK\n"; $sql = "SELECT パスワード FROM $TABLE_name where メールアドレス='$input_id'"; $sth = $dbh->prepare($sql); if(!$sth->execute){ print "SQL実行エラー\n"; exit; } $num_rows = $sth->rows; if($num_rows==0){ print "このEmailは登録されていません。\n"; } else{ #ヒットしたemailの行にあるパスワード=$rec $rec = $sth->fetchrow_array(); #ヒットしたemailの行にある「パスワード=$rec」と入力したパスワードがマッチするかどうか if($rec eq $input_pw){ #認証OK!会員ページへ print "<br>認証OK!<br>"; } else{ #認証NG(Emailは登録されているが、登録したemailとパスワードが一致しない) print "パスワードが違います\n"; } } $sth->finish; $dbh->commit; $dbh->disconnect; }
- HTMLとPHP
こんにちは。いつもお世話になっています。 PHPとHTMLを勉強していてわからないことがあったのでよろしければ教えてください。 POSTでデータを取得するときにデータがあるか無いか判定してから、項目すべてに記入してあれば登録確認ページへ、空欄があればエラーページへいくようなサイトをつくったのですが、確認ページでデータが表示されませんでした。 if(!$_POST['name'] OR !$_POST['passwd'] OR !$_POST['address'] OR !$_POST['tel'] OR !$_POST['email']){ echo ("空欄があります。すべて記入して下さい。"); }else{ header("Location: http://localhost/my/myshop/confirm_user.php"); } エラー表示ページ(error.php)でこのように判定し、空欄がなければエラーページから確認ページ(confirm_user.php)へいくようにしました。 登録フォーム(input.php)で<FORM ACTION="error.php","confirm_user.php" METHOD="post"> としたのですが、2つのPHPにデータを送れないのでしょうか?
- PHP?MySQL?どちらで処理するか?
MySQLでもPHPでもできる処理ってあるやん? 掲示板で見かける指定文字以上のタイトルになったら、それ以降は”...”で表示するのはPHPのmb_strimwidth(?)でも、MySQLのleft関数でもできると思います。 round関数も元の値をPHPで四捨五入するのか、MySQLで元の値を別のフィールド名で、、、。 どっちがええん? なんか線引きが難しくって、訳分からん。 何か基準というか、線引きはないかなー? やっぱり、大量の処理はMySQL?
- ORIG_SCRIPT_○○○はあるがORIG_PATH_○○○が出てこない
php.iniでcgi.fix_pathinfo=1と設定しました。 googleでも色々検索しましたが、こうすればORIG_PATH_INFOなどが表示されるはず しかし表示されません。 ドメインより後ろを取得する方法は先ほど教えていただきましたので 当面そちらでしのぎますが、できればORIG_PATH_INFOも使いたいです どなたか分かる方いらっしゃいましたら教えてください。 使ってるサーバーはさくらインターネットです
- ベストアンサー
- PHP
- noname#14955
- 回答数1
- _SERVER["DOCUMENT_ROOT"]より後ろを取得するには
http://xxx.xxx.xxx/111/222/333/444/ こういうアドレスがあったとして、「111/222/333/444/」だけを取り出せますか? ローカルでも実験していたのですが、windowsのためにローカルだと _SERVER["DOCUMENT_ROOT"]が「D:/www/htdocs/」になり それ以降を取得するものだと「/」が「¥」で表示されてしまい、うまくプログラムができません。 逆にドキュメントルートを「¥」で取得することもできないので悩んでいます webの方だけなら何とかなりそうなのですが、色々テストをする上で ローカルとwebで共有できれば便利がいいと思いまして。 phpはCGI版としてインストールしています。 よろしくお願いします
- ベストアンサー
- PHP
- noname#14955
- 回答数1