くだすれ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/
0717nobodyさん
2008/11/03(月) 03:08:13ID:???0718nobodyさん
2008/11/03(月) 17:55:37ID:???0719nobodyさん
2008/11/03(月) 17:58:50ID:???0720nobodyさん
2008/11/03(月) 23:52:41ID:???ここは素直に session_set_save_handler でいいんじゃない?
session_start を使った既存のコードを変更したくない場合はおすすめ。
マニュアルでは全く触れてないけど、書くときはロックに気を付けろ。
本来はセッションに限ったことじゃないんだけど、セッションはフレーム
ページとかで読み書きのタイミングが重なりやすいので、特に同時接続を
意識して書かないと再現しにくいバグに悩まされる。
0722nobodyさん
2008/11/05(水) 21:07:53ID:5ZwaVGRj解決方法を教えて下さい
0723nobodyさん
2008/11/05(水) 21:12:38ID:???0724nobodyさん
2008/11/05(水) 22:36:27ID:vFTAkKc1apache_getenvはブラウザ経由で取れるのはわかったんですが、
コンソールで取得できないものでしょうか?
0725nobodyさん
2008/11/05(水) 22:37:11ID:???0727nobodyさん
2008/11/05(水) 23:03:04ID:???0728nobodyさん
2008/11/05(水) 23:15:41ID:???0730nobodyさん
2008/11/05(水) 23:32:08ID:???0731724
2008/11/05(水) 23:38:38ID:???シェルから実行したときにApacheの環境変数を取得したいということです。
0733nobodyさん
2008/11/06(木) 00:41:43ID:???0737nobodyさん
2008/11/06(木) 07:26:41ID:???0738nobodyさん
2008/11/06(木) 12:35:47ID:xueniZPL$unko=30;
if($unko=30 && $tinko=50) {
$tunko=100;}
else { $youko=1;}
$tinko=50 && $unko=30 ? $tunko=100:$youko=1;
0740nobodyさん
2008/11/08(土) 10:54:06ID:???どのあたりの勉強をすればよいか、キーワードだけでも教えてもらえませんか?
0741nobodyさん
2008/11/08(土) 11:00:40ID:???リンククリックだけでローカルのファイルをアップロードさせるっつー話なら無理。
0742nobodyさん
2008/11/08(土) 11:10:06ID:???ここのスクリプトが使いたくて、書いてある通りにやってみたら
display(1); ?> … display(2); ?> … display(3); ?> … 設定ファイルがうまく書けていたら
このような結果になりました。
phpの埋め込みで失敗しているのか、私本人がよくわかってないのか、
鯖がCentos5 で Mysql のコードはutf8 だからmb_encodingとか
やってeucにしなきゃいけないのか、もう気絶しそうです。
0743nobodyさん
2008/11/08(土) 11:47:24ID:???>display(1); ?> … display(2); ?> … display(3); ?> … 設定ファイルがうまく書けていたら
>このような結果になりました。
何を言っているのか良く分からん
0745nobodyさん
2008/11/08(土) 13:12:13ID:???0746nobodyさん
2008/11/08(土) 13:48:52ID:???これも結果の一部って、写す範囲広すぎだろう。ここは説明だぞ。
> <? $vote->display(1); ?>
こんな風に書かれてるんだから、自分が short open tag を通す設定にしてるかどうかぐらい
把握してから気絶してほしい。
0747nobodyさん
2008/11/08(土) 14:50:43ID:???んでもってshort_open_tagが有効にされてないせいで全文表示されてたとw
0748nobodyさん
2008/11/08(土) 18:49:51ID:???0749nobodyさん
2008/11/08(土) 20:32:38ID:f7jJ+9vB0750nobodyさん
2008/11/08(土) 20:34:01ID:???0751nobodyさん
2008/11/08(土) 21:59:22ID:???ttp://pbs.darkgray.net/のPbsChatっていうのを設置してみたはいいんだけど携帯三キャリア対応のはずなのに何故か入室できない(名前を書く欄がない)
PCからは普通に入れるんだけど・・・
ちなみに使ってるサーバーはwww4.atpages.jp
サンプルのほうも名前欄が出なくて入室できない・・・
サイトの方にはその辺詳しく書かれてないからよくわからないんだお・・・
誰か助けてくれ・・・
0752nobodyさん
2008/11/08(土) 22:20:11ID:???1-4-2. 携帯対応
携帯用のページを用意するには、option/ディレクトリ内のkt.php,ktchat.php,ktin.php,ktout.php,ktset.phpをindex.phpと同じ場所にアップロードします。
携帯用のトップページはkt.phpとなります。
携帯用の設定はktset.phpで行います。
ってあるけどこのあたりはちゃんとやってるのか?
0753nobodyさん
2008/11/08(土) 22:40:37ID:???携帯用のページを用意するには、option/ディレクトリ内のkt.php,ktchat.php,ktin.php,ktout.php,ktset.phpをindex.phpと同じ場所にアップロードします。
↑確実にやった
携帯用のトップページはkt.phpとなります。
↑よくわからない
携帯用の設定はktset.phpで行います。
↑設定画面を開いたら以下記述のとこだけ書き換えるみたいだったけどなにを書けばいいかわかんなかったお・・・
## 設定項目 ここから↓ -------------------------------------------- #
## チャットルームからの戻り先URL(絶対パスまたは相対パスで指定)
$BURL = "./kt.php";
## 戻り先URLへのリンク文字列
$BMES = "戻る";
## ROM表示行数
$ROMSL = 5;
## 設定項目 ここまで↑ -------------------------------------------- #
0754nobodyさん
2008/11/08(土) 22:49:17ID:???0755nobodyさん
2008/11/08(土) 22:53:51ID:???0756nobodyさん
2008/11/08(土) 23:09:08ID:???がわからん時点でもうダメなんじゃないのか。
要するに携帯でアクセスするときはこっちじゃないとダメってことだろ。
0758nobodyさん
2008/11/08(土) 23:28:35ID:???トップページを二つ作らなきゃ駄目なのか?
0759740
2008/11/08(土) 23:30:32ID:???わかりにくくてすみません。
ブラウザ経由ではなく、サーバでPHPプログラムを実行しただけで、
他サーバの画像を落としたいのです。
現在、cronで自動実行したプログラムでRSSを取得していて、
そのなかの画像ファイルをローカルに保存したいです。
0760nobodyさん
2008/11/08(土) 23:31:19ID:???0761nobodyさん
2008/11/08(土) 23:32:14ID:???Warning: include(set.php) [function.include]: failed to open stream: No such file or directory in /usr/local/www/htdocs/naritya/public_html/pbschat25/kt.php on line 11
Warning: include() [function.include]: Failed opening 'set.php' for inclusion (include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/naritya/public_html/pbschat25/kt.php on line 11
0762nobodyさん
2008/11/08(土) 23:33:16ID:???0764nobodyさん
2008/11/08(土) 23:47:14ID:???ウラルでとるがな・・・まぁいいや
ファイルってなんぞ?
0768nobodyさん
2008/11/09(日) 00:55:43ID:???お前本当にphp勉強してたのか? 基本が全然ダメっぽいが。
で、「set.phpが開けねーぞボケ」ってエラーなんだがset.phpはどこに置いたのさ。
パッケージ見る限りちゃんと入ってるから正常にアップロードできてりゃ問題ないはずなんだが。
0769nobodyさん
2008/11/09(日) 12:58:05ID:???0770nobodyさん
2008/11/09(日) 14:39:19ID:???0771nobodyさん
2008/11/09(日) 14:44:33ID:???0772nobodyさん
2008/11/09(日) 15:17:02ID:???0773765
2008/11/09(日) 17:25:53ID:???質問の仕方が悪かったかもしれん。すまん。
このチャットを携帯からも使用出来るようにしたいんだが、どうすればいいのだろうか・・・というのが聞きたかっただけで。
違うスレで質問した方がいいなら移動します
0774nobodyさん
2008/11/09(日) 17:32:27ID:???SQLiteを使っていて、UNIQUEなフィールド"hoge"からある値のレコードを抽出しています。
$db = sqlite_open("hogehoge.sqlite");
$command = "SELECT * FROM articles WHERE hoge = 'ある値'";
$query = sqlite_query($db,$command);
この時、ある値のレコードが存在する場合の処理と存在しない場合の処理を分けたいのですが、
どのように条件文を設定すればよいでしょうか?
if($query){
}else{
}
で分けようとしたのですが、うまくいきませんでした・・・
0775nobodyさん
2008/11/09(日) 17:36:48ID:???だから設置がちゃんとできてりゃ>>761なんてエラー出さねーんだって。
なにを根拠にちゃんとできてるなんて言い張るんだお前は。
もういいや、とりあえずphpの話じゃなくなってるから↓行ってこい。
CGI設置について質問【Part3】
http://pc11.2ch.net/test/read.cgi/php/1176143582/
0777774
2008/11/09(日) 17:57:16ID:???なんだかよくわからないんです、
常にNULLみたいで・・・
sqlite_fetch_allをした後に判断するしかないということでしょうか?
0778nobodyさん
2008/11/09(日) 18:04:45ID:???$resultとかにしてよ$rowsとかにしてください
0779nobodyさん
2008/11/09(日) 18:07:22ID:???常にnullって値入れてないんじゃないのかw
0780778
2008/11/09(日) 18:10:22ID:???$queryに結果が入ってるのかと思ってた
じゃあ$stmtとかかなあ
0781774
2008/11/09(日) 18:39:25ID:???動作確認したつもりだったんですが、ソースにバグがありました。
修正後にechoで中身を見てみたところ、
中身があるときには、
Resource id #148
ないときには何も表示されませんでした。
これは先ほどの
if($query){
}else{
}
で処理がわけられるということでしょうか?
0782nobodyさん
2008/11/09(日) 18:44:23ID:???0783774
2008/11/09(日) 19:11:21ID:???中身があるときもないときも
Resource id #148
のようなものが入っているみたいです。
その後のsqlite_fetch_allをした後なら空の配列ができるようですが、
空の配列かどうかを調べる関数はありますでしょうか?
0784774
2008/11/09(日) 19:16:48ID:???empty関数を使って場合わけできました。
結局、sqlite_fetch_allを行った後の返り値で行いました。
みなさんありがとうございました。
0785nobodyさん
2008/11/09(日) 19:35:24ID:???0787nobodyさん
2008/11/09(日) 20:00:29ID:???0788774
2008/11/09(日) 20:05:13ID:???ごめんなさい
781では中身がないときは何も表示されないと書いたのですが、
基本的にはResource idとかいうのが入っていたみたいです。
空に見えたのはなにかのソースバグだったのかもしれません。
0789nobodyさん
2008/11/09(日) 21:23:22ID:???↓テキストボックスにキーワードを入力して、ボタンを押すとURLに飛ぶといったプログラムを
作っているのですが、、、
<?
if($val == "1")header("LOCATION:http://blogsearch.google.com/blogsearch?hl=ja&ie=UTF-8&q=$txt&btnG=ブログ検索&lr=lang_ja");
if($val == "2")header("LOCATION:http://groups.google.co.jp/");
if($val == "3")header("LOCATION:http://blogsearch.google.com/");
if($val == "4")header("LOCATION:http://jp.youtube.com/");
?>
<form action=link.php method=POST>
<input type=text name=txt>
<input type=radio name=val value=1>ブログ
<input type=radio name=val value=2>グループ
<input type=radio name=val value=3>書籍
<input type=radio name=val value=4>YouTube
<input type=submit value=送信>
</form>
http://blogsearch.google.com/blogsearch?hl=ja&ie=UTF-8&q=$txt&btnG=ブログ検索&lr=lang_ja
↑$txtと書いてますが、ここにキーワードが入るわけですが、文字化けしちゃうんです><
誰か助けて><
0790nobodyさん
2008/11/09(日) 21:28:08ID:???敬語使ってても「><」が入ると舐め腐ってるようにしか見えないのも置いといて
文字のエンコード確認しろ茄子
0791nobodyさん
2008/11/09(日) 21:32:58ID:???全然なめてなんかないんですが、
文字のエンコードですか??アップするファイルはSHIFT-JISです。
サーバはxrea使ってるのでわかりません。
0792nobodyさん
2008/11/09(日) 21:33:27ID:???これは何を意味してんの?
0793789
2008/11/09(日) 21:38:23ID:???あそっか!
$txt=mb_convert_encoding($txt, "UTF-8", "auto");
を付け加えたら治りましたwありがとうございます
0795789
2008/11/09(日) 22:01:55ID:???0796nobodyさん
2008/11/10(月) 01:14:00ID:???Windows Vista Ultimate でXAMPPを使用を試みています。
Apacheが起動できておりません。
(以下のようになってしまいます)
E:\xampp>apache_start.bat
Diese Eingabeforderung nicht waehrend des Running beenden
Bitte erst bei einem gewollten Shutdown schliessen
Please close this command only for Shutdown
Apache 2 is starting ...
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、ま
たはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to addr
ess 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
Apache konnte nicht gestartet werden
Apache could not be started
続行するには何かキーを押してください . . .
port443が使用されているということは分かったのですが、
何のソフトが使用しているのか判断ができません。
どうしたらポートを使っているソフトが分かりますでしょうか?
0797nobodyさん
2008/11/10(月) 01:16:54ID:???0798nobodyさん
2008/11/10(月) 01:23:35ID:???助言ありがとうございます。
了解しました。
使用しない方がいい理由を教えていただけますか?
想像しているのは
・初期構築のスキルが付かない
・Windows上に構築するよりLinux上の方が楽
等ですが正しいでしょうか?
0799nobodyさん
2008/11/10(月) 01:25:18ID:???既にwww鯖が入ってる とかでは?
0800nobodyさん
2008/11/10(月) 01:32:25ID:???>port443が使用されているということは分かったのですが、
>何のソフトが使用しているのか判断ができません。
>どうしたらポートを使っているソフトが分かりますでしょうか?
「セキュリティが強化されたwindowsファイアウォール」を見て一歩前進です。
Secure Socket トンネリング プロトコル (SSTP 受信)
が受信でport443を使用している模様です。
0801nobodyさん
2008/11/10(月) 02:09:47ID:???以下のように実装したら色がかなり落ちてしまいました。
$img = file_get_contents("他サイトのURL");
$im = imagecreatefromstring($img);
$outputResourse = fopen("保存先パス","w");
flock($outputResourse,LOCK_EX);
fwrite($outputResourse,$img);
list($width , $height) = getimagesize(保存先パス);
$dstImage = imagecreate(100,100);
imagecopyresampled($dstImage, $im, 0, 0, 0, 0, 100, 100, $width, $height);
fclose($outputResourse);
$outputResourse = fopen("保存先パス2","w");
flock($outputResourse,LOCK_EX);
imagejpeg($dstImage,"保存先パス2");
調べてみるとimagecopyresampled関数にはパレットイメージの制限(255+1色)による問題というのがあることが分かったのですが、
そのせいなのでしょうか?
だとすればどのように対処したらよいかアドバイスをいただけませんか?
0802nobodyさん
2008/11/10(月) 02:12:20ID:???http://www.google.com/search?q=php+%E3%83%AA%E3%82%B5%E3%82%A4%E3%82%BA
0803716
2008/11/11(火) 23:05:59ID:pJUkayYB>>721
レスありがとうございます。御礼遅れてすいません。
参考にさせて頂きますm(_ _)m
共用サーバ使ってるとセッションデータはデフォルトのままだと漏れることがあると聞いたんで独自に書いてDBで管理しようかと思っているんですが・・けっこう大変そうですね。
しかし共用サーバでなければデフォルトのままでもいいのかなとも思うんですがどうなんでしょう。DB管理にするとI/Oが増えるんじゃないかとも思うんですが。
0804nobodyさん
2008/11/11(火) 23:24:31ID:???DBで管理した事あるけど
DB鯖次第かな・・・
I/Oはreadに1回updateに1回あとsession破棄とGCの時に1回ずつだから
それ程気にする必要もなかったと思う
0805nobodyさん
2008/11/12(水) 00:47:38ID:???そのサーバの設定にもよるけど、
セッションファイルは apache ユーザで 600 で作られるから、
一般ユーザは apache なんかに su できないから、まあ安全。
どれくらい安全かというと、セッションIDを推測されるのと同じくらい。
負荷はサイトのアクセス数による。1時間に1万アクセスくらいならなんでもかまわない。
0806716
2008/11/12(水) 11:17:06ID:oEcWCu5N>>805
おお。レスありがとうございます。非常に参考になります。
>セッションファイルは apache ユーザで 600 で作られるから、
http://www.ibm.com/developerworks/jp/opensource/library/os-php-secure-apps/
この記事の「セッションを保護する」の欄で、
共有サーバーではセッション・ファイルを読み取るスクリプトを攻撃者が作成し、値を取得することができてしまう。
みたいなことが書いてあります。
この記事、色々と記述に問題があるようなのですが、このセッションの問題は本当にあるんじゃないかなーと。オーナーapacheでパーミッション600ならやられそうな気がしますが、どうでしょう。
>I/Oはreadに1回updateに1回あとsession破棄とGCの時に1回ずつだから
それ程気にする必要もなかったと思う
>負荷はサイトのアクセス数による。1時間に1万アクセスくらいならなんでもかまわない。
ウェブ製作会社でバイトしてるんですが、DBの負荷で一番高いのがセッションのテーブルのようなのです。
やはりPV増えるに連れてボトルネックとなりそうですね・・
0807nobodyさん
2008/11/12(水) 13:18:13ID:???攻撃するにもファイル名を総当たりしなきゃいけないので、
それは外部からのセッションIDの総当たりとあんまり変わらないと思われ。
逆にセッションファイル内を読まれても安全に作っておくべき。
パスワードを平文で保存しないとか。
$_SESSION['passwd'] = 'passwod'; // ×
$_SESSION['passwd'] = md5( 'passwod' ); // ○
セッション管理なんてインデックス張ってればDB処理でもいちばん軽い部類の処理だから、
その設計が悪いと思われ。
0808nobodyさん
2008/11/12(水) 14:02:54ID:???0809nobodyさん
2008/11/12(水) 14:06:36ID:???0810nobodyさん
2008/11/12(水) 14:18:19ID:oEcWCu5N>攻撃するにもファイル名を総当たりしなきゃいけないので、
む、そうなんですか。
攻撃者が作るスクリプトってJavaScript??って思ったんですがどういうスクリプトなんでしょう。
JavaScriptはあまり分からないですし、何かサーバ側のファイルの一覧を取得できてしまうようなスクリプトが作れるのかなと思ってました。
でもよくよく考えたら、そんなことできたらセッション以外の点でも大問題ですね汗
0811nobodyさん
2008/11/12(水) 14:29:42ID:???セッションファイルの安全性というのは文字列の複雑さだけで保たれてます。例えば、
http://exsample.com/?PHPSESSID=1234
だと駄目だけど、
http://exsample.com/?PHPSESSID=99bcf96055818a3b68faa0f348740e84
ならまあ許容できるよね。ぐらい。んで、セッションファイルも
drwxrwx--- 2 root apache 131072 2008-11-12 14:26 .
-rw------- 1 apache apache 53 2008-11-09 01:28 sess_vptubrcd9dr9bjc7o0lbunep56
なんて保存されているので、root か apache ユーザに su できなければ、
セッションファイルのファイル名もわからないのです。
なので総当たりするしかないのですが、その総当たりするスクリプトのことだと思います。
0812nobodyさん
2008/11/12(水) 15:08:08ID:???sessionファイルが全て同一ディレクトリに保存されている場合
phpからアクセス可能なんじゃないの?
ini_get等で保存ディレクトリ取得
↓
ディレクトリ内スキャン
↓
ファイルを読み取り
全てPHPで組めばアクセスできると思うが・・・
0813nobodyさん
2008/11/12(水) 15:37:32ID:???0814nobodyさん
2008/11/12(水) 22:36:42ID:???そして俺を一人前のPHPerに育て上げるのだ。
わかったな?
〇〇嫁!は禁止。
キチガイ等と言うやつは負け組
↓では開始
0815nobodyさん
2008/11/12(水) 22:45:09ID:???0816nobodyさん
2008/11/12(水) 22:50:58ID:???■ このスレッドは過去ログ倉庫に格納されています