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

くだすれ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/
0521nobodyさん2009/01/25(日) 05:48:15ID:???
>>519
ヒアドキュメントは、"をエスケープしなくてすむのがいい。
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が返ってきます。
何かほかの関数や手段はありますか?
0523nobodyさん2009/01/25(日) 06:07:51ID:???
>>522
array_merge_recursive
0524nobodyさん2009/01/25(日) 06:08:42ID:???
array_walk_recursive
すまんこっちのほうだ
0525nobodyさん2009/01/25(日) 07:39:19ID:???
echo count($test, 1)

ttp://jp2.php.net/manual/ja/function.count.php
0526nobodyさん2009/01/25(日) 08:17:33ID:???
>>476
>>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
だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。

なんででしょうか?
0529nobodyさん2009/01/25(日) 11:56:54ID:???
なんでて、言う前に試してみた?
login.phpの中身を空っぽにしてアクセスしてみ?
0530nobodyさん2009/01/25(日) 12:04:32ID:???
>>528
原因はパーミッション以外にいろいろあるよ。
パーミッションだってあってるのかどうか。

他にはopen_basedirとかsafe_modeとか、
CGIで動いてるレンサバなんかならそれに合わせた設定が必要だし。
0531nobodyさん2009/01/25(日) 12:08:36ID:???
>>526
上と被るけどそれじゃ単純なhello worldスクリプトも動かないってこと?
0532nobodyさん2009/01/25(日) 12:09:07ID:???
>>528宛てね
0533nobodyさん2009/01/25(日) 12:14:51ID:???
>>531
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で動いてて、ファイルの所有ユーザーかグループに問題がある
などなど。
0535nobodyさん2009/01/25(日) 12:20:35ID:???
>>533
いやお前さんに聞いてるだけじゃなくて本人に聞いてるんだよ
0536nobodyさん2009/01/25(日) 12:21:27ID:???
まぁ、login.phpの冒頭にphpinfo(INFO_CONFIGURATION);
とでも書いて結果を貼ってもらうってのがいいのかもしれないね。この場合。
0537nobodyさん2009/01/25(日) 12:22:17ID:???
>>535
あぁ、そういうことね。
0538476です。2009/01/25(日) 13:36:25ID:esMzMmSN
>>536
phpinfo(INFO_CONFIGURATION);
かいたやつを入れましたのでよろしくお願いします。
0539476です。2009/01/25(日) 13:42:05ID:esMzMmSN
source.zipの中にはいっています。
0540nobodyさん2009/01/25(日) 13:44:10ID:???
source.zipアクセスできなかったよ?
ところで、login.phpでecho "Hello World!";はしてみたの?
0541nobodyさん2009/01/25(日) 13:44:40ID:???
てか、そのURL貼っちゃえw
0542nobodyさん2009/01/25(日) 13:45:57ID:???
>>538
なぜ531はシカト?
0543nobodyさん2009/01/25(日) 13:49:36ID:???
え、シカトされて怒ってんの?
0544nobodyさん2009/01/25(日) 13:50:22ID:???
これは、マルウエアをインストールさせるための釣りだな。たぶん。
0545476です。2009/01/25(日) 14:46:06ID:esMzMmSN
login.phpでecho "Hello World!";
はできました。
source.zipアクセスできるようになりましたので、よろしくお願いします。

>>マルウエアをインストールさせるための釣りだな。たぶん。
変なこといわないでください
0546nobodyさん2009/01/25(日) 14:53:00ID:???
>>545
そしたら、元のソースにして、エラーが出る個所を特定すればいい。
1行でも解釈できれば例のエラーにはならないから。
で、リダイレクトループとかで問題が出ているケースもあるから、
error_log(__LINE__);とかを怪しいところにはさんで行って、どこまで処理が進んでるかチェック。
0547476です。2009/01/25(日) 15:00:45ID:esMzMmSN
error_log(__LINE__);
の使い方がわかなんね。
どうやって使うの?
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:esMzMmSN
みなさん。ありがとうございます。
error_log(__LINE__); でいろいろ調べてみたいと思っています
0551476です。2009/01/25(日) 20:12:36ID:esMzMmSN
エラーがでました。

PHP 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:esMzMmSN
ひとつ事例があり、SELINUXが原因かと思いましたが
SELINUXは切ってありました。
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'=>"*" // 他の列も取得可能にする
のどこかにデータを入れなくてはいけないのでしょうか?
0554nobodyさん2009/01/25(日) 21:17:56ID:???
とりあえず、初期の問題は片付いたわけだな。よかったよかった。

