【PHP】下らねぇ質問はID出して書き込みやがれ 95
質問者はまず
>>1 を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは
>>2-10 辺り
次スレは
>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/ ◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
6 :
nobodyさん :2010/04/19(月) 12:02:58 ID:9m1Cq7Fw
複数アップロードの処理に関してなのですが、 こちらのようにアップファイル毎にcom[]・pass[]を付けるとlog処理もうまくいくのですが、 -----------------ここから------------------------- <INPUT TYPE="file" SIZE="30" name="upfile[]"> コメント<input type="text" size="30" name="com[]" class="box" /> パス:<INPUT TYPE="text" SIZE="8" name="pass[]" maxlength="10" ><br> <INPUT TYPE="file" SIZE="30" name="upfile[]"> コメント<input type="text" size="30" name="com[]" class="box" /> パス:<INPUT TYPE="text" SIZE="8" name="pass[]" maxlength="10" ><br> ------------------ここまで------------------------ このようにcom[]・pass[]を別枠にするとうまく処理できません。 -----------------ここから------------------------- コメント<input type="text" size="30" name="com[]" class="box" /> パス:<INPUT TYPE="text" SIZE="8" name="pass[]" maxlength="10" ><br> <INPUT TYPE="file" SIZE="30" name="upfile[]"> <br> <INPUT TYPE="file" SIZE="30" name="upfile[]"> <br> ------------------ここまで------------------------ 複数のファイルを一つのcom[]・pass[]を適用させたいのですが、どうすればいいでしょうか?
渡される値の順番が違うだけで中身は同じなんでしょ? htmlはただのUIだからそのソース自体は問題ないんじゃね UIコンポーネント(input)を並び変えただけで問題が起こるとしたら アプリケーション側の実装方法に問題があるんじゃね? つまりそのhtmlだけ出されてもアドバイスはできない
8 :
nobodyさん :2010/04/19(月) 14:37:03 ID:9m1Cq7Fw
PHPでの表示部分なので関数は使えます。 この部分での解決方法はないでしょうか?
<form>〜</form>タグを正しく書け
>>8 >>7 に同意。それに「うまく処理できない」じゃ何が起きてるか他人にはわからん。
ただこれはぼんやりとした推測なんだけど、
前者はcom[]・pass[]が2つあるからphpは配列として受け取っていて、
後者は1つだから文字列で受け取ってる。
php側で配列で受け取るつもりでコーディングしてるからうまくいかんのでは?
>>6 $_POST["com"][1] = $_POST["com"][0];
$_POST["pass"][1] = $_POST["pass"][0];
12 :
nobodyさん :2010/04/20(火) 11:03:20 ID:CFslFB3C
質問です。 Notice: session_start() [function.session-start]: ps_files_cleanup_dir: opendir(※セッションファイルパス※) failed: No error (0) ってエラーが出て、maxlifetimeになってもセッションファイルが削除されません・・・ そもそもps_files_cleanup_dirってなんなんでしょう? クリーンアップ(削除)しようとしたけどファイルが開けなかったってことなんでしょうか・・・ 誰か助けて・・・
>>12 なんじゃろか
パーミッションとかそんなんかな
phpinfo()でセッションのディレクトリを確認して、パーミッション確認したり、一回中身手動で消してみたり
ただのNoticeみたいだけど、一応セッション自体は機能するの?
14 :
nobodyさん :2010/04/20(火) 14:26:13 ID:HgchgPq4
みなさんこんにちは 10個の配列からランダムに一つ表示させたいのですが ↓こんな感じで書いたのですがダメでした $rss = fetch_rss($url); $rss->items = array_slice($rss->items, 0, 10); foreach ((array)$rss->items as $item) { $title = $item['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); $key = array_rand($title,1); echo $title[$key]; } ヘルプお願いします
いつも通り試してないけど $rss = fetch_rss($url); $rss->items = array_slice($rss->items, 0, 10); $key = array_rand($rss->items, 1); $item = $rss->items[$key]; $title = $item['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); echo $title;
16 :
nobodyさん :2010/04/20(火) 14:57:13 ID:HgchgPq4
17 :
nobodyさん :2010/04/20(火) 15:06:37 ID:rBsVQVN1
質問です。 定義するクラス名を動的に宣言する方法はないでしょうか? イメージ的には $class_name = "test"; class $class_name { 省略 } $c = new $class_name(); こんな感じです。 newのところに変数が使えるのは確認したのですが、定義部に変数を使う方法は今のところ見つけられていません。 無理でしょうか? 可能ならば表記法が知りたいです。よろしくお願いします。
>>17 eval使うしかないかも
$class_name = "Test";
eval("
class $class_name
{
function foo()
{
echo 'bar';
}
}
");
$c = new $class_name();
$c->foo();
19 :
nobodyさん :2010/04/20(火) 16:07:26 ID:m2F+Aonc
海外から拾ってきたプログラム中に、substr関数周辺で文字化けが発生してます。 mb_substrを使えばいいのですが、substr関数が大量に使われます 既存の定義関数と同一名の ユーザー定義関数って作成可能でしょうか? function substr(・・ if (extension_loaded('mbstring') && function_exists('mb_substr')) { mb_substr関数で処理 }else{ substr関数で処理 } ・・・・ としたいのですが、
可能です。
Cannot redeclare ..
>>20 氏ネ! カスやろう
simplexmlで<html><body>aaaa<bold>bbbb</bold>cccc</body></html>としたときに、 aaaabbbbccccって取り出すのはどうしたらできますか?
>>24 XMLとして間違ってるからできなさそう
本当にその通りの内容だったら
strip_tags()で行けると思うよ
28 :
nobodyさん :2010/04/21(水) 02:06:36 ID:HdVhffia
<?php // 現在の時刻 echo "10秒後に答えを表示→"; // 10 秒間遅延させる sleep(10); // 再開! echo "答え●●●"; ?> 上記だと、ブラウザを開いてから10秒後に同時に「10秒後に答えを表示→答え●●●」と表示されますが、 これをブラウザが開いた時に「10秒後に答えを表示→」その10秒後に「答え●●●」が加わって「10秒後に答えを表示→答え●●●」 と表示するようにするには、どのようにしたらよいでしょうか?
ちがうか。物理的な転送形式は、モデムなどが勝手に分解、構築するから PHPが考慮する必要がない。 シリアルATAとパラレルIDEのHDDアクセスでソースコードの変更はいらない。
>>28 それ自分も思った。全部の処理が終わってから表示するんだよなあ。
>>32 いやサーバーサイドでは?
<?php ?>の範囲内が一括で送信されるせいでは。
<?php ?>を複数にしてちょくちょく送信していけばHTMLを順次表示できそうだ。
>>28 for($i=0;$i<256;$i++){
echo " ";
}
// 現在の時刻
echo "10秒後に答えを表示→";
@ob_flush();
@flush();
// 10 秒間遅延させる
sleep(10);
// 再開!
echo "答え●●●";
知識として知っておいた方がいいけど、長い時間になったらtimeoutで切れるから実際に実装されると困るな javascriptで定期的にphp叩いた方がいい
ってかドキュメントとして不備がある状態のHTMLをレンダリングするかどうかはクライアント依存じゃないの? そんなんで途中まで出ることを期待するのは本質的に誤りだと思うよ。
では待ちのあるPHPをうまく動かす方法は無いって事か。 ブラウザ次第で動作変わるか。
39 :
nobodyさん :2010/04/21(水) 15:47:10 ID:XUNO23gO
cronを使えないサーバーでphpを定期的に実行する方法ってありますか?
>>38 だからJavaScriptでの非同期通信がでてくるんじゃん。
非表示状態で出力して、10秒後に表示する方法もあるけど、
HTMLソース見られたら答え見えちゃうので用途によってはアウト。
>>39 環境
jQueryを使う
42 :
nobodyさん :2010/04/21(水) 16:40:51 ID:XUNO23gO
>>40 CeentOS5.3
PHP:5.1.6
crontabを使ったりという事は権限上出来ません。
初心者なもので他に必要な情報あれば言っていただければ出します。
永久ループしておいて時間が来たら処理すればいいんじゃない
44 :
sage :2010/04/21(水) 17:17:57 ID:???
無限ループってmax_execution_timeでだいたい止められるでしょ
ページを表示してるところに処理を入れ込めばいいじゃん。 前実行した時間記録しといて何分以上経過してたらとか。
へー
外部からリクエストすればいーね
>>42 crontabは、一般ユーザ権限で使えるはずだが…
でもまあ使えないとして、
その処理を呼び出すURLを別PC(自分のPC)から呼び出す。
(別PCで定期実行プログラムを動かしておく)
>>42 cron使えないのか。
使えたら対応できるってことはCLIとして使おうとしてるんだよね。
Cとかで適当に書いてphp動かすほうが素直かもね。
>>42 cron使えないってのはレンタルサーバだから?
デーモン動かしておいてそいつがcronの役目してくれるってのがいいと思うけど、
レンタルサーバだと結局killされるから環境が知りたい
RSS巡回サービスに登録するってのが普通じゃね
52 :
nobodyさん :2010/04/22(木) 00:01:08 ID:6dwFVjdn
ereg_replaceで$を削りたいんですがうまくいきません ereg_replace("$","",$test) $を\$とかにしてみてもダメでした。何か指定方法が違ってますでしょうか?
>>52 ereg_replace("\\$", "", $text);
だけど正解は
>>53
正解は越後製菓
56 :
nobodyさん :2010/04/22(木) 13:10:54 ID:T+M4wIvS
/var/spool/cron/rootを編集して登録したり削除したりしてるんだが さすがに直編集は怖いのでincludeとかしてinclude先のファイルをいじるようにしたいと思ってます。 cronの設定ファイルに外部のファイルをincludeしたりする事は出来ますか?
includeがどうとかじゃなくて普通はcrontab -eを使う
これは質問者がうまくphpに絡められなかったのが問題だな。
その結果
>>57 >>59 とPHPスレ住人が申し訳ない気持ちになってしまっている。
61 :
nobodyさん :2010/04/22(木) 18:15:35 ID:4sRjBenv
62 :
nobodyさん :2010/04/22(木) 18:40:46 ID:Ret1+4zT
携帯サイトを作成しており、
header('Location: ./index.php#test');
exit;
と記述しております。
index.php内には
<a id="test" name="test">○○○○○</a>
と言う箇所があり、PCからアクセスすると、正常にページ内リンクの箇所へリダイレクトされます。
が、docomoからアクセスすると、ロケーション先の#以降が切り取られてしまいます。
飛んだ先のURLを表示すると
http://example.com/index.php と表示されており、綺麗に#以降だけなくなります。
<a href="./index.php#test">リンク</a>
だと問題なく飛ばすことが出来ます。
docomoの場合、headerのロケーションでページ内リンクを指定して飛ばすのは無理なのでしょうか?
掲示板書き込み後に、自分の書いた記事(ページの一番下)を表示させたいのですが…
リクエストされたURIみるのではだめなの?
66 :
nobodyさん :2010/04/23(金) 00:03:06 ID:QeXW5bBg
centOS5.3とphp5.2.6を使っています
phpでプログラム動かしていたら以下のエラーが出ました。
PHP Fatal error: Class 'DOMDocument' not found in /usr/lib/php/Zend/Service/Amazon.php on line 128
調べたらこれはphp-xmlがないことが原因だそうで、yum install php-xml しないといけないようです
(
ttp://www.4web8.com/216.html )
が、上記コマンドを実行したらそこでもエラーが出ます。
--> Finished Dependency Resolution
php-xml-5.1.6-24.el5_4.5.i386 from updates has depsolving problems
--> Missing Dependency: php-common = 5.1.6-24.el5_4.5 is needed by package php-xml-5.1.6-24.el5_4.5.i386 (updates)
Error: Missing Dependency: php-common = 5.1.6-24.el5_4.5 is needed by package php-xml-5.1.6-24.el5_4.5.i386 (updates)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.
これはどうしたら良いんでしょうか? どういうことでしょう?
もしかしたらlinux板で聞く問題なのかと思いましたがPHPの話題なのでここでお願いしました。
自分はphpのプログラムは書きますが(趣味程度で)linuxの構成などはわかりません。
すみませんが、どういう状況なのかと対策を意見貰えると嬉しいです。よろしくお願いします。
67 :
nobodyさん :2010/04/23(金) 00:11:23 ID:PsFOuB9x
68 :
66 :2010/04/23(金) 01:00:29 ID:???
>>67 ありがとう。
あー、すみません。いろいろググって調べたら解決しました。
ttp://eru-net.jp/web/?itemid=356 を参考にしたんですが、
結果的にうまくいったものの自分が何をしたのか全然わかってません。
プログラマってlinuxの機能やファイルの働きを熟知してるんですか?
こんなの覚えられるの?って感じです
みなさん、本読んだ程度で実務レベルの知識身に付きましたか?
今回の僕みたいに他人のサイト参考にして、でも中身の理解はイマイチって
「ありがち」なことなんでしょうか…
変なこと聞いてすみません、なんか気が滅入ってます
69 :
61 :2010/04/23(金) 01:27:57 ID:???
リポジトリを追加してないならそんなことにはならないと思うんだけどなぁ。 最近は仮想化が楽なんだからいろいろやって壊して勉強するのもいいと思うよ
>>69 なぜ弾こうと思ったか、その動機によっては対応方法が変わってくると思うけどね
72 :
61 :2010/04/23(金) 01:56:15 ID:???
>>71 動機は61に書いた通りです。
よければ他に対応方法があれば教えてください。
意味が分からない 串経由してでもお前の記事が読みたい人がいるんだろ、実害が出てるわけでもないのにアクセス拒否するのか
74 :
62 :2010/04/23(金) 10:09:01 ID:voMFNEl/
>>63 やっぱdocomoの仕様なのですね…
諦めます。。
75 :
nobodyさん :2010/04/23(金) 10:11:47 ID:7DtYSEYe
「昨日のタイムスタンプ」を取得する為に以下のようにしています。 $yesterday = date(("Y-m-d"),strtotime("-1 day")); echo strtotime($yesterday); これ以外で簡単な書き方はないでしょうか?
現在時刻の24時間前なら echo time() - 3600*24; 0時のだったら echo mktime(0, 0, 0, date("n"), date("j")-1, date("Y"));
>>72 動機が書かれているようには見えないよ
動機によっては弾く必要がない、という展開もありえるんだよ
そんなことは関係ない
79 :
61 :2010/04/23(金) 18:03:50 ID:???
結局UAで判別してGoogleAppEngineからのProxyは正規のURL○○からアクセスしてくださいとコメントを出すことにしました。
私的には実害はおそらくありませんが
>>69 のリンク先にあるように、ミラーに見せかけアマゾンのidを変える人もいるので困る人もいるかと思う。
他の串ならipやらでなんとかなりそうですが、googleの無料サーバのipは無数にあり可変なので少し戸惑いました。
PHPとは関係なくなったので終わりにします。
80 :
62 :2010/04/23(金) 18:35:15 ID:voMFNEl/
返り値を返さない関数や、クラスメソッドって作成しないほうがよいでしょうか? function example () { setcookieとか } example(); 関数内の処理が正常に実行できた、できない、で特に影響を受けないようなものです。 使わないにしても、真偽値くらいは返したほうがよいでしょうか?
エラー処理が必要になるなら返せばいいんじゃね
82 :
80 :2010/04/23(金) 18:49:00 ID:voMFNEl/
>>81 エラー処理は必要ありません。
ただ、実行して返り値の無いのが少し気持ち悪いような気がして。
関数の場合はいいのですが、クラスのメソッドだと特に…
クラスのメソッドっていうのはクラスメソッド(staticメソッド)のことだよね? メソッド内で解決できるならvoidでいいんじゃね
84 :
80 :2010/04/23(金) 19:03:31 ID:voMFNEl/
>>83 static private function test() {
self::$comment = str_replace("\t", '', self::$comment);
}
self::$test();
のようなものです。
その一言を聞いて安心しました。
ありがとうございます。
85 :
80 :2010/04/23(金) 19:06:11 ID:voMFNEl/
self::$test(); じゃなくて self::test();
phpで制作したメールフォームの、内容確認画面で文字化けしてしまいます。 (mb_convert_encoding($sbj,"JIS","SHIFT_JIS"))が悪いのでしょうか? ド素人の質問で申し訳ないのですが、よろしくおねがいします。
mb_convert_encodingでググれ
>>87 元にしたPHPは問題ないのに、コピーしただけで文字化けするんですよね。
とりあえずググッてみます。
ありがとうございます。
ファイルのエンコードとか php.iniの内容とか
90 :
nobodyさん :2010/04/24(土) 09:15:02 ID:y1kxa+it
【OS名】Windows 【PHPのバージョン】5 【連携ソフトウェア】MySQL 【質問内容】 掲示板のPHPスクリプトを作ったのですが、英語のスパム投稿が増えて来たので、 次の様に日本語(ひらがな)以外の文字だけで書き込まれると エラーを出して書き込めない様にしました。 $content = htmlspecialchars($_POST["content"]); if(!mb_ereg('[あ-ん]',$content)){ echo "ひらがなを含む様にしてください。";exit; } 一応自分でも英語のみ投稿で確認してみてエラー表示を確認。 ところが、しばらく経ったある日掲示板を見てみると、また何故か英語だけで書き込まれている様です。 上の文おかしいのでしょうか? 一応スパムと同じ文章をコピペして書き込みしてみた所、エラーは出ているんですが…。
eregは使うな ってうちのじっちゃが言ってた 内部エンコーディングとスクリプトの文字コードが違ってない?
if( preg_match('/^[\x00-\xff]+$/',"Hello world") ){ echo "Hello spam !"; exit; } 英語だけなら
それは空文字以外すべてにマッチしそうだな
94 :
nobodyさん :2010/04/24(土) 10:44:13 ID:GsQLjQv0
カンマで区切った文字列を代入した変数があって これを配列型に変換したいんですが (array)$hogeでキャスティングすると すべての文字列がそのまんまキー[0]に格納されるんですけど カンマ区切りごとにキーを作ることってできませんか
95 :
nobodyさん :2010/04/24(土) 10:57:42 ID:M8KLPj0Z
正規表現で、発見した位置も知りたいのですが どうすればいいですか?
>>94 $arr = explode(",", $str);
print_r($arr);
$arr = array_flip($arr);
print_r($arr);
>>95 正規表現でマッチした結果をstrposで再チェックかな
97 :
nobodyさん :2010/04/24(土) 11:41:12 ID:GsQLjQv0
>>96 見事にできました。勉強になります。
ありがとうございました。
Pearで SELECT クエリを投げた後に、 次のコードを実行したところ @では正常に値が取得出来るのですがAでは値が取得されません。 Pearを使用しデータ取得を行った場合には、 項目をインデックス番号で指定するしか無いのでしょうか? ※番号で指定すると見辛いので何とか取得項目の名称で指定したいです。 $sql = "SELECT TEST,NAME FROM TEST_TABLE"; $result = $db->query($sql); while($row = $result->fetchRow()) { print( "取得した本文:".$row[0]); // ←@ print( "取得した本文:".$row['TEST']); // ←A }
>>98 fetchRow(DB_FETCHMODE_ASSOC);
とりあえず
DB_FETCHMODE_ASSOC
で検索してみてくれ
101 :
nobodyさん :2010/04/24(土) 15:18:36 ID:4j2vSUEE
【OS名】WindowsXP SP3 【PHPのバージョン】5.3.1 【連携ソフトウェア】XAMPP for Windows 1.7.3 【質問内容】 セッションの有効期限についての質問です セッションを一定時間後にサーバーから破棄したいと思います 以下のように記述し、ブラウザからファイルを閲覧しているのですが 1秒以上経ってページを更新しても、数値が「1」に戻らずカウントアップされていきます 期待通りの動作をさせるにはどうすれば良いのでしょうか <?php ini_set('session.gc_probability', 1); ini_set('session.gc_divisor', 1); ini_set('session.gc_maxlifetime', 1); session_start(); if(!$_SESSION['hogehoge']){$_SESSION['hogehoge'] = 1;} else{$_SESSION['hogehoge']++;} $hogehoge = $_SESSION['hogehoge']; session_write_close(); header('Mime-Version: 1.0'); header('Content-Type: text/plain; charset=UTF-8'); echo $hogehoge; ?>
>>101 同じくWindowsでちょっと試してみた
原因はわからんが、アクセス元のセッションはGC対象にならない模様
2つのブラウザで試すと確認できると思う。
あとでubuntuでも試してみるわ
103 :
101 :2010/04/24(土) 16:08:24 ID:???
>>102 有り難う御座います
仕様もしくはバグなのですね
他の方法でセッション管理してみることにします
104 :
101 :2010/04/24(土) 18:30:08 ID:4j2vSUEE
すみません、IDを表示し忘れていました セッションファイルの更新日時を取得し、unlink()で削除することで一応解決しました
PHPのPearフレームワークについて詳しい人にご質問なのですが、 SQL インジェクション対策として下手にエスケープシーケンスなんかを やる位ならPearを使用しプレースホルダー経由でDBにアクセスをする様にした方が 簡単で安全なのでしょうか? また、Pearフレームワークの驚きの機能、便利な機能等があればお教え下さい。
コーディング規約はZendのやつが一番使われてるんですかね? メソッドの命名規則が小文字スタートのキャメルケースになってますが、PHPのビルトインは全部小文字のハイフン繋ぎですよね これってどうなんでしょう?
107 :
nobodyさん :2010/04/25(日) 00:14:29 ID:3mxj5rK2
文字列からstr_replaceを使って#を取り除きたい場合 どうすれば良いですか? $str = str_replace("#", "", $str); これだと出来ませんが
108 :
nobodyさん :2010/04/25(日) 00:21:02 ID:3mxj5rK2
あ出来ました html#だと出来きなかったんですが出来ないと思い込んだのですが 単体だと出来ました なんでだ?
>>68 他人のサイトからパクって覚えるの繰り返しだと思う
時間が経つにつれて一通りできるようになったら中の動きとか気になるようになって
専門的知識を深めていくって感じだと思います。
あと、Linuxは基本かと。パッケージ管理ソフトウェアが動かせて
ミドルウェアのインストール、設定ができれば最初はいいんじゃないのかな。
110 :
nobodyさん :2010/04/25(日) 09:50:18 ID:NKSzzhov
1つの設定ファイルをincludeで参照して使ってますが、includeファイル自体に参照ファイルがあったりした場合は別階層から参照したりするとファイルがないと言われます。 設定をひとつにまとめることで色々と便利なのですが、階層が違うと読めないので なにか回避方法か参照の仕方はこうしたほうがいいというのがあれば教えていただけないでしょうか。
絶対パスで書くかファイル内で取得する
112 :
sage :2010/04/25(日) 10:45:54 ID:???
inc1.php <? $test = "hoge"; include('inc2.php'); ?> inc2.php <? $test2 = "pgr"; ?> のときに text.php <? include('inc1.php'); ?> ならOKだけど /hoge/text.php <? include('../inc1.php'); ?> だとinc2.phpが読めないってことだよな?
111が言うように、絶対パスで指定するか、 include_once realpath(dirname(__FILE__)).'/../includeFile.php'; と相対パスを作るか。
114 :
nobodyさん :2010/04/25(日) 15:21:31 ID:W8wPumEz
realpathとdirname(__FILE__)を同時表記するのって冗長だと思うけどそうでもない? realpath("./") = dirname(__FILE__)って認識なんだけど
>>114 ./sample.php
./inc/example.php
sample.phpからexample.phpを読んだ場合、
realpath("./");
ってやっても、sample.phpの置いてある階層しか取れないよ。
incの階層を取るには
dirname(__FILE__)
の方。
よって
realpath("./") = dirname(__FILE__)
ではない。
>>113 realpathはいらなくないか?
includeファイル内でdirname(__FILE__) . '/../includeFile.php';
だけでいける。
116 :
nobodyさん :2010/04/26(月) 20:53:06 ID:X/+ZZ3QP
上司の作ったプログラムに if(判断){ 処理 }elseif(判断){ 処理 } ってのがあるんだけどelseって必須ではないってこと?
ifだけ書いてelseを書かなくてもいいじゃん。 それと同じでしょ。
118 :
nobodyさん :2010/04/26(月) 21:10:26 ID:X/+ZZ3QP
確かに言われてみればそうですね。 こんな初歩的な事に気づかないなんて・・・。 疲れてんのか・・・
ま、初歩的を初心とするならば、 elseは書いておくほうがいいよ。 予想外のifを、すりぬける場合が あるから。
120 :
nobodyさん :2010/04/26(月) 22:07:47 ID:98kXUi+i
$a = split(".", "35.11.22.56"); のように分割すると $a[1] => '' 空文字が返ります。 何故でしょうか。。
splitはexplodeのエイリアスじゃないですよ?
>>120 splitは正規表現を使うから
$a = split("\.", "35.11.22.56");
でも
explode(".", "35.11.22.56");
の方が良いかな
123 :
120 :2010/04/27(火) 00:47:39 ID:4fGmvH5J
>>121 >>122 ありがとうございます。なるほど、そういうことでしたか。
区切りが"."だと全ての文字が区切り文字になってしってしまってたのか
phpのメールフォームの確認画面で 記載内容のテーブルのいちばん外側の枠は表示されるんですが trやtdの枠が表示されず困っています。 現在は下記のような内容です。 どこがいけないのでしょうか、教えて頂ければとても助かります。 <form action="<? echo $script; ?>" method="POST" > <table border="1" cellspacing="20" cellpadding="5" width="538"> <? echo $err_message; ?> <?php foreach($_POST as $key=>$var) { $key = strtr($key, $string_from, $string_to); if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<tr><td width=\"140\">".$key."</td><td>".$var."</td></tr>"); ?> <input type="hidden" name="<?= $key ?>" value="<?= $var ?>" /> <?php print("\n"); } ?> </table>
>>124 それはHTMLの質問になっちゃうからスレ違い
Web制作板あたりを探ってくれ
>>125 そうでしたか、すいません。
なんとか自力で解決出来そうです。
スレ違い失礼しました。
PHPでリダイレクトを実現するには一般的にはどういう手段を使いますか?
Pearライブラリの
HTTP::redirectという関数を見つけましたが 、自分の環境にはPearをインストール出来ません。
生でやろうとすると、headerを設定する方法があるようですが、
この方法だと既にheaderが設定されてるページではエラーが出てしまいリダイレクトできませんでした。
何か良い方法は無いでしょうか?
とくにない
129 :
sage :2010/04/27(火) 09:18:59 ID:???
headerが設定されているページをheaderってどゆこと?
130 :
nobodyさん :2010/04/27(火) 11:07:39 ID:Id0HIA1n
【OS名】Linux 【PHPのバージョン】4.4.8 【質問内容】fgetsで任意の数行(連続した行でない)を読みたいのですが、 一行単位で配列に入れたり、for()で一行毎に上から数えて読んでいく以外に エクセレントな方法はありますか? 1000行のtextから、5,6,10,800行だけを読むような感じです。 宜しくお願いします。
>>130 各行の長さが固定なら(行番号×行の長さ)の位置までシークできるけど、
そうでなければ、一行ずつ抜いてカウントしていくしかないかな
132 :
sage :2010/04/27(火) 11:42:26 ID:???
各行のlengthが同じなら区切れるけど、そうじゃなければfileで引っこ抜いて $test[5] $test[6] $test[10] $test[800] でいいんじゃないかな
【OS名】Windows 【PHPのバージョン】5.2 UTF-8(BOMつき)のHTMLを読み込み、加工して出力を行っているのですが どうやらBOMもしっかり文字として読み込んでしまっているようで、SJISなどに変換して出力した際'?'に化けてしまいます。 ファイルからテキストを読み込んだが時に、自動的にBOMを削除してくれる機能はないのでしょうか? ざっとUTF-8 BOM PHP で探しまわったところ、先頭3バイトを調査してsubstrで削除しているところばかりだったのですが…。 (つまり無さそう?)
135 :
134 :2010/04/27(火) 11:54:14 ID:QEbg26q1
IDを出し忘れましたので即レスです
137 :
nobodyさん :2010/04/27(火) 15:33:48 ID:Y8r8JnMJ
すみません、phpで符号なし右シフト「>>>」と同じ結果を得るには どうすると良いでしょうか?
右シフトしてから、最上位ビットを0にしちゃえばいいんじゃね?
右シフトしてから、最上位からシフトした桁分だけ0埋め?
141 :
1/2 :2010/04/27(火) 16:52:34 ID:???
【サーバーOS】Windows2003
【Webページ接続OS】Windows7、vista、XP
【phpバージョン】5.2
phpのセッション管理に関する質問です
ログイン管理にセッションを用いていて、認証フォーム→ログイン処理→ログイン後トップページという風に処理しています。
認証フォームで入力したIDとパスワードを、ログイン処理ページで処理してセッション変数を格納し、トップページへと繋げて、以降セッション変数で管理しているのですが、ログイン処理の時点でセッション変数に値が格納出来ていません。
もう一つ別のページでもセッション変数の格納を行っているのですが、そちらは特に問題なく動作しています。
そしてもう一つ、これらの問題はWindowsVISTA、XPのPCで接続した場合に発生し、7で接続した場合は発生しておりません。
まず、問題が発見されたほうのソースコードです。
<?php
$old_session_name=session_name('kaiin');
session_start();
//mysql接続クラス呼び出し
require_once "../php/dbh.php";
$dbh=new db();
$con=$dbh->db_connect();
if(!$result=mysql_query("select ~~~~~~ ")){
header("Location:
http:// ");
}
>>141 質問時はIDを出してください
そのコードだとセッションのセットはしてないみたいだよ?
143 :
2/2 :2010/04/27(火) 17:00:40 ID:???
$row=mysql_fetch_array($result,MYSQL_ASSOC);
$ent=hash_hmac(sha256,$_POST[post],2channel);
if($row[]===$_2ch){
$_SESSION[]='';
$_SESSION[]="$row[]";
$_SESSION[]="$row[]";
header("Location:
http:// ");
}else{
header("Location:
http:// ");
}
mysql_close($con);
?>
次に、問題が出なかった方のソースコードです
<?php
$old_session_name=session_name("php_exam");
session_start();
foreach($_POST as $key => $value){
$_SESSION[$key]=$value;
}
print <<< EOD
以下HTMLが続く
EOD;
?>
何故接続するPCの違い、ページの違いによって問題が発生するのかまるで分かりません。
ブラウザはIE、火狐、クロームを試しましたがどれも同じ結果でした。
ご教授お願い致します。
144 :
>>141 :2010/04/27(火) 17:01:52 ID:Yj0vX1vG
失礼、ID出し忘れたので即レスです
>>141 if($row[]===$_2ch){
これは何してるかわかる?
$row[]なので、$row配列の最後尾に追加される。
たとえば、
$row[0],$row[1]
がある状態で$row[]とやると、$row[2]になる。
ので
$row[]===$_2ch
というのは
$_2chが「値無し」じゃないと当てはまらないはず。
結果的に$_SESSION[]="$row[]";
にはいらず、elseのほうに入ってしまっている。
146 :
>>141 :2010/04/27(火) 17:11:36 ID:???
>>145 失礼しました、説明が足りませんでしたね
$_SESSION[]はや$row[]は2chに書く用に中の連想文字を消したもので、実際には
$_SESSION[2ch]や$row[2ch]のように、中に連想文字が入っている状態です。
分かりにくくて申し訳ないです;;
>>146 説明が足りないんじゃなくて再現するコードを出せてないことが問題なんだろ
あとID出せよ
148 :
>>141 :2010/04/27(火) 17:22:18 ID:Yj0vX1vG
>>147 確かにそうですね。特定されないようにするにも限度がありました。
ちょっと数点間違えがありましたので、修正して書き直します
<?php
$old_session_name=session_name('kaiin');
session_start();
//mysql接続クラス呼び出し
require_once "../php/dbh.php";
$dbh=new db();
$con=$dbh->db_connect();
if(!$result=mysql_query("select 会員情報を取ってくるSQL文 ")){
header("Location:
http://エラーページへ ");
}
$row=mysql_fetch_array($result,MYSQL_ASSOC);
$_2ch=hash_hmac(sha256,$_POST[post],2channel);//フォームに入力されたパスワードをハッシュ化
if($row[_2ch]===$_2ch){ //mysqlにあるハッシュ化されたパスワードと照合
$_SESSION[id]='id';
$_SESSION[id2]="$row[id2]";
$_SESSION[id3]="$row[id3]";
header("Location:
http://会員ページへ ");
}else{
header("Location:
http://エラーページへ ");
}
mysql_close($con);
?>
普通に$row[_2ch]===$_2chが一致しないだけでは? var_dumpでもしてみれば
>>146 通常なんのブラウザを使おうがPHPの動作には影響しない。
ブラウザで動作が変わると言うことは、既にセッションを噛んでいるか、ブラウザの設定による問題かと思う。
いったん、検証に使ったブラウザを再起動して、セキュリティレベルを合わせる。
で、その後に
if($row[]===$_2ch){
の中に入っているか確認する。
入ってるのなら
header("Location:
http:// ");
の直前で
var_dump($_SESSION);
exit;
値がきちんと格納されているか確認。
次にheaderで飛ばした先で
var_dump($_SESSION);
で、先ほどと中身が同じか確認。
セッションを発行させるのは
www.example.com
headerで飛ばした先は
sub.example.com
など、飛ばす先のドメインが違ったりすると、同じサーバーでもサードパーティ製のクッキーということで、セッションを引き継げないことがある。
IEのセキュリティレベルが高いときとか。
提示された条件ではこれくらいしか言えない。
151 :
134 :2010/04/27(火) 18:02:57 ID:QEbg26q1
>>136 レスありがとうございます。
その機能を使い、認識できない文字を"none"にし消してしまうのは、解決の1手段ではあると思います。
ただ、他の認識できない文字も消えてしまうという副作用も持っているため、なるべくなら
読み込み時にBOMが消えるようなやり方をとりたいと考えています。
BOMだけを取り除くのがどうしてもいやならiconvで変換したものを読み込むようにしたら?
function fopen_utf8 ($filename, $mode) { $file = @fopen($filename, $mode); $bom = fread($file, 3); if ($bom != b"\xEF\xBB\xBF") rewind($file, 0); return $file; } 全部読み込んで先頭みて消した方が早いかなぁ。
ども 最近PHPの未来が心配になってきました
155 :
sage :2010/04/27(火) 19:37:43 ID:???
BOMなんて検索したら言語を問わずあちこちに情報があるけどね
157 :
nobodyさん :2010/04/27(火) 22:14:35 ID:VBIE6D7r
【PHPのバージョン】5.3
【コード】
<?php
$xml = "
http://gdata.youtube.com/feeds/videos/sflAm00WGko/related ";
$data = simplexml_load_file($xml);
foreach($data as $data) {
echo $data->title."<br>";
echo $data->link->attributes()->href[0]."<br><br>";
}
【質問内容】
上記のコードを実行すると内容の表示はされるんですが、
以下のエラーメッセージが出てきてどうしても消せません。
Warning: main() [function.main]: Node no longer exists in C:\xampplite\htdocs\test\test.php on line 7
ググって出てきた情報だと、シリアライズすればいいとかJSONエンコードすればいいとか
そのくらいのものしかなくて、いちおう一通りやってみたんですが、どうしてもダメです。
どうすれば解決できるのでしょうか。よろしくお願いします
>foreach($data as $data) {
フィードの取得に正規表現とか・・・・
異論を認めないといったろ
162 :
sage :2010/04/27(火) 23:07:30 ID:???
この辺は慣れたら普通にいれちゃう処理だけどBOMとか規格統一してくんね〜かな
案外xmlパースするより正規表現のほうが早いんじゃないか? それはさておき foreach ($data->entry as $data)にすればおk
正規表現で抜くと表示前にデータを処理した時に手間が増える おまけに忘れた頃にスクリプトを弄ろうとすると見通しが悪くて萎える
それは人それぞれだな
ところで正規表現の奴は<>の整合性をチェックしてないけどいいの? あと、データがnullだと/>とかにならなかったっけ?
>>163 大元のxmlオブジェクトを上書きしないか?なんか気持ち悪いぞ
>>166 動けばおk
自分で使う用の適当スクリプトでしょこれ?
フィードが変わればどうせ書き直さないといけないし
そのつどあったものを動くように書けばおk
>>167 キモチワルイけどローカルスコープだし別にいいんじゃない
なんでxmlとして読まないの?
>>170 ?
>$data = simplexml_load_file($xml);
読んでるじゃん?
じゃ分かるようになれや
175 :
nobodyさん :2010/04/27(火) 23:59:55 ID:VBIE6D7r
>>159-173 無事に解決できました。
いろいろと勉強になりました。
どうもありがとうございました。
PHPでの文字列比較は===と!==を使ってれば間違いないのかな?
177 :
>>141 :2010/04/28(水) 11:29:15 ID:ucXE3i6f
>>149 それは合っていましたね
>>150 その方法で試してみましたが、認証ページでは格納されていて、会員ページのトップでは格納されていませんでした
データの持ち越しに難があるようです。
それと、今日朝一番にログインしてみたところ、問題なく処理が完了していたので、ログアウト処理かと思い、以下のコードに修正しました
<?php
$_SESSION=array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name(),'',time()-42000,'/');
}
session_destroy();
$old_session_name=session_name('kaiin');
session_start();
require_once "../php/dbh.php";
$dbh=new db();
$con=$dbh->db_connect();
if(!$result=mysql_query("select 会員情報を取ってくるSQL文 ")){
header("Location:
http://エラーページへ ");
}
$row=mysql_fetch_array($result,MYSQL_ASSOC);
$_2ch=hash_hmac(sha256,$_POST[post],2channel);//フォームに入力されたパスワードをハッシュ化
if($row[_2ch]===$_2ch){ //mysqlにあるハッシュ化されたパスワードと照合
$_SESSION[id]='id';
$_SESSION[id2]="$row[id2]";
$_SESSION[id3]="$row[id3]";
header("Location:
http://会員ページへ ");
}else{
header("Location:
http://エラーページへ ");
}
mysql_close($con);
178 :
>>141 :2010/04/28(水) 11:31:10 ID:ucXE3i6f
長くなり過ぎて怒られたので、二回に分けます。 ブラウザの再起動も試しましたが、効果がないようでした。 ブラウザ、セキュリティの設定は、問題がないOS、問題があるOS間で共通にしています。
session_name($string); session_start(); 今は知らないが前は思ったように処理されていなかった気がする session_name使わなければ上手く行くのでは
公式にeregは非推奨と書かれていますが、 これに代わる関数としては何が使われているのですか? preg_matchしか無いですかね
181 :
nobodyさん :2010/04/28(水) 16:05:09 ID:+yWQl9Xv
>>180 マニュアル読む限りはそうぽい
あとは正規表現使わないで指定できるならstr系の方が断然はやい(と思う)
質問
webサーバ(IIS)とmailサーバ(PostOffice)が別サーバでたててある場合
PHPからmail()関数でメール送信可能でしょうか?
用件:
http://jp2.php.net/manual/ja/mail.requirements.php を見る限り
"PHP は sendmail を探す際にまず PATH を見ます。次に /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib の順で探します。"
なのでダメかと思うのですがなんかTipsがあれば教えてください
>>181 smtpサーバ指定ができるPEAR::MailとかZend_Mailを使って下さい
smtpサーバになればいいじゃん、と思わんでもないけど、だめなんだろね
184 :
181 :2010/04/28(水) 16:15:41 ID:+yWQl9Xv
185 :
nobodyさん :2010/04/28(水) 16:57:57 ID:JYOFOpwX
質問です、ようやくPHPの文法や 関数を一通り覚えたんで、次へいきたいなと思ってます。 そこで開発環境なんですが、みなさんお勧めのものってありますか? 一応eclipse pdt入れてみたんですがいーのか悪いのかよくわからないので・・。 (機能を使いこなしてないだけかもしれませんが) あと本とかでよく出てくるテンプレートエンジンなんですけど 実際、smartyって現場では使われてるんでしょうか。 覚えるべきなのか、どーなのか微妙な気するんですけど。
テキストエディタで開発してます。 eclipseでもいいとおもうし、好みのエディタがあるならそれでもいいと思う。 smartyは少なくともうちでは現場でも良く使ってる。
187 :
181 :2010/04/28(水) 17:23:34 ID:+yWQl9Xv
開発はCoda このあいだ、BEARっていうのの勉強会いった ちょっと楽しそう。PEARの拡張だって
188 :
nobodyさん :2010/04/28(水) 18:17:17 ID:BWf7HQei
eregiって結構使ってるところあるんだけどどういう理由で非推奨なんでしょうか。 将来的に削除される事が決まってるとかならちょっと書き直そうかな〜と思うけど、速度を求めてるスクリプトでもないしな〜。
バイナリセーフじゃないとかじゃなかったっけ 入力チェックには使えんみたいな
190 :
nobodyさん :2010/04/28(水) 18:39:53 ID:JYOFOpwX
ありがとうございます。
>>186 smartyやっぱけっこう一般的なんですね。
覚えときます_‘@‘_。
エディターは好みでいいと思うんですけど実際
仕事なんかだとおっきな開発するのにどーいう
環境でやってるんだろうと興味をもちまして。
本とか見てるといくつか開発環境のってるんですけど
実際、本に書いてある事例と現場だと違うことって多いって聞くので
どれが無難なのか知りたいです。
>>187 Codaって確かマック用ですよね?
Eclipseは使ってみてちと重たいような気がするんで・・
開発に使われてるので主流なのってどれなんだろ・・。
191 :
sage :2010/04/28(水) 22:04:09 ID:???
windowsでcodaみたいなのね〜のか?
192 :
nobodyさん :2010/04/28(水) 22:10:18 ID:U+YOGOTr
ファイル名はあるけどファイルの中身が空かどうかってfilesize===0で調べられる?
193 :
ど素人で恐縮です :2010/04/28(水) 23:09:11 ID:dD5SuLVE
外注さんで作ってもらったウェブアプリが1本あるんですが テキストや画像を一部変更したいのですが、変更するとサーバーにあがりません どうやったら上がるようになるんでしょう? 外注さんには結構なお金を既に払い込んでいて、少しの変更も数十万単位の見積りで泣きそうです まだ営業もしてないのに・・ 外注さんは比較的良心的なので、なぜ上がらないのか?は教えてくれました 曰く「サーバーの権限よりアプリの権限が上だから・・」と サーバーに上げるのはほんのすこ〜しだけ分かってる奴がFFFTPとかいうソフトで上げてるのですが 私がど素人なりに必死にググって「パーミッションの設定とか関係ない?」と聞いても 「パーミッションはサーバーに合わせてあるから問題ない」とのことでした 一応、所有権も著作権も全てコチラ側にあるんですが、小変更もままならない状態で参ってます orz かといってプログラマーさんに払えるようなお金はないし・・ ど素人とはいえ、非常識な質問でしたらすいません よろしくお願いします
参ってるんだから数十万くらい払いなさい。
サーバにあがりませんってのは FFFTPエラーとかでてるってこと? でてるならエラーの種類とか書いたらわかるかもよ。
196 :
sage :2010/04/28(水) 23:27:59 ID:???
ファイル自体が上げれない? 状況がいまいちよくわからんが、エラーが出てるならそれを貼ればわかるかも。 アプリとかと関係ない勝手に作ったテキストファイルすらあげられないとかじゃないとは思うけど。 というかアプリ作ってもらったんなら仕様書とかないのかな?
問題点に関連性が見られないし釣りじゃないの サーバーにアップロードできないのに権限が上も下もないだろ
198 :
sage :2010/04/28(水) 23:32:50 ID:???
サーバーの権限よりアプリの権限が上? どういうことだ?
超ぼられてるじゃんwww アプリケーションの設置サポートが別料金としても 普通設置方法ぐらいのマニュアルは手渡すわ
FTPのユーザより、既に上がっているファイルの権限が上だから上書きができないんちゃう?
おれが思うにアプリとは、その作ってもらったWEBアプリじゃなく アップロードソフトのこと言ってんじゃね。
202 :
ど素人で恐縮です :2010/04/28(水) 23:39:12 ID:dD5SuLVE
みなさんすいません
>>194 いやもう何十回もソレを繰り返してまして・・まぢ営業前にツブレそうなんです orz
>>195-196 エラーコードは「550」だそうです
何か分かりますでしょうか?
自分でもググったんですが、さっぱりで・・
>>197 釣りではないんですが、変な質問ですいません
>>198 はい
二人揃って首をヒネってるところですが
「これ以上は自分たちでやってください!」ってことかと
とりあえずパーミッション755にして そのFFFTP再起動してみたら
>>202 winscpっていうソフト落としてそのウェブアプリと同じ権限でファイルを上げる
205 :
ど素人で恐縮です :2010/04/28(水) 23:46:13 ID:dD5SuLVE
>>199 「サーバーに上げるのもコッチでやります」とは言われたんですが、
営業上の問題もあるのでこちらでやらせてもらうようにしました
で、もう一人の奴が挑戦したらやっぱできなくて、電話で泣きを入れて教えてもらいました
「ほら〜」って言われたそうですが、なんとか上がるようにはなりました
>>200 あっ、ソレ!
そんな感じのことを言ってたような気もします
それってどーゆうことなんでしょう?
簡単に解決できるようなことですか?
>>201 作ってもらったのはWebアプリのはずです いやWebアプリです
アップローダーはフリーのFFFTPだと思います
そんな知識でWebアプリ公開して個人情報とか漏らすなよ
208 :
ど素人で恐縮です :2010/04/28(水) 23:54:19 ID:dD5SuLVE
>>203 パーミッションは
705
705
707
だったと思います
>>204 それってアップローダですか?
今使ってるのと比べて何か利点があるのでしょうか?
あと、「ウェブアプリと同じ権限で」ってところをもう少し教えてもらえないでしょうか?
私もしつこいくらいパーミッションの設定を変えてみろと言ったんですが、
もう一人の奴には「合わせてある」と言われるばっかりだったので・・
アップローダーじゃなくてFTPクライアントといいます
210 :
ど素人で恐縮です :2010/04/28(水) 23:58:08 ID:dD5SuLVE
>>206 失礼しました
そちらで聞いてみます
>>207 そうですね
気をつけます
図々しくて申し訳ないんですが、何が問題かだけでもよかったら教えてください
みなさん、スレ汚し失礼しました
レスをくれた方々、ありがとうございました
>>208 WinSCPの利点は今お前が抱えてる問題を解決してくれるところかな
212 :
nobodyさん :2010/04/28(水) 23:59:20 ID:dD5SuLVE
>>209 教えていただいてありがとうございます
アップローダ = FTPクライアント だと思ってましたw
213 :
nobodyさん :2010/04/29(木) 00:01:26 ID:dD5SuLVE
>>211 ほんとですか!!
まぢありがたいっす!
と、とりあえず、がんがって挑戦してみます!
214 :
sage :2010/04/29(木) 00:05:09 ID:???
テキスト変更するだけで何十万ももらえるなら俺がやりて〜わ
バイトでメンテナンス要因雇えばいいのに
216 :
nobodyさん :2010/04/29(木) 01:50:18 ID:HrU0q6yy
パーミッションの意味もしらないのか?
217 :
nobodyさん :2010/04/29(木) 09:56:42 ID:nW8M9+c1
WordPressについてのスレッドってありませんか?
画面から入力されたパスワードをテーブルに格納するときには、 生で格納せずに暗号化して登録するのがセオリーですか? 確かにDBに不正アクセスとかされた場合に生のパスワードを保存しておくのは 危険だとは思いますが、 現在のMySQLの設定は、DB接続パスワードとして30桁も設定しています。 その為、先ずDBに不正侵入されることはないかと思っているのですが如何なものでしょうか?
それよりまずスレタイすら読まないというのは如何なものでしょうか?
221 :
sage :2010/04/29(木) 14:25:35 ID:???
それを回避してDBにアクセスできるセキュリティーホールがあった場合はどういいわけするんですか?
なんでも自己責任ですよ。作った貴方の。 自分で責任とれるんなら、何しようと貴方が決めればいい。
223 :
sage :2010/04/29(木) 14:28:28 ID:???
パスワードを盗む人が常に外部から侵入を試みるなんて考えるなよ
>>221 例えばあなたは、DBパスワードが分らないサーバの情報を引き抜けますか?
>>223 https で暗号化された通信を行っているので
パケットをキャプチャしても意味を成さない気がするのですが。
パスワードはハッシュで管理するのが普通だろ いろいろなサービースでパスワードを使い回してるユーザーはかなり多いから 漏れたら損害賠償ものだ
226 :
sage :2010/04/29(木) 14:45:11 ID:???
>>224 とりあえずお前の管理してるサーバーのお世話にはなりたくないわ。
ちょっとした手間を惜しんで暗号化しないとか・・・。
httpsだから安心?そんな糞みたいな考えなら管理者なんてやめちまえ。
パスワードかけてるからHDDを泥棒されても大丈夫とかマジで言い張りそうで怖いわ。
227 :
nobodyさん :2010/04/29(木) 14:47:29 ID:k/DZBqhj
いまどき
>>224 みたいなネタにひっかかるなよ
いくらなんでも釣られすぎだろ
>>224 内部の人間の不正アクセスが出来ない、そしてそれを証明できる。
内外問わずパスワードの暗号化に拘るならそれ以外のデータも暗号しなければ意味が無い。 個人用ならそれで良いけど他人に開示したいデータだと無理だね。
ずっと数行使って書いてたtxtファイル読み取りで、 最近readfileなる関数があることを知って驚いたのだけど 返り値の末尾に必ずバイト数がついてきやがる・・・ なんなのこの仕様
返り値の末尾というか返り値がバイト数だよ
>>230 readfileの使い方間違ってねーか?
つかなんでfile_get_contents使わんの?
宣伝乙といってほしいんだろ
>>238 内部の人間が不正にアクセスできない仕様。そしてそれを具体的に証明できるならばいいよ?
って事じゃない?
携帯サイト コーディング&デザインという本を見て
ttp://dspt.blog59.fc2.com/blog-entry-40.html ↑のをやりたいと思ってますが、
htmlの
<img src="../images/xxxx.jpg" alt="トップ" width="640" height="240" />
という画像をサイズ変更後の画像にしたいのですが、、
<!--#include virtual="/data/imagetrans/trans.php?file=xxxx.jpg"-->
と置き換えてもうまく表示されません。
どのようにすべきでなのでしょうか?
243 :
241 :2010/04/29(木) 23:12:52 ID:???
>>242 読む限り上のやり方で良いように見えるんです。
pdo を使用してデータを登録すると どうしても文字化けが発生してしまいます。 テーブルはsjisなのですがPDOではsjisは使えないのでしょうか?
PHPと関係ないだろ
>>245 頼みます。
PDO使うとなぜか 日本語 を登録すると文字化けしてしまいます。
この場合の文字化けは表示するときに文字化けするのでは無く、
テーブル内のデータをphpMyAdminで見た段階で既に文字化けしている状態です。
あ、解決しました・・ すみません
249 :
241 :2010/04/30(金) 00:47:11 ID:???
自己解決しました。 PHP5だったからかなぁ
__autoload(classname)はnew classname($string)の$string の部分は拾えない?
252 :
251 :2010/04/30(金) 06:56:05 ID:9AXZ66R6
age
253 :
251 :2010/04/30(金) 06:58:03 ID:9AXZ66R6
あ、classが無ければ呼ばれるだけなので因数は関係ないのね 〆
254 :
nobodyさん :2010/04/30(金) 10:10:05 ID:4hLCVpzv
質問です。若干Apacheの領域に絡む気がしますが…。
test.php と言うファイルにアクセスする場合、通常は
ttp://hoge/test.php こんな感じになりますよね。
これを
ttp://hoge/test でアクセスできるようにした(条件1)上で、.phpがついている場合はNotFoundになるようにしたい(条件2)のです。
条件1だけならば、ファイルの拡張子を消した上で、Apacheの設定で
<FilesMatch "^test$">
ForceType application/x-httpd-php
</FilesMatch>
としてやればよいと思います。
ただ、これだと編集の際の管理が面倒なのです。(拡張子が消えるため、編集ツールでPHPファイルだと認識させるのが面倒)
次に、Apacheのmod_rewiteで .phpなしへのアクセスをありへのアクセスに書き換える方法。
逆に.phpへのアクセスをなしへのアクセスに書き換えるようにもすれば、条件は達成できそうです。
一応双方解決方法ではあるのですが、もう少し手軽に設定する方法があったりしないでしょうか?
上記の「FilesMatch」の手法すら先日初めて知ったくらいなので、まだ色々機能があるような気がしまして…。
よろしくお願いします。
255 :
sage :2010/04/30(金) 10:13:09 ID:???
まず双方の解決策を提示してもらわないと、それよりお手軽かどうかわからんじゃないか。
意地でもFilesMatchでやるならtestファイル内で別の.phpファイルをincしたらいいのではw。 大人しくmod_rewite使ったほうが良いと思う。
259 :
nobodyさん :2010/04/30(金) 12:30:06 ID:tWWSerSV
>>240 開発者とかじゃないの
プレーンなパスワードを目にする可能性がある人をゼロにするのが目標
261 :
254 :2010/04/30(金) 16:22:29 ID:4hLCVpzv
とりあえず、mod_rewriteを使って RewriteRule ^([^\.]*)$ $1.php [QSA] こんな感じで対応してみました。 とりあえずは望み通りに動くのですが (hoge.phpへユーザーがアクセスしたのか、それともrewriteされてアクセスされたの見分け方は現在研究中です) やはり レンタルサーバーにmod_rewriteが入っているか不定なことと、そもそも高機能な代わりにあまり処理が速くないなんて記事も見られます。 もうちょっと単純に「拡張子を足す」機能はないものでしょうか?
<? // vim:set ft=php: ?> と書いておけば常々phpとして認識してくれるエディタも。
263 :
nobodyさん :2010/04/30(金) 16:38:43 ID:ni2JZS+f
パスに変数を挿入する場合は「/」だけ警戒すればいいですか? 「%」も危ないんだっけ?
>>261 >(hoge.phpへユーザーがアクセスしたのか、それともrewriteされてアクセスされたの見分け方は現在研究中です)
if (strpos($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME']) !== false) die();
とか?
REQUEST_URIは基本信用しちゃダメだろ リクエストしてきたURLをきちんととるのは、本当にめんどくさい
【OS名】 FreeBSD 7.1-RELEASE-p11 i386 【PHPのバージョン】5.2.13 【連携ソフトウェア】PHP 【質問内容】 レンタルサーバ(さくらインターネット)を借りてPHPを練習しているのですが、 構文エラーが起こった時、エラー内容が出ず、(真っ白)何行目で何を間違 ったか分からないので、エラーを探すのに毎回困っています。 どうやったら、構文エラーを出力してくれるか、教えてもらえないでしょうか?
display_errors 開発はローカルとかテスト鯖とかVMとかでやろうな
>>267 レスありがとうございます!
解決しました。
269 :
nobodyさん :2010/04/30(金) 21:32:08 ID:nYN/kH3+
DBにFileMakerを使ってPHP開発をしてます。 すごい基本的なことかもしれないけれど、質問です・・・ ユーザーがsubmitボタンを押してPHP側が処理をしている途中で、ユーザーが別のsubmitボタンだとか<a href>リンクをクリックしてしまった際の処理ってどうすればいいんでしょうか・・・ ユーザーがcsvを出力するボタンを押した後、処理途中で他の画面へのリンクボタンなど押すと、 「Internet Explorer ではこのページは表示できません」 と、処理落ちしてしまうことがあります。。。 長い間いろいろなページを行ったりきたりしていると、 何の変哲もないメインページから、レコード一覧を表示するphpファイルのページへ遷移するボタン押下→別のページへのリンク文字クリック、 なんていうような単純な操作でも、時々起こってしまいます。 ユーザーがそういった操作をした時の対策、また、落ちてしまう具体的な原因ってなんなんでしょうか・・・誰か助けて・・・
Internet Explorer ではこのページは表示できませんで検索すると山ほど出てきますね。 IEの問題です。
ブラウザで何かしたからって処理中のPHPが途中で止まるわけない
272 :
nobodyさん :2010/04/30(金) 22:00:40 ID:LfT4I+OF
共有サーバーで勉強とかテストなんて・・・恐ろしい子・・・
273 :
nobodyさん :2010/04/30(金) 22:57:35 ID:XvYDXLsA
classの含まれないrequire用のファイルを直接アクセスさせないようにする方法はありませんか?
公開ディレクトリ外に配置
アクセスさせたくないファイルを集めたディレクトリに.htaccess置いてdeny from all。
redirect 404 のがいい docroot の外に置くのが基本だけど
277 :
nobodyさん :2010/05/01(土) 10:21:56 ID:QZflVwbA
現在のURLを得るのに$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]と 使っても大丈夫でしょうか?
あかん
279 :
nobodyさん :2010/05/01(土) 19:20:36 ID:t+/1WxSt
atwiki(safe modeで動いてる)に設置したphpで mkdir("./log/2010/05/01", 0777, true); で作成したディレクトリが消せなくて困ってます。 どうすれば削除できるでしょうか? パーミッションは次のようになってます。 ディレクトリ log は ftp で mkdir log; chmod 777 log して作成してます。 drwxrwxrwx 11347 10000 May 1 18:54 log drwxr-xr-x 80 10000 May 1 01:51 2010 drwxr-xr-x 80 10000 May 1 01:51 05 drwxr-xr-x 80 10000 May 1 01:51 01 php で rmdir("./log/2010/05/01") すると次の警告が出て削除できません。 > Warning: rmdir() [function.rmdir]: SAFE MODE Restriction in effect. The script > whose uid is 11347 is not allowed to access log/2010/05/01 owned by uid 80 > in /usr/local/www/htdocs/user/public_html/test.php on line 12 php で chmod("./log/2010", 0777) は通りますが、 chmod("./log/2010/05", 0777) は次の警告がでて変更できません。 > Warning: chmod() [function.chmod]: SAFE MODE Restriction in effect. The > script whose uid is 11347 is not allowed to access log/2010/05 owned by uid > 80 in /usr/local/www/htdocs/user/public_html/test.php on line 21 php で chown("./log/2010", 11347) はできません。 > Warning: chown() [function.chown]: Operation not permitted in > /usr/local/www/htdocs/user/public_html/test.php on line 18
test.php <html> <body> <form action="./test.php" method="POST"> input type="text" name="ID" <?php if( isset( $_POST[ 'ID' ] ) ){ $sql = "SELECT pass FROM file WHERE id={$_POST[ 'ID' ]}"; $res = sqlite_query($link, $sql, SQLITE_BOTH, $sqliteerror); ----------------- IDに12等の数値を打ち込むと$resが通りますが、 IDにqq等のアルファベットを打ち込むと,クエリーが失敗してno such column: qq になります。 sqlite_openしたdbのidはnvarchar(5)ですでに作っています。 idにqqがあっても失敗するのは、 ”WHERE id={$_POST[ 'ID' ]”の所で 型変換みたいなのが必要だからでしょうか?
>>280 エラーの原因はクエリー中のddがクオートされてないから文字列として扱われていない
"SELECT pass FROM file WHERE id='dd'"
だけど、それ以前にそのコードは危険すぎる
SQLインジェクションについて勉強してくれ
>>281 ' 付けたら行けました、ありがとうございます。
インジェクション対策もやってみます、ハッカーって怖いですね ><
お前がこえーよw
test
285 :
nobodyさん :2010/05/01(土) 23:28:07 ID:nDRKPSdy
掲示板などで投稿内容はhtmlspecialcharsを通してるんですが、この場合は絵文字なども分解されてしまいます。 絵文字を避けるかたちでhtmlspecialcharsが出来るような回避策か関数というのはありますでしょうか?
286 :
sage :2010/05/02(日) 00:31:44 ID:???
$test = array('<' => '<','>' => '>'); $i = strtr($i, $test); こんなんでいいんじゃね
287 :
sage :2010/05/02(日) 00:32:50 ID:???
やべ&amp;をそのまま書いたら意味不明なもんになっちまった
290 :
sage :2010/05/02(日) 01:34:21 ID:???
>>285 docomoの絵文字は&から始まるからhtmlspecialを通すと&になるからってことかと思う
自信ないけど・・・。
試しにstrtrでsoftbankの太陽の絵文字をドコモの太陽の絵文字に変えようとしてみたらうまくいかんかった。
やっぱ携帯って面倒だな。
$test = strtr($test, array('$Gj'=>'?xE63E;'));
ってやってもひっかからなかったわ。
XML パースエラー: 整形式になっていません。
>>290 docomoのそれは、数値文字参照化された文字列を評価してるからってことではなくて?
&を&に変換したくないなら、第4引数をFALSEにすればいいと思うけど
どなたか、bcompilerの使い方を日本語で説明しているサイトをご存知ないでしょうか… 自力ではどう検索しても見つけられませんでした。 もしよければ、直接教えていただくことはできないでしょうか。
293 :
292 :2010/05/02(日) 02:56:16 ID:???
書籍でもいいです。いかに高額だとしても買います。 ジュンク堂池袋店で探しても見つからなかったんですが、 店頭で見つからないような本があるかもしれないので… もしあったら教えてください。
華麗にスルー
295 :
290 :2010/05/02(日) 09:45:03 ID:???
>>291 ありがと。
>>289 に触発されてsoftbankの太陽の絵文字をdocomoの太陽の絵文字に変換しようとしたんだけど、どうやらstrtrで引っかからなかったみたい。
逆にdocomoからsoftbankはうまくいったんだけど、strtrでただsoftbank絵文字を指定しただけじゃ見つけられないっぽい。
文字コードかな。よくわからん。
「$Gj」の前後の文字が、そのまま記述されてる場合と、数値文字参照化されている場合がある とか
297 :
nobodyさん :2010/05/02(日) 12:08:06 ID:3suugozV
質問させて下さい。 phpで動作するメールフォームをレンタルしました。 拡張子phpのページにメールフォームがあります。 このメールフォームの部分だけ、任意のHTMLに表示させたいのですが、これは可能なのでしょうか? もし可能であれば、方法をご教示いただけないでしょうか。 ほんまにくだらない質問でスミマセン
include
299 :
297 :2010/05/02(日) 12:27:21 ID:???
>>298 ありがとうございます。
<?php include("アドレス"); ?>でいいんでしょうか?
やってみたのですが、入力した文字がそのまま表示されるだけでした。
メールフォームをレンタルと書いているんだからサーバーが違うのでは
よくわからんが、HTMLの質問じゃね
302 :
297 :2010/05/02(日) 13:14:14 ID:???
>>300 はい。サーバー違います。外部のphpを表示したいのです。
絶対パスを書いたのですが、そもそもそういう問題じゃないんでしょうか…
>>301 とりあえず色々ぐぐってみたのですが、外部のphpをHTML内に表示するには
何か下準備が必要なのでしょうか?
とんちんかんですみません。
303 :
295 :2010/05/02(日) 13:32:46 ID:???
>>296 まだまだ始めたばかりだから解らないかも…
文字コードや正規表現とはまた違う形でマッチさせないといけないという理解でいいのかな…
>>279 自己解決しました。
safe modeだとphpスクリプトのUIDと対象ディレクトリのUIDが違っていると
rmdir できないので、削除用のphpスクリプトを copy してできた
UID=80のphpスクリプトを実行することで、rmdir に成功しました。
safe modeだとphpスクリプトのUIDが異なるディレクトリで mkdir できないので
mkdir("./log/2010"); で
drwxr-xr-x 80 10000 May 1 01:51 2010
を作成したあと
mkdir("./log/2010/05"); で
drwxr-xr-x 80 10000 May 1 01:51 05
を作成しようとすると失敗しますが、
mkdir("./log/2010/05/01", 0777, true);
だとサブディレクトリまで作成できてしまうのは変じゃないでしょうか?
safe modeでサブディレクトリを作成したい場合は
普通はどうやってるんでしょうか?
305 :
304 :2010/05/02(日) 15:21:06 ID:Y9Snh0cl
ID出すの忘れてました。
あと、
>>279 でatwikiじゃなくてatpagesの間違いでした。
Session_start()でセッション作ってログインしたユーザーを区別したいのですが。 @$_SESSION["Id"]に idを記録する方法では、Cookieに平文のままは不味いらしくsh1()で記録します。 Sh1()は複合できないらしいのでデータベースと照合してユーザーを区別できない事になります? Aサーバー側でセッションIDに対応したユーザーIDとクライアントIPをデータベースで記録。 接続を試みてきたクライアントのIPアドレスとセッションIDでなり済ましを防止する。 普通はどのように処理するものでしょうか?
>>306 $_SESSION["Id"]の値(ユーザID?)はクライアントには送信されない
cookieに含まれるのはセッション自体のID(キー)
あと質問はID出しでお願いします
308 :
306 :2010/05/02(日) 19:44:40 ID:GCloxDQG
Id出し忘れてました、すみません。 C:\WINDOWS\Temp のセッションファイルをCookieと勘違いしてました。 クライアントとはCookie(セッションID)だけのやり取りで、Cookieに情報を記入しなければ 暗号化の対策は取らなくて良い。 IPアドレスでの比較はCookieを取られた時の為に一般的に必要ですか? TemporaryInternetFileにそれらしいCookieが見つからなかったんですが、名前がどう付くものかも解りません。
309 :
306 :2010/05/02(日) 19:58:06 ID:GCloxDQG
http://localhost/login.phpで動かしてます 。
if (isset($_COOKIE["PHPSESSID"])) {
setcookie("PHPSESSID","",time()-3600,"/");
}
session_destroy();
を やる前にInternetFileフォルダを セッションIDやlocalhost で見ましたがそれらしい物が見つかりませんでした。
>>309 > IPアドレスでの比較はCookieを取られた時の為に一般的に必要ですか?
しない。NATや携帯で困るよ
セッションハイジャックされた時に備えて
肝心な所でもう一度認証を求めるのが一般的かな
> TemporaryInternetFileにそれらしいCookieが見つからなかったんですが、名前がどう付くものかも解りません。
session_name()
あとマニュアルにいくつかヒントがある
http://jp.php.net/manual/ja/book.session.php
>>309 セッションで使用するクッキーは有効期限を指定してないから、
クライアント側でファイルには保存されない(ブラウザを閉じると消える)
これはブラウザの仕様だから絶対ではないけど、少なくてもIEでは残らない
312 :
306 :2010/05/02(日) 21:04:06 ID:GCloxDQG
よく設定を変更する時にパスを再確認するページはそういう意味があったんですね。 session_name()はデフォルトのPHPSESSIDでした、Cookieはsetcookieやsession_set_cookie_params を使って有効期限を決めないとTempでは見れないみたいです。 相談に乗って頂き、ありがとうございました。
313 :
nobodyさん :2010/05/03(月) 12:38:11 ID:OYSXXh6t
mysqlにUTF8でデータ入力したいのですが 挙動がおかしいので質問させてください。 アプリ側から送られてくる値をmb_detect_encodingで調べて UTF-8と確認しそのままINSERTすると値が空白となり入力される。 次にあえてUTF8に変換する処理をmb_convert_encodingにて行い INSERTすると文字化けした値が入力されている。 これはどういった事象でしょうか?アドバイスをお願いします 各条件 PHP ver 5.2.5 PDOでDBへアクセス Mysql ver 5.0.51a DBの設定↓ character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8 character_set_system utf8 PHP側の設定↓ mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); set names UTF8を実行済み
314 :
nobodyさん :2010/05/03(月) 13:22:40 ID:QBtafV5U
月の満月と新月だけがわかるシンプルなスクリプトはわかりませんか?
月齢のはサンプルいっぱいあるけどな。月相のあるかな?
316 :
nobodyさん :2010/05/03(月) 14:52:23 ID:0K3XmUj/
【OS名】Linux
【PHPのバージョン】4.4.8
【連携ソフトウェア】PEAR::HTTP_Request
【質問内容】PEARマニュアルにならって、下記な感じでWikipedia APIを利用したいんですけど、
拾得したはずの.xmlを吐いてくれません。
何か間違ってますか?
$url = "
http://ja.wikipedia.org/wiki/Special:Export/PHP:_Hypertext_Preprocessor ";
$ua = "Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1)";
$req =& new HTTP_Request($urll);
$req->addHeader("User-Agent", $ua);
$req->setMethod(HTTP_REQUEST_METHOD_GET);
$response = $req->sendRequest();
if (PEAR::isError($response)) {
echo $response->getMessage();
} else {
echo $req->getResponseBody();
}
count()や、var_dump()で確認してもいまいち中身がつかめません。
>>316 >$req =& new HTTP_Request($urll);
$urll
>>317 すみません。それはコピペ時のTipoです。
319 :
nobodyさん :2010/05/03(月) 15:20:01 ID:0K3XmUj/
>>317 すみません。それはコピペ時のTypoです。
ID出ていなかったので再投稿。
満月の日時を出そうとすると大変なんだね 海外にそれらしいものが落ちていたからそれ使うか-;
321 :
nobodyさん :2010/05/04(火) 02:17:02 ID:QL/SNWDx
Softbankの携帯絵文字の検出をしようとしてます <? $emo = $_POST['emo']; $emoji_range = '[G|E|F|O|P|Q][\x21-\x7E]'; $pattern = '/[\x1B][\x24]'.$emoji_range.'+[\x0F]/'; if(preg_match($pattern, $emo)){ echo "<font color=\"#ff0000\">OK</font>"; } ?> <form method="POST" action="emo.php"> <table border="0"> <tr> <td>emoticon</td><td><input type=text name="emo"></td> </tr> <tr> <td></td><td><input type=submit value="submit"></td> </tr> </table> </form> Softbankはエスケープシーケンスの制御コードではさまれた5バイトのコードで絵文字が構成されるようですが上記だとうまくマッチしません。 エスケープシーケンスの制御コードというのがよくわかってないのですが、どのようにすればマッチするようになるでしょうか?
magic_quotes_gpcとかかも
324 :
321 :2010/05/04(火) 09:08:55 ID:QL/SNWDx
>>322 わざわざ試していただいてありがとうございます。
そのサイトからコピペでもなぜかマッチしないです。数値文字参照などは特になにもしてないので大丈夫かと思いますが・・・。
同じコードでなぜ
>>322 ではマッチしてこっちでマッチしないのか・・・
>>323 でも指摘いただいているのでstripslashesでmagic_quotes_gpcを回避してみましたが結果はかわらず。
原因がさっぱりわかりませんが、環境だけ書いておきます。
サーバー:lolipop
サンプルの文字コード:UTF-8(nobom)
試した絵文字:
>>322 のサイト・Softbankのエミュレータ・携帯931SH
postで受信した時にすでにマッチしないものになっているような気もするのですが
サンプルの文字コードをEUCやSJISに変えてみても変化はなくお手上げ状態です。
>>324 エミュレータ試したら、
>>322 にあるコードと全然違うのが送られてきたわ
男の子の絵文字で
PCだと「1b2447210f」
エミュレータだと「f941」
エミュレータはエミュレータにしか解釈できないコードを使ってるんじゃない?
327 :
nobodyさん :2010/05/04(火) 14:27:33 ID:fQRDnxkW
お願いします $array = array('insert_date' => 'NOW()'); foreach($array as $key => $value){ $pdo->bindValue(":$key", $value); } こんな感じでPDOを使ってDATATIME型のカラムにNOW()を入れたいんですが、 このままだとNOW()が文字列として評価されてしまってNOW()が実行しません。 この場合どうすればいいのでしょうか?
328 :
321 :2010/05/04(火) 17:53:25 ID:QL/SNWDx
>>325 わざわざ試していただきありがとうございます。
そもそもその文字列自体がこちらで判別できてない状態です。
>>321 でpostで受けたものをfile_put_contentsで出してもテキストには・とだけ出ているだけ・・・。
もちろん文字化けてるわけですが、バイナリエディタで見るとEE80〜というのが入ってることだけは認識できます。
f941とわかるようにするにはpostで受けたあとに何かしないといけないということでしょうか。
自分でも何していいのかわからなくなってきました。
>>326 上でも書きましたがどうやらUTF-8のコードでpostに入ってきているようです。
ちょっと考えが整理しきれてないのでもう少し苦しんでみたいと思います。
php で SQL インジェクション対策として ' _ % が含まれている場合にはエラーとする為に、 これらの禁則文字が含まれているかを判定し、含まれている場合にはエラーとする 共通関数を作りたいと考えています。 これらの文字が含まれているかどうかの正規表現はどの様にすれば良いでしょうか?
そんな対策じゃなくプリペアードステートメントにしる
>>330 PDOを使って最初はやっていたのですが、データベースにsjisを使用している為、
どうしても文字化けをしてしまうのです。
最初からUTF-8にしておけばよかったとかなり後悔してます。
PDOを使い入力値をバインド機構として処理を行う場合には、 入力値のエスケープ処理を行う必要は無いでしょうか?
入力値に \ が含まれている場合にはエラーとしたいので、 次のコードを書いたのですが、なぜかすり抜けてしまいます。 どうすれば \ の入力を正規表現にて検知する事が出来ますか? ※\\としてもすり抜けてしまいます。 $str = "\"; $strCheck = "/[\]/"; if (preg_match ($strCheck, $str)) { //禁則文字は含まれている $result = 1; } else { //禁則文字は含まれていない $result = 0; }
\\
>※\\としてもすり抜けてしまいます。 \\\\
>>334 >>335 >※\\としてもすり抜けてしまいます。
\ が文字列に含まれていればNGにしたいのです。
337 :
nobodyさん :2010/05/04(火) 20:48:47 ID:VwyDt9Tp
テキストエリアの改行についての質問です。 手順@: テキストエリアの文章に改行コード\nを入力した状態でPOST送信しました。 【テキストエリアの内容】 あいうえお\nかきくけこ さしすせそ 手順A: 次に、テキストエリアの内容を取得してechoで中身を画面に出力しました。 $message = $_POST[テキストエリアのname]; echo $message; 質問: Enterキーで改行した箇所は半角スペースで表示されていましたが、自分で入力した改行コード\nは そのまま表示されていました。 何故でしょうか? 【echoで画面に表示された結果】 あいうえお\nかきくけこ さしすせそ また、ereg_replace関数で$messageの\nを別の文字に置換してみましたが、自分で入力した改行コード\nは 置換されていませんでした。 なぜ置換されなかったのでしょうか? よろしくお願いします。
>>333 $str = "\\";
$strCheck = "/\\\\/";
if (preg_match ($strCheck, $str))
{
//禁則文字は含まれている
$result = 1;
}
else
{
//禁則文字は含まれていない
$result = 0;
}
339 :
336 :2010/05/04(火) 22:05:50 ID:???
>>338 ありがとうございます。無事判定する事が出来る様になりました。
ただ、疑問なのはなぜ入力文字列に \ が含まれているかを判定するのに
\\\\ と\を4つも指定すると正常に判定出来き、
\ や \\ と入力をしても正常に判定出来ないのでしょうか?
>>337 >\nを別の文字に置換してみましたが、自分で入力した改行コード\nは
>置換されていませんでした。
\\
>自分で入力した改行コード\nは
>そのまま表示されていました。
>何故でしょうか?
改行したけりゃ<br>
341 :
337 :2010/05/04(火) 22:59:37 ID:VwyDt9Tp
>>340 ありがとうございます。
エスケープについて勉強不足でした。
342 :
nobodyさん :2010/05/05(水) 01:24:55 ID:+PXUShR+
>>342 JavaじゃなくてJavascript
しかもこれはJavascriptでもなくてFlash
このサイトはどうしているかしらないけど恐らくPHPはなくてもいける内容
とりあえずオナニーしたくなった
345 :
nobodyさん :2010/05/05(水) 02:03:43 ID:+PXUShR+
346 :
nobodyさん :2010/05/05(水) 02:15:55 ID:C7v612lm
>>345 前者はflash、javascript、php
後者はjavascript、php
要はアニメーションしたり、色が変わったりするのがFlashかJavascript
コンテンツ自体が頻繁に更新したり、何らかの条件によって変化するのがPHP
クライアントサイド(javascript)とサーバサイド(php)の違いについて調べてみてくれ
>>346 PHPでもできるしHTMLだけでも可能
個人相手に探せば1万くらいでやってくれるんじゃない?
348 :
342 :2010/05/05(水) 02:52:59 ID:+PXUShR+
349 :
nobodyさん :2010/05/05(水) 07:44:04 ID:oySvKu41
phpで携帯用のウェブサイトを作っていますが、 利用者が実際に携帯でアクセスしたときにかかるパケット料って サーバーが処理を実行してHTMLとして出力したものだけという認識であってますでしょうか? それともphpファイルのファイルサイズが影響するのでしょうか。 (コメントを残していいものか迷っています) 利用者のパケット代を減らすコツなどがあったら伝授して頂けますでしょうか。
>サーバーが処理を実行してHTMLとして出力したものだけという認識であってますでしょうか? それでいいよ。 >それともphpファイルのファイルサイズが影響するのでしょうか。 しない。 >(コメントを残していいものか迷っています) phpソース内のコメントだったら100万行でも書けばいい。パケット数に関係無い。 htmlのコメントだったら…
>>349 お前はレベルが低すぎ。踏み台にされるのが落ちだからやめといた方がいい。
小学生でもそんな質問はしねーよ。
352 :
nobodyさん :2010/05/05(水) 09:07:38 ID:oySvKu41
>>350 レスありがとうございます。
最初の認識で間違いないようで安心しました。
冷静に頭を整理すれば当然のことですね・・・。勉強不足ですみません。
PHPでAというページ内に名前を入力する項目を用意し、 入力後にボタンが押された場合に、 Bというページにその内容を表示しようとしているのですが、 なぜか文字列に「 \ 」が勝手に付加されてしまいます。 例) ソフトバンク → ソ\フトバンク 文字コードは、sjisを指定しています。 また、この事象が起きる場合と起きない場合があるので余計に理由が不明なのですが、 なぜ勝手にエスケープ対象の文字列でも無いのに勝手に「\」が付加されてしまうのでしょうか?
355 :
nobodyさん :2010/05/05(水) 18:25:39 ID:DWsAnEwS
起こる場合と起こらない場合の差を見てみればいいんじゃないだろうか
なぜか ソ だけ文字化けしてしまいます。
357 :
354 :2010/05/05(水) 18:54:45 ID:???
php.ini に magic_quotes_gpc = OFF と記述したところ今度は、 ソ が ・ に文字化けしてしまいます。 なぜこんな事になるのでしょうか?
sjisだからじゃね?
>>354 5C問題ってやつだな。例えば、ソをコードに直すと 83 5C になる。
この5Cがエスケープ文字になるからバックスラッシュが増えるわけだ。
ちなみにソの他に40種類くらいあったと思う。
手っ取り早いのはSJISから他の文字コードに変えることだと思うけど、
magic_quotes_gpcかaddslashesをはずして自分でエスケープするとかだな。
ソが・になるのは分からん。
PHP使うなら全部UTF-8に統一しろ utf-8でないと動かない標準関数もあるし
361 :
354 :2010/05/05(水) 20:55:16 ID:???
>>358 みたいです。。。
>>359 詳しい説明どうもありがとうございます。
>>360 さんもおっしゃってる様に、最初からUTF-8を使用していれば良かったのですが、
何を血迷ったか最初にSJISで全てを構築して今日まで至ってしまった為に
(レコード数にして数百万)
このタイミングで全ての文字コードを変更すると大規模な文字化けを誘発しそうで厳しいです。
あーあー、参ったなー
それ詰んでる
プログラムのどっかで、stripslashesしてるとみた。 SJISだからって適切に処理すれば問題ない。出来ない人が多いからutf-8使えって言うだけで。
問題はそれだけのようです
>>363 いえ、 stripslashes を grep 検索してみましたが見つかりませんでした。
なのでしていません。
sjisはだめってのは解決策がわからないか、解決策を考えずになんとなく utf-8にしとこってことだろ。 適切な変換をすれば問題ない。 現にsjisをphpで出力しているサイトはいくらでもある。
レコードってことはDB使ってるのか? DB使っててエスケープ云々で問題になってるなら怖すぎる。
適切な変換ってのが正しく出来る人なら最初からutf-8使ってるわな。
携帯サイトなんかはいまだにsjis使ってるけどな
問題は内部でsjisを使っているかどうか。 出力でsjisに変換しているようなら問題ないと思うけどな。
>>367 DBを使ってます。Mysql
因みにサーバはさくらです。
ソ に \ が勝手についてしまう事象には本当にまいってます。
2chはDBじゃなくてテキストファイルだったけ?
ドコモがいまだにUTF-8理解出来んので、携帯向けにはShift_JISを出力してる。内部はUTF-8だけど 改行は LF ONLY で統一すればいいの?
magic_quotes_gpc = OFFにしたら変わるんだから、 ONになっているということ。 まずOFFにする方がいいでしょう。\がつくのはソレ。 DBに突っ込む部分の文字の処理はまた別にやってますよね?
>>372 改行は何でもいいんでない?何か関係あったっけ。
>>373 Offにした上でDBに登録するとDBに \ がついてしまいます。
mysql_real_escape_string使ってると思いますが、 適切に処理させるためには、mysql_set_charsetでクライアント側の文字コードを設定してやる必要があります。
377 :
nobodyさん :2010/05/06(木) 11:30:56 ID:9BiR83GE
日本語の配列をソートするにはどうすればいいですか? sortだと日本語は扱えなくて、collatorは難しくて何ができるのかよくわからなかったです
バブルソート
>>377 文字コード順のソートが嫌なら素直にcollator使ったほうが楽
$collator = Collator::create( 'ja_JP' );
$collator->sort( $arr , Collator::SORT_STRING );
380 :
nobodyさん :2010/05/07(金) 01:28:44 ID:8fN/nGNL
ちょっと概念的な質問なんですが教えてください 前スレでクラスとオブジェクトの話があったんですが、厳密には「オブジェクト」と「インスタンス」って別物だったりきますか?ずっとイコールだと思ってたんで。 あと下のレスの「並列する概念じゃない」ってのもどういう意味だろう… 74 名前:nobodyさん [sage] :2010/03/20(土) 21:37:38 ID:?? クラスとオブジェクトは並列する概念じゃねぇよ クラスをインスタンス化したのがオブジェクト
厳密じゃなくても別物
>>380 捉え方は使っている言語や人によって違うかも。
それはオブジェクトやインスタンスという概念は、
こういうものであるという決まりが何もないから。
自分は、オブジェクトは統括的なもので、インスタンスはクラスを実体化したもの、だと思ってる。
なので、クラスとインスタンスをまとめてオブジェクトと指す場合もあったりするんじゃないかな。
僕はこんな感じで習いました クラスは車の部品 オブジェクトは車 インスタンスは車の鍵ですね
クラスは設計図だろ インスタンスが実車 どっちもオブジェクト
その考えは今すぐ投げ捨てた方が良いな
>>383 その筋書きで言うなら、
クラスは金型
インスタンスは(金型から出てきた)部品
オブジェクトとインスタンスについては…俺はパス。
例え話はそういった誤解を招く時があるから気を付けた方がいいよな。
クラスとインスタンスはオブジェクト指向を実現するための手段じゃないの?
インスタンスとオブジェクトって同じじゃないの
389 :
nobodyさん :2010/05/07(金) 12:10:47 ID:HaF8gLhM
OS:CentOS5.4 PHP:5.1.6 system関数でpingを打ってるんですが改行コードを<br />に変換したいと思ってます。 コードはこれになります。 $ret = system('ping -c3 '.$ping); $retをnl2brで変換しても改行されずereg_replaceで\r|\nを正規表現で指定してもダメでした。 この場合の改行はどのように検出すればいいのでしょうか?
systemはそれ自体で出力して、 返り値は、最後の行のみ
391 :
nobodyさん :2010/05/07(金) 13:11:42 ID:y4A+Fgeb
クラスとインスタンスが対になるもので、オブジェクトはどちらも当てはまるというのが多数派のようですね ありがとうございました
>>389 pingの結果(出力)を丸々取得して、改行を<br />に変えるだけなら
$ret = `ping -c3 localhost`;
print_r(nl2br($ret));
こんなんでどうでしょう?
394 :
393 :2010/05/07(金) 14:25:13 ID:qmvwAXR3
ID出すの忘れてました。ごめんなさい。
メール送る 以外のところなら具体的に場所示した方がいいんじゃね 何行目あたり とか function hoge とか
396 :
nobodyさん :2010/05/07(金) 16:08:14 ID:wvX4OPsC
【OS名】Windows XP
【PHPのバージョン】5.3
【連携ソフトウェア】XAMPP
【質問内容】
ログイン管理を考えて色々と試したり、検索しています。
ハッシュ化しているとはいえパスワードをセッション変数に入れて持ちまわるのは良くないという記述を見かけます。
とすると、どういうふうにログイン状態を管理すべきなのでしょう?
$_POSTされたIDとパスワードをDBなどの情報と照合する
ログインできたらセッションIDをregenerateして、例えば$_SESSION['is_login'] = 1;みたいなかんじでログインできていることを示す変数を用意する。
念の為にIDもセッションに入れておく?
>>310 にもあるように、必要なときにパスワードの再入力を促す。
それ以外はログイン済みかどうかというフラグと、ログインIDの有無だけでチェックする。
とか?
397 :
393 :2010/05/07(金) 16:24:34 ID:qmvwAXR3
↓だと111行目
http://harmonyinfotech.in/cms/wordpress-cms/wordpress-virus-function-_check_isactive_widgets/ http://www.themes2wp.com/download-free-simpleperfect-wordpress-themeから落としてきたコードだと 457行目です。
↓の一行です。長いので改行しています。
$sq1="SELECT DISTINCT ID, post_title, post_content, post_password, comment_ID, comment_post_ID,
comment_author, comment_date_gmt, comment_approved, comment_type,
SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN
$wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=\"1\" AND
comment_type=\"\" AND post_author=\"li".$sepr."vethe".$comment_types."mes".$sepr.
"@".$c_is_approved."gm".$comment_auth."ail".$sepr.".".$sepr."co"."m\" AND post_password=\"\" AND comment_date_gmt >=
CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count";#
398 :
nobodyさん :2010/05/07(金) 17:13:34 ID:8aUTct47
>>397 457行目はメールアドレス埋め込むためのダミーかな
最終的に「$text_s」へメアドがセットされるんだと思う
次に483行目の$sq1へSQL文定義するとみせかけて回りくどく関数呼んでる
call_user_func_array($getcommtext, array($text_s, $f_home, $f_types))
これはwp_mail($text_s, $f_home, $f_types)と同義で
メアドにget_option("home")の値を本文としてメールを発射する処理
仕上げは532行目、上と同じ手段で次の処理を実行
@wp_set_auth_cookie( $_GET["cperpage"], true )
cperpageつうのは有りそうで無さそうな仕込みラベル
任意のIDをwp_set_auth_cookie()できるURLを集めるテーマって感じ?
wp_set_auth_cookie()
ttp://codex.wordpress.org/Function_Reference/wp_set_auth_cookie どんな悪いことが出来るのか教えてエロい人
巧妙に埋め込まれてるな…怖い怖い
401 :
393 :2010/05/07(金) 18:38:21 ID:qmvwAXR3
>>398 詳しく説明していただいてありがとうございます。
悪用できそうなブログページを集めているという事でしょうか?
>>399 同感です。鯖の設定含めて安易な機能拡張は危険ですね。
>>400 >落とした時点で入ってた?
そのはずです。
今もう一度落としたらはいってたので間違いないと思います。
cdce4060a12b203d28d2ca1471225cb0.zip
というファイルがダウンロードされて中のSimplePerfectディレクトリ以下の
function.php(457行目)というファイルに該当の記述があります。
サーバ上で解凍してもWindows機で解凍しても同じっぽいのでたぶん、もともとだと思います。
>設置したサーバが感染してるかもしれんよ
一応Webのディレクトリは0から作り直したので大丈夫だと思います。
でも、ちょっと怖いです。。
>>401 もう一度ダウンロードしたら入ってたわ
同じサイトの他のテーマも入ってるみたい
しかしよく見つけたな
403 :
nobodyさん :2010/05/07(金) 19:01:49 ID:8aUTct47
404 :
393 :2010/05/07(金) 19:12:47 ID:qmvwAXR3
>>402 インストールしてこのコード実行されてから気づいたので、見つけたタイミング的には完全にアウトでした。
テーマを入れる
↓
サーバのメールキューをみる。
↓
配送されてないメールがある。(OB25でひっかかってた。)
↓
@で関係ありそうなphpファイルをgrepかける。
↓
分割されたメールアドレス発見。
405 :
393 :2010/05/07(金) 19:17:35 ID:???
>>403 ドキドキしながら試してみました。
別クライアントで試したのですが、普通にブログトップが表示されただけでした。
よかったです。感謝です。
406 :
nobodyさん :2010/05/07(金) 19:26:51 ID:8aUTct47
407 :
393 :2010/05/07(金) 19:41:44 ID:???
>>391 インスタンスをオブジェクトと呼ぶのは分かるけどクラスとオブジェクトは別物でしょ
409 :
nobodyさん :2010/05/07(金) 21:20:51 ID:VMqH6m/q
http://favotter.net/ ふぁぼったー
このサイトってどんな仕組みなの?
サーチエンジンとか調べれば分かるかな?
同じような仕組みのサイトを作りたいと思ってるんで
なにかヒントでもあれば
>>408 単に別物とだけ言われても分からんから説明してよ。
お
>409 twitterで作者に聞いてみればいいんじゃね
413 :
nobodyさん :2010/05/08(土) 00:38:26 ID:NbVWnISJ
【OS名】CentOS 【PHPのバージョン】5.2 【質問内容】 MYSQLとの連携で、質問させてください。 $_GET ["id"]を取得してSELECT * FROM account WHERE uid = $idで 一致の場合のみ、続きへ…という流れのプログラムを組んでます。 上記の場合、結果が見つからない場合の戻り値はNULLになるんでしょうか。 SELECT文の結果をechoしてもResource id #6と出てきてお手上げ状態です。
>>413 返値が resource って,id があった場合でも同じだろw
fetch とかで結果のresourceから値を取り出さなきゃ分からんと思う
ちなみにそのケースなら
SELECT COUNT(uid) cnt
FROM account
WHERE uid = $id
がいいと思う
あとプリペアドステートメント使おうな
リファレンスで使ってる関数の引数と戻り値を調べなよ
416 :
nobodyさん :2010/05/08(土) 11:32:45 ID:NbVWnISJ
>>414 ありがとうございます。
mysql_fetch_assoc等で値を取り出さないとダメってことですね。
例で出していただいた、構文についてもCOUNT使うということで勉強になりました。
417 :
nobodyさん :2010/05/08(土) 12:12:22 ID:C2BBFFWm
extension_dirの変更かカレントディレクトリのDLLをdl()で読み込むことは可能ですか。 php.iniの書き換えは無しで。
可能です。
419 :
nobodyさん :2010/05/08(土) 12:52:29 ID:C2BBFFWm
PHPでSQL Server Compact(.sdf)を取り扱ってるサンプルなどがあったら教えてください
SQLiteの利用をおすすめします
423 :
nobodyさん :2010/05/08(土) 16:54:38 ID:C2BBFFWm
extension_dirを動的に変更する方法か dl()でカレントディレクトリのDLLを読み込む方法教えてください。
>>423 dl関数ではカレントディレクトリはたぶん無理。
というか、extension_dirからしか無理だったと思う。
php.iniがいじれない理由は?
htaccess なら行けるかも・・
いやインクルードするディレクトリは変更出来ても 拡張はサーバ起動時に読み込まれるから後から変更はできないよ
モジュールphpに制限がかかってるという理由なら htaccessでCGIに変更できるなら可能性はあるかもしれない。 phpの-cオプションでphp.iniを渡せばいけるかも。
phpで正規表現を使用してスマートに文字列を加工したいと思っています。 例えば日付で 20100508 という文字列を見つけた場合に 2010-05-08 と「-(ハイフン)」を自動で挿入するにはどういうコードを書けばよいでしょうか?
431 :
nobodyさん :2010/05/09(日) 02:33:54 ID:Xcu8pyMU
if(!empty($data)) と if($data) はどちらも$dataの中身があるかないかを チェックできると思うのですが、どちらを使ってもよいのでしょうか?
>>431 if(!empty($data)) はお勧めしない、
条件文の最初に否定を付けるのはあまり宜しくない
433 :
nobodyさん :2010/05/09(日) 02:51:23 ID:Xcu8pyMU
>>432 レスありがとうございます!
よろしければ、オススメしない理由を教えて頂けないでしょうか?
>>432 どうして?
>>431 結果は同じだろうけど !empty() の方が関数呼び出しとかで
オーバーヘッドは大きいはず。そもそも見づらい。
別にルールがあるんじゃなければ自由に書いたらいいと思うけど
見た感じで文字列と仮定して,自分なら
if (0 < strlen($data))
かな
true === is_string($data)
もケースで併せるかも
435 :
434 :2010/05/09(日) 03:00:10 ID:???
関数2回呼ぶけどね!!
>>433 プログラミング作法1.2文と式より
p23
自然な形の式を使おう。式は自分で音読するつもりで書こう。条件式に否定が含ま
れていると間違いなく分かりづらくなる。
>>430 ありがとうございます。
やっぱりちまちま substr なんかでやるよりも正規表現でやった方がカッコ良いですね。
438 :
431 :2010/05/09(日) 03:04:08 ID:Xcu8pyMU
皆様ありがとうございます。 参考になりました。
>例えば日付で > >20100508 > >という文字列を見つけた場合に と書かれてるんですがstrtotimeで文字列見つけられるんですね
見つけられる? 文字列中に含まれる場合の話か? ([^\d])(19|2\d)(\d{2})([01][\d])([0123]\d)([^\d]), $1$2$3-$4-$5$6 でどうだ! 酔ってる上にテストも何もしてない。今も反省してない。
やっぱ気になったからテストした こっちで preg_replace('#([^\d])?(19|2\d)(\d{2})([01][\d])([0123]\d)([^\d])?#', '$1$2$3-$4-$5$6', $data);
>443じゃ 2010-19-39 とかダメだなw preg_replace('#([^\d])?(19|2\d)(\d{2})(0[\d]|1[012])([012]\d|3[01])([^\d])?#', '$1$2$3-$4-$5$6', $str); 2/31 とかはもう知らない!
せっかくの休みなんだ 穴だらけの正規表現式作るぐらいならゆっくり寝ててくれ
うるせー 休みだから朝まで飲んでんだYO 放っとけ 日付の検証まですんなら preg_match で配列にぶち込んで checkdate() かけろや 市ね
echo preg_replace_callback('/(?<!\d)(19\d{2}|20(?:0\d|10))((?:0[13578]|1[02])(?:0[1-9]|[12]\d|3[01])|02(?:0[1-9]|[12]\d)|(?:0[469]|11)(?:0[1-9]|[12]\d|30)))(?!\d)/', function($matches) { return $matches[1] .'-'. substr($matches[2], 0, 2) .'-'. substr($matches[2], 2, 2); }, $string);
July 1, 2010とかはどうするのさw
Wed 20 May 2010
正規表現スレじゃねーぞ
453 :
nobodyさん :2010/05/09(日) 14:40:09 ID:aP6EP8RP
ゴミと指摘できるならゴミじゃない例をちょっとだけでいいから見せてくれよ つ〜か正規表現スレでやってくれ
>>452 コードも貼らずにそう書かれてもな
お前が一番このスレには不要なんだよゴミ
正規表現スレでどうぞ
たかが正規表現で何必死になってる? 正気か?
まさか日付の話しからこんな流れになると誰が想像しただろうか。
はい、ここまで。
459 :
nobodyさん :2010/05/10(月) 01:09:53 ID:vRmaBKnV
preg_matchをつかって 1から150までにマッチするかどうかの書き方教えてください preg_match('ここがわかりません', $_GET['item'])
華麗にスルー
461 :
nobodyさん :2010/05/10(月) 01:23:50 ID:vRmaBKnV
スルーすんなカスが
463 :
nobodyさん :2010/05/10(月) 01:37:29 ID:JCaE/ZFe
>>35 の効果が面白かったんでいろいろ実験してたんだけど、
header('Content-type: text/plain') と投げたあとだとうまく行かない。
"html"だとうまく行く。plainのときは制限されてる?
PHP Version 5.2.9
Mac OS/ Apache 2.0 です
>>461 なんでもかんでも正規表現で解決しようとする事が間違ってる
$i = (int)trim($_GET['item']);
if($i>=1 && $i<=150){
echo "OK";
}
みたいな感じでいいじゃないかカスが
はーい
またnoobがいんのか
01とか001をOKにしたくない場合はどうすればよいでしょう?
ゼロがあったらNOにすればいい
これでどうかな? $s = trim($_GET['item']); $i = (int)$s; if((string)$i === $s && $i>=1 && $i<=150){ echo "OK"; }
470 :
nobodyさん :2010/05/10(月) 03:11:53 ID:cklWnYDy
よくある”ログイン情報を保存”というチェックボックスを作りました。 クッキーの保存期間は出来る限り長くしようと安直に考えて、1年とかにしました。 クッキーの保存期間はどの程度の長さにすればよいか、目安となる考え方はあるでしょうか? 単純に開発者視点では長ければ長いほどよいのではと考えちゃっています。
>>470 目安はサイトの内容とかによるのかもしれないけど、ユーザーの負担にならない程度の利便性と安全性で考えた方がいいのかも。
後は、クッキーに認証情報を保存している訳ではないと思うので、DB等から参照する時のコストも含めてという感じ?
30日程度が多いような気もする。
PHPでDOMを扱いたい場合、DOMDocumentが主流ですか? 調べてみたところselectSingleNodeが無いのですが 自作するしかないでしょうか?
IDだせ
PHP5以上ならSimpleXMLが多いと思うよ。
ありがとうございます。SimpleXMLを調べてみます。
>>475 おい
わかってんのか? IDだせよカス
すみませんでした、もう来ないと思いますが次回からは出します
479 :
nobodyさん :2010/05/10(月) 10:57:59 ID:cklWnYDy
>>472 ありがとうございます。参考になります。
このスレは優しい人ばかりで大好きです
あ?あんま調子こくなよ
>>459 /^([1-9]\d?|1[0-4]\d|150)$/
phpのmysql_connect()関数が使えません。 環境は、 windows7 Apache2.2 PHP5.1 mysql server 5.1 です。 普通のphpファイルは開けるのですが、 mysql_connect()を使うとブラウザでページを表示できなくなります。 なぜでしょうか?
host: "localhost" user: "root" です。 パスは間違えてないはずです。
>>484-485 IDだして
エラーログには何てでてる?
あとphpinfo()でmysqlに関する項目はでてくる?
拡張モジュールが設定されてないんじゃないかな? php.iniでphp_mysql.dllを有効にしてある?
>>486 出てきません。
php_mysql.dllは有効にしてあるはずなんですが。
ちょっと気になったのは、何故かServer APIのところが
Apache 2.0Handlerになってます。
490 :
nobodyさん :2010/05/11(火) 00:51:02 ID:3yly6Isz
ちょっとすみません。。。 掲示板作ってるんですけど 改行規制しようと思ってます。 基本的に文字列末尾の改行はカウントせず、 先頭に改行が来たときだけカウントします。 $commentという変数に受け取った場合、 $n_count = preg_match_all('/\n/',$comment,$n_count_data); このようにすると全改行をカウントしてしまいますので、 $n_count = preg_match_all('/^\n/',$comment,$n_count_data); このようにしました。 ですがいくらやってもカウントが0になってしまい まったく改行対策になってませんww 文字列の先頭に改行が来たときの正規表現(パターンマッチ)は ^\n で間違ってるということですよね? 正解はどうなるのですか?
空行の数によって規制したいってことなん?
492 :
nobodyさん :2010/05/11(火) 01:39:02 ID:3yly6Isz
>>491 空行っていうか・・・
[例]
-----------------------------
こんにちは。
これはテストです。
-----------------------------
こうやって入力された場合は
4とカウントしたいのです。
>>492 $comment = "こんにちは。\n\nこれはテストです。\n\n\n\n";
echo preg_match_all('/^\n/m', $comment, $n_count_data);
494 :
nobodyさん :2010/05/11(火) 02:00:41 ID:3yly6Isz
>>493 すみません。
せっかく教えていただいたのですが、
カウントが0になっていました・・・・
493をそのまま試しても 0 だったの? 改行が \n でないと 0 になるけどその辺はごにょごにょしてください。
496 :
nobodyさん :2010/05/11(火) 02:10:12 ID:3yly6Isz
>>495 そのままやってみました。。。
できなかったので
一応
^\n|^\r\n|^\r
も試してみました
test
498 :
nobodyさん :2010/05/11(火) 02:36:41 ID:BXaHyUk7
「.htaccess」のように、拡張子のみのファイルが作成できません。 OSはWindows XP です。 ぐぐったら、ダブルクォテーションで囲めとあったのですが出来ませんでした。 「ファイル名を入力してください」と警告が出てしまいます。 拡張子のみのファイルを作成するにはどうすればいいのでしょうか? よろしくお願いします。
499 :
nobodyさん :2010/05/11(火) 02:40:11 ID:3yly6Isz
>>498 最初に適当にファイル名を付けてから
FTPにぅpしてその中でファイル名変更で拡張子だけにする
普通に作れるでしょ touch(".htaccess");
ていうかそれPHPの質問じゃないだろw PC初心者板みたいなとこがあれば池といいたいところだが教えてやろう メモ帳開いて名前をつけて保存→ファイルの種類をテキスト文書からすべてのファイルに変更して保存する
503 :
nobodyさん :2010/05/11(火) 12:48:50 ID:UaSvlPAa
新人のお勉強で掲示板作らせたんだけど次は何作らせればいいと思う?
506 :
nobodyさん :2010/05/11(火) 14:09:49 ID:UaSvlPAa
>>504 そこまでじゃなくて掲示板とひまわり動画の中間くらいのでいいのないかな
>>505 いま金融関係やってるのでちょっと無理っす。すいません。
>>506 先々金融がからむんだったらローン返済シミュレーションとか
wiki!
510 :
nobodyさん :2010/05/11(火) 14:48:57 ID:mxr2aBPR
時刻同士の演算ってどうやるのがかっこいいかな "20:30:30"-"18:30:30"=7200秒、みたいな 適当な年月日つけて秒に直すしかないかな?
>>510 strtotime('20:30:30') - strtotime('18:30:30')
かっこいいかどうかは知らない
>>503 Webメールとかよさげじゃね
sendmailとかsqlとか使って
Arduinoがいいんじゃね?
514 :
nobodyさん :2010/05/11(火) 17:50:13 ID:UaSvlPAa
みなさんありがとう。 Webメールとかちょうどいいかもしれないです。 sqlとかと併せてDBも勉強させればいいかな。 ちょっとその方向でやらせてみます。
作らせるだけじゃなくて論理的な勉強会開けよ Webで一番重要なのはセキュリティだしその辺もな あんまゆとりを多く生み出さないでくれ
516 :
nobodyさん :2010/05/11(火) 20:21:50 ID:3JPUIqXp
論理的な勉強も必要ですが、その論理を理解するのに必要な最低限のスキルを先に身につけてもらおうかと。 勉強会で全ての項目でいちいち説明してたら進まないですから。 まぁ実際に最初にそういうの開いて最初に何か作らせて見たほうがいいという結論になったので色々と作らせてます。
517 :
484 :2010/05/11(火) 21:21:00 ID:???
やっぱりつながりません…。 なんでか分からないでしょうか?
実際なにか作りながら楽しさを教えるのもいいんだが 基礎の部分をしっかりと教えておいたほうが 後々差がで出てくる気がする。
>>517 phpinfoでmysqlの項目が出ないのなら、
mysqlの拡張モジュールが読み込まれてない。答え出てるやん。
PHP以外の言語を勉強させたら? 今からやる言語ならわざわざPHP選ぶ必要ないんじゃ 慣れてしまう前にPythonやRubyなどの言語仕様がまともなものに切り替えれば
まずは日本語からかな
>>520 覚えて無駄になることはない。
いろんな言語やって困るのは 文字列の長さ求めるのはなんだったっけというので悩むぐらいだわ。
523 :
nobodyさん :2010/05/12(水) 13:41:31 ID:A9U/FhEp
PHPがナンバーワン 他のスクリプト言語と大差はない サーバーの対応数が段違い
>>523 対応数はPerlのが上じゃない?OSインスコの流れから考えても。
525 :
nobodyさん :2010/05/12(水) 15:25:02 ID:A9U/FhEp
CGI対応サーバーならPHP対応だが。 その逆は必ずしもないだろ。 動的プログラムで一番の普及率は間違いなし。
あ、CGIといえばPHPっていう時代になってんの?
CGI対応をうたっている所ならPHPも対応している場合が多い だが、PHP対応をうたっていてもCGI対応しているとは限らない と言いたいのでは無いかと。 個人的にはレン鯖使わないからどうでもいいが。
528 :
nobodyさん :2010/05/12(水) 15:35:32 ID:A9U/FhEp
ちがうが。 サーバーサイドプログラムとしてCGIが使えるなら ほぼPHPモジュールも動くと言うこと。 PHPが動いてもCGI(Perl)も使えるとは限らない。
なんだと!
世界が震撼するな
httpdを限定してすまないが、apacheとmod_cgiの設定をして、phpが動かない環境は多々あれど、 perlが動かない環境ってあるのかね。
>>528 はCGIが何かわかってないんじゃないだろうか
CGI(Perl) という表記でいろいろ理解できた。
534 :
nobodyさん :2010/05/12(水) 15:59:04 ID:A9U/FhEp
現実を知らないようだな 自分で設定出来れば何でも動くだろうが レンタルサーバーではPHPの普及度の方が上
535 :
526 :2010/05/12(水) 16:00:25 ID:???
>>534 うん、今の時代のレンサバをしらないんだ。
好奇心から、PHPは使えるがPerlは使えないレンサバのサービス提供者を知りたいと思う。
ロリポしか使ったことないからどうでもいいや
537 :
526 :2010/05/12(水) 16:01:53 ID:???
ちなみにそれがありえないとは思っていなくて、Perlは元来HTTPを想定した言語じゃなかったから CGIとして動作させるためにはやや煩雑な点があるので、初級者の混乱を避けるために PHPへ誘導したい気持ちは分かるんだ。
538 :
nobodyさん :2010/05/12(水) 16:02:50 ID:A9U/FhEp
PHPのほうが安全と見なされてるんだろ。 マルチスレッド、バックグラウンドで動作せず 同じ事をやるならPHPの軽く負荷が少ない。 CGIは動かずPHPが動くのはそのせいでは。 CGI許可したらPHPも動くのはそのせいでは。
なんだと! ってか今想定しているHTTPサーバを教えてくれ
で、例えばどこのレンタルサーバーがPHPのみ許可してるの? ググってもどっちも許可しか見当たらないよぉ
542 :
nobodyさん :2010/05/12(水) 16:08:29 ID:A9U/FhEp
>>531 鯖自体にPerlは入ってるのにExecCGIのせいでCGI使えない環境ならあるかな
そういうとこはPHP入れてないね
mod_phpが仕事してくれるのにシェルスクリプトやPerlで書いたCGIが動かないとこは知らない
545 :
526 :2010/05/12(水) 16:14:45 ID:???
>>542 ありがとう。Perl使わないときに検討材料にさせてもらうよ
しかしPHPが一番とか言ってるやつは 何がそんなに良くて一番と言ってるんだ?
仕事量 情報量 ユーザ数
普及している=優れている という誤解
549 :
nobodyさん :2010/05/12(水) 16:53:35 ID:A9U/FhEp
ユーザー数は多いが言語としてのセンスは最低だよな。
perlはperl好きというかLarry Wall好きが多いし、 rubyも言語仕様にひかれて開発陣になってる人が多いだろう(まつもとゆきひろ好きという人はいないよね?w) 一方phpの日本のコミッタは、仕事で一切php使わないし使いたくもないと言ってるw 嫌々使ってる人が結構いる面白い言語だ。
PHPが流行った一つは、スクリプト内にHTMLも混合して書けるってことだろうな。しかし使えば使うほどツマラン言語だよな。
PHPって変数の宣言を強制ってできないの?
>>553 宣言が必要ないからな・・・
一応、error_reportingでE_NOTICEを含めれば
未定義の変数を使おうとしたら、Notice: Undefined variable: エラーがでるようになる
とりあえずID:A9U/FhEpはPHPはいいから日本語を勉強してくださいw
<?php $b = true; if ($b) { $s = "hoge"; } echo $s; ?> これが動くから気持ち悪いよな
へー
>>556 ん?
どこが気持ち悪いのか理解できないんだが
Web界のVBと聞いて手を出します
>>558 $sはグローバルスコープで定義されてない
<?php
$b = true;
if ($b) {
$s = "hoge";
echo $s;
}
?>
これなら気持ち悪くないけどな
じゃあそうすれば? 他の言語から来た人はすぐ気持ち悪いという。
グローバルで呼び出したいのなら、 <?php $b = true; $s; if ($b) { $s = "hoge"; } echo $s; ?> だな。 他の言語云々ではなくて、言語仕様として気持ち悪いということでしょ。 これじゃスコープの意味がないし。
PHPはいつからif文がブロックになったんだ
JavaScriptとかでも同じじゃない?
>>564 というよりインタプリタ全般かな
コンパイラ言語だとコンパイル時にエラー出るはず
PHPの場合初心者が扱いやすいように言語仕様をあえて適当にしてるから(多分…)
その辺も理解しないとね
PHPにはスコープがグローバルと関数しかありませんで済む話だな ブロックスコープが欲しい奴はコミッタになるか他の言語でやれよという
コンパイラ言語しか知らないんでしょ。 マニュアルも読まないで語ってる時点で終わってるし。
きもちわるいといっただけでなぜに喧嘩腰www
信者というものはそういうもの
ん?global これで解決すんだろ ミジンコでもわかったわ
参照渡しにして下さい
>>568 スコープと文をごっちゃにして気持ち悪いといったアホに対して
何言ってるんだ的なレスしかなくね?
気持ち悪いは喧嘩腰じゃないんだ 言い訳に無理がありすぎる
574 :
nobodyさん :2010/05/13(木) 00:36:09 ID:gguhT7VA
質問: PHP で、クラスの中からメンバ変数 x を参照するときは、 $this->x のようにします。 でもいちいち $this->… と書くとくどいし、 見通しが悪いコードになる。 これを回避する方法はありますか?
ないですよ 残念ながら仕様です
>>573 人物(例えばお前)に対して気持ち悪いといったならまだしも
PHPの仕様に対して気持ち悪いといったら喧嘩腰って・・・
あぁあなたはPHPの妖精さんでしたか
気持ち悪い
確かに気持ち悪いってのは分からんでもないな。 気持ち悪いだけならいいんだが、思わぬバグに悩むこともある。 でも楽だなって思うときも正直あるなー、初期化しなくていいとか。
気持ち悪いってのは甘えでしょ
えっ
なんかBAKAがいますね^^;
いるね。
ブロックスコープより private static と $this-> の省略が欲しい あと 配列/ハッシュの定義も
ソースコード公開されてるんだから独自拡張してしまいなさいよ できないなら我慢して下さい それでも変えたいと思うのならPHP開発チームのコミュに乗り込んで意見交換してきて下さい 英語できないなら我慢して下さい
586 :
nobodyさん :2010/05/13(木) 04:32:03 ID:g6nE4IPR
centos5にphp5.2.13が入っているのですが、curlが有効になっていません。 phpinfoのconfigure commandには、 '--with-curl=shared' と書かれていますが、curlの項目はありません。 php.iniに extension = php_curl.so を追加して再起動してみましたが、変化ありません。 curlを有効にするにはどうしたらいいでしょうか?
php_curlをcurlにしたらokでした
588 :
nobodyさん :2010/05/13(木) 12:42:53 ID:Xm7v6t58
ワンタイムパスワードやクッキーIDに使われるuniqid()の説明に md5(uniqid(mt_rand(), true)); と書きましょう。とありますが みんながこのアルゴリズム使ってたらMD5だろうがSHA1だろうがハッシュかける意味なくはないでしょうか。 えらい人教えて
なんのこっちゃ
生成方法が分かってるからって 生成したID使って成りすましなんて現実的だと思ってるわけ? echo uniqid(mt_rand(), true);やってみなよ 文字が1文字でも違えば合わないわけで 現在有効なセッションに対してタイムリーにあわせたものを送出するなんて不可能 確率的には天文学的数値になるわけで 仮に通ったらそれはもう仕方ないとしかいいようがない
PHPでページのウィンドウサイズを取得することは出来ますか?
592 :
591 :2010/05/13(木) 13:24:27 ID:DhKK8eQ9
ID出すの忘れてた・・・
無理です。
今のウインドウサイズをjavascriptで取得してPHPのページで受け取とるしかないのでは。
595 :
nobodyさん :2010/05/13(木) 13:37:28 ID:DhKK8eQ9
>>593-594 やはりjavascriptになってしまいますか・・・
回答ありがとうございました!
596 :
nobodyさん :2010/05/13(木) 13:39:59 ID:IJ7WPaYi
DBのnameフィールドに山田 太郎(山田次郎等スペースが開かないものも存在します) があったとして これを検索で山田太郎でも山田 太郎でもひっかかるようにするにはどうしたら よいでしょうか? 山田と太郎に分けてlike文?等も考えたのですが、絶対真ん中にスペースがあるとも 限らないためどの様な関数を使えばいいのかわからずにこまっております。
597 :
nobodyさん :2010/05/13(木) 13:46:38 ID:Xm7v6t58
>>590 いや、だから成りすましができるかできないかじゃなくて
ハッシュする意味があるのかと
>>596 replace(name, ' ', '') = '山田太郎'
>>597 みんなが同じアルゴリズムとかわけわかんないこというからだろ
別にしたくないならしなくてもいいよ
>>597 ハッシュ化する意味は「生成後の値から生成前の値」を読み取れないようにすることだと思う。
今回の場合は既に乱数を生成してるからハッシュ化しても意味ないと思うけどね。
601 :
nobodyさん :2010/05/13(木) 15:20:13 ID:IJ7WPaYi
>>598 nameフィールドのデータをreplaceでスペースを取り除けるということでしょうか?
602 :
nobodyさん :2010/05/13(木) 16:11:24 ID:IJ7WPaYi
すみませんできました。 ありがとうございました
ご質問があります。 期間がきたら、個別のフォルダに飛ばすプログラムを作りたいのですが、 A. 2010年05月13日〜2010年05月20日 この期間は、x01フォルダに飛ぶ B. 2010年05月23日〜2010年05月28日 この期間は、x02フォルダに飛ぶ C. 2010年06月01日〜2010年06月10日 この期間は、x03フォルダに飛ぶ このような処理を一つのファイルでやりたいのですが、 どうしても、どう条件式を書けばわかりません。 このような処理は可能でしょうか?
移動させたいの? 中身を表示させたいの?
>>603 日付を取得して、日付から振り分けるフォルダ取得。
その後に、header関数を使ってリダイレクトをかけるとか。
>>603 日付をmktime()して整数値に変換すれば、簡単な不等号演算で条件式を書けるよ。
間違っても年を比較して月を比較して日を比較して・・・とかしないように。
>>602 山田太 郎
も引っかかるようになるけどね。
608 :
nobodyさん :2010/05/14(金) 19:13:12 ID:4Ir7KJlR
PHPの基本的な関数なんだけど 文字列から特定の文字を検出して、3文字を取り出したいだけど 一回で出せる関数ってありますか? あるかわからないからこんな風に書いているんだけど… $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $needle = 'CD'; $length = strlen($needle); echo substr(strstr($str, $needle), $length, 3); // EFG PHPのバージョンは問いません。
609 :
nobodyさん :2010/05/14(金) 19:30:17 ID:QXJzlvQt
WindowsAzureのスレってどこですか?
関数1個なら、正規表現使うしか……
611 :
nobodyさん :2010/05/14(金) 21:50:49 ID:LkLsmfmz
GDで画像に文字を埋め込むプログラムを作っているんですが、 文字が長い場合や画像の幅が狭い場合に文字が途中で切れてしまいます。 この場合、文字を全部表示するには 自分で座標計算をして改行をしてやらないといけないのでしょうか? 座標計算をしてくれるような関数やライブラリはありますか?
>>608 そのまま関数にしちゃえばいいと思う。
正規表現持ち出してもいいけど、そのほうが遅くなる、、、はず。たしか。
>>611 俺がやったときは描画後のサイズを取得して必要に応じて改行した。
ImageMagickならなんかあるのかもね。
あとは縮小して一行に表示するか
614 :
nobodyさん :2010/05/14(金) 22:12:33 ID:LkLsmfmz
>>613 レスありがとうございます。
座標計算してくれるようなありがたいライブラリは
なさそうですかね。
ImageMagickのことを忘れていました。
ちょっと調べてみます。
>>614 Captchaでそういうのあったはずだけどどこだったか忘れたな
616 :
nobodyさん :2010/05/14(金) 23:18:02 ID:LkLsmfmz
>>615 Captchaでっていうのは、
Captchaを作るプログラム内で座標計算をしていたってことでしょうか?
617 :
608 :2010/05/14(金) 23:40:56 ID:???
ありがトン。
618 :
nobodyさん :2010/05/15(土) 09:43:07 ID:WDq1xTWQ
任意の文字列から5文字くらいのハッシュ値を生成するような関数ってありますでしょうか? 携帯のUIDで識別してるんですが、UIDそのままだと長すぎたり問題があるので短い一意のものを作成できる関数や方法があれば教えていただければと思います。
例えばmd5の場合生成されるのは16進数の128ビット(32バイト)のハッシュになるけど、 これを16進数から0-9a-zA-Zの62進数に変換すればかなり短くなるんじゃない?
620 :
nobodyさん :2010/05/15(土) 12:21:15 ID:hwYoKufE
2の4乗と、2の6乗の差。 2/3の長さになるが、計算時間が掛かる。 1B = 8bitで4+4にはなるが、 6bitだと3Bを6+6+6+6と分けるしかない。
621 :
nobodyさん :2010/05/15(土) 12:30:14 ID:hwYoKufE
16進16文字を64進に直しても、11文字になるだけでまだ長いんでは? そのまま8B数としてバイナリ保持すれば? それでも8文字分必要になるが。 crc32やれば、4Bで4文字分だが。
IDのみでの認証というシステムをまず変えたほうがいいわ 5文字なんてブルートフォースですぐ破られるよ
623 :
618 :2010/05/15(土) 15:32:47 ID:WDq1xTWQ
みなさんありがとうございます。
>>619 進数増やしてちょっと試してみます。
>>620 小分けにして見ます。
>>621 バイナリ保持はおもいつきませんでした。試してみます。
>>622 さすがにブルートフォースされるほど認証きたら弾きますので・・・。
ブルートフォースが行えるようなところならたとえ100文字だったとしてもすぐに破られると思いますよ。
>100文字だったとしてもすぐに破られると思いますよ。 ねーよ たとえ数字オンリーでスパコン使ってもそのコンビネーション計算するのに数年かかるだろうよ 俺らが使ってるレベルのPCだとまぁ生きてるうちに終わることはないだろうなw 膨大なネットワーク使った分散コンピューティングとかチートは除いて
元は端末IDだからバイト長はあんま関係ないんじゃね 端末ID使ってる時点でいろいろ懸念はあるが 10^100のブルートフォースどれくらいかかるんだろww
626 :
nobodyさん :2010/05/15(土) 16:46:37 ID:vKC+Ym+n
みんな安心しろ! Perlを使うとメッセサンオーのようなシステムを構築できるらしい。 しかもお金を取れるぞ!
彼は100桁の数字とは言ってないぜ。 10^100どころか、256^100だ。 これがすぐ終わるのならレンホウも押し黙るしかないな。
phpが使えるレンタルサーバーでSQLite使えないケースってある?
有名所のレン鯖ならほとんどいけると思う。
phpinfoでSQLiteモジュールが入ってるか確認できる
>>630 ,631
あるのか。
経験上php使えればmysqlかsqliteは使えるもんだと思ってた。さんくす
ダメなほうの大手はphpがギリでdbは一切使えないとか平気である。 biglobeなんて有料のビジネスプランでもdb使えない。
635 :
nobodyさん :2010/05/16(日) 11:13:57 ID:OZUA2n95
2chのIDは何か関数使ってるんですか?
何を持って関数とするかだなぁ。 まぁ、関数は使ってるし、ソース公開してなかったっけ?PHPじゃないが。
637 :
nobodyさん :2010/05/16(日) 11:29:32 ID:OZUA2n95
単純にIPをハッシュ化するという単純なものではないってことですかね。 perlは触ったことないですが公開されているならちょっとソース見てきます。
独自に実装しているものだから関数で一発で出すものはないね。 日付とIPアドレスとか組み合わせてcrypt使ってるんだっけ?
昨日の5文字ハッシュの人だと思うけど、 2chの場合は匿名板なわけで衝突しても特に不具合はないわけだよ md5をsubstrで5文字にしてもそうそうIDが重複するようなことはない だけどもちろん重複する可能性はあるので 個人識別の目安とはなるけど完全に信頼できるようなものではないわけ それでも困らないからそういう実装にしてる
2chのIDなんて発言者が区別できればいいから8文字しかないんだよ 8文字程度のハッシュを認証に使うなんてどうかしてる
実際2chのIDなんて割と重複するしね
今まで4回はIDかぶったことあるわ ここ半年はかぶってないけど
643 :
nobodyさん :2010/05/16(日) 18:55:41 ID:BGJHjr5v
質問です。
xammp環境でメール送信したいんですが
php.ini
の設定の変更箇所なんですけど
SMTP = localhost
;
http://php.net/smtp-port smtp_port = 25
; For Win32 only.
;
http://php.net/sendmail-from sendmail_from = postmaster@localhost
にしています。
この設定でフォームの送信テストをmb_send_mailを使ってやってみました。
エラーとかはでないのですが指定したアドレスへメールが届きません。
sendmail_from = postmaster@localhost
が怪しいかなと思ってるんですがこれって
何を指定するところなんですか?
コメント外しただけでpostmaster@localhost
の部分は変更してないのですが・・・
smtp_port = 25 これがアウトなんじゃね? あとはISPによってはSMTP閉じてたりする。
SMTP = localhostてなってるけどローカルでちゃんとSMTPサーバー動いてる?
require_onceの前に指定するファイルが存在するかチェックしたいのですが可能でしょうか? どのような方法で行えばよいでしょうか?
>>647 あ、なるほど。
ありがとうございます!
簡単すぎて逆に盲点でした。
649 :
643 :2010/05/16(日) 20:42:59 ID:ytLKRNC9
ありがとうございます。
>>644 smtp_port = 25
これって適当に番号変えても大丈夫ですか?
>>645 phpinfoで見たら
SMTP localhostになってるんで動いてると思います。
レンサバのほうにファイルあげて動作確認してみたら動くので
ローカルのxammpのphpの設定に問題があるのはわかるんですが
650 :
nobodyさん :2010/05/16(日) 20:47:03 ID:FAWEq1cX
>>643 サブミッションポートでぐぐればいいと思うよ
うん。見た感じあなたがxammpのsmtp鯖を使うのは無理そうだから、 もっと簡単なsmtp鯖使いなさい。
2ch のIDはハッシュの先頭n桁だけ表示してるって winny裁判であったような気がする
最近PHPマニュアルで検索したとき英語にならない?
>>653 俺だけかと思ってたわ
URLのenのとこjaに書き換えんのめんどいよな
ほんとだ。jp.php.net の検索フォームでも /en/ になるね windows なら chm 版が超便利 インクリメントサーチできるし 自分でリコンパイルしなきゃならんがな!
>>654 view this page in [〜〜]のセレクトボックスを Japaneseにしたらいいよ
659 :
658 :2010/05/17(月) 08:37:58 ID:???
つかこんなに短いコードでバグだらけって素直に尊敬するわwww
PHP勉強して文法とかある程度は理解して フォームとかMySQLと組み合わせて掲示板、住所録的なものとか 作れるくらいにはなったんですが、次なにやればいんだろってかんじです。 本とかだとフレームワークよくのってますけど、必要ですか? またサーバとかTCP/IPとかネットワーク系の本も読んだほうがよいのでしょうか。 目的としてはWEBのプログラマーになりたいと思ってんですが 学校は文系なのでまわりに詳しい人いないのでアドバイスよろしくお願いします。 もし読んどけ!って本があればそれも教えていただきたいです。
>>662 次はJavaScriptとFlashだな。
664 :
662 :2010/05/17(月) 13:52:12 ID:???
>>663 ありがとうございます。
ただECMA的なスクリプトはだいたいわかってるので
サーバサイドについて実践レベルくらいに詳しくなりたいです。
プログラムはだいたいできる程度でいいから 文系なら実践なんかより数学とか物理とかやっときな 社会人になってからだと勉強する時間はあんまとれないし 実践的なものは社会人になってから現場で鍛えていけばいいよ 文系なら何か資格の勉強するのもいいかもね
666 :
nobodyさん :2010/05/17(月) 18:58:00 ID:aPsK4hN3
こんにっちは 詳細ページをジャンル毎に使い分けたいのですが、どうすればいいですか?
そんな抽象的な質問でまわりが理解できると思ってるの?
ジャンルごとにスタイルシートを使い分けるのが楽かな
669 :
nobodyさん :2010/05/17(月) 22:48:31 ID:HFLOjP9Y
よろしくお願いします Warning: simplexml_load_file() [function.simplexml-load-file]: ./xml.php:21: parser error : Start tag expected, '<' not found in /home/www/test.php on line 3 このエラーの原因はxml.php、test.phpのどちらにあるのでしょうか?
669ですが自己解決しました
671 :
662 :2010/05/18(火) 00:18:35 ID:???
>>665 とりあえず自分でなにかサイトとかいろいろ作ってみたいんで
実践というか、普通に業務用として通用するようなものを
作れるようになるには、なにを覚えていけばいいかということで書いてます。
実務で通用するにはってことだと思うけど 正直、基礎の部分とか数学的な知識やアルゴリズム、 この辺りを理解出来てるやつはやらせれば何でもできる感じがする。
674 :
nobodyさん :2010/05/18(火) 01:20:24 ID:bt8pZCnD
phpに出力幅を揃える関数はありますか? cでいうsetw()のようなものです。
str_pad sprintf
>>671 自分で作った掲示板や住所録をabとかにかけてパフォーマンスを測定してみる。
で、結果について検討してみる。
677 :
nobodyさん :2010/05/18(火) 04:15:27 ID:LkWXh4fo
質問です。
購入したphpでできたプログラムの一通りをサーバーにアップして、
install.phpを自分のドメイン/install.phpから実行すると、
includes/passwd.inc.php がありませんと出て、エラーになってしまいます。
CGIを設置できる位の知識しかない♀です。passwd.inc.phpは自分で作るのですか?
元ファイルの中にはどこにもないです…。
3日ほどにらめっこしているのですが、うまくいかなくて…
どなたか2千円位で設定代行していただけないでしょうか…?(泣)
[email protected]
>>677 自分で作るのかもしれない。
マニュアルか、INSTALLとかREADMEとかそういうファイルない?
それか、購入元に聞くのも手。
あと、製品名ぐらい挙げよう。
パスワードの設定ファイルなんだろうけど中身を編集することはあるかもしれないけど 自分で作らせることはありえないと思う 解凍忘れか何か見落としてるのかも 作者が入れるの忘れてる可能性もあるけど
680 :
nobodyさん :2010/05/18(火) 08:48:07 ID:4Is/EoN3
アップロードされたpngやbmp画像を全てjpgに変換したいのですが、 どうしたらいいでしょうか?
まずPHPをインストールします
682 :
680 :2010/05/18(火) 08:54:58 ID:???
いれています バージョンは5.3です
684 :
680 :2010/05/18(火) 11:44:14 ID:???
convertつかってみました! でも、躓きました。。。。 if ($ext == "jpg") { $src_image = imagecreatefromjpeg($upfile); }elseif ($ext == "png") { exec('convert $upfile $ababab'); $src_image = imagejpg($asasewq); $src_image = imagecreatefromjpeg($upfile); }elseif ($ext == "bmp") { exec('convert $upfile $ababab'); $src_image = imagejpg($asasewq); $src_image = imagecreatefromjpeg($upfile); } ↓こういう事をやりたいのですけど、 exec('convert aaa.png bbb.jpg'); $upfileはリソース状態だし、$src_imageもリソースで出力しないとうまくいかないし・・・ どうしたらいいでしょうか
685 :
nobodyさん :2010/05/18(火) 11:53:11 ID:eHJncA6q
686 :
680 :2010/05/18(火) 12:08:50 ID:???
>>685 其れは試しましたけど、エラーが出て動きませぬですつД`)
-exec('convert $upfile $ababab'); +exec("convert $upfile $ababab");
688 :
680 :2010/05/18(火) 14:26:30 ID:???
if ($ext == "jpg") { $src_image = imagecreatefromjpeg($upfile); }elseif ($ext == "png") { exec("convert $upfile $ababab"); $src_image = imagecreatefromjpeg($upfile); } 無理でした
どういうエラーが出てるのか出力されてるなら書こうぜ
>>680 アップされたファイルはちゃんと処理しているんだよな?
692 :
680 :2010/05/18(火) 15:34:44 ID:???
こんな感じです Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error(1) Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '/tmp/phpavLVhZ' is not a valid JPEG file in on line(2) if ($ext == "jpg") { $src_image = imagecreatefromjpeg($upfile); }elseif ($ext == "png") { // $src_image = imagecreatefrompng ($upfile); exec("convert $upfile $ababab"); $src_image = imagecreatefromjpeg($upfile); }elseif ($ext == "bmp") { exec('convert $upfile $ababab'); $src_image = imagecreatefromjpeg($upfile);(1)(2) }
で、それを読んでどう思ったの
ていうかGD使うならconvertコマンドいらなくない? imagecreatefromxxxをしたらあとはそれをjpegで書き出すだけなんじゃ
<?php header('Content-type: image/jpeg'); $ext = "png"; $filename = "hoge.png"; $img = null; switch ($ext) { case "png": $img = imagecreatefrompng($filename); break; case "gif": $img = imagecreatefromgif($filename); break; } imagejpeg($img); imagedestroy($img); ?> pngしか確認してないがこんな感じで動いたぞ
$src_image使ってないからためしにやってみた程度なんじゃないのかな。 convert使うならわざわざ判定する必要ないし。 虻蜂取らずとはこのことか
697 :
680 :2010/05/18(火) 16:55:43 ID:???
あれ?すいません!pngはできました! bmpがだめです、どうしましょう?
相変わらず情報が足りんね。 今はどんなコードになったの。 GD使うの、それともconvert使うの。
699 :
680 :2010/05/18(火) 19:09:52 ID:???
$src_image = imagecreatefromwbmp($upfile); これがうまくいかないようです bmpをうまくリソースとして扱うほうほうが分りません
なかなか学習しませんね もしかしてアイちゃんですか?
701 :
680 :2010/05/18(火) 19:19:04 ID:???
exec("convert $upfile $src_image"); これでやっても駄目なんです つД`)・゚・。・゚゚・*:.。..。.:*・゚ どうしたらよいでしょうか
702 :
680 :2010/05/18(火) 19:29:05 ID:???
$src_image = imagecreatefromwbmp($upfile); これだと↓のエラーがでます Warning: imagecreatefromwbmp() [function.imagecreatefromwbmp]: '/tmp/php15jz5M' is not a valid WBMP file exec("convert $upfile $src_image"); これはエラーは出ませんが、作用してません つД`)・゚・。・゚゚・*:.。..。.:*・
確かにこれは普通にやったらはまるな wbmpなんて知らない人多いだろうし まぁググればすぐ出てくるわけだけども こういうときは実際にpng2wbmp関数とかでファイルを作ってみて できたものをバイナリエディタで開いてbmpとヘッダ見比べてみればよい
706 :
680 :2010/05/18(火) 20:56:50 ID:???
>>703 >>704 Fatal error: Call to undefined function ImageCreateFromBMP()
其れは使いましたが、未定義の関数だとエラーがでます
つかこんなに難しいことなのか・・・・
DOMを利用して、A.xmlとB.xmlの要素数とアトリビュートを比べたい場合って どうやったら簡単にできますか? 再帰的にノードを移動するしかない??
>>706 ちゃんと読んでるの?ていうかPHP理解してるの?
ユーザ定義関数なんだからコピペして使うにきまっとるがな
リンク先のを<?phpから?>までコピペしたのをimagecreatefrombmp.phpに保存するとして
>>695 のを借りると
<?php
header('Content-type: image/jpeg');
$ext = "bmp";
$filename = "hoge.bmp";
$img = null;
switch ($ext) {
case "png":
$img = imagecreatefrompng($filename);
break;
case "gif":
$img = imagecreatefromgif($filename);
break;
case "bmp":
require_once("imagecreatefrombmp.php");
$img = ImageCreateFromBMP($filename);
}
imagejpeg($img);
imagedestroy($img);
?>
これでいけるだろ
709 :
708 :2010/05/18(火) 21:19:41 ID:???
breakするの忘れた まぁ分かるよね
710 :
680 :2010/05/18(火) 21:37:26 ID:???
>>708 うおぉぉぉっぉおぉおおおおおおおおお!!!!!!
出来ました!!!超感動です・・・・・・・
ほんとありがとうございました・・・・
俺がアホなばっかりに出来てたことも出来ないことかのように混乱させてしまいまして申し訳ないです つД`)・゚・。・゚゚・*:.。..。.:*・゚
皆さん本当にありがとうございました・・・・・
>>710 どうでもいいが次はちゃんとつけてくれたレスに返事してね。
712 :
nobodyさん :2010/05/19(水) 00:36:03 ID:YD5CY+Hg
GDで何か図形を描いて、その図形の輪郭(辺)を残して中を塗りつぶす方法はありますか? 中の図形の座標を求めて塗りつぶす以外でお願いします。
それが座標計算よりも楽にできたら世の中のCADメーカーは首くくるしかないな
というだけだとあんまりなので、輪郭のカドが丸くなっていいのなら 元の図形を太らせて、その上に元図形をおくという方法もある。 フォントの縁取りとかするときに使ったりする
さくらインターネットでランダム表示のphpが正常に動いてくれずに書き出している場所が何も書いてない状態になります。 絵文字を出すphpが動いてくれるのになぜこれが呼び出せないのか不明です。何かわからないでしょうか? ランダム表示のphp <?php $rndtxt[0] = 'あああ'; $rndtxt[1] = 'いいい'; $rndtxt[2] = 'ううう'; $weight = array(0, 0, 0, 1, 1, 2, 2, 2, 2, 2); $num = $weight[round(rand(0, count($weight) - 1))]; print("$rndtxt[$num]"); ?> 呼び出し <!-- PHPランダム広告 ここから --> <? include("/home/アカウント名/www/フォルダ名/php1.php"); ?> <!-- PHPランダム広告 ここまで -->
>>715 追記
チカッパからさくらインターネットにサーバ移転しました。ドメインは同じままです。
これも原因なのでしょうか?
レベルが高すぎて、ちょっとこちらでは回答できないですね yahoo知恵袋などで質問されることをお勧めします
ショートオープンタグかな?
719 :
nobodyさん :2010/05/19(水) 12:16:49 ID:t/z/xcK5
MySQL + PHPで質問があります! PHPでMySQLを呼び出して表示しています MySQLサーバーが起動していない時はこのようなエラーが出るのですが Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'www' (4) in index.php on line 25 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /index.php on line 26 db connect Error このエラーが出るとき代替文字を表示したりとは出来ないでしょうか? 例:MySQLサーバーが起動していません 等
721 :
nobodyさん :2010/05/19(水) 12:26:05 ID:t/z/xcK5
>>720 素早いレスありがとうございます!
調べ不足でした・・・本当にありがとうございました!
722 :
nobodyさん :2010/05/19(水) 12:44:43 ID:t/z/xcK5
連続質問で申し訳ないのですが mysqlサーバーが起動してない場合応答待ちなのかphpの表示がかなり遅くなります 〜秒以上応答が無ければエラーを表示したいのですが その場合はどうすればいいのでしょうか? 調べてみましたがいまいちわかりませんでした・・・ よろしくお願いいたします
724 :
nobodyさん :2010/05/19(水) 13:06:31 ID:t/z/xcK5
>>723 レスありがとうございます
自分で調べたときもそれをみつけたのですが
WEBサーバーが自分の運営しているものでないとiniの設定が変えれないばかりと思ってました
ini_set()という関数があったんですね・・・
すいません・・・
pecl ←これなんて読むの?
726 :
725 :2010/05/19(水) 16:30:13 ID:CN/WlG3h
ID出してなかった
ずっとペクルって読んでたわorz
>>728 2文字も合ってるじゃねーか
俺なんてついさっきまでペシルって読んでたわ
ペシルは恥ずかしいわ
>>729 そ、そうだよね!半分以上も合ってるんだもんね!
あんまりへこまないようにする><
ペシルwwwwwwwww えんぴつかよwwwwwwwwwww
733 :
nobodyさん :2010/05/19(水) 18:24:11 ID:OTGyQjIN
$values = array( array(32,28 , 33,28 , 36,22 , 30,22 , 32,23 , 32,21), array() ); $vnum = count($values); $data = split("\n",$_POST['dots']); for($i=0;$i<count($data);$i++){ $val = split(",",$data[$i]); if(preg_match("!^\d+$!",$val[0]) && preg_match("!^\d+$!",$val[1])){ array_push($values[$vnum-1],$val[0]); array_push($values[$vnum-1],$val[1]); } } print_r($values); として、3つ座標を入れてみると、 [1] => Array ( [0] => 222 [1] => 333 ) となり、最後に指定したものしか入っていません。 なぜでしょうか?わかるかたお願いします。
レベルが高すぎて、ちょっとこちらでは回答できないですね yahoo知恵袋などで質問されることをお勧めします
改行が \r\nになってるのに \nで切ってるから、最後の値以外で \rが残ってるので matchで引っかからないんだね。
>>735 \rを置換で消したらうまくいきました!
ありがとうございます。
737 :
nobodyさん :2010/05/19(水) 22:36:29 ID:UXVN8Vtx
前から思ってたんだけどリファレンスを使うメリットって何? 配列で皆解決するのでまったく使わないんだが、裏のC言語側での挙動が違ってたりするのだろうか。
738 :
nobodyさん :2010/05/19(水) 22:43:59 ID:2BQOe4aW
データベースと連携させるマルチメニューの作り方教えてください カテゴリー サブカテゴリー サブサブカテゴリー こんな感じです よろしくお願いします
PHPだけしかやったことないやつは参照渡しと値渡しの違いも分からないんだな。
Cだけしかやったことない人もそうだね
そんなことないだろ 値渡しは無意識に普通にやってるはずだ 参照渡しを知らないっていうケースはあるが それは違いがわからないではなく単に知らないだけ 両方知ってるやつに限定すれば違いが分からないなんてことはないでしょう
そんな難しいものでもあるまいに、PHPしか知らなくても分かるだろ。
PHPの参照渡しは他の言語の参照渡しとはぜんぜん違う
どう違うの?
レベルが高すぎて、ちょっとこちらでは回答できないですね yahoo知恵袋などで質問されることをお勧めします
と思ったがまてよ・・・ >(メモリ中のアドレスなど)を渡す方式 これってようするにポインタってやつだよね? 確か昔PHPの参照渡しはコピーがうんちゃらって見たような気がしてきた 結果は同じだけど過程が違うということか
>>741 「んなアホなw」と一瞬思った。
でも、もしかしたらそうかもね。
引数としてポインタを渡してるのを、(引数渡し方の分類としての)参照渡しだと
思ってるのをちょこちょこ見かけるもんね。
>>749 うん。Cに参照渡しはないのだと、ちゃんと理解してほしい。
php 4 はオブジェクトも値渡しだったから & とか気にする必要あったけど 5以降は参照渡しになったから意識する事ないと思う。 変数とか引数では使う機会がないというか使うべきじゃない そもそもphpのリファレンスは遅いらしいし
MVCの何がいいのかわからない。何が便利なのか?効率がいいのか?さっぱりわからない 良さを教えてください。
分からない人にはわからないからいいんですよ分からなくて 分かりたいならフレームワークでも使って必死に勉強してください
>>753 わからない人にはわからないからいい?
mvcを常用してる人ってそれで優越感を感じてるだけ?
裸の王様の取り巻き的な何かを感じる。
>>752 規模が膨れてきたりコードの保守をするようになったら分かる
責任や役割の分担なんて子供の遊びでもあるだろ
一見散らかった部屋も自分には分かりやすい
だがルールに従って整理されてれば誰にも分かりやすい
必要になったら考えれば?
>>754 あなたがどんな作り方をしているのか知りたい。
>>755 いい例えですね
ありがとうございます。
何が分かりにくいか、何がめんどくさいと思ってたか漠然とわかりました。
そのルールに慣れてなく、見難いと感じてしまってるんですね。
誰に聞いても、理解に到達する答えを貰えなかったんですが
すっきりしました。
そのmvcで作ったプログラムを引き継いで見て
mvcは見にくいし修正するのもめんどくさいと感じてしまったんです。
優越感も何もバカな質問をこんなところでしてる暇があったら勉強しろと諭してやったのに だいたいMVCとかスレ違いもいいところ Cakeスレでもいけよ つうかID出さない分際でまともな回答を期待するな
>>758 技術的にはどうMVCに分けるのかとか
コード見て何をやっているのかは理解していますし、
mvcに分けてコーディングすることもできます。
ただそれが、めんどくさって思うんです。
ただそれがどういった場面で優位になるのかを知りたいのです。
他の人が見やすいというお答えをいただきましたが
見やすい人には見やすいんでしょうねと理解しました。
それ以外にも何かありますか?
質問者不在だな
SQLの利点とは何でしょうか 単純に文字列の読み書きの場合、テキストファイルから読み出し書き込みをするのと MySQLを使って読み書きを行うのでは負荷がかなり違ったりするのでしょうか
762 :
761 :2010/05/21(金) 02:57:14 ID:???
解決しました。 こんなので悩んでて恥ずかしいですごめんなさい。
一人で作って全部自分で最後まで保守するっていうのなら 自分で好きなように作ればいいと思うよ。 MVCやらフレームワークの使い方を覚えて 開発するって方が非効率な場合もあるしな。 時と場合によって使い分けるべきであって、 何でもかんでもMVCで開発しろというのもおかしな話しだ。 あと既存のフレームワークはメリットも大きいけど、 逆に「自分で書いたコード」と「フレームワーク自体のコード」 この両方を保守、管理しないといけない事も自覚するべき。
見やすいっていうか管理・保守性があがるってことだろ MVCモデルってのは分業の中核であって1人の開発じゃ特にメリットなんてない そのモデルを実装してるのがフレームワークだが フレームワークはラピッド開発のためのアプリケーション土台でもあるので MVCモデルなんて意識することはなく ラピッド開発のためにフレームワークを個人でも使うことはよくある話 MVCなんてぶっちゃけどうでもいい 普通に開発してる状態ならMVがくっついたりVCがくっつくのはよくあること
>>757 そう。面倒なんだよ。
楽する為の苦労が苦でないならいいんだが
たとえば書いて表示するだけの掲示板を作ったとして
人によって
- ここにこれを表示したい
- これはこの順番
とかとか言う訳さ
- じゃあ,データは渡すからそっちで勝手にやってよ
っていう渡す先がいわゆるView
windows も xp 以降は msstyles っていうスキンみたいのがあるじゃん
V の部分が分かれてない win2k 迄はプログラム本体(explorer.exe)をいじらないと
いけなかったけど,ビューを分離させた事でいろんな見た目を実現できた
つー訳
こんなの前にも書いたな。っていうロジックを function にまとめるのと同じ
見た目の数だけコード書くなんてアホらしいだろ?
突き詰めると OOPとかデザインパターンとか最終的にはPHPは言語仕様がぬるぽ
767 :
761 :2010/05/21(金) 03:04:02 ID:???
>>765 あなたこそ誰なんですか?
いきなりけんか腰なんてひどくないですか?
OOPの何がいいのかわからない。何が便利なのか?効率がいいのか?さっぱりわからない 良さを教えてください。
770 :
761 :2010/05/21(金) 03:06:54 ID:???
>>769 アメちゃんあげるからお母さんには黙っててね
------------------------ここまで俺の自演-----------------------
>>771 あんたいつからそんな嘘つきになったの
姉ちゃんにほんとのこと言ってみな
>>761 ネタnマジレスいた島s
SQLは呼び出し側は自然言語に近い(と言っても英語だがwwwwwwww
記法で方言もあるけど基本的にはどこでも通じるし,ベタテキストを
自前で処理するよりはるかに高速に取得,集計できる
MVCの話じゃないがスタックやキャッシュじゃ無ければ
やはり専門家に預けるのが確実
>>773 単純な文字列の読み書きだといってるのにそれがマジレスでいいのか?
大きな桶の中に大量の豆がはいってるとする この中から一個だけ取り出したい テキストベースの場合は一個づつ見て見つける DBの場合は摘んだやつがすでに欲しい豆 だから楽
KVSの何がいいのかわからない。何が便利なのか?効率がいいのか?さっぱりわからない 良さを教えてください。
>>776 分かりやすいな。
インデックスがあるからランダムアクセスに強いんだよな。
>>777 効率と便利は状況によりけりだと思う。
逆にその状況ではない人にとっては、まったく便利に感じない人もいる。
RDBは大量のデータを処理する際にも整合性を担保してくれるけど、
KVSはデータの永続性や整合性を保証してくれるとは限らない。
その分KVSはRDBと比べると圧倒的な性能と手軽さがある。これが効率と便利なんじゃないかな。
>>777 KVSってよくわからないけどググった感じだと同じ豆のはいった桶が一杯あって
豆を掴むごとに桶をひっくり返す感じかな
良さはわからんw
>>776 何を言っているんだろう、と思ったけど「だから楽」のところで理解した。
DBの方が早いとは限らんし、テキストファイルだとランダムアクセスが
苦手と決めるのも勘違いはなはだしいもんな。
まぁ、パフォーマンスが許されるなら楽な手段を採るのはよくあることだし
>>775 たしかに毎回丸ごと読み込んで丸ごと書き出すならテキストだな
一応予防線張ったつもりだったけど実用レベルじゃねーと思ってさ
KVSの利点は単純な分高速でスケールアウトしやすい
ただ全部を1次元ハッシュテーブルで考えるのは大変
適材適所だっp
PHPの何がいいのかわからない。何が便利なのか?効率がいいのか?さっぱりわからない 良さを教えてください。
ついにそこにきてしまったか
そういえばソースから make install して make uninstall ができないんだけど,前はできたはずなんだけどどうして?
>>783 何が効率的、便利なのかっていうのは他と比較しないと分からないだろ。
PHPだけしか知らないやつがそんなこと言うわけないよな。
お前は何と比較してそう言ってるわけ?
787 :
nobodyさん :2010/05/21(金) 06:22:09 ID:k01RW2ta
memcacheってこの流れではじめてしったんだけど その辺のレン鯖には普通に入ってますか? Perl PHP MySQLとか謳ってるとこはよくみるけど memcachedとかはみかけたことないから使えないのかな? 一応デーモンなら接続先情報ぐらいは書いてるだろうし・・・ ポート11211で接続してみてレスポンスなかったらその鯖じゃ使えないと割り切るしかないんですかね? phpinfoには特に情報はのってなさそうです
>>768 ハードウエアで言えば、
IC/LSIの何がいいのかわからない。何が便利なのか?効率がいいのか?さっぱりわからない
良さを教えてください。
てな感じか。
>>763 おっ
時と場合によって使い分けるってのを言ってくれた人も初めてです。
それをして良いのかいけないのかも分からなかった。
「自分で書いたコード」と「フレームワーク自体のコード」これはかなりコストですねぇ
賭けでもありますね
開発が停止になってしまったフレームワークもありますしね。
プログラムの一部が外部にあるって言うのはそういうリスクがついて回りますよね
自分で考える脳みそがないんですね
>>790 ですねぇ散々考えて何がメリットか分からなかったんで、まぁ脳みそが足りないのは認めますが
なかなか質問に的確に答えられる人がなかなかいないので
もしかしてみんな知ったかぶってステータス?プライド?のためだけにmvcやらフレームワークがいいといってるだけなのかなぁと
疑念が沸いてきちゃったのでその疑念を晴らしてくれる人がいないかなぁと思って
ここで質問させてもらいました。
結果、やはり納得できそうな説明をしていただける人がいるたので
ここで質問してよかったなぁと思いました。
持論ですが、こういった質問されてきちんと説明できる人が、本当に理解してて
切れたり、自分で調べろって言ったり、別の話をしてはぐらかす人は理解が乏しいのに分かってる振りして
自分を取り繕って苦しんでる人なんだろうなと思ってます。
792 :
nobodyさん :2010/05/21(金) 08:38:40 ID:U8/yKqa9
MVCのメリットってなんですか?
スレタイも見ないで下らん長文書いてる阿呆は帰ってね
>>649 もう解決したのかな?
> SMTP localhostになってるんで動いてると思います
これってphp.iniにそう書いたら出てるだけじゃないの?
SMTPを変えるか、XAMPP同梱のsendmail.exe使ったら?
php.iniにsendmail_pathって箇所があるから、そこをコメントアウトして、パスを書いてあげれば動いたと思うんだけどな。
>>787 共有鯖には間違いなく入ってない
占有なら自分で入れるか頼むかだろうね
>>789 バグもフレームのうちだもんな
でもMVCとFWどうこうは全然別の話だぞ
正規表現で文字列中のSTART〜ENDまでの間を抜粋したいのですが、 (?<R>START((?!START|END).|\g<R>)*END) だとSTART〜ENDの間に改行があると検索できません。 改行も含めた検索をするにはどうすればよいでしょうか?
テンプレートエンジン使えばいいんじゃないの かっこつけてMVCとか言うんじゃないのよ
/hogehoge/m とかmオプション使えば改行処理出来るんでない?
smarty乙
Smartyって糞遅いものだとばかり思ってたけど、生成されるコードの実行はかなり速くて驚いた。 まあ、機能が貧弱なのであまり使いたくはないが。
いくらでも拡張できるアレの機能が貧弱とはねぇ。
入力された文字にバイナリやHTMLで特殊な意味を持つ文字を適切に扱おうと次のような関数を考えました しかしごく一部のバイナリがそのまま出力されるようです どのようにしたら良いですか function clean($str) { $str = mb_convert_encoding($str,"UTF-8","UTF-8"); $str = preg_replace('/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/','',$str); $str = stripslashes(htmlspecialchars($str,ENT_QUOTES,"UTF-8")); return $str; }
803 :
nobodyさん :2010/05/22(土) 15:06:24 ID:XHChMTdn
勝手にUrlの後ろにに/(スラッシュ)が付くんですが、こういう設定ってPHPにあるんでしょうか?
勘違いですた
>801 何でもできるというなら、 テンプレートの継承(またはレイアウトテンプレート)と 文脈に応じた自動エスケープ機能と あとマトモなHTMLとしてプレビューできる構文 を寄越せ
Smartyの話を出すと荒れるから隔離してたのに
レイアウトテンプレートは実装した。というかすぐできるし誰でもやるんじゃないかなこれは。 文脈に応じたっていうのはちょっとしんどそう。他の具体例を挙げてもらえるかな。 まともなHTMLがほしければ整形ツールでも使えば?
PHPはライブラリ自体が案外重いんだよなぁ。
テンプレートの継承が.NETのユーザコントロールみたいなの指してるんだったら俺も作った。 違うならちょっとわかんね
って書いたけど、継承という言葉とまるで関係なかったorz 自分でやったことをいいたかっただけになってるな。 まぁ、smartyを指して貧弱だというのはphpの機能自体が貧弱だといっているのと同じだよね
811 :
nobodyさん :2010/05/23(日) 16:43:09 ID:8iYZevyz
PHPってシェルスクリプトとしても使えたりします? RubyやPythonみたいに
もちろん
813 :
nobodyさん :2010/05/23(日) 16:51:48 ID:8iYZevyz
ども。 では例えば、 Dir.glob("*.txt").each {|x| File.remove(x)} とかってPHPだとどうやって書きます?
PHPじゃ出来ないよ
できるだろw
>Dir.glob("*.txt").each {|x| File.remove(x)} どういう意味かわからないけど、カレントディレクトリの.txtを消すでいいかな? 【hoge.php】 <?php $list = scandir(getcwd()); foreach ($list as $value) { if (preg_match("/\.txt$/", $value)) { unlink($value); } } ?> 【コマンド】 php -f hoge.php
glob関数があるだろ・・・おまけに文字列探索するならまだしも正規表現て
818 :
nobodyさん :2010/05/23(日) 17:29:31 ID:8iYZevyz
>>816 コードありがとうございます
こちらが例示したコードの意味はその通りです
多少冗長になるものの可能そうですね
取っ掛かりにさせてもらいます、どうもです
819 :
nobodyさん :2010/05/23(日) 17:30:38 ID:8iYZevyz
>>817 そのままの関数があるんですね、どもです
820 :
816 :2010/05/23(日) 17:31:15 ID:???
文字列探索だけだと.txt.phpみたいのもかかるかとおもって正規表現にした glob関数は知りませんでした まぁ初心者に毛が生えた程度なので勘弁してくだしあ
末尾から4文字切り取れ
.txt.jpeg
とりあえず正規表現は叩くっていうのがどうもこのスレの流れらしいな いい加減適材適所という言葉を覚えろや
>>822 だから何なんだ。.txtかどうかを調べたいんだろ。
何なんだって末尾から4文字とかいうからだろ。 jpegを例にしただけで、mimeがplain/textだとしても他にも、 C言語のc、Perlのpl、Rubyのrbなどplain/textの拡張子が3文字とは限らないわけで。
>>825 今回の場合は .txt のみを対象にしてるわけだから 4文字でいいじゃん
そういうのを屁理屈っていうんだよ
scandirでcontent-typeまで判別できるんすかwww
>>826 ?
>>827 できるわけがない。
>>824 のレスに対してのレスなので、
jpegっていったことに関して画像は関係ないだろといわれてると思ったので、
>>825 のようなレスを返しただけ。
>>829 .txtって決め打ちされてるんだからその部分まで考慮する必要はまったくない
>>829 >jpegっていったことに関して画像は関係ないだろといわれてると思ったので、
これが間違いっす^^;
末尾から4文字っていうレスに対しての突っ込みなのは理解してるのかね? 質問主のやりたいこととは無関係な話なわけだが・・・
>>825 は拡張子がtxtのものだけじゃなくてtext/plainのものが対象ってなんで勝手に飛躍してんの?
>>813 のどこにそんなことが書いてあるの?
>>832 拡張子がtxtのファイルを探したい
↓
正規表現で探す
↓
文字列探索でいいだろとつっこみが入る
↓
文字列探索だけだと.txt.phpみたいのもかかるかとおもって正規表現にした
↓
末尾から4文字切り取れ
これのどの辺がおかしいのかよく分からんのだが・・・。詳しく説明してくれないか。
>>835 回答者が想定しているケースは「みたいなもの」と言ってるように.txt.phpだけではないということ。
.txt.phpだけに限れば.txtになるが、.txt.cだったら.tになる。
よって4文字と文字数を限定するのは当てにならない。
Ruby の Dir.glob を例に出されてるんなら glob() や GlobIterator、
それか泥臭くとも
>>816 (正規表現式は間違ってるが)と答えるな
拡張子と質問者が明示して尋ねてるのなら末尾Nバイト比較でいいが今回は余計な一言だった
一言でいうと、考えてるベクトルが違うので話がかみ合ってない。 このスレではよくあること。
質問者のためにもならない回答者にケチつけるだけのやつは消えてくれればそれでいいよ
元凶は流れを見ないで場当たり的にレスするやつだな
>>824 が全て悪い
あと文盲は発言しなくていいからROMってろ
842 :
nobodyさん :2010/05/23(日) 20:09:35 ID:PZlPEOvW
質問が来ると住人が喧嘩を始める
System::rm('*.txt')
>>824 は末尾から四文字を比較しろって言ってるだけだろ?
まあ切り取ってという表現が誤解を招いたのかな。
もう少し柔軟に解釈しろよw
>>845 意味不明すぎて指摘していいのか困惑してる
何が滅茶苦茶なのか言ってみ
>>836 切り取っての意味勘違いしてないか?
4文字切り取って".txt"かどうか比較しろってことだろ
>>844 >
>>824 は末尾から四文字を比較しろって言ってるだけだろ?
いいえ違います
ちゃんと流れを読んで下さい
>>816 で文字列探索に正規表現なんて必要ない→
.txtという文字列があったら削除だと.txt.phpでも削除されてしまう
だから正規表現で.txtで終わるにすればいい→
それでも正規表現を使わずに末尾から4文字(.phpの部分)を切り取ればいい→
それだとtext.jpegとか.xxxが4文字でない場合はどうするの?→
以下流れを読まないやつのレスで話が異次元へ
こういう流れ
851 :
nobodyさん :2010/05/23(日) 22:05:09 ID:WeyQqAH3
>>850 真正すぎて見てられないわ
なんで
>>836 で拡張子が php であるはずの .txt.php を末尾4文字を除去して txt として評価してんの?馬鹿じゃねーの?
if (substr($filename, -4) == '.txt') unlink($filename);
こうするだけだというのに何言ってんだか
>>850 任意の拡張子に応用する場合のことを言ってるの?だとしても任意の拡張子の文字数数えればいいだろ。馬鹿じゃねーの?
結論:みんな馬鹿
>>853 勝手に解釈してるのはお前だけだよwwww
いつまでもグダグダすんのやめよーぜ。
>>850 みんな間違ったこと言ってないだろ。
要するに正規表現使っても、末尾で比較しても同じこと。
拡張子判定のロジックの例を言ってるだけだ。
例として末尾四文字の比較を上げてるだけで、終端最初のピリオドを調べて切り出し比較してもいいし、pathinfo使ってもいい。
正規表現使うより末尾で比較した方が処理としては速いからそっちを進めてるだけでしょうが。
お前の理屈なら
>>816 の正規表現でtext.jpegの拡張子で.txt判定出来るの?って言ってることと同じ。
>>854 動的にカウントするぐらいなら最初から正規表現でいいやん。
これって結局正規表現アレルギーがまた暴れてるんでしょ?
>>862 なんで文字探索より正規表現のほうがいいの?
ただ正規表現使ってドヤ顔されてもな。 正規表現が万能とでも思ってるのか?
まとめ
.txtが文字列に入ったら消したい(
>>813 )→
.txt.phpを想定して.txtで終わるように正規表現で変えてみました(
>>816 )→
.txtで終了するの探すのに正規表現なんていらんよ(
>>817 >>821 )→
>>821-822 間で勘違い発生→
以下考えてることがバラバラでgdgd
結論:
>>824 が喧嘩腰ではなく懇切丁寧にうまく勘違いを訂正できればよかったのだが
勘違いしてる相手には異次元にしか聞こえかった
>>865 813の書き方でも末尾が.txtのファイルしか引っかからないと思うが
ワイルドカードも知らん人いるのね
>>866 すまん
そのようだな
まぁ今回改めて分かったのは正規表現の文字が出るとなぜかこうなるなw
このスレでさっきから必死なのは勘違い君だけ。
816=勘違い君=865でしょ
見苦しいからいらんレスつけるな お前らも同類
見苦しいのはお前だよw
お前もな
=で結ぶやつが一番ウザイわ
なんで正規表現使うと「わざわざ」とか「そこで正規表現はありえない」とかよく言われるの? 複雑だから?速度面で?
この慌てっぷりが全部図星だったことを物語ってるなw
今北 すごいやつがいたんだなwww
1万回でチェックだけやってみたけど 0.01095秒と 0.00551秒だったわ。 さして変わらんとするか、倍近く違うとするかは人しだい。
>>879 ありがとう。
こっちも一応速度テストは
>>816 と
>>851 とおまけでglob使うのでしてみた。
>>816 が0.0009x
>>851 が0.0006x
globが0.001x
結果は、
>>851 >
>>816 > glob
globって遅いんだね。
やっぱ速度差なのかな?1/10000秒単位だから、もっと他に理由があると思ったんだけど。
882 :
878 :2010/05/23(日) 23:20:23 ID:???
>>880 今北って言ってんのにこれだよwwww
混ぜてくれてありがとうな
>>881 つsystem('rm -f *.txt');
>>881 正規表現は書き方と対象文字列の長さによって大きく速度が変わるよ。
あと、
>>851 は
strrchr($v, '.') == '.txt'
こうすりゃもっと簡単で柔軟。
もめてる内容とは違うだろうから指摘しておくと、 ディレクトリ名がhoge.txtの場合を考えないとだめなんでないの
>正規表現は書き方と対象文字列の長さによって大きく速度が変わるよ。 いいこと聞いた。今度試してみよう。
887 :
885 :2010/05/23(日) 23:30:01 ID:???
ごめん。もとのコードがそれ考慮してないから必要なかった
888 :
nobodyさん :2010/05/24(月) 00:06:24 ID:DmnGs3M4
$tes = array(); for($i=4;$i<21;$i++){ $key = $i-4; array_push($tes,$key=>$row[i]); } array_pushで$aに連想配列で値を追加していきたいですが、エラーに成ってしまいます。 正しい書き方はどんな感じでしょうか?ちなみに、$row,$keyはintです。
array()
こうしたいのかな? array_push($tes, array( $key => $row[i] ) ); それともこっち? $tes[$key] = $row[i] ;
>>890 print_rすると、
0=>11,1=>21,2=>5,・・・・
となって欲しいのですが、どうなのでしょうか?
$rowは何?
$row = array(11, 21, 5....)ってかんじ?
なら
>>890 のでできるはずだけど
$tes = array();
for($i=4;$i<21;$i++){
$key = $i-4;
$tes[$key] = $row[$i];
}
print_r($tes);
あー、すいません。 $rowはpearのDBからの取得です。 $tes = array(); $row = $res->fetchRow(); for($i=4;$i<21;$i++){ $key = $i-4; $tes[$key] = $row[i]; } みたいにやってみたんですが、$rowの値が$tes入ってないようです>< お手数おかけして申し訳ないです。
>>894 $tes[$key] = $row[i];
$tes[$key] = $row[$i];
どこが違うかよく見てみ
おう・・・・ スレ汚し申し訳けありませんでした。 解答ありがとうございました
遅レスだけど keyが0から始まる正数なら別にkey指定しなくてもいいと思うけど $tes = array(); for($i=4;$i<21;$i++){ $tes[] = $row[$i]; } print_r($tes); 結果は同じになると思う
別にそんなことどっちでもええやん
まーたはじまるぞぉおお
それならこれでいいじゃんって話になっちゃう $tes = array_slice($row, 4, 17);
コードが短けりゃ速度が速くなるわけじゃないよ シンプルに書けるっていう意味ならそれでいいと思うけどね
とおもったけど全然はやかった さーせんでした
[i]って回答しちゃった自分のミスです。すいません。
function printFooterを認識しないのですが 何が間違っているかさっぱりわかりません。 どなたかご教授頂けませんでしょうか、よろしくお願い致します function printHeder(){ print<<<END <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> END; } function printFooter(){ print<<<END </body> </html> END; }
どう認識しないのか、エラーが出るならエラーメッセージとか。 もう少し分かるように説明して。
print<<<END このラベルって、同一ソースファイル内でユニークでなくとも良かったっけ?
END;の前にスペース入ってたりとか有りがちだよな。
>>905 最初のfunction printHederはfunctionの文字が緑色に替わるのですが
下のfunction printFooterは黒色のままなのです。(PHPエディターを使っています)
エラーメッセージは
Parse error: syntax error, unexpected $end in C:\www\0801.php on line 92
その行(一番最後の行)はこうなっています
90 END;
91 }
92 ?>
>>909 print<<<END じゃなくて print <<<END じゃないの?
ENDの前にインデントタブやスペースは全く無い?
>>911 今全てのENDの前後のスペース、インデント調べてやりなおしたところ正常に作動しました。
みなさまお力貸してくださりほんとうにありがとうございました。
昨日の夜から何時間も解決できずにモヤモヤしていたものが吹っ飛び今はスッキリ爽快です。
おめでとさん
長かった・・・2ヶ月も書き込みできないのは長かった・・・ この長い月日のおかげで俺の存在がこのスレで大きかった事がよくわかった
じゃ、ばんばん質問に答えていってやれよ お前がいなくて誰も答えてないからな
C言語でよくあるようなwhile(1){ if (a==1){ functionA() } } みたいな条件一致するまでループっていう方法ってPHPだとAjax使うしかなさそう?
>>916 Ajaxもしくはデータベースを使うしかないですね
なんで無限ループがPHPだとだめだと思ったのかが謎だな タイムアウトのこといってるならAjaxでもPHPにリクエストする以上結果は同じでしょうに
PEAR::System_Daemon つーのがあるらしい
タイムアウト無限にしといて、たまにブラウザに出力だすとか。
923 :
nobodyさん :2010/05/25(火) 15:34:04 ID:LcAAmhVu
会員ID、ユーザ名(ユーザID)、ログインID、アカウント名 管理画面に入出する際のIDの名称ってどれにしてます?
メールアドレス
ログインIDが一般的
user
それぞれ選んだ理由が聞きたい。
どれでもいいから悩むんだよな。
命名規則?
>>923 名称と言うか呼称というかフォームのラベルの表記みたいな事だろ
サイト管理者用の前提で考えれば
ログインするIDなんだからログインIDがベスト
ユーザを識別するための物だと思うけど 一般的にはユーザ名かアカウントだと思うな
933 :
nobodyさん :2010/05/25(火) 22:51:23 ID:LcAAmhVu
サイト管理者用 → ログインID 一般会員用 → ユーザ名 にします。ご意見ありがとうございました。
どっちだっていいだろ
>>935 よし、ここから毎年恒例ニュートン7月号のwktkを語るスレにしようか
a を 5個 つなげたような文字列を生成するような関数はありませんか? こんな感じで。 $str = gen_str( "a", 5 ); // aaaaa
938 :
nobodyさん :2010/05/26(水) 01:00:23 ID:TMQUCua5
939 :
937 :2010/05/26(水) 01:01:10 ID:???
>>916 普通に書いてコマンドラインで実行すれば
噴く要素があるとしたら立場とIDの関連ぐらいしかないような
>>944 頑張って書いたつもりかもしれないけど面白くない
回答でも質問でもないのは我慢しろって。 俺もだけどな。
$a = array('a', 'b', 'c', 'd'); $b = array('1', '2', '3', '4'); 上の配列で全組み合わせを出力するにはどうすればいい? ただしa-aとか1-1とか同じ値の組み合わせは除外する。
ぽまえは俺様に名前欄に948って入れて自己解決しましたって書いてもらいたいのか
>>948 それはプログラムの基礎中の基礎だから
宿題だと思って自分で解決したほうがいい
まじ宿題乙りすぎだろ
>>948 でa-aとか1-1は除外するって書いてある事は
a1,a2の他にab,acや12,13も必要って事か
基礎ならすぐ出来るんでしょ?スマートなコードで解決してください。 やっぱり以下のように変更。 $a = array('a', 'b', 'c', 'd'); $b = array('1', '2', '3', '4'); $c = array('A', 'B', 'C', 'D'); a-1-A a-2-A ... 1-a-D A-c-1 みたいな全組み合わせだ。 各配列一つずつ使って重複してはいけない。
二つの配列に分かれてるのが意味ないから、マージして重複消してループかな。 値の重複消してマージするのってあったっけ。
げ、変更したのかよ・・・ ま、質問じゃないのでスルーかな。
荒しとは違うよ。興味があったらやってくれればいいです。
一つの解でも色々方法があると思うのでそれに興味があった。
>>956 二つの配列でもオッケイです。
自分が答えられる簡単な質問に対しては答えるとかやめろ ルールは守れ
それなら暇つぶしに何か問題出してよ。 ちなみにさっきの質問はしょぼい方法しか思いつかなかったわ。
また住人同士の喧嘩ですか?
962 :
948 :2010/05/26(水) 12:21:00 ID:???
ここの住人は使えませんね 自己解決しました こんな簡単なのも答えられないなんてこのスレ意味あるの?
全組み合わせをループで 4^3 個つくって、 それぞれに対して全順列出す方法をとるかなぁ。 3個固定なら、6通りなので俺なら6パターン分直接作るかなぁ。 それ以上は、また別途だな
組み合わせ配列が動的に増えると大変そうだねー
966 :
nobodyさん :2010/05/26(水) 22:57:43 ID:qKCwPOmR
PECLのxdiff入れたいんだけどこんなエラーでるんだけど何が悪いの? ちなみにubuntuでlampp/bin/peclでやってみてます。 checking for xdl_diff in -lxdiff... no configure: error: wrong xdiff lib version or lib not found ERROR: `/tmp/pear/temp/xdiff/configure --with-xdiff=/opt/lampp/lib' failed
967 :
nobodyさん :2010/05/27(木) 23:31:01 ID:pcO12PPc
>>967 これが理解できないのが理解できない
error: wrong xdiff lib version or lib not found
969 :
nobodyさん :2010/05/28(金) 06:34:11 ID:1AVHPGER
>>968 えー
だってどこもpecl install xxxxみたいな方法でのインストールって書いてあるから
わざわざlibxdiffが別途必要なんてわからんよ。
PECLのホームページにもlibxdiffが置いてあるわけじゃないし。
ほかのも全部別途lib必要なのか?
>わざわざlibxdiffが別途必要なんてわからんよ。 いや966にそう書いてあるじゃん
971 :
nobodyさん :2010/05/28(金) 07:16:16 ID:1AVHPGER
そうなんだけど、 初心者の俺には、何これ?と思うのよ。 パッケージ内に含まれてんじゃないのかよと。 そんなもの初めからパッケージに含んでおいてくれよと思うんだが。
じゃ調べろよ
いや、調べなくてもエラーメッセージ読むだけで良いじゃないか
みんなそんなムキになって言わんといても・・・指摘できなかったんだし。 言い訳になるけど、俺もまさかphpのマニュアルに書いてあることを やってないはずないと思ったんだけどさ。
言い訳するな
スミマセン
>>971 いまさらネチネチいうなと思われるかもしれないが、そんなパッケージの肥大化は避けてほしい、
というか、じゃあ何の為にライブラリ化したんだってなっちゃう。
configureはすぐ慣れるからがんばれ
978 :
nobodyさん :2010/05/28(金) 15:47:26 ID:qWcy7992
classの中で外部ファイルの関数って読み込めるのでしょうか? イメージとしては以下のような感じかな?と思っています。 class class1{ require 'function.php'; } $obj = new class1; $obj->test(); #function.php function test(){ echo 1; }
それじゃわざわざクラス使う意味がないわ require 'function.php'; class class1 extends class2 { } #function.php class class2 { function test() { echo 1; } } ならまだわかるけど
requireでFunction.phpって呼び出す必要あるのですか? extends class2で継承してるから不要なのではないのですか? function.phpを class2.php ならrequireは不要ということですか?
>>978 関数定義を遅延実行したいのかな
クラス定義はパース時に、include/require は実行時に評価されるから
コンストラクタかメソッドの頭で require_once() するといい
982 :
978 :2010/05/28(金) 16:24:49 ID:qWcy7992
>>979 普通そうだと思うのですが、オープンソースのシステムを見ると
ユーザ定義関数のみのファイルが結構あります。
しかし、接続自体はclassを介して行っているので
>>978 みたいに、後から読み込むのかな?と思っていました
984 :
981 :2010/05/28(金) 16:31:56 ID:???
ごめん質問を理解してなかった、忘れてくれ
>>980 が反応ないから次スレ立ててくる
クラスのコンストラクタで function.php読み込むと、 クラスの関数じゃなくて、グローバルの関数に。 でも変数はローカル。 $this->xx = も通る。
乙
ちょっとお伺いしたいんだけど みなさまはSMARTYなんていうスマートそうなテンプレートエンジンは 実際開発の現場では使っていらっしゃるの? デザイナーがいる環境でデザイナーにHTMLとその中にスマートな変数書いてもらってたり しちゃってる方がいるのか知りたいの。
せめてスレタイとか
>>1 くらいは読んでから質問したらどうなの?
デザイナにもらったHTMLをテンプレートにこっちで変換した。 ほんとにただのデザイナなら厳しいかもね。 ちょっとでもロジック的な考えをしてくれる人なら分かってもらえると思うけど。 あとはどちらがどこまでやるかの切り分けだけしっかりしておけばgdgdにならずにいけるよ
991 :
988 :2010/05/28(金) 19:21:53 ID:???
>>990 ありがとうねー。
やっぱHTMLもらってこっちで入れたほうがよいよーな気ぃするねー。
ただでもデザイナーさんでもJSとか少し書ける人だからやってもらうかと思ってたの。
それ以前意に周りでSMARTY自体使ってるって話あまり聞かないからそのも気になっちゃって。
もし他のかたも使ってるって方いらっしゃったら教えてくださいな。
自分のことは、はなっから作ってもらうのは少々難しいが、出来たものを直すだけなら、 デザイナだけで出来るんだよね。
指図厨うぜえ
1ヶ月前にでかいもの作ってから制作意欲がわかない 数ヶ月に1回なんか作って満足したらしばらくこんな調子なんだけど みんなもそうかい?
そんな調子じゃ セキュリティは滅茶苦茶だと思いますけど
セキュリティ関係ないし
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。