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

【PHP】下らねぇ質問はID出して書き込みやがれ 99

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/10/13(水) 12:01:33ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 98
http://hibari.2ch.net/test/read.cgi/php/1284805237/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0159nobodyさん2010/10/14(木) 15:34:10ID:???
この板は削除依頼がでるような板では無いのだが(だからID非表示板なわけだし)
不快な人がいればガイドラインに従い削除依頼を出せば良い

php:Webプログラミング[レス削除]
http://qb5.2ch.net/test/read.cgi/saku/1030165467/
0160nobodyさん2010/10/14(木) 15:49:00ID:???
過疎板だから荒れてもたかが知れてるw
0161nobodyさん2010/10/14(木) 15:56:30ID:???
>>158
ブログ作るか新スレ立てててそっちでやってくれんかね
1人のために100レス以上もリソース割くのは無理
0162nobodyさん2010/10/14(木) 16:19:15ID:???
perlはパーミッションがうざいがphpはセーフモードがうざいな
0163nobodyさん2010/10/14(木) 16:23:24ID:???
パーミッションにperlもPHPも関係無いと思うが?
0164nobodyさん2010/10/14(木) 16:25:41ID:???
cgiと察してくれ
0165nobodyさん2010/10/14(木) 16:30:46ID:???
CGIにperlもPHPも関係無いと思うが?
0166nobodyさん2010/10/14(木) 16:42:34ID:???
perlのcgiだよ
俺はphpはcgiとして動かしたくないからね
だからセーフモードがうざいって言ってるんだ
0167nobodyさん2010/10/14(木) 16:44:54ID:???
園児か?ツッコミが餓鬼臭い
0168nobodyさん2010/10/14(木) 16:52:25ID:???
園児がphpできたら褒めるとこだろ
0169nobodyさん2010/10/14(木) 16:56:43ID:???
>>166
良かったら、cgiでphpを動かしたくない理由と
セーフモードがうざいと思う理由を教えてくれないか?

俺はSuExec使えないとダメだからcgiでないとダメだった
今はsuPHP使ってる
0170nobodyさん2010/10/14(木) 17:04:51ID:OBF/v79J
正規表現に苦戦しています。
アドバイスください。
よろしくお願いします。

<?php
$str =<<<EOL
*この行にh2タグを付ける
あああああ

*この行にh2タグを付ける
いいいいい

**この行にh3タグを付ける
ううううう
EOL;

$str = preg_replace('/^[*]{2}(.*)/', '<h3>$1</h3>', $str);
$str = preg_replace('/^[*](.*)/', '<h2>$1</h2>', $str);

echo $str;
0171nobodyさん2010/10/14(木) 17:07:07ID:???
>>170
何をどうしたいのか誰が読んでも分かるように書いて
0172nobodyさん2010/10/14(木) 17:09:58ID:???
>>1が読めないならpukiwikiのソースでも見ればいいんじゃね
0173nobodyさん2010/10/14(木) 17:11:17ID:???
pukiwikiをパクろうとしてたのか
0174nobodyさん2010/10/14(木) 17:13:50ID:???
>>169
cgiで動かしたくないのは設定が面倒ってだけ
セーフモードはファイルの所有権あたりがうざい
0175nobodyさん2010/10/14(木) 17:26:46ID:???
>>170
$str = preg_replace("/^\*{2}([^\*\r\n]?[^\r\n]*)/m", "<h3>$1</h3>", $str);
$str = preg_replace("/^\*([^\*\r\n]?[^\r\n]*)/m", "<h2>$1</h2>", $str);
0176nobodyさん2010/10/14(木) 17:28:39ID:OBF/v79J
>>171-173
はてな記法を真似しようとしてました。
pukiwikiにも同じ処理があるってこと忘れてました。
ソース読んだら見事に解決しました。
どうもありがとうございました。
0177nobodyさん2010/10/14(木) 17:29:06ID:???
>>174
ありがとう
0178nobodyさん2010/10/14(木) 17:29:21ID:OBF/v79J
>>175
よく読んで勉強します。
どうもありがとうございます。
0179nobodyさん2010/10/14(木) 21:11:40ID:eYKuA3uM
本番環境(詳細不明)では動いているPHPプログラムが、
自分が作ったテスト環境(IIS7,PHP5)で、特定のあるページだけが正常に動作しません。