>>553
聞きたいことをもう少し整理してくれ。
0555476です。2009/01/25(日) 21:24:21ID:esMzMmSN
Member Area のサーバーにはユーザー名とパスワードが必要です。
とでるんですがユーザー名とパスワードを入れてもうごきません。
初歩的ですいませんが、
>>553のどの部分に自分のデータを記載すればいいのでしょうか?
僕はdb_login.phpにデータが入っているのでなにもいれてなく>>553
のままなんですが。
ここの部分がおかしいんですよね?

0556nobodyさん2009/01/25(日) 21:31:42ID:???
mysqlでしょ?
usernameっていうユーザいるの?
0557nobodyさん2009/01/25(日) 21:35:07ID:???
まず、こんだけ色々アドバイスもらってんだから、動くに至った経緯を書け。
ここはお前専用の質問スレじゃないんだ。

で、login.phpが動かないとか、そもそも入力されたユーザ名・パスワードが間違ってた時の挙動が
どうなるのかを把握してんのか?
それと自分でうpした中のDB.txtの中身を理解してるのか?
具体的には62・63行目。

…もしかしてNG推奨だったのか
0558nobodyさん2009/01/25(日) 21:35:50ID:???
データベースのレコードに自分のユーザー名とパスワード、md5ハッシュを保存
db_login.phpにはそのデータベースにアクセスするための権限情報を保存
0559476です。2009/01/25(日) 21:38:41ID:esMzMmSN
'usernamecol'=>"username", // ユーザ名の列 ←変更
'passwordcol'=>"password", // パスワード列 ←変更 
すればいいですか?
あ、mysqlに入っているusernameとpasswordはすでに試しましたが
だめでした。
それがいまいちよくわからないんですよね
なんでだめなのか
0560nobodyさん2009/01/25(日) 21:39:56ID:???
パスワードはちゃんとハッシュしてんの?
0561nobodyさん2009/01/25(日) 21:47:18ID:???
しっかし、よく釣れるなぁw
0562476です。2009/01/25(日) 22:23:02ID:esMzMmSN
>>557さんへ
マスまずパスが違っていました。
僕のパスはinclude_path = ".:/usr/local/include/php/libs"
なので、ここにpearとconfig.phpを入れてやりました。
そしたら動きました。
>>560さんへ
パスワードはちゃんとハッシュしていますよ。
0563nobodyさん2009/01/25(日) 22:34:43ID:???
>>562
PEAR入れて無かったってこと?
0564476です。2009/01/25(日) 22:43:40ID:esMzMmSN
いや、pearのパスが間違っていました。
0565nobodyさん2009/01/25(日) 23:06:00ID:???
元はどこにあったの?
05665222009/01/26(月) 01:07:02ID:Ihgtqp1K
>>525
それだと、a・bという項目もカウントしてしまい、7を返すようです。5を返す方法はないですか?
0567nobodyさん2009/01/26(月) 01:16:16ID:???
>>566
>>524
05685222009/01/26(月) 05:09:38ID:Ihgtqp1K
>>567
すみません、バージョンが4なのでarray_walk_recursiveは使えないみたいです。
他にありませんか?
0569nobodyさん2009/01/26(月) 05:10:14ID:???
引き算すりゃいいでしょ。countとcountで
0570nobodyさん2009/01/26(月) 05:48:20ID:???
>>522
$count = 0;
foreach ($test as $value) {
 $count += count($value);
}
echo $count;
05715702009/01/26(月) 05:58:46ID:???
ちなみに>>570の方法は2次元配列の場合で
それ以上になると再帰(リカーシブ)でやったほうがいい
(foreachのネストでも可能だが読みやすさに限界がある)
ただし再帰は頭の回転が速くないと何やってるかわからなくなるので
苦手なら無理して使う必要はない
0572nobodyさん2009/01/26(月) 06:13:09ID:???
>>570-571
発想はいまいちだが、初心者にしちゃぁ、よくできたな。
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:???
>>570
わざわざそんなことしなくてもこれでいけるっぽ

echo count($test, 1) - count($test);
0576nobodyさん2009/01/26(月) 10:29:32ID:???
html拡張子でPHP5が動くように設定しつつ、
404エラーの際に自作エラーページを表示させるには
どうすれば良いかご存知の方いませんでしょうか。

.htaccessで「AddType PHP5-script html」を指示してしまうと
「ErrorDocment 404 error.html」で指定したページが表示されません。
PHP4の時は両立できたんですが…
0577nobodyさん2009/01/26(月) 10:41:26ID:2xglnPYy
>>576

