トップページ⇒php
1001コメント299KB

くだすれPHP(超初心者用)4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/13(金) 20:32:36ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
04824652008/10/14(火) 08:40:33ID:OazE8u18
どなたか>>467をphp触って一ヶ月の俺に分かりやすく詳しく教えて下さい
0483nobodyさん2008/10/14(火) 09:46:19ID:???
>>482
PEAR_Frontend_Webの設定でテンプレートパスを正しく変更する
これでFA
0484nobodyさん2008/10/14(火) 09:54:18ID:???
FAかな…。

>>442と同じことを>>465で訊いてしまう感覚とか、
C:\php\pear(>>436等) or C:\php5\pear のどっちに PEAR を入れたのか本人もよくわかってないとか、
目先の対症療法では解決しない根深いものを感じるよ。
0485nobodyさん2008/10/14(火) 10:01:00ID:???
意識の低さが問題を深くしているんですね、この1ヶ月は無駄だったと、わかります
0486nobodyさん2008/10/14(火) 10:15:59ID:???
>>482
>>429
>>437-441
0487nobodyさん2008/10/14(火) 12:30:14ID:PhS+pU3S
超初心者的な質問ですいません

phpを使ったwebサイト作成の勉強をしているのですが

C:\Users\ユーザー名\Documents\サンプルサイトの中でwebサイトを作っているのですが
C:\xamppの中にあるhtdocs内にあるphpを読み込もうとしても上手くいきません。
phpの初心者なんで概念自体があやふやなので変な質問でしたらごめんなさい<(._.)>
0488nobodyさん2008/10/14(火) 13:06:00ID:???
apache 動かしてるのにドキュメントルートの外でサイト作らなくてもいいと思うのよ。
0489nobodyさん2008/10/14(火) 18:05:42ID:???
Cドライブ開くの面倒ならショートカット作ればいいしな
0490nobodyさん2008/10/14(火) 18:49:32ID:???
初心者はxamppやめれ
0491nobodyさん2008/10/15(水) 15:36:31ID:jArJnvnC
平分のIDとmd5で暗号化したパスワードをtxtファイルにして
それを.htaccess下のフォルダに入れました。

メインのPHPでそのファイルを読み取り認証
その後、ID.datファイルを外部から読込んで
IDごとに違うページを表示させているのですが

セキュリティ的に問題などあるでしょうか?

補足
ID.datも.htaccess下に入れてあります。
ちょっとした顧客の納期表示に使おうと思っています。
0492nobodyさん2008/10/15(水) 15:40:03ID:???
htaccess下って何だよ
0493nobodyさん2008/10/15(水) 15:42:31ID:jArJnvnC
>>492
すいません
.htaccess .htpasswordファイルを置いてアクセス制限かけたフォルダです。


0494nobodyさん2008/10/15(水) 15:43:47ID:???
>>492
「.htaccessでアクセス制限しているディレクトリ配下」くらい予測しろ

>>491
.htaccessでdeny from allしてるなら直リン出来ないからまぁ安全じゃないか?
出来ればルート外に置くのがベストだが
0495nobodyさん2008/10/15(水) 15:56:52ID:jArJnvnC
わかりづらい文章で申し訳ありません