ライブラリをincludeしているところがうまく動いていないようで、
「〜〜<BR>〜〜」というコメント箇所の
「>」の次の文字からブラウザに文字列として表示されてしまいます。

なにかヒントをちょうだいできれば助かります。
0180nobodyさん2010/10/14(木) 21:17:55ID:???
>>179
なんかタグ排除みたいな処理がどっかに挟まれてんじゃね?
0181nobodyさん2010/10/14(木) 21:34:20ID:???
PHPロジックが終了したと判断されてるんじゃね
0182nobodyさん2010/10/14(木) 22:41:26ID:bKgolB3+
POSTで同じキーのデータが送信された場合、$_POSTや$_REQUESTで
受け取るデータは、どのようになるのでしょうか。

多重配列等になるのでしょうか。それとも一つのデータしか受け取れない
のでしょうか。

後者の場合、同じキーのデータの受け取り方をご教示いただけますと
幸いです。
よろしくお願いいたします。
0183nobodyさん2010/10/14(木) 22:53:58ID:???
>>182
キー名の後ろに[]をつけるんだ
0184nobodyさん2010/10/14(木) 22:57:36ID:???
そこまで想像する力があるなら試せばいいじゃない
0185nobodyさん2010/10/14(木) 23:03:10ID:qQp8Fcw+
成功時にtrue 失敗時にfalseを返す関数があります
失敗時にとわざわざ書かれてるということは失敗するというのを想定するべきなのでしょうか?
例やユーザノートを見てもif-else文で失敗したときの処理は書かずに
成功のみを想定した(if-else文がない)コードが書かれている関数が見受けられます
0186nobodyさん2010/10/14(木) 23:05:12ID:???
>>185
例えばどんなの?
0187nobodyさん2010/10/14(木) 23:15:15ID:bKgolB3+
>>183
ありがとうございます。

HTML側の変更がかけられないのですが、PHP側でどうにか
することは不可能でしょうか?

度重なる質問ですみません。
0188nobodyさん2010/10/14(木) 23:16:13ID:0C27ra7d
PHPでgoto文が使えるようになって大変喜んでおります。
これでcontinueやらbrakeやらわけのわからない単語を使わなくてすみます。
関数なんて使わなくても全部gotoで処理してgotoで元の位置に戻るようにすればいいですよね?
0189nobodyさん2010/10/14(木) 23:24:50ID:???
>>188
釣りはやめたまえ
0190nobodyさん2010/10/14(木) 23:31:47ID:???
goto では関数を再現できないよ
なぜなら戻る位置を指定できないからだ!!!!!!
0191nobodyさん2010/10/14(木) 23:37:10ID:???
>>187
具体的にどういう状況なの?
0192nobodyさん2010/10/15(金) 00:35:17ID:???
以下のようなロジックを組んでいます。
GETで値に"02"というデータを送信しています。
ただ2行目で表示される値は"02"なのに対し
3行目で表示されるのは"2"となってしまいます。
変数にセットした値も"02"という文字列として受け取りたいです。
何が原因でこのような動作をしているのでしょうか?

$region = (string) $_GET['region'];
echo $_GET['region'];
echo $region


以上回答いただけますでしょうか?
0193nobodyさん2010/10/15(金) 00:41:57ID:???
変なキャストするから
GETとかREQUESTとかPOSTとかそこらへんに入るのは全部文字列だぞ
入ってるかどうか解らないっていうのがあるなら
先にセットされてるか確認すべきだ
0194nobodyさん2010/10/15(金) 00:48:55ID:???
キャストしなくても頭の0が取れてしまうのですよね・・・。
0195nobodyさん2010/10/15(金) 00:50:08ID:Ypm82kqs
>>191
APIから受け取るものが、a=1&a=2&a=3 といったものなんです。