AddType php5-script .html
0578nobodyさん2009/01/26(月) 10:44:39ID:???
>>575
3次元以上の場合は?
0579nobodyさん2009/01/26(月) 11:03:14ID:???
>>577
あー大文字で書いてしまったのはここに書き込む際の記載ミスです。
実際の.htaccessではご指摘のように記載してます。html拡張子でPHP5は動いてます。
でもそうすると404エラーで自作ページが表示できなくて困ってます。
AddTypeでやってもAddHandlerでやっても結果は同じで、
「AddType application/x-httpd-php .html」でPHP4の環境では両立できるんです。
0580nobodyさん2009/01/26(月) 11:05:47ID:???
エラーページが表示されないのならどんなページが表示されてる?
まっちろ?
0581nobodyさん2009/01/26(月) 11:14:50ID:???
>>580
IEならIE、FireFOXならFireFOXのフツーの404NotFoundページが出ます
0582nobodyさん2009/01/26(月) 11:19:56ID:???
そのエラーのソースの中でheader("HTTP/1.0 404 Not Found");してみるとどうなる?
0583nobodyさん2009/01/26(月) 11:22:02ID:???
だったら例のあれじゃない?
自作エラーページのサイズが小さ過ぎるとか。。。
0584nobodyさん2009/01/26(月) 11:27:03ID:???
>>582
変化ありませんでした。
IEのHTTP 404 未検出の画面が出ます。

>>583
ファイルサイズは1Kbありました。
0585nobodyさん2009/01/26(月) 11:29:13ID:???
>>584
404header返せばいけるはずなんだがな。
どんなソースになってるよ。
0586nobodyさん2009/01/26(月) 11:46:12ID:???
>>585
単純な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:???
Apacheスレかhtaccessスレあたりで聞いたほうがいいぞ
0588nobodyさん2009/01/26(月) 12:06:45ID:???
htaccessスレが見つけられなかったのと
PHPで何とか似たような事をやる技があったりしないかなーと
思ったりしたんですが、やっぱ無理すよね。スイマセンでした。
Apacheスレの方で聞いてみます。ありがとうございました。
0589nobodyさん2009/01/26(月) 14:26:16ID:7H1IWdV1
>>586
> php?>

何これ。
05905892009/01/26(月) 14:27:55ID:???
と思ったら関係ないな、すまん。
0591nobodyさん2009/01/26(月) 21:42:45ID:???
右から読んでもphp
0592nobodyさん2009/01/26(月) 23:07:21ID:???
左から読んでもphp