>>494
ありがとうございました。
ルート内にあったのでルート外に置くようにしてみます。
0496nobodyさん2008/10/15(水) 17:58:29ID:9ioAzBde
PEARってセーフモードの鯖にはインストールできないんですか?
0497nobodyさん2008/10/15(水) 20:04:57ID:???
インストールはできる。
使えるかどうかはともかく。
0498nobodyさん2008/10/16(木) 00:04:07ID:???
>>490
理由は?
0499nobodyさん2008/10/16(木) 08:26:41ID:???
>>498
質問に答える側が使っていないから。
0500nobodyさん2008/10/16(木) 10:28:23ID:???
>>499
いやそれなりに使うだろ
開発でFTPとかNFSが面倒な時
開発用、テスト用の鯖作るの面倒な時もか
0501nobodyさん2008/10/16(木) 17:46:31ID:???
うん、そんなものをWebProgのWの字も知らない初心者が使うってのがそもそもおかしいだろ、な?
0502nobodyさん2008/10/16(木) 18:09:17ID:???
それもそうか
じゃぁ普通にレン鯖か
しかしレン鯖だとセーフモードやらパーミッションやら意識することが多いよな
・・・そうかそれも勉強か!
0503nobodyさん2008/10/16(木) 18:21:05ID:???
ApacheとPHPとMySQLをインストールすればいいと思うよ。
0504nobodyさん2008/10/16(木) 20:03:13ID:???
んだんだ
0505nobodyさん2008/10/17(金) 13:22:48ID:???
phpinfo()などではき出される全項目の意味を説明してあるサイトなどを、ご存じな方
教えて頂けませんでしょうか。
0506nobodyさん2008/10/17(金) 14:04:27ID:???
個別に調べればいいんでないの?
コアの部分はPHPまぬある必見
PECLの分まで纏めたサイトなんてある意味マゾだ
0507nobodyさん2008/10/18(土) 00:42:37ID:VyIaaBn5
496です。

>>497
有難うございます。
只今、PHPと共にモバイルサイト構築を勉強中で、
Net_UserAgent_Mobileがどんな具合なのか使ってみたかったんですが
自分の力では無料サーバのセーフモード下にPEARを
インストールすることが出来ませんでした…orz

・無料サーバ
・php5.25
・セーフモード下
では、やはり不可能なのでしょうか。
どなたかご教授頂ければ幸いです。
0508nobodyさん2008/10/18(土) 01:19:10ID:???
PEARをインストール・・・
ぶっちゃけ依存PEARも含めてアップロードしてパスを通せば使える
(共有ライブラリに依存しないなら)
インストーラでなければならないわけじゃない(依存が面倒なだけ)
0509nobodyさん2008/10/19(日) 13:57:02ID:???
サーバでPHP実行中に、クライアントのブラウザを閉じた若しくは別ページに移動した等の場合、
サーバ側の処理はどうなりますか?
0510nobodyさん2008/10/19(日) 13:59:27ID:???
http://jp2.php.net/ignore_user_abort
0511nobodyさん2008/10/20(月) 11:13:17ID:???
あの〜、すみません。
メール送信フォームのフォーム入力の所についてなんですけど
間違ってたら警告出して
間違ってなければ確認画面に飛ばすように書きたいんですけど
飛ばすと入力情報が消えてしまいます。
if (isset($_POST['oshibotan'])){
if (isset($_POST['namae']=="")){
echo "名前書いて<br>";
}
}else{
   $url = "kakunin.php";
   header("Location:$url");
}
}
なんとなく「そりゃ飛ばないわな」って思うんですが
わからない〜( p_q)
0512nobodyさん2008/10/20(月) 11:48:59ID:???
>>511
つセッション
05135112008/10/20(月) 14:03:24ID:???
ああ・・その前にフォー文がわからなくなった・・・・
上の通り書いてもエラー(「名前書いて」)が出ない・・すぐに飛んでしまう( p_q)
0514nobodyさん2008/10/20(月) 14:22:25ID:???
まずissetの使い方が違う
issetはその変数がセットされているかどうか
その中に==とか入れてる時点で間違ってる

次にecho "名前書いて<br>"; と飛ばす処理は同階層なので
今の書き方だとどちらかしか発生しない

あとLocationの使い方がその書き方でも飛ばしてくれるブラウザは多いが
書き方は間違っている
正しくはhttpとかスキーマからはじめないとだめ
0515nobodyさん2008/10/20(月) 14:24:12ID:???
あ、すまん

次にecho "名前書いて<br>"; と飛ばす処理は同階層なので
今の書き方だとどちらかしか発生しない

これ忘れて1個}が多いので読み間違った
まぁどちらにせよどちらかしか発生しないが・・・
0516nobodyさん2008/10/20(月) 14:24:16ID:???
nullの時と同じ扱いだから別に間違っちゃいない思う
0517nobodyさん2008/10/20(月) 14:30:59ID:???
>>516
どう見ても間違いだろうが