これがpostで送られると連絡受けまして質問させていただきました。
0196nobodyさん2010/10/15(金) 00:54:10ID:???
$region = "";
としておく
0197nobodyさん2010/10/15(金) 00:54:54ID:???
>>195
それどこのAPI?
素人が作った物なら窓から投げ捨てろ
0198nobodyさん2010/10/15(金) 00:56:40ID:???
コード
<?php
$region = (string) $_GET['region'];
echo $_GET['region'];
echo $region;

リクエスト
http://localhost/test.php?region=02

結果
0202
0199nobodyさん2010/10/15(金) 01:17:43ID:???
$region = sprintf('%02d', $_GET['region']);
ではダメなのかぃ?
0200nobodyさん2010/10/15(金) 01:24:24ID:???
↑文字列だっつうの
0201nobodyさん2010/10/15(金) 01:28:04ID:???
↑?
0202nobodyさん2010/10/15(金) 01:28:13ID:???
わざわざ(string)でキャストしなくても元から文字列か配列だけど
php.iniの設定で勝手にキャストする項目あったかな
0203nobodyさん2010/10/15(金) 02:13:48ID:???
$region = "";
これで初期化しとけば
0204nobodyさん2010/10/15(金) 03:19:25ID:0dyZ6dAO
借りているサーバーのPHPバージョンが5.1で、json_decodeが使えないため
Services_JSONを使おうとしているのですが、json_decodeなら第二引数にTRUEを指定して連想配列にできるのですが
Services_JSONではできないようです。
パースしたものををechoで表示させたいのですが、どのようにすればできますか?
0205nobodyさん2010/10/15(金) 05:45:46ID:???
質問に質問で聞きかえすなら答えるなよ
見ててイラッとするな
0206nobodyさん2010/10/15(金) 08:50:07ID:???
>>192です
返事が遅くなりまして申し訳ありませんでした
頂いた回答を確認させて頂きます
有難うございました
0207nobodyさん2010/10/15(金) 09:21:10ID:???
>>204
JSONはそんなに複雑じゃないから自分の好みに合ったパーサを
書けばいいんじゃない?
0208nobodyさん2010/10/15(金) 09:36:14ID:3S26wDlW
よくパスワードをmd5やsha1など不可逆で圧縮しなさいと
解説サイトに記載があります。

不可逆なら他人が見ても解らないから安全だという説明ですが、
復元可能な暗号でもファイルが流出したりハッキングされない限りは
特に問題ないのではないでしょうか?
逆に、そういう事態なら不可逆にしていても問題出てくると思いますし・・・
0209nobodyさん2010/10/15(金) 10:28:58ID:???
例えば会員のパスワードとか、
不可逆にすれば、システム管理者側でも会員のパスワードがわからなくなるので、
内部犯行が減るからとか。
0210nobodyさん2010/10/15(金) 11:23:54ID:???
【OS名】Windows 2003
【PHPのバージョン】Microsoft-IIS/6.0

レンタルサーバで、SSLは共用です。

httpの時にhttpsへリダイレクトさせたいのですが、httpsの場合でも

$_SERVER["HTTPS"] = 'off'
$_SERVER["SERVER_PORT"] = 80

となっており、httpsなのかどうかが判断できません。
なにか判断させる方法はあるでしょうか?

