くだすれPHP(超初心者用)5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/22(土) 06:36:02ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0488nobodyさん
2009/01/23(金) 17:08:51ID:Jr51+scJあれ
paramじゃなくてそこはhtmlにではないですかね
僕の方では一応エラーは出てません
0489nobodyさん
2009/01/23(金) 17:21:03ID:???セッションが引き回せていないだけ、ってオチじゃないの?
case '2'のところで、print_r($_SESSION)ってやってみれば?
0490nobodyさん
2009/01/23(金) 17:27:13ID:Jr51+scJすいません
どの辺りに入れたらいいかよろしければおねがいします
セッション引き回す?の意味がよく分からないのですが
…念のためお聞きしますが、このプログラムでは解答をファイルに書き込めないですよね?
0491nobodyさん
2009/01/23(金) 17:37:42ID:???もう少し頭を整理したら?
回答はどのファイルに書き込むの?
> oneやtwoを別のファイルに記録したいんですが
回答毎に別のファイルを作るってことかい?
0492nobodyさん
2009/01/23(金) 17:39:39ID:???//if ($_REQUEST[$k]) {
if ($_SESSION[$k]) {
0493nobodyさん
2009/01/23(金) 17:52:40ID:???デバッグなんだから、どこでもいいよ。
とりあえず、聞く前に試したら?
セッションに代入した(はずの)後、
代入された(はずの)セッションを使う前
0494nobodyさん
2009/01/23(金) 17:58:15ID:Jr51+scJこれをwebアンケートのようにしたときに
これを解答した人が何を選んだのか記録するファイルを作りたいんです
今はanc.datをつくればそこに日付等が記録されますが
できれば加えてone,two,threeのどれにチェックをつけたかも記録したいということです
記録するのがanc.datファイルでなくてもよいです
>>492
ありがとうございます!
それで上記みたいな事ができるでしょうか?
今は分かりませんが、夜に試してみます
0495nobodyさん
2009/01/23(金) 18:00:35ID:Jr51+scJ自分でさっきいろいろ挿入してみました
どうしてもエラーが出てしまったので
あとで>>492を試してみます
ありがとうございます!
0496476です。
2009/01/23(金) 19:42:52ID:L5uKYwrLWarning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
でした。
わかる人いますか?
ぜんぜんわかりません。
ちなみにsmartyはhttp://hangar5.blog48.fc2.com/blog-entry-27.html
でインストールしました。
0497nobodyさん
2009/01/23(金) 20:01:20ID:???あるphpで書かれたスケジューラを使っているのですが、ユーザ認証の際に
POSTで パスワードを受け取り($pwd)、これの一部をsaltとして使い、crypt()でパスワードを暗号化しています。
おおまかな処理は以下の様な感じで行っています(htmlspacialchars等は省きました)。
/* $userid, $pwd => POSTから受け取ったユーザ名・パスワード */
$ pwd_cr = crypt( $pwd, substr( $pwd, 3, 2 ) );
/* SQL文作成 */
$sql = "SELECT id, passwd FROM users ";
$sql .= "WHERE id='".$userid."' AND password='".$pwd_cr."'";
/* SQLの結果セット取得 */
$res = pg_query($conn, $sql);
$cnt = pg_num_rows($res);
教えてもらいたい事ですが、この crypt( string $str [, string $salt ] ) について、
$str と $salt が完全に同じものである場合、どのような環境でも、生成される文字列は常に同一のものになるのでしょうか?
なんでまたこんな事を聞くかと言うと
Windows ServerにApacheとPHPをぶちこんで動かしていたら、Apache再起動のタイミングで
何故か 同一の $str ・ $salt から生成される文字列が変わってしまった経験が今日を含めて2回起きたからです。
そりゃ確かに php.netのマニュアルには
> そのシステム上で使用できるその他のアルゴリズムを使用します
と書いてあるんですが…ンなcryptの動作がコロコロ変わるものなんでしょうか?
0498nobodyさん
2009/01/23(金) 20:04:21ID:???crypt の挙動が変わる辺りで Windows Update を挟んでいたかどうかは、情けない事にわかりません。
むしろ、 Windows Update で crypt の挙動が変わる可能性があるなら、どのHotfixが怪しいか教えてもらえるとありがたいです。
0499nobodyさん
2009/01/23(金) 20:10:33ID:???「 /var/www/html/login.php 」について、下の2つの確認まじおすすめ
・確実に存在しているのか
・Apacheを実行しているユーザが読めるのか(パーミッションを確認)
0500476です。
2009/01/23(金) 20:41:49ID:L5uKYwrL/var/www/html/login.php
確実にあります。
パーミッションもユーザーが読めるようにしています。
smartyもできてます。
if (class_exists('Smarty')) {
$smary =& new Smarty;
printf("you can use Smarty(version %s).\n", $smary->_version);
} else {
echo "you can't use Smarty.\nplease install Smarty library.";
}
で確認をとりましたし、テストデータもいれました。
ってことはlinuxだからだめってことですよね?
ほかに考えられないんですよ。
基礎からのphpのサンプルアプリケーションもlinuxでだめでした。
0501nobodyさん
2009/01/24(土) 21:09:15ID:???・ DB関連の記述は間違っていないか
MySQLみたいだけど、特に $db_host 等
・ php自体の記述が間違ってないか
つーかphpの文法はわかってる?あとファイル始端終端の無用な空白行やコメント、文字コードとかにも注意。
・ 最初に $test = 0; を、随所に echo "TEST".$test.": OK";$test++; を入れて止まってるところを探せ
php勉強するなら結局はコレ大事。
あとは、本気でどうにも出来ないけどどうにかしたい、って言うなら↑の3つを試した後で
今使ってるMySQLの中身と、今のDocumentRootのディレクトリ構成、php.ini、httpd.conf を、ディレクトリ構成ごとまとめて
zipでうpする位は必要だな。レスが付くかどうかは知らんけど。
>>476 の source.zip だけじゃ db_login.php とか、Auth/HTTP.php とか入ってないっしょ。
ドキュメント見たらなんか、学習に沿って自分で作って配置するものらしいけど…そんなんわからんがな。
これじゃ相当なヒマ人かエスパーじゃない限りレスも何もでけん。
0502476です。
2009/01/24(土) 22:31:06ID:M+3olz+yAuth/HTTP.php これはpearだぜ。
db_login.php はつくったけど、結果はだめでした。
もういいです。すいませんでした。
Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
これも連日ぐぐっているけど、だめ。
orellyに聞いたところ確認するって。
誰か持っていてアプリをlinuxで試した人いるかなって
思ったんだけど、いないみたいですね。
スレ汚しすいません。
持っている方はぜひやってみて。
報告待っています
souce.zipは削除しますので、
暇なエスパーの方でおれやってみようかな?っていう方
はhttp://www.oreilly.co.jp/books/9784873113654/
からダウンロードしてみてください。
ではすいませんでした。
0503nobodyさん
2009/01/24(土) 22:41:25ID:???0504nobodyさん
2009/01/24(土) 23:08:37ID:???そのエラー、稀に文字コードの問題はあるにしてもソースの問題じゃないと思うけど。
サーバー設定で権限がなくて読みに行けないとか、だな。
0505nobodyさん
2009/01/24(土) 23:11:53ID:???0507nobodyさん
2009/01/24(土) 23:23:43ID:???0508nobodyさん
2009/01/24(土) 23:49:33ID:???Unknownとは、読みに行く側のリソースが特定できていないということ。
Web経由のアクセスの場合、login.phpはあるが、権限が不足していたりすると404じゃなく、
phpハンドラーに渡されて、そのエラーになる。普通によくあること。
>>500は「パーミッションもユーザーが読めるようにしています。 」って書いてるが、
読めなくなる原因はファイルパーミッションだけじゃないからね。
0509nobodyさん
2009/01/24(土) 23:56:53ID:???とりあえず、最初に叩くファイルの冒頭にecho "hoge";exit();これでどうなるか。
そっからデバッグしてけば別のエラーになるさ。
0510nobodyさん
2009/01/25(日) 01:33:09ID:???だせぇw
0511476です。
2009/01/25(日) 02:01:51ID:esMzMmSNhttp://gichioka.web.fc2.com/source.zip
すべてのファイルとデータベースとphp.iniを入れました。
よろしくお願いします。
0513nobodyさん
2009/01/25(日) 02:28:51ID:esMzMmSN0516nobodyさん
2009/01/25(日) 03:08:45ID:???これって文章化されたPHP仕様に含まれてますか?
てっきりヒアドキュメントを使わなくてはならないものだと思っていたのですが…
$multiline = "
LINE 1
LINE 2
LINE 3
";
0517nobodyさん
2009/01/25(日) 03:24:57ID:???0518nobodyさん
2009/01/25(日) 03:58:37ID:???VBだと改行で認識するよね。
だからVBからきた人だと、改行入れても
エラーにならない、という仕様のほうが
不思議に思うんでしょう。
0519516
2009/01/25(日) 04:22:47ID:???有名どころのフレームワーク等でも
$multiline = "LINE1\n"
. "LINE2\n"
. "LINE3\n"
と書いているものがほとんどなので、使ってはいけないのかなと疑問を持った次第です。
SQLとか埋め込む時は>>516の方が断然楽ですよね…
ヒアドキュメントはいらない子?
0520nobodyさん
2009/01/25(日) 04:37:23ID:???0522nobodyさん
2009/01/25(日) 05:59:54ID:???例えば
$test['a'][1];
$test['a'][2];
$test['b'][1];
$test['b'][2];
$test['b'][3];
この配列で要素数5を返したいのですが
countでは3が返ってきます。
何かほかの関数や手段はありますか?
0524nobodyさん
2009/01/25(日) 06:08:42ID:???すまんこっちのほうだ
0525nobodyさん
2009/01/25(日) 07:39:19ID:???ttp://jp2.php.net/manual/ja/function.count.php
0526nobodyさん
2009/01/25(日) 08:17:33ID:???>>515
だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。
たとえば、お前らのサーバでも試せるからやってみ。
test.php作ってパーミッションを000にしたファイルにアクセス。
したら、
Warning: Unknown: Failed opening ・・・
になるから。
0527nobodyさん
2009/01/25(日) 08:29:44ID:???0528476です。
2009/01/25(日) 11:45:32ID:esMzMmSNなんででしょうか?
0529nobodyさん
2009/01/25(日) 11:56:54ID:???login.phpの中身を空っぽにしてアクセスしてみ?
0530nobodyさん
2009/01/25(日) 12:04:32ID:???原因はパーミッション以外にいろいろあるよ。
パーミッションだってあってるのかどうか。
他にはopen_basedirとかsafe_modeとか、
CGIで動いてるレンサバなんかならそれに合わせた設定が必要だし。
0533nobodyさん
2009/01/25(日) 12:14:51ID:???Hello Worldが動くかどうかなんて、エスパーじゃあるまいしわからないさ。
が、とりあえず、それを試せば問題は次に移るってこと。
Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
冗長だけどもっかい書くとね。
Apache:login.phpにリクエスト来ました。ファイルありました。phpハンドラー、後はよろしく。
php:了解、じゃ、ファイルをインクルードして処理します〜。あ、ファイル、インクルードできません。
で、エラー
from:不明なリソース to: login.php action:include result:無理
0534nobodyさん
2009/01/25(日) 12:19:12ID:???パーミッションが間違ってる。
open_basedirの設定にtypoがあって動かない。
include_pathに問題がある
safe_modeの設定に問題がある
PHPがsuexecで動いてて、ファイルの所有ユーザーかグループに問題がある
などなど。
0536nobodyさん
2009/01/25(日) 12:21:27ID:???とでも書いて結果を貼ってもらうってのがいいのかもしれないね。この場合。
0538476です。
2009/01/25(日) 13:36:25ID:esMzMmSNphpinfo(INFO_CONFIGURATION);
かいたやつを入れましたのでよろしくお願いします。
0539476です。
2009/01/25(日) 13:42:05ID:esMzMmSN0540nobodyさん
2009/01/25(日) 13:44:10ID:???ところで、login.phpでecho "Hello World!";はしてみたの?
0541nobodyさん
2009/01/25(日) 13:44:40ID:???0543nobodyさん
2009/01/25(日) 13:49:36ID:???0544nobodyさん
2009/01/25(日) 13:50:22ID:???0545476です。
2009/01/25(日) 14:46:06ID:esMzMmSNはできました。
source.zipアクセスできるようになりましたので、よろしくお願いします。
>>マルウエアをインストールさせるための釣りだな。たぶん。
変なこといわないでください
0546nobodyさん
2009/01/25(日) 14:53:00ID:???そしたら、元のソースにして、エラーが出る個所を特定すればいい。
1行でも解釈できれば例のエラーにはならないから。
で、リダイレクトループとかで問題が出ているケースもあるから、
error_log(__LINE__);とかを怪しいところにはさんで行って、どこまで処理が進んでるかチェック。
0547476です。
2009/01/25(日) 15:00:45ID:esMzMmSNの使い方がわかなんね。
どうやって使うの?
0548nobodyさん
2009/01/25(日) 15:04:41ID:???コマンドラインが使えるならエラーログでtail -f /var/log/httpd/error_logとかで見張ってればよくわかる。
エラーログが見れないんならechoでもいいけど、要するにどこまで処理が進んでるかチェックして
そのエラーメッセージを出せば、新しい情報がとれるでしょ?
0549nobodyさん
2009/01/25(日) 16:08:16ID:???Hellow World→動く
サンプルコードをそのまま挙げた→動かない
これしかやってないでできないできない言うとかありえないっす
0550476です。
2009/01/25(日) 20:01:42ID:esMzMmSNerror_log(__LINE__); でいろいろ調べてみたいと思っています
0551476です。
2009/01/25(日) 20:12:36ID:esMzMmSNPHP Fatal error: require_once() [function.require]: Failed opening required 'config.php' (include_path='.:/usr/local/include/php/libs') in /var/www/html/login.php on line 3
だそうです。
調べてみてもわからん。
0552476です。
2009/01/25(日) 20:13:47ID:esMzMmSNSELINUXは切ってありました。
0553476です。
2009/01/25(日) 20:51:19ID:esMzMmSN無事動いたのですが....動いたといえるのか。
HTTP/AUTH.PHPが作動したのですが、
Member Area のサーバーにはユーザー名とパスワードが必要です。
と普通でます。
で、db_login.phpのデータを入れたんですがだめでした。
もしかして
$AuthOptions = array(
'dsn'=>"mysql://$db_username:$db_password@$db_host/$db_database",
'table'=>"users", // テーブル名
'usernamecol'=>"username", // ユーザ名の列
'passwordcol'=>"password", // パスワード列
'cryptType'=>"md5", // パスワードの暗号化形式
'db_fields'=>"*" // 他の列も取得可能にする
のどこかにデータを入れなくてはいけないのでしょうか?
0555476です。
2009/01/25(日) 21:24:21ID:esMzMmSNとでるんですがユーザー名とパスワードを入れてもうごきません。
初歩的ですいませんが、
>>553のどの部分に自分のデータを記載すればいいのでしょうか?
僕はdb_login.phpにデータが入っているのでなにもいれてなく>>553
のままなんですが。
ここの部分がおかしいんですよね?
0556nobodyさん
2009/01/25(日) 21:31:42ID:???usernameっていうユーザいるの?
0557nobodyさん
2009/01/25(日) 21:35:07ID:???ここはお前専用の質問スレじゃないんだ。
で、login.phpが動かないとか、そもそも入力されたユーザ名・パスワードが間違ってた時の挙動が
どうなるのかを把握してんのか?
それと自分でうpした中のDB.txtの中身を理解してるのか?
具体的には62・63行目。
…もしかしてNG推奨だったのか
0558nobodyさん
2009/01/25(日) 21:35:50ID:???db_login.phpにはそのデータベースにアクセスするための権限情報を保存
0559476です。
2009/01/25(日) 21:38:41ID:esMzMmSN'passwordcol'=>"password", // パスワード列 ←変更
すればいいですか?
あ、mysqlに入っているusernameとpasswordはすでに試しましたが
だめでした。
それがいまいちよくわからないんですよね
なんでだめなのか
0560nobodyさん
2009/01/25(日) 21:39:56ID:???0561nobodyさん
2009/01/25(日) 21:47:18ID:???0562476です。
2009/01/25(日) 22:23:02ID:esMzMmSNマスまずパスが違っていました。
僕のパスはinclude_path = ".:/usr/local/include/php/libs"
なので、ここにpearとconfig.phpを入れてやりました。
そしたら動きました。
>>560さんへ
パスワードはちゃんとハッシュしていますよ。
0564476です。
2009/01/25(日) 22:43:40ID:esMzMmSN0565nobodyさん
2009/01/25(日) 23:06:00ID:???0566522
2009/01/26(月) 01:07:02ID:Ihgtqp1Kそれだと、a・bという項目もカウントしてしまい、7を返すようです。5を返す方法はないですか?
0568522
2009/01/26(月) 05:09:38ID:Ihgtqp1Kすみません、バージョンが4なのでarray_walk_recursiveは使えないみたいです。
他にありませんか?
0569nobodyさん
2009/01/26(月) 05:10:14ID:???0570nobodyさん
2009/01/26(月) 05:48:20ID:???$count = 0;
foreach ($test as $value) {
$count += count($value);
}
echo $count;
0571570
2009/01/26(月) 05:58:46ID:???それ以上になると再帰(リカーシブ)でやったほうがいい
(foreachのネストでも可能だが読みやすさに限界がある)
ただし再帰は頭の回転が速くないと何やってるかわからなくなるので
苦手なら無理して使う必要はない
0573nobodyさん
2009/01/26(月) 06:26:30ID:???http://pc11.2ch.net/test/read.cgi/php/1231850905/
0574nobodyさん
2009/01/26(月) 06:30:54ID:???0575nobodyさん
2009/01/26(月) 10:12:51ID:???わざわざそんなことしなくてもこれでいけるっぽ
echo count($test, 1) - count($test);
0576nobodyさん
2009/01/26(月) 10:29:32ID:???404エラーの際に自作エラーページを表示させるには
どうすれば良いかご存知の方いませんでしょうか。
.htaccessで「AddType PHP5-script html」を指示してしまうと
「ErrorDocment 404 error.html」で指定したページが表示されません。
PHP4の時は両立できたんですが…
0577nobodyさん
2009/01/26(月) 10:41:26ID:2xglnPYyAddType php5-script .html
0579nobodyさん
2009/01/26(月) 11:03:14ID:???あー大文字で書いてしまったのはここに書き込む際の記載ミスです。
実際の.htaccessではご指摘のように記載してます。html拡張子でPHP5は動いてます。
でもそうすると404エラーで自作ページが表示できなくて困ってます。
AddTypeでやってもAddHandlerでやっても結果は同じで、
「AddType application/x-httpd-php .html」でPHP4の環境では両立できるんです。
0580nobodyさん
2009/01/26(月) 11:05:47ID:???まっちろ?
0582nobodyさん
2009/01/26(月) 11:19:56ID:???0583nobodyさん
2009/01/26(月) 11:22:02ID:???自作エラーページのサイズが小さ過ぎるとか。。。
0584nobodyさん
2009/01/26(月) 11:27:03ID:???変化ありませんでした。
IEのHTTP 404 未検出の画面が出ます。
>>583
ファイルサイズは1Kbありました。
0586nobodyさん
2009/01/26(月) 11:46:12ID:???単純なHTMLページの1行目に↓をぶち込んだんですが…
<?php
header("HTTP/1.0 404 Not Found");
php?>
.htaccessで拡張子指定しているのは今は.htmlだけなのですが
存在しない.htmファイルを探させると自作エラーページへ行くことがわかりました。
が、.htmlファイルだとIE規定のページになっています。
.htmlでPHPが動くように指定してしまうとErrorDocmentが
狙った動きをしてくれない、という事でしょうか。
ちなみに今、直接自作エラーページを指定したらIE規定のページが出ましたので
404headerはちゃんと返ってきているようです。
0587nobodyさん
2009/01/26(月) 11:54:43ID:???■ このスレッドは過去ログ倉庫に格納されています