if ($_POST['namae']==""){

これなら使っているWebアプリ等は多々あるが

if (isset($_POST['namae']=="")){

これはまず無い
というかこういう書き方出来るのかと思って
さっき試したらParse error出たし
0518nobodyさん2008/10/20(月) 14:45:13ID:???
ああそもそも括弧付いてなかったのね
05195112008/10/20(月) 18:00:40ID:???
>>514、>>516
あんがと!!

自分で色々やってたらなんか出来た。
「なんか出来た」だからちゃんとわかってないかも
明日もまた質問するかもしれないけど
ありがとね!

issetはstrlenにしたよ。
よくわかってないのに見よう見まねで使ってる。
たぶんまだバグだらけ。
0520nobodyさん2008/10/20(月) 18:48:20ID:???
strlen($_POST['namae']=="") にしたのかな。
0521nobodyさん2008/10/21(火) 09:15:38ID:???
質問させてください。
webサイトの作成に役立てようと、phpを勉強しはじめました。
入門書を一通り読んだのですが、webサイトにどう役立てるかわかりません。
テンプレート的なものをイメージしていました。
次に具体的に何を学べばよいのでしょうか?
0522nobodyさん2008/10/21(火) 10:23:27ID:???
phpをちゃんと理解してから次行ってくれ
05235112008/10/21(火) 11:17:14ID:???
>>520
うん、そうしました。
0524nobodyさん2008/10/21(火) 11:46:03ID:???
なぜに strlen($_POST['namae']=="") w
0525nobodyさん2008/10/21(火) 13:43:59ID:5M3hbzoP
やるなら
if (isset($_POST['namae']) && strlen($_POST['namae']) == 0) {
    echo "名前書いて<br>";
}

かな・・・
0526nobodyさん2008/10/21(火) 14:36:34ID:???
テキストファイルを書き換えたくてスクリプトを作ったのですが
windows上では動作するのにレンタルスペースで動かすと
ファイル削除、コピー、書き込みができません。どうしてですか?
0527nobodyさん2008/10/21(火) 14:43:57ID:???
windowsのレンタルスペースじゃないからじゃない?
0528nobodyさん2008/10/21(火) 15:10:40ID:???
質問させてください。
人生に役立てようと、女心を勉強しはじめました。
入門書を一通り読んだのですが、人生にどう役立てるかわかりません。
テンプレート的なものをイメージしていました。
次に具体的に何を学べばよいのでしょうか?
0529nobodyさん2008/10/21(火) 15:31:51ID:???
>>528
2点
0530nobodyさん2008/10/21(火) 16:12:30ID:???
>>528
つまらん。
0531nobodyさん2008/10/21(火) 16:50:07ID:FLMyajbO
>>528
つまらなすぎ
05325112008/10/21(火) 17:39:59ID:???
ちょっとPHPとはあまり関係ないんだけど
原因わかる人教えて
テーブルタグ使ってて
<table>
<tr><td>ユーザID</td><td><input type="text" name="userid" maxlength="10" size=20></td>
<tr><td>パスワード</td><td><input type="password" name="pswd" maxlength="10" size=20></td></tr>
</table>
ってやってるんだけど
フォームの長さがサイズ指定しても変わってしまう。
input typeをpasswordにしてから。
これは直せないのかなぁ?
0533nobodyさん2008/10/21(火) 17:45:31ID:???
>>532
CSSで縦横指定してやるとよろし
0534nobodyさん2008/10/21(火) 19:04:47ID:???
なんでそこだけダブルクオーテーションがないんだ
コピペPGの悪例だな
0535nobodyさん2008/10/21(火) 19:42:03ID:???
よくみりゃ<tr>も閉じてないな
0536nobodyさん2008/10/21(火) 20:02:57ID:???
>>535
よくみろ<tr>は閉じてある
0537nobodyさん2008/10/21(火) 20:05:18ID:???
>>536
よくみろ
0538nobodyさん2008/10/21(火) 20:26:31ID:???
よくみた<tr>は閉じてない
0539nobodyさん2008/10/21(火) 21:43:31ID:???
・SQLインジェクションという言葉を知らない
・コメント欄を読まない
・問題の詳細についてググりすらしない
・未知の脆弱性に対して敏感でない
・精神的に幼稚である
0540nobodyさん2008/10/21(火) 21:56:30ID:???
php入門系/phpリファレンス系のサイトでサイト内コンテンツを一括ダウンロードできるようにしてある
サイトはどこかにないですかね?

社内LAN環境で鯖を立ててphpを動かそうと思っていますが
NETにつなげないため調べ物ができず困っています…

サイトダウンローダー等も試してみたのですが
CGIに対応しているダウンローダーが無くうまく落とせませんでした
0541nobodyさん2008/10/21(火) 21:59:56ID:???
>>540
本でも買え
0542nobodyさん2008/10/21(火) 22:02:37ID:???
>>540
少しは調べたのかな?
http://docs.php.gr.jp/
0543nobodyさん2008/10/22(水) 08:23:23ID:P24H2Ub2
>>539
一通りの攻撃の手法と防御法は覚えたけど未知の脆弱性に対してどうすればいいか正直わからない。

この機会に教えてください。
05445112008/10/22(水) 09:39:01ID:???
""ってつけるのとつけないのはどっちがいいんでしょうか?
コピペではないのですが、つけたりつけなかったりです。
CSS、今から調べてみます。
調べるのが遅いんですよね・・・効率悪い探し方をしているのかも。
0545nobodyさん2008/10/22(水) 09:49:17ID:???
>>544
とりあえず、つけておいた方がいい
05465112008/10/22(水) 09:55:50ID:???
わかりました。
05475112008/10/22(水) 13:49:18ID:???
DBからID、PWを取り出して認証するログインスクリプトなんですが
認証実行(ログインボタンを押した時)した際
DBからID、PWを全て取り出して
1つ1つ合っているかどうか検証するのですよね。
if($user==(DBから取り出したID) && $pswd==(DBから取り出したPW)){
    $url = "index.php";
    header("Location:$url");
    }else{
        echo "ちがうがな!";
    }
}
こんな感じですよね?
この(DBから取り出した・・)の部分にどう書けばいいのかわからなくて・・
いっぱいあるわけですよね
複数のID&PWを1つにまとめて出して確認する方法が良くわからない
0548nobodyさん2008/10/22(水) 14:01:45ID:???
>>547
どんだけ無駄な
DBならSQLのWHEREでIDとパスワードを照合しろよ
結果の行数が1か0かで判断出来るじゃん
0549nobodyさん2008/10/22(水) 14:05:08ID:???
先輩が最初そうやってるのを見た
意外と陥りやすい罠かもしれない
0550nobodyさん2008/10/22(水) 14:25:22ID:???
まじかよ・・・
DBを使ってる理由を問いたいくらいだ
05515472008/10/22(水) 14:27:34ID:???
なるほど、WHEREで照合ですか・・・
だいぶググってみましたが
よくわからないです。
入門サイト見ながらやってるんですが

>>548,549
のっけから間違っちゃってるってことでしょうか?
0552nobodyさん2008/10/22(水) 14:29:57ID:???
DBとPHPの入門書を各々一冊ちゃんと読んでからのほうがいいと思うよ
05535472008/10/22(水) 14:40:12ID:???
先輩にも「そういう質問が来るとは思わなかった」と言われました。
先輩2人は参考書も買わずに半日かからずに出来たそうです。
僕は2日かかってます。
自分でも何故こんなに理解力が無いのかと思うと嫌になります。
今日は帰りに入門書を買って帰ります。
ありがとうございました。
0554nobodyさん2008/10/22(水) 14:55:22ID:???
>>553
認証部分なんて30分もかからん、多分その先輩もそうだろう
理解力ではなくて基礎が足りん
PHPの文法やアルゴリズム、DBの基礎とSQL構文、知っておくべきことを知らないから時間がかかる
知った後は早いもんだ
0555nobodyさん2008/10/22(水) 15:18:05ID:???
DBに生パスワード置いとくなよ
絶対やるなよ

「パスワードをハッシュ化(暗号化)保存することを法律で義務化するくらいのことが必要だと思う」
ttp://neta.ywcafe.net/000910.html
05565532008/10/22(水) 15:44:06ID:???
ログインが出来ればハッシュ化してやり直すつもりですが
とりあえずログインをやろうと思って
DBに追加したIDとPWをちゃんと読み込めるかどうか試そうと思って。
それでずっとつまづいてます。
自分でもすぐ出来ると思ったんですが・・・
今日中に終わらせると言ったもんだから今日中に終わらせないと
0557nobodyさん2008/10/22(水) 15:57:40ID:???
そしてSQLインジェクション可能なのをまた1つ生み出すと・・・

05585532008/10/22(水) 16:03:03ID:???
if ($_SERVER["REQUEST_METHOD"]=="POST"){
$user = $_POST['userid'];
$pswd = $_POST['pswd'];
if($user==$row['name'] && $pswd==$row['pass']){
$url = "index.php";
header("Location:$url");
}else{
echo $error;
}
この$row['name']ってところは配列ですよね。
ここに配列の中身全部出せばいいんじゃないかと思ってます。
「やさしいPHP」という本を見てるんですが、詳しくは載ってなくて
0559nobodyさん2008/10/22(水) 16:03:06ID:???
というかDBの用意はできてるの?
mysql_connect()とかで接続できてるの?
SQLの構文は知ってるの?
君がどこまで理解してるのかが全然わからないw

AUTHとか使って簡単に済ませちゃえば?
05605532008/10/22(水) 16:21:52ID:???
DBにはアクセスできてます。
構文はスコシしか知らないと思います。
追加や一覧表示、削除は出来ました。
0561nobodyさん2008/10/22(水) 16:56:11ID:???
>>560
>>558で$rowを事前に用意しようとするのが間違い

postのuseridとpswdでDBに対してSQL発行(SELECT文)して存在するかチェック
(>>555の点を注意するならハッシュ化したpswdで比較)
で、結果に応じて表示を行う

な?単純なものならこれだけだ
05625532008/10/22(水) 17:27:48ID:???
>>561
ありがとう、わかったようなわからないような
でもなんとなく・・・いや、とりあえずもう少し頑張ってみる。
またきます。
0563nobodyさん2008/10/22(水) 18:23:44ID:???
>>562
>>552
05645622008/10/22(水) 19:58:59ID:???
AmazonでMySQLとPHPの参考書
人気高いやつを注文したっす
金曜日には届きますけど、それまで教えて貰いたいです。
あの・・・もしよければソースそのまま
どこかのアップローダにアップするので
訂正もしくは、ここは訂正すべき、という部分を指摘してもらえないでしょうか?
0565nobodyさん2008/10/22(水) 20:23:07ID:???
>>511を見る限り、DBとの連携に手を出すにはまだ早い気がする。
0566nobodyさん2008/10/22(水) 20:27:00ID:???
この程度でも手出せるのがPHP
0567nobodyさん2008/10/22(水) 21:01:02ID:???
>>564
表面だけ取り繕っても大抵上手くいかないからやめとけ
0568nobodyさん2008/10/22(水) 21:46:42ID:Qg6SK/1U
初心者です。
<?php echo"<〜>" ?>
<?php if(〜) {
echo"<iframe src〜 />"; } ?>

と、あって、3行目のecho(iframe)が表示される時1行目の
<?php ?>を丸ごと消去したいのですが、どうしたらいいですか?
0569nobodyさん2008/10/22(水) 21:54:58ID:???
elseに書くか変数に入れりゃよかろ
05705642008/10/23(木) 04:51:02ID:???
http://amezolog2.hp.infoseek.co.jp/source/up1633.zip
一応これのlogin.phpなんですけど〜〜(;;;;;;
8行目から23行目にかけてのとこなんすけどぉ〜
ここにDBから呼び出したIDとPWを書いて認証したいんですけど
DBの書き方がわからへん・・・。
0571nobodyさん2008/10/23(木) 05:04:50ID:???
>>570
>>552
0572nobodyさん2008/10/23(木) 08:47:21ID:???
そこ取り繕っても後が続かないんじゃないかな。
その後、たぶんセッション引き回すんだろうし。
0573nobodyさん2008/10/23(木) 08:56:53ID:???
>>570

$sql = "SELECT * FROM user_pwd WHERE user ='$user'and pass = '$pswd'";
$res = mysql_query($sql,$conn);

$resになにが入ってるか理解できてないと思う
$resにはDBのuser_pwdテーブルのuser列が$userで更にpass列が$pswdのオブジェクトが入ってる
言い換えると
$userと$pswdが一致してるレコードがあれば$resに格納
つまり君の言う認証はSQL文を発行した時点で完了してる

ま>>561さんが言ってるんだけどねw
0574nobodyさん2008/10/23(木) 09:05:17ID:???
>>573
とりあえず間違ってる
0575nobodyさん2008/10/23(木) 09:20:09ID:???
>>573
おまいも理解してねぇのか
結果セットはレコードそのものじゃねぇ、発行結果のオブジェクトだ

あとこの場合のSELECTはCOUNTで行数数えるだけでいい
で、結果セットからnum_rowsして1か0かで判断
05765702008/10/23(木) 09:37:43ID:???
どうも。
今からやります。
できるかなあ。
05775702008/10/23(木) 10:23:21ID:???
ひとつずつ取得すればいいと言われたのですが
$kekka="SELECT pass FROM user_pwd WHERE user=".$userid;

if ($_SERVER["REQUEST_METHOD"]=="POST"){
if($kekka=$pswd){
echo "Okie.";
}
elseif($kekka!=$pswd){
echo "bad.";
}
else{
echo "noID.";
}
}
こうですか・・??
0578nobodyさん2008/10/23(木) 10:37:20ID:???
>>577
ダァァーー理解してねぇ
$kekkaにはSQL文が入るのに、なぜ$pswdと比較出来る!

動作だけならこう

$uid // POSTからとったユーザIDとする
$passwd // POSTからとったパスワードとする

$sql = "SELECT COUNT(*) FROM tablename WHERE userid='$uid' AND passwd='$passwd'"
$res = mysql_query($sql);
list($nums) = mysql_fetch_assoc($res);

if ($nums == 0){
//NG
}else{
//OK
}
0579nobodyさん2008/10/23(木) 10:37:55ID:???
データベースどこ行ったんだよ。
0580nobodyさん2008/10/23(木) 10:46:08ID:???
>>578
そんな危ないスクリプト教えんなよ
05815772008/10/23(木) 10:49:49ID:???
$userid = $_POST['userid'];
$pswd = $_POST['pswd'];
$sql = "SELECT COUNT(*) FROM user_pwd WHERE user='$user' AND pass='$pswd'";
$res = mysql_query($sql);
list($nums) = mysql_fetch_assoc($res);
if ($_SERVER["REQUEST_METHOD"]=="POST"){
if($nums==0){
echo "bad";
}else{
echo "okie";
}
}
こうですか?
出来ないよーーーーーーーーーーーーーーーーーーーーわからない
焦る 軽いノイローゼ状態だー
0582nobodyさん2008/10/23(木) 10:51:35ID:???
>>570を見た.結論からいうと>>552
何も分かってないのに偶然うまく動くとかえって自分の首を絞めるよ.

>>570のコードも addtest.php って本人が書いたわけじゃなくて
職場の既存コードのコピペじゃないの?
SQLインジェクション脆弱性あるよ.

>>578 $uid と $passwd をエスケープしないのは初心者にとって有害な例示だと思うよ.
■ このスレッドは過去ログ倉庫に格納されています