phpinfo()を眺めると、httpsの時だけ $_SERVER["HTTP_X_FORWARDED_SERVER"]
があるので、他に方法が無ければそれで判断するしか無いかなと思ってます。
0211nobodyさん2010/10/15(金) 11:24:00ID:???
ハッキングよりも内部の犯行の方が遥かに多い気がする、もちろん私の主観ですがね。
02122102010/10/15(金) 11:25:04ID:N7BOKkib
すみませんID出し忘れました
0213nobodyさん2010/10/15(金) 11:31:29ID:???
>>210
解答じゃないけど昔その課題にトライしたけど無理だった気がするな
だからあなたの言うとおり
httpとhttpsでアクセスしたときの$_SERVER $_ENVの違いを見て判断しようとしたけど
ブラウザごとに結果が異なってきてどうもうまくいかなかったので
結局よく見るSSLでログインするボタンみたいな感じのを設置して
ユーザに選択してもらうっていう結論に至った
俺もズバリな解決方法あるなら知りたいな
0214nobodyさん2010/10/15(金) 11:33:12ID:60tWkVej
IIS使ったこと無いけど それ本当にhttpsで通信してる???
0215nobodyさん2010/10/15(金) 11:43:20ID:N7BOKkib
>>213
なるほど、参考になります。
とりあえず$_SERVER["HTTP_X_FORWARDED_SERVER"]使う方向で考えます

>>214
SSL証明書をブラウザから見られてますのでhttpsで通信してます。
IISというより共用SSLの問題なのかもしれません。
共用だとhttp/httpsの時で以下のようなURLになってしまいます。

http://example.com
https://ssl用のなんとか.com/ssl/555/example.com/

ポートが443ならそこで判断したんですけどね。
0216nobodyさん2010/10/15(金) 12:07:10ID:???
たぶん間にSSLをほどく箱が入ってるパターンだな。ロードバランサとか
使ってると良くある。そういう構成ならSSLかどうかの判定方法とかは
レンサバのマニュアルに書いてあるんじゃねーの? 書いてなかったら
問い合わせていいレベルだと思うが。
0217nobodyさん2010/10/15(金) 12:27:25ID:???
>>210
URLが違うなら、htaccessでリダイレクトは?
0218nobodyさん2010/10/15(金) 12:58:50ID:N7BOKkib
>>216
「プログラムの記述についてはお答えできません」との事です。

>>217
IISなうえにレンタルサーバなので、BASIC認証はできるんですが、それ以外は無理そうです

一応$_SERVER["HTTP_X_FORWARDED_SERVER"]でなんとかなりそうなので
テストを重ねて平気そうならこれでいきたいと思います

みなさんありがとうございました。
0219nobodyさん2010/10/15(金) 14:23:37ID:???
これからPHP勉強するんですが
時代遅れですか?
0220nobodyさん2010/10/15(金) 14:25:11ID:???
はい、時代おくれです
lispをやりましょう
0221nobodyさん2010/10/15(金) 14:52:35ID:???
phpのGDライブラリを使ったことがある方に質問です。
Ubuntu10.04LTSにphp5-gdをapt-getでインストールしたのですが
phpinfoには反映されてないのか出てきません。
apache2の再起動のほかに設定することあるんでしょうか?

PHPのバージョンは5.3.2-1ubuntu4.5です。
0222nobodyさん2010/10/15(金) 15:03:04ID:???
そういやPerlが流行った2000年代前半
後半に流行ったPHP
2010年代PHPの次世代はなんだね?
考えたこともなかったがなんか話題にあがってるのあるっけ?
02232212010/10/15(金) 15:04:34ID:???
Ubuntu再起動したら、有効になったorz
スレ汚しスマソ
0224nobodyさん2010/10/15(金) 16:37:09ID:???
PHP6
0225nobodyさん2010/10/15(金) 16:41:31ID:???
GoogleのGoっていうのにすこーし注目してるが
Python同様どうみてもライトユーザ向きではないな
しばらくはPHPで安泰ですね
0226nobodyさん2010/10/15(金) 19:52:44ID:???
良い無料サーバ教えてください。
0227nobodyさん2010/10/15(金) 22:04:04ID:e2zhTAp1
すいません質問お願いします(*_ _)

友達の美容院のサイト頼まれて、
「管理画面からシフト登録して、スタッフシフトがお客さんから確認できるようにしたい」
との事なんですが、どんなようなシステムを考えたら良いのでしょうか。。