なんて言うと思ったか
0593nobodyさん2009/01/27(火) 06:21:30ID:???
前から読んでも(ry
0594nobodyさん2009/01/27(火) 10:00:43ID:???
<?山本山
タケヤブヤケタ
山本山?>
0595nobodyさん2009/01/29(木) 04:21:55ID:???
ttp://free-p.ddo.jp/tools/enc4php_e.php
こことおなじものを自分のローカルサーバに設置したいのですがどこかに置いてないでしょうか?
0596nobodyさん2009/01/29(木) 04:32:25ID:???
なぁにこれ?
0597nobodyさん2009/01/29(木) 07:06:35ID:???
>>595
サイトの中身良く見りゃわかんだろ・・・
evalは、文字列の中身をphpのコードとして解釈して実行するもの。
base64_decodeしてからgzinflateしてるんだから
base64_encodeしてからgzdeflateすれば、期待の物が出来るんじゃね?

これでわからないんだったら、プログラミングやめた方が良いかもな
0598nobodyさん2009/01/29(木) 10:51:02ID:???
性格悪いな
0599nobodyさん2009/01/29(木) 12:03:24ID:???
>>597
最初と最後の1行ずつは要らんだろ常識的に考えて。
0600nobodyさん2009/01/29(木) 12:10:04ID:???
>>597
http://pc11.2ch.net/test/read.cgi/php/1221471692/l50
ここの995=997だろ
0601nobodyさん2009/01/29(木) 13:24:49ID:???
>>600
フイタww
淡々と技術情報の交換を2chでしたいってそりゃ無理だろw
2chってそういうとこだとおもうべきだな
0602nobodyさん2009/01/29(木) 17:55:36ID:???
質問です!
サーバーがPHP5になってしまい
今まで使っていたフリーのメールフォームが使えなくなりました。
PHP5のフリーのメールフォームを探したのですが全然わからず
ここにたどり着きました。
フリーのメールフォームのサイトを教えて頂けないでしょうか?
0603nobodyさん2009/01/29(木) 18:20:03ID:???
スレ違いで内科?
0604nobodyさん2009/01/29(木) 18:24:41ID:???
まともな人がいないのでこちらでも質問を

//$_SESSION['abc']; は前ページで123を代入

//ここから
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();

echo $_SESSION['abc'];//123

と表示したいのですが何か方法はないのでしょうか?クッキーとか使わずに。
0605nobodyさん2009/01/29(木) 18:29:17ID:???
頭痛くなってきた。
要点をまとめてくれないか
0606nobodyさん2009/01/29(木) 18:40:48ID:???
$_SESSION['abc'] にはすでに123が入ってるが
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();
とすると123も消えるけど、それを消さずに

echo $_SESSION['abc'];//123
と後でも表示させたい。

理想としては
$abc = $_SESSION['abc'];
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy()
$_SESSION['abc'] = $abc;
echo $_SESSION['abc'];

と表示できればいい。
0607nobodyさん2009/01/29(木) 19:53:27ID:???
>>604 == >>606 だよな?
「どうしても$_SESSION['abc']を使いたい理由」ってのがわからんと、普通のPGは他の手段を考えると思うぞ。
>>606 の中で $abc に入れてるんだったら、そのまま echo $abc; すりゃ良いじゃん、的な。
つーかsession_start()しなくて良いんかな。

長ったらしくない程度に、もう少し質問の背景を含めて、かつ要領良くまとめて質問すれば回答が返って来ると思う。
0608nobodyさん2009/01/29(木) 20:07:16ID:???
釣りだよ。
ttp://oshiete1.goo.ne.jp/qa3224862.html
0609nobodyさん2009/01/29(木) 20:25:30ID:???
http://pc11.2ch.net/test/read.cgi/php/1158647441/672
http://pc11.2ch.net/test/read.cgi/php/1231850905/880

理由はどうあれこういうマルチするアホは相手にしないほうがいい
0610nobodyさん2009/01/29(木) 23:28:49ID:???
何回読んでも>>604のやりたいことがわからない
0611nobodyさん2009/01/29(木) 23:37:26ID:???
前よく出没してた基地外だろ
0612nobodyさん2009/01/29(木) 23:41:37ID:???
やりたいことは見えてる。
「ログイン・ログアウトとは別にセッションデータを引きまわしたい」ってことだろ。
で、普通は>>604みたいなソースにはならないのに、わざわざ教えてgooだか、
phpのマニュアルでセッション破壊用のソースをそれだと勘違いして質問してるだけ。

すでに回答ついてるのに、人の意見を聞けない困ったチャンか、単なる荒し
0613nobodyさん2009/01/30(金) 10:09:33ID:???
>>607
ログインログアウトとは別に、スタイルシートをセッションで持ち歩いていて、
ログアウト>>606で書いたようにログアウトとしたときセッションに保存してあるスタイルシート変数も消えてしまいます。
なので、セッション(ログアウト)を消す前に$abc = $_SESSION['abc']; として消した後再び、$_SESSION['abc'] = $abc; などにして再度セッションにいれればなと考えていますが、
うまくいきません。
そこで何かいいほうほうは無いものかと。

0614nobodyさん2009/01/30(金) 12:27:38ID:???
悔しいっ・・・でも・・・触っちゃう・・・っ(ビクビク

>>613
cookie使えよ。sessionなんかにそんなん入れんな。
sessionに入れるならログアウト=専用スタイルシート破棄として使え。
$_SESSION と session_*()を勉強し直して来い
0615nobodyさん2009/01/30(金) 23:37:15ID:gxYTwHzL
http://epg.2ch.net/tv2chwiki/subject.txt
から、別サーバー(自分のブログとか)に
スレの勢いと局、番組名だけを取得して表示させることってできますか?
0616nobodyさん2009/01/30(金) 23:39:57ID:???
うん
0617nobodyさん2009/01/31(土) 00:20:10ID:Zjr5MV5E
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="text" name="textbox" value="">
<input type="submit" value="送信">
</form>

<?php

$text = htmlspecialchars( $_POST["textbox"] );

if ( get_magic_quotes_gpc() ) {
$text = stripslashes( $text );
}
print $text;
?>

これ、ゲストの人がコメント書き込むくらいならいいんだけど、自分が投稿しようと思った時に
$_SERVER['PHP_SELF'];が入っているからエディットページ(管理人専用の編集ページ)かなんかでindex.phpに書き込めないと思うんだ。
エディットページでindex.phpに反映させる方法ってない?
0618nobodyさん2009/01/31(土) 00:28:12ID:???
エディットページで$_SERVER['PHP_SELF']にしなければいいのでは?
0619nobodyさん2009/01/31(土) 00:41:31ID:Zjr5MV5E
お!というとどういう風に記述すればいいですか?
0620nobodyさん2009/01/31(土) 00:42:37ID:???
ファイル名
0621nobodyさん2009/01/31(土) 00:42:41ID:???
>>615 $rtn = file_get_contents( 'http://epg.2ch.net/tv2chwiki/subject.txt ' );

>>617 漏れは神様でもエスパーでもないんだから、
おまいのやりたいことを補完して理解なんかできない。
質問は相手に理解できるように書こう。

でも <input type=hidden name=action value=edit>
とか場合わけしる
■ このスレッドは過去ログ倉庫に格納されています