やりたい事はこんな感じです。
1.
スタッフ山田さんは毎週月/水/金が出勤だからそのように登録(管理画面から)出来る = 以後ずーっと山田さんは月/水/金になると出勤スタッフ一覧に表示。
2.
10/20の水曜日は山田さんがお休みしたいとの事なので、その日のみ表示しないようにする。
3.
10/20に休んだ代わりに10/24出勤になったので、反映させたい。

(1)はDBにスタッフ用のテーブルを作って、どっかのフィールドに出勤曜日を入れとけばいいのかな?
と思ったのですが、すると(2)や(3)の時にどーすんだろ?と・・・。


通常こういったシフト管理システムとかって、どんなようなロジックで構成されるモノなのでしょうか?
ヒントだけでもいただけると死ぬほどありがたいです('A`)
0228nobodyさん2010/10/15(金) 22:26:20ID:???

スタッフテーブルに週フィールド作る
1,2,4,8といったフラグ具合でね


休日フィールド作る
カンマ区切りなんかで適当に


1と2を調べて翌日休むかどうか決める

はいおわり
02292272010/10/15(金) 22:46:20ID:e2zhTAp1
>>228

レスありがとうございます!
休む日の日付を取得して、それを「休日フィールド」に突っ込んどく、というカンジです?
なんかイレギュラーな出勤や休日が多いととりとめもなくなっちゃう(その都度「休日フィールド」やら「この日は特別に出勤!フィールド」やらに日付を追加、だんだん増えてく)ような気がするんですが、「DBはそんなにヤワなモノではない!」って事なんでしょうか。

なにぶんpgは初心者なんでおかしなこと言ってたらホントごめんなさい(*_ _)
0230nobodyさん2010/10/15(金) 22:51:36ID:???
気になるならcronで毎月消せばいいじゃん
0231nobodyさん2010/10/15(金) 22:58:23ID:???
給与システム連動とかいろいろあんなら
月次更新でスタッフテーブルのフィールドを基に
翌月のシフトデータを専用テーブルに吐き出す
当月の急な休みとか出勤はその都度書き換えれば良いだけ

はいおわり
相談料6000円になります
0232nobodyさん2010/10/15(金) 23:13:10ID:???
>>227
1 → 出勤曜日テーブル(A)を作る

2,3 → 不定出勤日/休日テーブル(B)を作る

テーブルBに対象日のデータがあればそれを優先する。
なければテーブルAのデータを使う。
0233nobodyさん2010/10/15(金) 23:17:46ID:e2zhTAp1
>>230さん、 >>231さん、 >>232さん
ありがとうございます!

いろいろ方法はあるんですね・・・。
教えていただいた3通り、調べながら色々試してみます!

ちょっと希望が見えてきたカンジです、ありがとうございました!!

 
0234nobodyさん2010/10/15(金) 23:58:11ID:wodrVARb
教えて欲しいのですが
index.phpに

<form action="2.php" method="post">

(略)

<select name="abcde" size="10">
<option value="http://123.com" selected>一番</option>
<option value="http://456.net"> 二番</option>
<option value=http://789.jp>; 三番</option>
</select>

(略)

っと書いて、2.phpに

<form action="○○○" method="post">

○○○の部分ににindex.phpの三択で指定したURLを自動的に取得できるようにしたいのですが
○○○の部分にはどう記入すればいいのでしょうか?
0235nobodyさん2010/10/16(土) 00:01:39ID:???
>>234
$_POSTでググりなされ
0236nobodyさん2010/10/16(土) 00:01:50ID:???
jsで強引に突っ込めばいい
0237nobodyさん2010/10/16(土) 00:05:00ID:???
>>227-233
一つのテーブルに詰め込む人がよくいるけど、
複数のテーブルにしたほうがいいと思う。
0238nobodyさん2010/10/16(土) 00:07:00ID:???

どれもが別テーブルにしてるぞ
0239nobodyさん2010/10/16(土) 00:18:07ID:YK7HI7ry
>>235
もう少しヒントを教えてください
0240nobodyさん2010/10/16(土) 00:23:15ID:???
だからjsでつっこめって


どうしても$_POSTがいいのか?
ならこうすれば?wwwww

echo <from action="$_POST['abcde']">



そしておまえはxssの餌食になるのであった

0241nobodyさん2010/10/16(土) 00:37:57ID:???
<php?
$url = $_POST['abcde'];
?>
<form action="<?php print ($url); ?> " method="post">
0242nobodyさん2010/10/16(土) 00:39:04ID:???
あ・・・<?
0243nobodyさん2010/10/16(土) 00:45:46ID:YK7HI7ry
ありがとうございます!
やっと完成しました。
0244nobodyさん2010/10/16(土) 01:08:54ID:gWKvdlCe
1〜10文字の、ひらがな、漢字、全角カタカナ、全角英数字 という
チェックをかけるため、下記の正規表現をぐぐりながら書いてみた
のですが、どうも正常に動作しません。

if(!(preg_match('/[ぁ-んァ-ヴーa-zA-Z0-9]{1,10}/u', $_REQUEST['text']))){
  errot();
}

恐れ入りますが、ご教示いただけますと、幸いです。
もし他に何か方法があればそちらを教えていただけますと幸いです。
0245nobodyさん2010/10/16(土) 01:09:42ID:???
utf-8
0246nobodyさん2010/10/16(土) 01:11:27ID:???
> errot();
何だかエロいなw
02472442010/10/16(土) 01:15:53ID:gWKvdlCe
>>245
1つ上で
$_REQUEST['text'] = mb_convert_encoding($_REQUEST['text'], "UTF-8", "SJIS-win");
をしていて、ソースがUTF-8のため/uオプションをつけているのですが、
これがいけないのでしょうか。
すみませんがご教示ください。

>>246
すみません、、errorでしたね。。
0248nobodyさん2010/10/16(土) 01:27:40ID:???
>>247
「正常に動作しません」とは具体的に何がうまくいかないのかな。
うまくいく文字列、うまくいかない文字列があれば例示すべし。
ちなみに>>244のままだと文字列の一部に全角文字が含まれてれば通過するんじゃないかな。
0249nobodyさん2010/10/16(土) 01:59:46ID:???
「全角」をTRUEとするなら
!preg_match('/[a-zA-Z0-9]{1,10}/u',
じゃ、ダメなん?
0250nobodyさん2010/10/16(土) 02:04:46ID:???
>>238
>>228は同じテーブルっぽくない?

>>243
>>241の書き方はXSSという攻撃の対象になり得るので、下の用にしましょう。

<php?
$url = htmlspecialchars($_POST['abcde'], ENT_QUOTES);
?>
<form action="<?php echo $url; ?> " method="post">
0251nobodyさん2010/10/16(土) 02:07:57ID:???
<php?
0252nobodyさん2010/10/16(土) 02:10:02ID:???
>>249
それだと{1,10}が意味をなさねぇだろ
0253nobodyさん2010/10/16(土) 02:10:43ID:???
>>241=251
0254nobodyさん2010/10/16(土) 02:14:10ID:???
?>
0255nobodyさん2010/10/16(土) 02:19:25ID:???
>>250
XSS理解してんの?
0256nobodyさん2010/10/16(土) 02:50:29ID:???
>>250
htmlspecialchars使えば万事OKではない
htmlspecialcharsのデフォルトの文字コードはISO-8859-1、php.iniの文字コードとスクリプトの文字コードが食い違うとXSS可能
なのでちゃんと第三引数まで指定すること

あと、>>234の場合だと2バイト文字を含まないのでctype_printで先にチェックしておく
2バイト文字を含むならmb_check_encodingでチェック、これもちゃんと第二引数まで指定する
0257nobodyさん2010/10/16(土) 03:10:26ID:???
つーか、それ以前に$_POST['abcde']で得たURLを
直接<from action="〜">に再投入することが問題。
0258nobodyさん2010/10/16(土) 03:15:03ID:???
そういう場合もあるだろうさ
そのときにどうセキュリティ対策するかという話
■ このスレッドは過去ログ倉庫に格納されています