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

このエントリーをはてなブックマークに追加
1nobodyさん
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
2nobodyさん:2010/05/28(金) 16:35:03 ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 95
http://pc11.2ch.net/test/read.cgi/php/1271636105/
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1266229386/
【PHP】下らねぇ質問はID出して書き込みやがれ 92
http://pc11.2ch.net/test/read.cgi/php/1263035502/
【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
【PHP】下らねぇ質問はID出して書き込みやがれ 86
http://pc11.2ch.net/test/read.cgi/php/1249042741/
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/
3nobodyさん:2010/05/28(金) 16:36:12 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
4nobodyさん:2010/05/28(金) 16:37:50 ID:???
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に保存?
 → 好きにしてください
5nobodyさん:2010/05/28(金) 16:38:34 ID:???
【簡易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プログラムとして実行された結果になる。
6nobodyさん:2010/05/28(金) 16:40:06 ID:???
テンプレ終わり
FAQ逆になったけど誰も読んでないからいいよね!
7nobodyさん:2010/05/28(金) 20:57:45 ID:???
うぜえ
8EM114-48-239-103.pool.e-mobile.ne.jp:2010/05/29(土) 00:14:28 ID:P9BwEf5x
【OS名】Windows 2000
【PHPのバージョン】5.2.11
【連携ソフトウェア】SQLite 3
【質問内容】
OCNはこのスレにまだいますか?
9nobodyさん:2010/05/29(土) 01:01:31 ID:???
>>8
http://pc11.2ch.net/test/read.cgi/php/1167984858/
巣に帰れ
スレチの構ってちゃんは二度とくるな
10nobodyさん:2010/05/29(土) 01:31:54 ID:???
   || ★ 荒らしは放置されるのが一番苦手。
   ||   → ウザイと思ったらそのまま放置よ。
   || ▲ 放置された荒らしは煽りや自作自演でアンタのレスを誘うよ。
   ||   → 釣られてレスしたらその時点でアンタの負け。
   || ■ 反撃は荒らしの滋養にして栄養であり最も喜ぶよ。
   ||   → 荒らしにはエサを与えないで。
   || ☆枯死するまで孤独に暴れさせておくのが一番。
11nobodyさん:2010/05/29(土) 11:08:34 ID:???
フォトショとかのレイヤーみたいな感じで
下地となる画像の上に別の画像を複数配置して、それを一枚の画像として生成したいんだけど、
どうやったらいいのかな?
12nobodyさん:2010/05/29(土) 11:13:03 ID:???
13nobodyさん:2010/05/29(土) 11:35:23 ID:???
>>12
まさにこういうのを求めてたんだ!ありがとう。
14nobodyさん:2010/05/29(土) 11:51:54 ID:nCFRCeiE
PHPとMySQLを使ってトランザクションする件について相談です。

お金の入出やポイントの操作などには、トランザクションが必須
だと言うのをググって見たことがあるのですが、
一方でフィールドタイプをInnoDBにすると、パフォーマンスが落ちる
と言うことも聞いたりします。

実際、トランザクションは良く導入されているのでしょうか?
上級者の方や仕事でプログラミングしている方はどうしているか知りたいです
15nobodyさん:2010/05/29(土) 12:15:37 ID:???
>>14
1行INSERTしてそれをSELECTするような検索システムや普通の掲示板みたいなものではいらないし
銀行の入出金管理やECサイトの決済処理とか
複数の処理をまたいでかつ整合性がとれなくなって問題になるケースでは必須だし
(お金絡んでるし詐欺になりかねないから)
ケースバイケースとしかいいようがない

あと次からPHPと直接関係ない質問はこっちで
http://pc11.2ch.net/test/read.cgi/php/1272872528/
http://pc11.2ch.net/test/read.cgi/db/1258928470/
16nobodyさん:2010/05/29(土) 20:48:19 ID:???
mcrypt_decrypt
base64_decode
とかの関数が失敗したかどうかを確実に検証する方法ってないんでしょうか・・・。
17nobodyさん:2010/05/29(土) 20:55:19 ID:???
それらの関数の出力結果で判断できるだろうが・・・
18nobodyさん:2010/05/29(土) 21:18:35 ID:???
これ全部通過して戻り値がバイナリだったり意味不明な文字列になってて困ってるんですよね。

function decrypt($str, $key)
{
$string = base64_decode($str);
if($string==false || is_null($string) || strlen($string) ==0) throw new Exception("decrypt(): base64 decode faild:".$str);
$dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB, $key);
if($dec==false || is_null($dec) || strlen($dec) ==0) throw new Exception("decrypt(): decrypt faild:".$dec);
return trimNull($dec);
}
19nobodyさん:2010/05/29(土) 21:37:15 ID:???
スパゲッティコード乙
20nobodyさん:2010/05/29(土) 22:07:07 ID:???
別にコード自体は単純なもんだけど、何か暗号化の使い方が間違っているような気がする。
エンコード側どうやってる?
21nobodyさん:2010/05/29(土) 22:43:33 ID:???
エンコ側はC#なんだけど、PHPだと以下のようになってます。


function encrypt($string, $key)
{
$string = trim($string);
$enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_ECB, $key);
return base64_encode($enc);
}
22nobodyさん:2010/05/29(土) 22:50:25 ID:kdGy44ix
http://www.ebookoff.co.jp/book
このサイトを、file_get_contents()で取得すると、途中までしか取得できないんですが、
みなさんの環境ではどうですか?

<?php

$_html = file_get_contents("http://www.ebookoff.co.jp/book");
echo $_html;

?>

PHP Version 5.2.11
23nobodyさん:2010/05/29(土) 23:23:39 ID:???
>>21
それとデコードをPHPだと、うちだと動くんだけどな。

24nobodyさん:2010/05/29(土) 23:49:51 ID:???
いや、文字列を暗号化してるので文字列に戻ってればOK
そうじゃなければException飛ばしたいんだが・・・。

base64_decode は失敗するとfalseが返るとマニュアルにはあるけど
全然if文に引っ掛かってこない。
C#とかだとバイト配列にして検証するんだが・・・。

意味わかっていただけますでしょうか?^^
25nobodyさん:2010/05/30(日) 00:33:57 ID:???
base64_decodeの第二引数にTrueは指定してるの?
26nobodyさん:2010/05/30(日) 01:09:31 ID:???
してないっす。

それ以前の問題な気がして。。
やっぱり、元の文字列に必ず決まったワードを仕込んでおいて
strpos === false で判定するしかないのかな。
2722:2010/05/30(日) 02:52:37 ID:jvmNUW56
<div name="popup" id="popup" class="categorybg02">
<table cl

ここまでしか取得できていないんですが、一体なにが原因なんでしょう??
ちなみに>>22はブックオフのサイトです。
28nobodyさん:2010/05/30(日) 08:28:54 ID:???
>>26
PHPでも同じことすればいいんだよ。使ってる文字コードの範囲かチェックすれば。
結果がバイナリだからって失敗ではないのだし。
29nobodyさん:2010/05/30(日) 09:24:13 ID:???
>>27
5.3で同じ位置での動作確認しました。
HTTP/Requestだと問題なし。

require_once 'HTTP/Request.php';
$url = 'http://www.ebookoff.co.jp/book';
$request = &new HTTP_Request();
$request->setURL($url);
$result = $request->sendRequest();
if (!PEAR::isError($result)) {
echo $request->getResponseBody();
}
30nobodyさん:2010/05/30(日) 10:55:46 ID:???
>>27
なんじゃこれ。と思って実験してみたら
UAを設定したら全部取れた。
鯖が途中までしか送ってこない理由は分からん

php 5.2.13/5.3.2 (win)
ini_set('user_agent', 'User-Agent: Mozilla/5.0');
31nobodyさん:2010/05/30(日) 12:16:49 ID:jvmNUW56
>>29-30
ご協力ありがとうございます。
一体どういう理由なんでしょうね・・・
32nobodyさん:2010/05/30(日) 12:21:25 ID:???
自演乙
33nobodyさん:2010/05/30(日) 12:32:26 ID:???
>>28
だから、C#でエンコったのはデコードできるんですよね。

そこまでアホじゃないんで^^;

成りすましをどうするか考えているわけです。
34nobodyさん:2010/05/30(日) 13:47:58 ID:???
>>18
encrypt/decrypt の 第5引数省略したらどうなる?
試してみたけど失敗してくれない
デバッガかけるとかvar_dumpしまくるしかないんじゃないかな
35nobodyさん:2010/05/30(日) 15:11:33 ID:???
>>33
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
36nobodyさん:2010/05/30(日) 15:52:55 ID:???
そもそも質問時にID出してないしテンプレなんて見てないだろ
37nobodyさん:2010/05/30(日) 16:27:02 ID:???
>>35
そこまでアホじゃないんで^^;
38nobodyさん:2010/05/30(日) 16:43:32 ID:???
39nobodyさん:2010/05/30(日) 22:22:00 ID:???
C#でエンコードしたのが出来ないのが問題なの? 何したいか分からんなー。成功失敗で何をしたいんだろう。
文字列に戻ってるかのチェック以外、何が必要なんだろうか・・・ base64_decodeの失敗はねるのはいいけど、
文字列のチェックとまったく別の話だし。
ところで、PHP例でのmcrypt_encryptのkeyとivが同じだけど C#でのも同じ?
回答アホだから、成りすましの嵐かしら・・・。
40nobodyさん:2010/05/30(日) 23:18:59 ID:???
>>39
頭(あたま)大丈夫(だいじょうぶ)でちか?
>>1を読み(よみ)ましょう
41nobodyさん:2010/05/30(日) 23:52:40 ID:???
4240:2010/05/30(日) 23:57:02 ID:???
>>41
すまんかったスルーするわ
43nobodyさん:2010/05/31(月) 00:16:26 ID:???
>40-42
なにこの自演乙
44nobodyさん:2010/05/31(月) 15:40:04 ID:v3qt+P/M
負担の観点からの質問です。
100個のファイルから一つのファイルを読み込む、
require "/home/config.php";
とするのと、100個、個別の
require "./config.php";
とした方が良いのか、負担率としては同じなんでしょうか?
全く別物なのでしょうか?
よろしくお願いします
45nobodyさん:2010/05/31(月) 16:02:39 ID:???
前者の100個のファイルは同時に100個処理するするのかどうか書かないと
それだけじゃ何とも言えない
4644:2010/05/31(月) 16:15:07 ID:???
>>45
テンプレートみたいな使い方をしたいんです
設定部分やデザインなんかの記述をしてます
$a="<css--・・・・
$b="ようこそ";
みたいな感じですね。
アクセス数はかなり多いのでどんなものかと思いまして
47nobodyさん:2010/05/31(月) 16:22:33 ID:???
普通は1つのファイルに収めるよね
オープンソースのCMS見りゃ分かるが個別に分けてるものなんてないよね
48nobodyさん:2010/05/31(月) 16:25:07 ID:???
いい加減スレタイ嫁
49nobodyさん:2010/05/31(月) 16:48:35 ID:???
>>47
分かれてるがキャッシュにより毎回読み込まないようにしている実装とかよくある
50nobodyさん:2010/05/31(月) 17:12:47 ID:GblyjBgz
小沢一郎幹事長、ソウルの国民大学で講演「日本人は寄生虫、害虫」

民主党の小沢一郎幹事長は12日、ソウルの国民大学で講演後、約250人の学生と
日本人について語り合った。学生から、多くの日本人が学校にも通わず、仕事にも
就かないニートについて聞かれ、小沢氏は「日本のニートの現状はみんな親が悪い。
日本人の親は学校にも行かないで、仕事もしないぶらぶら遊んでいる子供を食べさせ
ている」と持論を披露した。
小沢氏は「学校にも行かない無職の子どもを責める前に、日本人の親達は子供を
甘やかしている。親に民族教育をしっかりしないといけない」と主張した。「日本人の
若者は漠然と他人に寄生し寄生虫として生きているとんでもない害虫だ」とした。
「もともと日本人の親達もどうかしている。日本人は動物にも劣る民族といっても
過言ではない」とした。「日本人はもともと民度が劣るから、君達韓国人のような
優秀な民族の血を日本人に入れない限り、他人やアジアに寄生して生きる害虫日本人
が増えるだけだ」とした。日本の古代歴史についても「韓半島南部の権力者が日本の
国家を樹立したもの」と述べた。・・・・( ソウル発外電 2009/12/13)

【トンデモ史観】小沢一郎・韓国講演
ttp://www.youtube.com/watch?v=uX7xFMvCly8&feature=youtube_gdata
【売国】小沢一郎幹事長言行録
ttp://www.youtube.com/watch?v=NXjgD4jb_Jg&feature=channel

51EM114-48-95-102.pool.e-mobile.ne.jp:2010/05/31(月) 23:42:10 ID:dCMCj0N4
52nobodyさん:2010/06/01(火) 07:26:04 ID:qOSq8mL1
$option = array (
"src" => ここ,
"folder" => "folder/",
"size" => 120
);

そこに配列の格納された変数を指定したいんですが、
どうすればいいのでしょうか
53nobodyさん:2010/06/01(火) 08:11:26 ID:???
>>52
そこってどこだ?こういうこと?

<?php
$option = array (
"src" => 'ここ',
"folder" => "folder/",
"size" => 120
);

var_dump($option['src']);
string(6) "ここ"
54nobodyさん:2010/06/01(火) 08:29:02 ID:qOSq8mL1
>>53
わかりにくい書き方してすいません。
こういうことがしたいんです。

$hairetu = array ('aaa', 'bbb', 'ccc');

$option = array (
"src" => $hairetu,
"folder" => "folder/",
"size" => 120
);

配列のうちの一つを指定するなら、$hairetu[0]などで可能なんですが
配列に含まれるすべての値を指定したいんです。foreachでループさせるときのように。
55nobodyさん:2010/06/01(火) 09:34:11 ID:???
その書き方で  $option["src"]にすべて入るけど違うの?

foreach( $option["src"] as $var ) {
print $var;
}
56nobodyさん:2010/06/01(火) 09:41:23 ID:???
質問の意味が分からない
57nobodyさん:2010/06/01(火) 11:11:13 ID:qOSq8mL1
54
すいません、自己解決しました。
foreachループの中に入れたらうまくいきました。
どうもお騒がせしました。
58nobodyさん:2010/06/01(火) 17:52:51 ID:k/zNPSvj
php.ini
display_errors Offのまま、
特定のディレクトリのスクリプトだけ表示させるという方法はないでしょうか?
59nobodyさん:2010/06/01(火) 18:01:26 ID:???
ini_set('display_errors', 1);
60nobodyさん:2010/06/01(火) 18:07:39 ID:???
PEAR DB + ORACLE 使ってるんだけど、number型の0.01を取得すると、
文字列の".01"が帰ってきます。
"0.01"を取得するにはどうすればよいですか?
61nobodyさん:2010/06/01(火) 18:26:56 ID:???
掲示板を作成してるのですが
$comにhogeが入ってる場合NGワードが入ってますというエラー文を出すにはどうすればいいのでしょうか
62nobodyさん:2010/06/01(火) 18:29:03 ID:???
strstr
63nobodyさん:2010/06/01(火) 18:30:18 ID:???
to_char
64nobodyさん:2010/06/01(火) 18:31:14 ID:???
>>63は >>60の SQLへ
65nobodyさん:2010/06/01(火) 19:50:51 ID:6jzz/jSk
ereg_replaceからpreg_matchに切り替えをしたいのですが、
よく分かりませんでした。

$rcd = ereg_replace("\./", "", $filename22);
$dr6 = ereg_replace("\./", "", $thum);

$rcd = preg_match("(\./)", "", $filename22);
$dr6 = preg_match("(\./)", "", $thum);

これでは機能しません。どう記述したらいいでしょうか?
66nobodyさん:2010/06/01(火) 19:54:44 ID:???
>>65
replaceをやめたいというのは本意なの?
67nobodyさん:2010/06/01(火) 19:55:46 ID:???
$rcd = preg_match("/(¥.¥/)/", "", $filename22);
$dr6 = preg_match("/(¥.¥/)/", "", $thum);

左右を/で囲わないとだめ、もしくは以下のような感じ

$dr6 = preg_match("|(¥./)|", "", $thum);
68nobodyさん:2010/06/01(火) 19:56:54 ID:???
と思ったらereg_replaceかよw
69nobodyさん:2010/06/01(火) 20:31:05 ID:6jzz/jSk
$rcd = preg_match("/(\.\/)/", "", $filename22);
$dr6 = preg_match("/(\.\/)/", "", $thum);

$rcd = preg_match("|(\./)|", "", $filename22);
$dr6 = preg_match("|(\./)|", "", $thum);

$rcd = preg_match("|\./|", "", $filename22);
$dr6 = preg_match("|\./|", "", $thum);

試しましたが値は0しか帰ってきません・・・・
70nobodyさん:2010/06/01(火) 20:44:06 ID:???
71nobodyさん:2010/06/01(火) 20:45:49 ID:???
preg_matchの構文がおかしい
マニュアルみたらすぐ解決するのになぜ見ないかね
./を消すだけならstr_replaceでやればいいじゃん
72nobodyさん:2010/06/01(火) 21:44:02 ID:6jzz/jSk
str_replaceで処理するようにしました
ありがとうございました
73nobodyさん:2010/06/01(火) 22:04:52 ID:???
超初級質問です
echoの際、シングルクオテーションで囲まれた$変数はそのまま$つきで
表示されるはずなんですが、以下はなんでちゃんと、
$変数の中身が表示されるんでしょう?

echo '<a href="check.php?id='.$row['id'].'">チェック</a>'
74nobodyさん:2010/06/01(火) 22:16:37 ID:???
シングルクォーテーションに囲まれてないから
75nobodyさん:2010/06/01(火) 22:17:59 ID:???
途中で送っちゃった
'<a href="check.php?id=' . $row['id'] . '">チェック</a>' 
なのだよ
76nobodyさん:2010/06/01(火) 23:55:39 ID:???
シングルクォーテーションに囲まれてないから
77nobodyさん:2010/06/02(水) 08:29:32 ID:???
囲まれた・・・
78nobodyさん:2010/06/02(水) 10:25:39 ID:???
しかも熟女に
79EM114-48-32-41.pool.e-mobile.ne.jp:2010/06/02(水) 11:06:30 ID:mhIc5LxU
質問受付あげ
80nobodyさん:2010/06/02(水) 15:28:49 ID:1PsJc2A4
質問です

VBで作ったものをPHP上で動作させることはできますか?
それはどのようにして実現できますか?


宜しくお願い致します
81nobodyさん:2010/06/02(水) 15:32:01 ID:???
system
82nobodyさん:2010/06/02(水) 15:32:50 ID:1PsJc2A4
質問が悪いですかね?
値の受け渡しとかではなく、VBの画面をそのままWebアプリとして使いたいのです

フレームか何かでその部分だけはVBの部分と独立させてやれると尚いいのですが
83nobodyさん:2010/06/02(水) 16:07:21 ID:???
PHPMyAdminのタイムアウトまでの時間を延ばす方法をググったら
config.inc.phpというファイルを編集すれば良いことがわかりましたが、
同名のファイルが4つあって、どれをいじればいいのかわかりません。
OSはUbuntuです。

1) /etc/phpmyadmin/config.inc.php
2) /usr/share/phpmyadmin/config.inc.php
3) /usr/share/phpmyadmin/setup/frames/config.inc.php
4) /var/lib/phpmyadmin/config.inc.php

1を編集しても効果ありませんでした。
2を編集したら時間は延びたようでしたが、元に戻ってしまったようです
(ファイルの中身はちゃんと追記されたままになってるのに)。

結局どれが正しいファイルでしょうか?
8483:2010/06/02(水) 16:09:20 ID:1gJ1/kVu
IDを出し忘れました。すみません。
85nobodyさん:2010/06/02(水) 16:29:50 ID:???
PHPスクリプトのタイムアウト<PHPのタイムアウト(php.ini)<Webサーバのタイムアウト(Apache)<OSのタイムアウト
となってるわけでconfig.inc.phpとやら以外に原因がある可能性は?
86nobodyさん:2010/06/02(水) 16:38:16 ID:???
>>82
無理、といいたいところだけど、そういうActiveX作って、PHPでそれを使うフレームを出力すればいけるのかも
87nobodyさん:2010/06/02(水) 16:44:12 ID:1gJ1/kVu
>>85
そういう優先順位になってるんですね。

http://ameblo.jp/hyperdev/entry-10345093485.html

上のページを見てやってみたんですが、
「php.iniに設定した、ガベージコレクタの時間より大きくなる場合が多い」というのを防ぐために
ini_set("session.gc_maxlifetime", 18000);
っていう一行を入れてるみたいなので、問題はApacheとOSの設定ってことですかねぇ。

でも、昨日2のファイルに設定した直後はちゃんと有効だったのは何だったんだろう…。
88nobodyさん:2010/06/02(水) 17:41:42 ID:???
73です
>>75
ありがとうございます。
おっしゃられてる方法でわかったつもりで、
以下を書くとエラーで怒られてしまいました・・・。

print '<a href='."$_SERVER['PHP_SELF']".'> 削除 </a>';

ほんとは上の文章が動作していたら、
?をつけてGetで変数を送りたいのですが、
?をつける以前につまづいてしまいました・・・
お助けください。
89nobodyさん:2010/06/02(水) 17:55:17 ID:???
>>88
print '<a href=' . $_SERVER['PHP_SELF'] . '> 削除 </a>';

あと$_SERVER['PHP_SELF']の部分がソース名(php名)をひっぱってきたいだけなら
$_SERVER['SCRIPT_NAME']を使った方が良い
90nobodyさん:2010/06/02(水) 18:29:44 ID:???
'<a href='          ←これは文字列
$_SERVER['PHP_SELF']  ←これもの中身も文字列

文字列同士を結合するために . (ドット)を使われるんだよ。
正しく書くと、

print '<a href=" . $_SERVER['PHP_SELF']. "> 削除 </a>';

となる。
hrefのクォートはシングルじゃなくてダブルね。

というか、リンク先を自分と同じスクリプトにするなら $_SERVER['PHP_SELF'] すら要らんよね。
クエリ文字を付けたリンクにしたいなら↓こんな感じ。

print '<a href="?del=1"> 削除 </a>';

あと余談だけど、ダブルクォーテーションの中に変数を入れる場合は
変数を { } で囲む癖をつけておいたほうがいいよ。
9190訂正:2010/06/02(水) 18:56:09 ID:???
いろいろ間違っててスマソ


これもの中身も文字列
   ↓
これの中身も文字列

文字列同士を結合するために . (ドット)を使われるんだよ。
   ↓
文字列同士を結合するために . (ドット)が使われるんだよ。

print '<a href=" . $_SERVER['PHP_SELF']. "> 削除 </a>';
   ↓
print '<a href="' . $_SERVER['PHP_SELF']. '"> 削除 </a>';

hrefのクォートはシングルじゃなくてダブルね。
   ↓
href=の後のクォートはシングルじゃなくてダブルね。
92nobodyさん:2010/06/02(水) 20:18:19 ID:???
>>91
今回の例ではダブルだというだけだよね。状況によってはシングルの方が便利だし。
93nobodyさん:2010/06/02(水) 22:14:08 ID:D8F23o+y
>>90
何で変数を{}で囲まないといけないんですか?
94nobodyさん:2010/06/02(水) 22:39:11 ID:???
それが変数出力だとコードを見てすぐわかるから
95nobodyさん:2010/06/02(水) 22:44:45 ID:???
>>94
そんな理由じゃないと思う。
ダブルクォートに囲まれた部分で配列を使おうとすると分かる。
96nobodyさん:2010/06/02(水) 22:56:54 ID:???
配列使わないときも囲う癖をつけるべきって人は>>94が理由でしょう
97nobodyさん:2010/06/02(水) 23:02:05 ID:???
>>94
{}で囲うのは俺もオススメする。
98nobodyさん:2010/06/02(水) 23:02:05 ID:???
>>93

>>94の言うとおり、わかりやすいっていうのが理由の一つ。

あと、{ } を付ければ前後にスペースがいらない。
例えば、次の3つを比較するとわかる。

(1) echo "ab $text cde";
(2) echo "ab$textcde";
(3) echo "ab{$text}cde";

1はOKだけど、出力結果にもスペースが入ってしまう。
2は不可。
3はOKで、スペースも入らない。

あと、速度も違うんだけど、このことはあまり知られてないのかなぁ。
ちなみに、配列でキー名に ' ' を付けるのと付けないのも速度に差が出る。
9998:2010/06/02(水) 23:03:54 ID:???
ちょっと補足。

2は不可っていうか、エラーにはならないけど期待する表示にならないってことね。
100nobodyさん:2010/06/02(水) 23:27:40 ID:???
ちなみに当然だけど文字列リテラルで
ダブルクォートとシングルクォートを使うとでも速度は違うね。
101nobodyさん:2010/06/02(水) 23:31:43 ID:???
>>98
{} なんぞ使ってて速度を気にするような人なんておらんだろ?
そもそも文字列内に変数を展開なんてしないし
102nobodyさん:2010/06/02(水) 23:37:57 ID:???
速度の違いが分かるほど複雑なスクリプト組んでるわけじゃないけど
>>100の理由でシングルしか使ってないな。妄信的に
103nobodyさん:2010/06/02(水) 23:57:58 ID:yUWMqjwo
whileで条件式が数値の0のときにも、
TRUE判定させるにはどうしたらいいですか?

while($num=strpos(゙あかあおしろ゙,゙あが,0))
)
で一番最初の文字列にヒットした場合弾かれてしまいます。
何かいい解決法があれば、どうかご教示をお願いします。
104nobodyさん:2010/06/03(木) 00:03:18 ID:???
>>103
while (($num = strpos('あかあおしろ', 'あか', 0)) !== false) {}
105nobodyさん:2010/06/03(木) 00:42:40 ID:???
>>102
{}使ったほうがすっきりする場合は使ってる。
106nobodyさん:2010/06/03(木) 01:25:57 ID:???
88です
>>91
ありがとうございます。
print '<a href="'.$_SERVER['PHP_SELF'].'"> 削除 </a>';
は無事動きました。
href="
の部分のダブルクオテーションは文字という考え方ということですよね?
なので、
'<a href="'
という、シングルクオテーションで囲まれている
<a href="
が文字と言う考え方であってますでしょうか?


次に、変数を""というダブルクオテーションで囲むと、
その囲まれてる変数は展開されるという認識の下、以下にしてみるとダメでした。
print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';

今回、a href=の後のクオートがもともとのHTMLの仕様では、
ダブルクオテーションであり、そのあとに、変数を囲むダブルクオテーションが続くと
何か問題が出てしまうのでしょうか?


さらに、{}で変数を囲めるということでためしてみました。

print '<a href="'{$_SERVER['PHP_SELF']}'"> 削除 </a>';
も、
print '<a href="'.{$_SERVER['PHP_SELF']}.'"> 削除 </a>';
も動きませんでした。
書き方がまちがっていますでしょうか?
107nobodyさん:2010/06/03(木) 01:26:34 ID:???
展開可能とはいえ文字列ん中に変数入れるとか普通気持ち悪くね?
HTMLの中に書くって事でスタートしてるからこうなってるんだと思うよ
つまりビュー層のハナシ
zend のコーディング規約でもシングルクオートで変数は連結しろとかなかったっけ?
他言語の使い手にも読みやすいって事まで考えてそうなってると思うんだけどな
108nobodyさん:2010/06/03(木) 01:35:04 ID:???
>>106
<a href="
が文字と言う考え方であってますでしょうか?

あってる

print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';
では,"$_SERVER['PHP_SELF']" のパースができない(だったような

print '<a href="' . "{$_SERVER['PHP_SELF']}" . '"> 削除 </a>';
なら動くと思う。

素直に
print '<a href="' . $_SERVER['PHP_SELF'] . '"> 削除 </a>';
でいいじゃんかよ

ちゃんとエスケープもしろよ?歯も磨けよ?
109nobodyさん:2010/06/03(木) 01:35:14 ID:???
>>106
> '<a href="'
> という、シングルクオテーションで囲まれている
> <a href="
> が文字と言う考え方であってますでしょうか?

あってる。

> 次に、変数を""というダブルクオテーションで囲むと、
> その囲まれてる変数は展開されるという認識の下、以下にしてみるとダメでした。
> print '<a href="'."$_SERVER['PHP_SELF']".'"> 削除 </a>';

print '<a href="'."{$_SERVER['PHP_SELF']}".'"> 削除 </a>';
にしてみて。

> print '<a href="'{$_SERVER['PHP_SELF']}'"> 削除 </a>';

.が無いし、{}が不要。

> print '<a href="'.{$_SERVER['PHP_SELF']}.'"> 削除 </a>';

{}が不要。
110nobodyさん:2010/06/03(木) 01:36:35 ID:???
>>106
$_SERVER['PHP_SELF']はセキュリティ上の問題があるのでHTMLとして出力する物には使わない
$_SERVER['SCRIPT_NAME']またはbasename(__FILE__)で代用
111nobodyさん:2010/06/03(木) 01:40:41 ID:???
$_SERVER['PHP_SELF']や$_SERVER['SCRIPT_NAME']を使わなくても
<a href=""> 削除 </a>
でいけるやん
112nobodyさん:2010/06/03(木) 03:47:38 ID:???
みんなよくつきあうな。どうみても釣りじゃん。
113nobodyさん:2010/06/03(木) 05:12:55 ID:???
{}で囲むのはダブルクオテーション中のときだけでいいです

//ダブルの場合
echo "こんにちわ、{$name}さん。";

//シングルの場合
echo 'こんにちわ、' . $name . 'さん。';
114nobodyさん:2010/06/03(木) 05:28:29 ID:XbPCpr1k
>>104
ありがとうございます。
もうひとつお伺いしたいのですが、文字列の指定位置に文字列を挿入する場合の関数はありますか?
substr_replaceの使用を考えたのですが、置き換え文字数を0に指定するとうまくいきません。
1以上にして置き換え後の文字列に消した文字を含ませるのもスマートではない気がします。
どうかよろしくお願いします。
115nobodyさん:2010/06/03(木) 07:26:38 ID:???
>>114
そういうのはそのまま考えて分割して連結でよくね?
マルチバイトとか絡んでくると面倒になるし
116nobodyさん:2010/06/03(木) 07:28:03 ID:???
sprintfとか使うけどな
117nobodyさん:2010/06/03(木) 07:36:18 ID:LdZGbuVn
fc2とかのアクセスランキングで、ランキングを表示させているサイトは混在する文字コードなのに
文字化けせずに表示できているのはどういった仕組みなのでしょうか。

よろしくお願いいたします。
118nobodyさん:2010/06/03(木) 07:37:57 ID:???
>>117
変換してんじゃないの?
119nobodyさん:2010/06/03(木) 08:12:37 ID:LdZGbuVn
>>118

mb_convert_encoding autoとかででしょうか?
120nobodyさん:2010/06/03(木) 08:26:57 ID:???
PHP でやってるとしたらそうじゃね? auto は微妙だけど
121nobodyさん:2010/06/03(木) 10:56:12 ID:???
>>109
>>110
>>111
>>113
ありがとうございました。
おかげさまで完全に理解できました!!
122nobodyさん:2010/06/03(木) 12:10:17 ID:???
>>121
おめ。

どうやって勉強してるかわからないけど、
今の知識だとセキュリティ対策が十分にできないと思うから
本とか読んで学んだほうがいいよ。
123nobodyさん:2010/06/03(木) 15:18:39 ID:???
>>89 >>108
元の質問者とは別人ですが、便乗して質問させてください

$_SERVER['PHP_SELF']より$_SERVER['SCRIPT_NAME']のほうが安全ということですが、
$_SERVER['SCRIPT_NAME']を使ってもエスケープは必要なんでしょうか?
124nobodyさん:2010/06/03(木) 16:24:14 ID:???
>>123
確かにそちらの方が安全だが、アンカーの先にはそれについて言及していない。
誰にレスをしたんだ?
125nobodyさん:2010/06/03(木) 16:51:43 ID:???
>>123
なぜ危険/安全なのか理解してる?
「php_self script_name」で検索すれば比較してるサイトがいっぱいでてくるよ
126nobodyさん:2010/06/03(木) 16:55:55 ID:???
ttp://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
>第1章 総論
>より良いWebアプリケーション設計のヒント
>(1) プログラミング言語の選択
>1) 例えば、PHPを避ける
127nobodyさん:2010/06/03(木) 17:15:09 ID:???
>>124
> 誰にレスをしたんだ?

主に>>108の「ちゃんとエスケープもしろよ」へのレスです。

>>125
はい、$_SERVER['PHP_SELF']のほうをそのまま出力すると
JavaScriptを仕込まれてしまう可能性があるということですよね?
なので、エスケープする理由はわかります。

お尋ねしたいのは、_SERVER['SCRIPT_NAME']でもエスケープする必要があるのかということです。
SCRIPT_NAMEにはPHP_SELFのようなXSSの脆弱性はないと思ってたんですが、
何か特殊な方法による攻撃の対象になることがあるんでしょうか?
128nobodyさん:2010/06/03(木) 17:55:31 ID:???
>>127
http://www.php.net/manual/ja/reserved.variables.server.php
'PHP_SELF'
現在実行しているスクリプトのファイル名です。
ドキュメントルートから取得されます。
例えば、http://example.com/test.php/foo.bar というアドレス上にあるスクリプトでは
$_SERVER['PHP_SELF'] は /test.php/foo.bar となります。

'SCRIPT_FILENAME'
現在実行されているスクリプトの絶対パス
129nobodyさん:2010/06/03(木) 17:57:58 ID:OUHRb8my
CentOS5.3でPHP5.1を使っています。

クライアントにバイナリデータを送るときに
fopenとfreadをとechoを使ってるんですが、
クライアント側からはバイナリデータが壊れていると
言われたりしています。
freadってバイナリセーフな関数なんですよね?

何か他に注意すべきところがありますか?
130nobodyさん:2010/06/03(木) 18:08:47 ID:???
>>129
fopenでmodeにbフラグ付けてる?
131nobodyさん:2010/06/03(木) 18:13:58 ID:iSHgRF9v
requireとかrequire_onceする静的?なモジュールと
.soをextension_dirで登録する動的?タイプのモジュール。
後者はコンパイルなんかのコスト分遅いっていう認識はあってますか?


132nobodyさん:2010/06/03(木) 18:15:38 ID:iSHgRF9v
ごめんなさい文末一行
○前者はコンパイルなんかのコスト分遅いっていう認識はあってますか?
×後者はコンパイルなんかのコスト分遅いっていう認識はあってますか?
133nobodyさん:2010/06/03(木) 18:19:41 ID:???
>>130
はい。読み込み専用で開けばよいので
パラメータは'rb'をつけています。

134nobodyさん:2010/06/03(木) 19:59:49 ID:???
>>133
file_get_contentsやreadfileは試してみた?
135nobodyさん:2010/06/03(木) 20:02:16 ID:???
>>131
requireやincludeは外部ファイルのスクリプトを読み込むもの。
extension_dirなどの拡張モジュールは、
Cなどの低級言語で書かれているのでPHPより高速で、当然にコンパイルされているので速い。
136nobodyさん:2010/06/03(木) 20:22:42 ID:???
>>129
PHPスクリプトにBOMが付いてないかい
こういう問題はHTTPをモニタリングするツールを入れて
実際に送られたヘッダとデータを確認するのがいいんだが
137nobodyさん:2010/06/03(木) 21:00:55 ID:???
>>133 >>136

先ほど自己解決しました。
おそらく・・なんですが。
サーバ側のファイルとクライアントでダウンロードしたファイルを
比較したところ、クライアント側には行頭に改行コードが入ってました。

そのせいでファイルサイズも1バイト分差異がありました。

対策としてサーバ側のスクリプトファイルの
不要な改行コードを削除しました。

<?
--色々なロジック--
?>
 ←この辺りの不要な改行コードを削除。


そうしたところ、こちらが意図するとおりにファイルを
送ることが出来ました。

どうもありがとうございました。
138nobodyさん:2010/06/03(木) 21:02:06 ID:???
137ですが、
>>133ではなく、>>134でした。

申し訳ありません。
139nobodyさん:2010/06/03(木) 21:30:19 ID:???
SAPIのCGIを見ると、「PHP5.3まで」とあるんですが、PHP5.4以降はどうなってしまうのでしょうか?

ttp://jp2.php.net/manual/ja/function.php-sapi-name.php
140nobodyさん:2010/06/03(木) 21:56:52 ID:???
>>137
XML吐く時に同じ事食らったよ
以来終了タグ ?> は書かなくなった
zend framework のコーディング規約でも書くなってなってる
141nobodyさん:2010/06/03(木) 22:36:01 ID:???
>>140
バカよけのための規約で、結構前からあるにはある
142nobodyさん:2010/06/04(金) 02:08:52 ID:???
PHPをプログラミングするのにお薦めの最適な開発ツール(エディタ)って何になりますか?

コード補完してくれて,定義済みのうユーザー定義関数もアシストしてくれるような定番があれば是非知りたいです
MySQLのクエリも同時に書くのでそれも補完アシストしてくれたりしたら最高ですがそんなのってあるんでしょうか?

開発効率が格段にあがるのでしたら有料でも全然かまいませんので お願いします
ちなみに今は秀丸で書いてます
143nobodyさん:2010/06/04(金) 02:19:59 ID:???
NetBeans Eclise
144nobodyさん:2010/06/04(金) 02:26:29 ID:???
vim emacs
145nobodyさん:2010/06/04(金) 02:36:38 ID:???
プログラマならvimとかemacsみたいな自分でカスタムできるエディタを
早いうちから使っといた方がいいよ

秀丸でもマクロで多少のカスタムはできるんじゃなかったっけ
使ったことないから知らないけど
146nobodyさん:2010/06/04(金) 02:51:45 ID:???
ちょっとした編集 gvim/vim
デバッグまでする場合 netbeans
147nobodyさん:2010/06/04(金) 03:35:38 ID:???
Eclipseは導入までがちょっと面倒なんだよな、NetBeansは簡単なのに
148nobodyさん:2010/06/04(金) 05:42:14 ID:???
>>135
やっぱりそうでしたが、ありがとうございました。
149nobodyさん:2010/06/04(金) 10:31:22 ID:???
>>140 >>141

たしかにzend frameworkには?>が書かれていないですね。
規約だったとは・・・。

ということは、皆さんの開発現場でも
?>は書かないようにされているのでしょうか?

?>を書かないことでのデメリットはないのでしょうか?
もしデメリットがあればそれを認識した上で
私も活用したいと考えておりますので
教えていただけないでしょうか。

150nobodyさん:2010/06/04(金) 10:48:26 ID:???
151nobodyさん:2010/06/04(金) 10:53:50 ID:???
>>150
ありがとうございます。
拝見いたしました。

色々と危険があるようですね。
今回私もそれで苦労したので、
ひとまず、?>は削除したいと思います。


152nobodyさん:2010/06/04(金) 10:55:12 ID:???
閉じタグっていうか、 ?>がパースしない直出力への開始みたいなもんだと思ってます。
153nobodyさん:2010/06/04(金) 11:06:10 ID:???
【OS名】Windows
【PHPのバージョン】5.2

クラスの静的メンバに設定ファイル(xml)を読み込みたいのですが、
Javaでいう static句 みたいなものってあるのでしょうか?

静的関数にして初回時に読み込むみたいな処理にすれば
実現はできるなーと思っているのですが。

よろしくお願いします。
154nobodyさん:2010/06/04(金) 14:21:33 ID:???
>>146

NetBeans6.9 Betaを導入してみました
ですが、これまで作っていたPHPファイルの
日本語によるコメント部分がすべて文字化けします。
NetBeans上で文字を打ち直して保存して、
それを今度テキストエディタで開くと、
今度はテキストエディタの表示が文字化けしているという状態です。

PHPの文字コードは
UTF-8のBOM無し
で開発したらいいのでしょうか。
根本的なところでミスってますか?
155nobodyさん:2010/06/04(金) 14:38:19 ID:???
>>153
スタティックなメンバは「PHP static」とかでググればすぐ見つかるはずだけど、
初回時ってどういうこと?
コンストラクタを使うのとは意味が違うの?

あとスレタイ読んでね。
156nobodyさん:2010/06/04(金) 14:39:12 ID:???
>>143
EclipseよりスタンドアロンのAptanaのほうが軽いと聞いた
157nobodyさん:2010/06/04(金) 14:54:59 ID:???
>>154
PHPはBOM付きはダメだと俺は認識してた。
BOM付きのスクリプトでHTMLを出力すると崩れたりすると思う。
BOMを消したらNetBeans 6.9 Betaの文字化けしないかどうかは知らないけど。

それより、6.9はひと月ほど前に使ったらめっちゃ不安定だったけど
もうだいぶ改善されてるのか?
正式版の時期が近づいてるから、そろそろ良くなってなきゃまずい頃だとは思うが。
158nobodyさん:2010/06/04(金) 15:04:56 ID:AnXEBzRW
PHPで、クラスの中にあるメソッドの一覧を取得するにはどうしたらいいでしょうか?
159nobodyさん:2010/06/04(金) 15:09:53 ID:???
160158:2010/06/04(金) 15:12:27 ID:???
>>159 ありがとうございます。

PHPのリフレクションを使って、どうやってクラス毎のメソッド一覧、シグネチャ一覧を取得できますか?
161nobodyさん:2010/06/04(金) 15:15:08 ID:???
162158:2010/06/04(金) 15:18:28 ID:???
>>161 どうもありがとうございます。
163nobodyさん:2010/06/04(金) 15:21:59 ID:???
164nobodyさん:2010/06/04(金) 15:35:00 ID:???
>>154
単純に、ファイルの文字コードとエディタの文字コードが違うんじゃないか?
上書き保存じゃなくて変換とかすればできるはず
165nobodyさん:2010/06/04(金) 16:57:55 ID:???
>>164
この流れで文字化けに対する解決を提示しようとするなんて意地が悪いね。
166nobodyさん:2010/06/04(金) 22:05:06 ID:???
>154
プロジェクトのプロパティに文字コードの設定がある
netbeans は指定の文字コードで読もうとするので
プロジェクト内は統一する必要がある
変換もできないので他のエディターで変更しとかないといけない
167nobodyさん:2010/06/04(金) 23:36:51 ID:???
>>154
Netbeans UTF-8 でググればUTF-8で開く方法がたくさん出る
168nobodyさん:2010/06/04(金) 23:40:28 ID:???
>>154
> PHPの文字コードは
> UTF-8のBOM無し
> で開発したらいいのでしょうか。
うん、それでいいよ。
PHPの設定も一応見直すとよいです。

なんか的外れなレスが多くね?
169nobodyさん:2010/06/04(金) 23:48:40 ID:XmC1Ur85
【OS名】Linux (32bit)
【PHPのバージョン】5.2

CORESERVERを使用しています。
DB使わずにファイルでデータを管理しているのですが、
ファイルロックの方法が間違っているのかデータが飛びまくって困っています。

上書きする際の流れは

・ロック用ファイルをwでオープン
・ロック用ファイルを排他ロック
・変更ファイルをrでオープン
・共有ロック
・データを変数に格納&指定部分を変更
・ファイルロック解除
・ファイルクローズ
・変更ファイルをwでオープン
・排他ロック
・さっきの変数をfwriteで上書き
・ファイルロック解除
・ファイルクローズ
・ロック用ファイルのロックを解除
・ロック用ファイルをクローズ

って感じです。
他にも同じファイルを呼び出す処理がいくつかあって、
それらではrのときは共有ロック、aのときは排他ロックをかけています。

ご指摘お願いします。
ソース必要でしたら貼ります。
170nobodyさん:2010/06/05(土) 00:03:29 ID:UzvzEjBp
質問です。

HTMLで以下のコード書いてみた。
<form method="GET" action="index.php?sex=man">
<input type=hidden name=myname value="maiko">
<input type=submit value="regist">
</form>

このフォームだと、myname="maiko"はサーバに渡るんだけど、
actionに指定しているsex=manの部分がサーバにわたらない。

method="POST"の場合だと、両方サーバにわたるんだけど、
なんで駄目なんでしょうか?
htmlの仕様?
171nobodyさん:2010/06/05(土) 00:33:54 ID:???
うん
172nobodyさん:2010/06/05(土) 00:34:22 ID:???
>>168
うん。君が的外れ。

>>169
PHPのファイルロックはダメダメ
アクセスカウンターが飛ぶとか過去スレ(かなり前)にあったと思う
ロック用のディレクトリやファイルを使ったりしてる人もいる
よく読んでないけど設計は合ってると思う

>>170
ブラウザのアドレス見たら分からんかな
173nobodyさん:2010/06/05(土) 00:35:42 ID:WrJc7rsM

すみません、文字コードのことで困っています。

今現在、外部ファイルを読み込むプログラムを作成しているのですが、
一部の文字コードにおいて文字化けが発生してしまいます。

UTF-8 => o, EUC-JP => x

具体的には、片方の文字コードにしか対応できないということです。
EUC-JPに対応させようとしたら、今度はUTF-8が駄目に。。。

php.ini の設定内容についてアドバイスもらえると助かります。
よろしくお願いします。
174nobodyさん:2010/06/05(土) 00:38:03 ID:???
>>173
具体的におかしくなる文字列を出した方がいいと思う
文字コードによって存在しない文字もある訳だし
175173:2010/06/05(土) 00:41:13 ID:WrJc7rsM
>>174
どうもありがとうございます。

対象の外部ファイルについてですが、任意の一般的なサイトです。
また、日本語については全て化けてしまっています。

自動的に文字コードを判別して切り替えることはできないでしょうか?
176nobodyさん:2010/06/05(土) 00:48:46 ID:???
>>172
「PHPの文字コードはUTF-8のBOM無しで開発したらいいのでしょうか。」とか
「根本的なところ」とか聞かれてるんだから、>>157>>168が的確なレスでしょ。
文字コードの変換方法やNetBeansの設定が知りたいわけじゃないと思う。
177173:2010/06/05(土) 01:04:39 ID:WrJc7rsM
返された文字列の文字コードを調べて、mb_convert_encodingで解決できました。
下らねぇ質問失礼しました。
178nobodyさん:2010/06/05(土) 01:09:02 ID:???
>>175
mb_detect_order でぐぐってみてくれ。

>>176
問題はdocblockの文字化けじゃないの?
そらすまんかった
179nobodyさん:2010/06/05(土) 02:53:33 ID:???
>>169
読み込みと書き込みの間でトランザクションが途切れているのが不整合の原因

$f = fopen('file', 'r+');
if (!flock($f, LOCK_EX)) die 'ロックできなかった';
/* ここで読み込み&書き込み */
fclose($f);

flock($f, LOCK_UN) は書き込みバッファの関係上、理由がなければ使わない
flock()自体はシステムコールのflock(),fcntl(),LockFileEx()を呼んでるだけなので
よっぽど古いファイルシステムや処理系じゃなきゃ信頼していい
180179:2010/06/05(土) 03:04:11 ID:???
最も外側にロック用ファイルでロックしていたのを見落としていた、ごめん
1行目の指摘は無視してくれ
181nobodyさん:2010/06/05(土) 03:07:11 ID:???
>>178
別にBOMつきのエンコードでうまく動作するなら文字化けの対処方法を書いてもいいよ。
けどそれじゃだめじゃん。
182nobodyさん:2010/06/05(土) 05:26:44 ID:???
>>169
ロックファイルは存在してるかどうかだと思ってたんだが
file_exsists で true なら待機みたいな
183nobodyさん:2010/06/05(土) 05:33:06 ID:???
そのやり方は良くあるだめなパターンだよー
184nobodyさん:2010/06/05(土) 05:34:29 ID:???
>>181
UTF8Nはいいけど彼の文字化けはどうすんだよw
つまり >>164 だろ
PHPの設定とか完全に意味不明
185nobodyさん:2010/06/05(土) 05:36:54 ID:???
>>183
どして?ぜひ理由を
186nobodyさん:2010/06/05(土) 05:44:08 ID:???
>>185
大丈夫な時
A             B
存在チェックOK
ロックファイル作成
              存在チェックNG

ダメな時
A             B
存在チェックOK
              存在チェックOK
ロックファイル作成
              ロックファイル作成
187nobodyさん:2010/06/05(土) 05:45:25 ID:???
>>184
横?でしかもうろ覚えですまんが、
今UTF-8じゃないならスクリプトのエンコードをUTF-8に変更する時に設定変えないとだめじゃないっけ
188nobodyさん:2010/06/05(土) 06:02:52 ID:???
>>186
ダメな時(B)のロックファイル作成が通るって事?
fopen() のモード x みたいな感じを想定してた。
> 書き込みのみでオープンします。ファイルポインタをファイルの先頭に置きます。
> ファイルが既に存在する場合には fopen() は失敗し、 E_WARNING レベルのエラーを発行します
> ファイルが存在しない場合には新規作成を試みます。

flockとかがアレなのはアレなんで,つまりそう言うのはDBゲホゲホ
189nobodyさん:2010/06/05(土) 06:03:58 ID:???
>>187
internal encoding の事かー!!
190nobodyさん:2010/06/05(土) 08:09:37 ID:???
>>188
それに頼るならわざわざfile_existsする必要なくね?
191nobodyさん:2010/06/05(土) 13:48:58 ID:???
192nobodyさん:2010/06/05(土) 13:57:26 ID:dqtCuv4f
以前も、PHP+MYSQLで質問させていただいたものですが良い方法が見つからないので
何方か力を貸してください。
SELECT文からtest内の値をarray関数に入れたいのですが良い方法ありますでしょうか。
mysql_fetch_arrayだと、idとtestをarrayにいれるだけで結果を全て入れる方法が
見つからない状況です。
実際には下記のように値を入れたいのです。
$a = array (aiue, okaki,kuke );
---------------------------------
| id | test |
---------------------------------
| 01 | aiue |
---------------------------------
| 02 | okaki |
---------------------------------
| 03 | kuke |
193nobodyさん:2010/06/05(土) 14:11:06 ID:???
Adobe のDreamweaverCS5で開発やってる人っている?
どーも、ついに本格的にCS5でPHPのコードヒントとか関数リファレンス、
動的な部分もプレビューしてくれたりとか、プロジェクト管理もできるようです。

今エクリプスなんだけど、ちょっと乗り換えてみたいんだけど、使ってる人いたら感想とか聞きたい。
194nobodyさん:2010/06/05(土) 14:22:16 ID:???
195nobodyさん:2010/06/05(土) 14:57:38 ID:???
うゎ、>>192じゃないけどfetchAll()知らんかったーorz
foreachでループしてfetchしてた…
196nobodyさん:2010/06/05(土) 15:03:14 ID:???
foreachじゃなくてwhileだった
197169:2010/06/05(土) 15:06:11 ID:zOlNlPcy
ファイルロックについてレスしてくださった方、ありがとうございます。
現在>>179さんのアドバイスに従い、LOCK_UNの記述を削除してテスト中です。
念のため、rとwでわけていたのもr+で一度に処理するようにしてみました。

ロックファイルを使用する場合は>>188のやり方がいいんでしょうか?
これでダメだったら試してみます。
ほんとはDB使った方がいいのは百も承知なんですが、
既にサイトが稼働してるおかげで勉強&システム移行してる余裕が・・・

どうもありがとうございました。
198nobodyさん:2010/06/05(土) 15:12:55 ID:???
>>186
普段DB使ってて、ファイルでのデータ管理は経験ない素人が適当なこと言って悪いけど、
ロックファイル作成後、書き込み時にロックファイルを確認すればいいんじゃない?
ロックファイルが複数あったら、先に作成されたほうだけを有効にするとか。
199nobodyさん:2010/06/05(土) 17:06:14 ID:dqtCuv4f
>>194
ありがとうございます。とりあえずサンプルみて頑張ります。
(こんな関数しらんかった…)
200質問1/2:2010/06/05(土) 18:17:47 ID:w09PCQyp
検索させようと思ってますが、某所参考に書いたらDBの中身全部出てきてしまった。よろしくご指導願います
PHP5 & MySQL5.0
<?php
$mysql_dbs = mysql_connect("host", "user", "pass");
mysql_select_dB("db-name");
$debug = false;
if($debug) print_r($HTTP_POST_VARS);
$query = "SELECT * FROM table";
if(!empty($Col0)) {
$Col0 = addslashes($Col0);
$where = "Col0 MREGEXP '$Col0' && ";
}
if(!empty($Col5)) {
$Col5 = addslashes($Col5);
$where .= "Col5 MREGEXP '$Col5' && ";
}
201質問2/2:2010/06/05(土) 18:18:54 ID:w09PCQyp
if(!empty($where)) {
$where = substr($where, 0, -4);
$where = "WHERE " . $where;
}
$query .= $where;
if($debug) {
print "<BR><BR>";
print $query;
}
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if($num_rows == 0) $message = "該当するデータはありませんでした";
else $message = $num_rows . "件ヒットしました";
?>
検索結果<br>
<?=$message?>
<table border=1><tr><td>名前</td><td>住所</td></tr>
<? while($row = mysql_fetch_assoc($result)): ?>
<tr><td><?=$row[Col0]?></td><td><?=$row[Col5]?></td></tr>
<? endwhile; ?>
</table><a href="input.html">再検索</a>
</body>
</html>
202nobodyさん:2010/06/05(土) 18:29:58 ID:???
$Col0と$Col5がないんじゃ?
203nobodyさん:2010/06/05(土) 18:30:23 ID:???
古くさいコードだな
204nobodyさん:2010/06/05(土) 18:35:44 ID:???
某所ってどこなんだよ
205nobodyさん:2010/06/05(土) 18:47:16 ID:IfiEpjR7
【OS名】
 Ubuntu 9.10
【PHPのバージョン】
 5.2.10
【連携ソフトウェア】
 MySQL
【質問内容】
 SQLインジェクションを防ぐためには、プリペアードステートメント(PDOのbindParam)を
 使うだけで十分なんでしょうか?
 怖いので、今はhtmlspecialchars($text, ENT_QUOTES)というのをやってから
 プリペアードステートメントを使ってINSERTやUPDATEをしてます。
206nobodyさん:2010/06/05(土) 19:37:59 ID:???
>>205
htmlspecialcharsをそこで使うのは間違い
207nobodyさん:2010/06/05(土) 19:47:38 ID:???
bindParamは変数をバインドするだけだから関係ない
prepareね

http://php.net/manual/ja/pdo.prepare.php

説明じっくりよんでみ
208nobodyさん:2010/06/05(土) 20:08:07 ID:IfiEpjR7
>>206
PHPMyAdminでデータベース内を覗いて、保存されたデータを見てみると
「<」のような文字がたくさんあって、容量的に「<」という1文字より多くなるし
ぱっと見て読みにくいので、使い方が間違ってるかなと思ってました。

「エスケープ」する必要があると聞きましたが、htmlspecialcharsというのは
エスケープとは違うんでしょうか?

>>207
あ、そうです。prepareです。
例えば、

$sql = "INSERT INTO testtable (testcolumn) VALUES (:testcolumn)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':testcolumn', $_POST['data1']);
$stmt->execure();

という風にやってます。
「基礎からのPHP」という本で学んだやり方です。
これだけでSQL対策は十分ですか?

よろしくお願いします。
209nobodyさん:2010/06/05(土) 20:09:02 ID:IfiEpjR7
「SQL対策」は「SQLインジェクション対策」の誤りでした。すみません。
210nobodyさん:2010/06/05(土) 20:12:56 ID:XPkr7TFj
>>200
http://php.dori-mu.net/source/source.php?src=search/search.phps
これ見てやったんだろう?
これおれうごいたから。
お前どっかぬけているんだよ。
まずは元ソースが動くか試してみな
211205、208です:2010/06/05(土) 22:46:24 ID:IfiEpjR7
SQLインジェクションとXSSを混同してたようです。
いろいろ調べてみて自分で理解したことを書いてみます。

・DBに保存するとき
  SQLインジェクションの対策としてプリペアードステートメント(PDO::prepareなど)が必要
  それを使えばhtmlspecialcharsは不要

・ブラウザに出力するとき
  XSSの対策としてhtmlspecialcharsを使う

これで合ってますでしょうか?
プリペアードステートメントを使わない場合、htmlspecialcharsでは代わりになりませんか?
212nobodyさん:2010/06/05(土) 23:00:07 ID:???
マニュアルをちゃんと読んだらどうなんだ
PDO使ってるならPDOのメソッド一覧あるんだから1つずつどういうものがあるか確認するぐらいしなさいよ

>プリペアードステートメントを使わない場合、htmlspecialcharsでは代わりになりませんか?
http://www.php.net/manual/ja/pdo.quote.php

htmlspecialcharsはxss対策に使うものでsqlインジェクション対策に使う関数ではありません
213nobodyさん:2010/06/05(土) 23:08:36 ID:bkBaLixK
質問です

28habcpt918のような英数字の組み合わさった文字列を
最後の数字の部分だけ00918のように頭に0を加えて5桁にしたいのですが、
文字列のパターンはabc123や987xyz12のようにさまざまです。

つまり、
28habcpt918なら28habcpt00918、
abc123ならabc00123、
987xyz12なら987xyz00012のようにしたいです。

アドバイスお願いします
214nobodyさん:2010/06/05(土) 23:11:27 ID:???
>>213
正規表現でいいじゃん
215nobodyさん:2010/06/05(土) 23:25:25 ID:IfiEpjR7
>>212
すみません、既に読んでます。
お尋ねしたいのは以下の2点です。

・プリペアードステートメントを使えば、SQLインジェクションの対策としては完璧ですか?

・SQLインジェクションを防ぐ方法はプリペアードステートメントを使うのが良いのはわかりますが、
 htmlspecialcharsを使う方法が代わりにならない理由は何ですか?
 (数値が期待される部分では、その部分に用いる値をintval()で数値化する方法もダメですか?)
216nobodyさん:2010/06/05(土) 23:32:48 ID:???
>>215
>プリペアードステートメントを使えば、SQLインジェクションの対策としては完璧ですか?
いいえ
プリペアードステートメントとは簡単に言えばSQLを高速に実行するための準備のことなので
sqlインジェクションとは関係ありません
PDO::prepareはこの準備をしつつSQLインジェクション対策を同時に行うメソッドです

>・SQLインジェクションを防ぐ方法はプリペアードステートメントを使うのが良いのはわかりますが、
> htmlspecialcharsを使う方法が代わりにならない理由は何ですか?
xssとsqlインジェクションとではエスケープすべき文字列が異なるからです
217213:2010/06/05(土) 23:34:04 ID:bkBaLixK
>>214
つまりどう書けばいいんですか?
218nobodyさん:2010/06/05(土) 23:37:11 ID:???
>213
preg_match("/[0-9]+$/", $str);
219nobodyさん:2010/06/05(土) 23:37:52 ID:???
>>213
$str = "28habcpt918";
$length = count($str) - strlen((int)strrev($str)) - 1;
$format = sprintf("%05d", strrev((int)strrev($str)));
echo substr($str, 0, $length) . $format;
220nobodyさん:2010/06/05(土) 23:39:11 ID:Jla4xmZF
お願いします。
文字列のある部分だけ置き換えたいのですが、

1)12345-12345-123-a
2)aaa-aaa-aaa-12345-a

の2つの文字列があるとき、結果を
11111-123-a
11111-12345-a
と置き換えしたいです。


$AAA = preg_replace('/(.*?)-(.*?)-a/','11111-(.*?)-a',$AAA);
と記述したのですが、結果は、

11111-(.*?)-a
11111-(.*?)-a
になってしまいます。初歩的で申し訳ありませんが、
希望の動作にするためにはどう記述すればいいか宜しくお願いします。
221213:2010/06/05(土) 23:46:34 ID:bkBaLixK
>>219
すごいです
感動しました
222219:2010/06/05(土) 23:47:44 ID:???
$lengthがおかしかったから訂正

$length = count($str) - strlen((int)strrev($str)) - 1;

$length = strlen($str) - strlen((int)strrev($str));
223205、208です:2010/06/05(土) 23:54:22 ID:IfiEpjR7
>>216
レスありがとうございます。

> プリペアードステートメントとは簡単に言えばSQLを高速に実行するための準備のことなので
> sqlインジェクションとは関係ありません
> PDO::prepareはこの準備をしつつSQLインジェクション対策を同時に行うメソッドです

知りたいのは、プリペアードステートメントの本来の目的ではなく、
「SQLインジェクション対策として十分か」ということです。

> xssとsqlインジェクションとではエスケープすべき文字列が異なるからです

htmlspecialcharsでは「\」がエスケープされないのが問題ということですね。
疑問が解消できました。
224213:2010/06/05(土) 23:54:48 ID:bkBaLixK
>>219
文字列の最後が0の場合うまくいかないようです
225nobodyさん:2010/06/06(日) 00:06:05 ID:???
226nobodyさん:2010/06/06(日) 00:06:32 ID:???
>>224
もう正規表現でええやん。

$str = '28habcpt918';
if (preg_match('/([0-9]+)$/', $str, $matches)) {
$format = sprintf('%05d', $matches[1]);
echo $format;
}
227219:2010/06/06(日) 00:21:03 ID:???
>>224
失礼
全然考えてなかった
intにキャストしてるから頭にある0が消えちゃう

>>226さんので取れるからそれでおながいします
228nobodyさん:2010/06/06(日) 00:26:42 ID:???
>>223
> 「SQLインジェクション対策として十分か」ということです。
そらおまえさん用意されてる関数を信じないで何を信じるの?
そんなに心配ならDBの資料あさって自前でエスケープしたらいいんとちゃうの?
229nobodyさん:2010/06/06(日) 00:41:50 ID:???
>>228
SQLインジェクション対策に有効だということはわかっていても
「十分」有効なのか「ある程度」有効なのかわからないということです。

プロが作ったサイトでも対策に失敗している場合があるようなので、
素人にとっては自分勝手に信じるのが怖いのです。
そのため、他者の裏付けを求めてお尋ねした次第です。

「信じないで何を信じるの?」ということは、つまり「信じていい」ということですね。
ありがとうございました。
230nobodyさん:2010/06/06(日) 00:43:05 ID:???
>>220
$a = "12345-12345-123-a";
$b = explode("-", $a);
echo "11111-" . $b[count($b)-2] . "-" . $b[count($b)-1];
231nobodyさん:2010/06/06(日) 00:48:24 ID:???
>>229
> プロが作ったサイトでも対策に失敗している場合があるようなので、
それは関数のせいじゃなくて単にエスケープ忘れてるだけ
プロといっても人間だからね
大手サイトとかにもなると作りが複雑になるし
ちゃんと規約決めて工程を遵守して多人数でやってる場合はバグも出にくいけどコストがかかる
PHPなんかはコスト重視だから設計もなしに適当にやってるとこは潜在的なバグがいっぱい
232nobodyさん:2010/06/06(日) 00:50:27 ID:???
>>229
あなたはSQLインジェクション対策の有効性について
慎重な意見を求めているようだけど、逆に他者の裏付けがあれば安心出来るのか?
そんなに心配なら自分で納得いくまでとことん調べるしかないだろう。
233220:2010/06/06(日) 00:51:00 ID:uQxRO+T3
>>225
ありがとうございます。
すいません読んでみましたが、初心者なのでよくわからなかったです。
$n形式という方法ですか?
234nobodyさん:2010/06/06(日) 01:00:02 ID:???
>>233
第二引数の置き換えのところで正規表現使ってるけどここは使えない。
マッチしたものをここで参照する場合$nもしくは\\nと書く。
マッチした全体が$0(\\0)になり、以降()で囲ったところが順番に$1(\\1)、$2(\\2)と入っていく。
まぁ>>220は第一引数の正規表現もおかしいので第二引数の置き換えを変えたところでどうにかなるわけではないが。
正規表現のお勉強は正規表現スレへどうぞ。
http://pc12.2ch.net/test/read.cgi/tech/1268979408/
ただそのケースだと初心者にとって難解な正規表現を使う必要もないので、
>>230を参考に組み立てたほうがよい。
235nobodyさん:2010/06/06(日) 01:20:34 ID:???
>>232 独学者なら他人の意見が欲しいものだよ
236nobodyさん:2010/06/06(日) 01:54:28 ID:???
他の人の意見聞くのはいいだろうけど、聞いた上で自分なりに勝手に解釈して納得してるのはどうなんだ?
それなら聞く必要ない気がするけどさ。
237nobodyさん:2010/06/06(日) 02:11:20 ID:???
くだ質で排他的なのはイクナイ。
238220:2010/06/06(日) 02:32:34 ID:uQxRO+T3
>>230
出来ました!ありがとうございます!
239nobodyさん:2010/06/06(日) 11:18:37 ID:???
sqliteのpdoをソフトウェアで再現するやつありますか。
ワードプレスを動かしたいのですが
240nobodyさん:2010/06/06(日) 11:19:21 ID:lMgRzA8F
sqliteのpdoをソフトウェアで再現するやつありますか。
ワードプレスを動かしたいのですが
241nobodyさん:2010/06/06(日) 11:51:52 ID:???
242nobodyさん:2010/06/06(日) 12:16:08 ID:???
>223
SQLインジェクションを予防するのに、
 ・「SQLインジェクションを予防するための関数」と
 ・「XSSを予防するための関数だけど、たまたまSQLインジェクションも防止できるような気がする関数」
どっちを使うかって話だよ。
つうか、「\がエスケープされないから危険」という思考は、要は裏で「SQLに混じって危険なのはコレとコレとコレと…」と候補を自分で考えてるだろ。
「危険な要素を弾く」はセキュリティ対策として非常に危険なので(見落としがあるとアウト)、自己の判断で行なうのを極力避けるべき。

俺を含めPHPプログラマの9割がカスなのは事実だが、言語自体の開発者や標準ライブラリの設計者は優秀だし、しっかりテストもされてる。
だから、「2chの意見と標準ライブラリどっちを信じるか」ならば、標準ライブラリを信じたほうが絶対にいい。
243nobodyさん:2010/06/06(日) 12:24:40 ID:lMgRzA8F
>>241
pdoドライバが必要になります。なしで使える方法無いですか。
244nobodyさん:2010/06/06(日) 12:29:00 ID:lMgRzA8F
これがOFFで
;extension=php_pdo_sqlite.dll
こっちがONで
extension=php_sqlite.dll
extension=php_sqlite3.dll
動く方法ないですか
245nobodyさん:2010/06/06(日) 12:40:03 ID:lMgRzA8F
ここの人がデータベースなしでwordpress動かす方法やってるけど。
未完成



http://polygon-blog.blogspot.com/2010/03/posql-for-wordpress.html
246nobodyさん:2010/06/06(日) 12:47:37 ID:???
posqlは一応データベースの一種だぞ
wordpressのソースをハックすればどうにでもなるが
あんな長いのを見るのもめんどくさいしな
ちゃんと抽象化されてて他のスクリプトへの影響が最小限の作りになってて
DB操作用のクラスなんかがあってそのファイルだけいじればOK
みたいなかんじの作りになってたら修正も簡単なんだけど
wpのソースなんて見たことないしシラネ
247nobodyさん:2010/06/06(日) 13:15:59 ID:lMgRzA8F
>>241のpdo sqliteをpure PHPで動かせればいいのですが。pdo sqliteの代替え。
248nobodyさん:2010/06/06(日) 13:39:02 ID:???
代替が読めない子か
249nobodyさん:2010/06/06(日) 13:57:01 ID:???
犠牲になったのだ
250nobodyさん:2010/06/06(日) 14:22:36 ID:???
入力画面、確認画面、完了画面の3つのphpで構成したいのですが、
入力画面から確認画面に遷移する際のバリデーションは、どこに実装すべきでしょうか?
251nobodyさん:2010/06/06(日) 14:42:53 ID:???
>250
確認画面と完了画面の両方。
コピペはあり得ないので、外部ファイルに関数の形で定義する事になるな。
252nobodyさん:2010/06/06(日) 15:00:52 ID:???
>>251
そうなると、確認画面で入力エラーになったら、入力画面にリダイレクトさせることになるんですよね。
その場合の入力値って、セッションに保存しておくしかないのですか?
253nobodyさん:2010/06/06(日) 15:30:15 ID:???
>252
確認画面にinput type="hidden"で仕込めばいい。

あと、入力された値がちょっと全角英数だったからとかいう理由で入力値を全部消滅させやがる糞フォームを作るような奴は地獄に落ちるべき。
普通にエラー表示するだけにしとけ。ブラウザバックで戻れば入力値は保持されてることが多いし。
確認画面にエラー内容と、ユーザーが入力したものがそのまま入ってる入力フォームが出てるのがベスト。
254nobodyさん:2010/06/06(日) 15:39:21 ID:lMgRzA8F
PDO-SQLITEを
バイナリ(エクステンション)なしで
動かす方法ないですか。
255nobodyさん:2010/06/06(日) 16:37:25 ID:B6xMlzjU
ブログなどで画像を表示する場合、
画像保存時に縮小画像を保存しておくのがいいのか
表示時に毎回縮小するのがいいのか、どっちでしょう?

全画像の縮小版をあらかじめ保存しておくと容量を喰いそうなので
表示のタイミングで縮小するのが良いと思ってますが、
縮小画像を削除するタイミングがわかりません。
256nobodyさん:2010/06/06(日) 16:47:41 ID:???
>255
バッチで定期的に古いファイルを削除すれば?
実際には更新日時をいちいち判定するのは面倒くさいので、例えば月ごとにディレクトリ掘ってそこに置いといて、月イチで古い月のディレクトリを丸ごと削除とか。

保持しておくべきか動的に生成すべきかは画像の量と表示回数次第だろうね。
容量をざっくり見積もって、それが許容できそうな範囲なら静的に置く方が楽だと思う。
257nobodyさん:2010/06/06(日) 17:00:31 ID:B6xMlzjU
>>256
なるほど。その方法いいですね。
でも考えてみれば、アクセスが多くなると毎回縮小するのは負荷がかかりますね。
容量的にいけそうだったらやっぱり静的なほうにしようと思います。
258nobodyさん:2010/06/06(日) 17:02:41 ID:lMgRzA8F
縮小画像はつくっておくべきだな。
量が多いなら、3Mくらいの複数の書庫に詰め込んで呼び出せばいい。
実測も書庫の方が高速になる。
たとえば100個表示させるとすると、画像への100回オープンが発生するが。
書庫なら一回。
259nobodyさん:2010/06/06(日) 17:18:34 ID:???
>>254
はいって何だよ。さっきから何度も。何がはいなんだよ。
出来もしねえ奴が軽々しくはいなんて言うんじゃねえよ。
だから申し訳ありませんじゃねえだろうよ。何が申し訳ねえんだよ。
本当に反省してんのかよ。
本当に今なら出来んのかよ。
口先だけの謝罪をするんじゃねえよ。
いい加減な気持ちでやってるんだったら今すぐ帰れよ。
だから以後じゃねえんだよ。俺は今の話をしてんだろうが。
今の反省も出来てねえ奴が勝手に未来語ってんじゃねえよ。
勝手に話を切り上げようとするなよ。失礼だろうが。
そんなにやりたくないんだったらだったら今すぐ辞めろお前。
260nobodyさん:2010/06/06(日) 17:45:19 ID:???
すごい誤爆だな
261nobodyさん:2010/06/06(日) 17:54:19 ID:???
>>259
なにそれ、縦読み?
262nobodyさん:2010/06/06(日) 18:15:18 ID:???
つうかもはやスレ違いだろsqliteのやつ
263nobodyさん:2010/06/06(日) 18:16:23 ID:???
>>262
あなた誤爆さん?
264nobodyさん:2010/06/06(日) 18:21:23 ID:???
>>254
無い
もうコピペに突っかかるのは止めて大人しくしてくれ
265nobodyさん:2010/06/07(月) 03:15:18 ID:???

>>170試したら、sex=manのデータが確かにサーバに渡ってないな。
これは、ブラウザの仕様?RFCの仕様なの?


266nobodyさん:2010/06/07(月) 03:25:38 ID:???
複数のブラウザでためして結論出せば?
267nobodyさん:2010/06/07(月) 06:44:36 ID:FJeCaP+n
最初から用意されているデザインテンプレート以外を使用したい場合などに、
自分でテンプレートを作成することになると思いますが、
その場合例えばDBから値を取り出してそれを表示するなんて場合、
DBから結果取得〜表示までのロジックをかかなければなりません。
一部用意されている関数で処理が省略できるとしても、
PHPを知らないとなりません。
そこであらかじめテンプレートで使われそうな処理(上記の例の場合、ある結果の取得から表示まで)を
関数単位で用意し、テンプレートではHTMLの構文に似たカスタムタグを使うことで、
テンプレートからHTMLに変換する際、カスタムタグを構文解析して対応した関数を呼び出そうと考えました。
こういう方法は一般的でしょうか?
構文解析方法ですが、正規表現を使って行っています。
268nobodyさん:2010/06/07(月) 07:40:10 ID:???
>>267
Smartyとかテンプレートエンジン使うとかではダメなの?
もちろん、HTMLタグに似せたり、テンプレート側から呼び出せる機能を制限したい、ということであればあり得る方法だと思う。
269nobodyさん:2010/06/07(月) 10:11:02 ID:???

告知させて。
現在のところあまり盛んに動いてるオンライン勉強会がないので
あたらしくグループつくりました。
オンラインでチャット・生中などいろいろ(未定)で
できれば毎晩だらだら勉強やる予定です。
熱意のある人いたらたまーに課題だしてってアプリ作るなんてのも
ありかなと思ってます。

初心者の人はもちろん、おれが仕切って教えてやるわって人も大歓迎です。


グーぐるグループ
「初心者歓迎 PHP勉強会 2ch発」
ttp://groups.google.co.jp/group/2ch-php
[email protected]

参加希望の人いたら、メールくださいな。
270267:2010/06/07(月) 12:08:54 ID:dndZJJbf
出先なのでIDが違うと思いますが>>267です。

>>268
レスありがとうございます。
Smartyはどういうものかよく知りません。
テンプレートエンジン自体どういうものかよくわからなくて・・・
ただMovableTypeを数年前に使っていて、
そこではテンプレート用のMT専用タグみたいなのが使えたので、
>>267のような仕組みになってるのかな?と思い実装しました。
そういう実装もありとのことなので少し安心しました。
テンプレートエンジンについても後ほど調べてみたいと思います。
271nobodyさん:2010/06/07(月) 14:06:21 ID:hz9Zbx6T
PHPってLinuxに入れる時ってめんどくさいんだね
./configureの度にgccがないとか、libxml2がないとか、libpngがないとか、とにかくエラーばっか
自分centOS5.4使ってるんだけど、皆さんやっぱこういう風に色々とインストールしてPHP環境(ApacheとかMySQLとか)作ってるんですか?

以前yumで全部インストールしたんだけど、あまりにバージョンが全部古いんで今回最新版を全部入れようと思ったら予想外に時間と手間がかかって
それとも何か自分のやり方が間違ってるんですかね?
272nobodyさん:2010/06/07(月) 14:22:18 ID:MuZbivCs
いくつかのサーバー用Linuxディストリビューションにおいては、LAMPがセットになって配布される。LAMPを1つのセットにすることで、OSのインストール時にLAMPの多くの設定・関連付けを自動的に行うことができ、サーバー管理者の手間を軽減させることができる。
http://ja.wikipedia.org/wiki/LAMP
273nobodyさん:2010/06/07(月) 14:39:38 ID:???
>>271
yum install php
274nobodyさん:2010/06/07(月) 14:42:06 ID:???
>>271
あと

> 以前yumで全部インストールしたんだけど、あまりにバージョンが全部古いんで今回最新版を全部入れようと思ったら
yum update
275nobodyさん:2010/06/07(月) 14:50:49 ID:hz9Zbx6T
>>272
それはやっぱりyumでって事なんでしょうか?
自分は以前yumで全部入れたんですが、バージョンが古くて
PHPなんかも名前空間使いたかったので5.3が必要で

それともyum以外で何かインストールするパッケージがあるのでしょうか?
centOSは他のディストリビューションよりもサーバ型だと思うんですが


>>273
あぁ、やっぱyumで入れてるんですか?
確かcentOS5.4のPHPは確か5.1か何かで古くて自分でWindowsで作ったソースがエラーが出たりして最新版を入れようと奮起していまして
いやぁ、ほんと次から次に./configureでエラーが出まくってくれて、その度にダウンロード→./configure→make→make installの繰り返して・・・
相当萎えていました

こんなんじゃ企業で使うとき、クリーンインストールや新規PC等の度に1台につき設定が物凄い無駄な時間かかるなぁ、と思いまして
Windowsだとすぐだけど
276nobodyさん:2010/06/07(月) 15:15:25 ID:hz9Zbx6T
>>274
あれ?
yum updateでPHPのバージョンとかも5.2とかにアップデートされるのでしょうか?
自分はyumでPHP環境を作る前に2度ほどyum updateをしたのですが、5.1.16とかの古いバージョンのままでした
php infoでも確認したつもりだったのですが
それかcentOSはそうなのでしょうか・・・

自分が勘違いしてたか、何かおかしな事をしたのかもしれませんね
277nobodyさん:2010/06/07(月) 15:25:24 ID:???
>>276
yumで最新版を入れたいなら、リポジトリを変える

あとLinux板のくだ質と微妙なマルチやめてくれ
278nobodyさん:2010/06/07(月) 16:39:40 ID:???
なんだこの展開。
最新版が使いたいならCentOSやめろ。そんなことのためのディストリじゃない。

>>275
突っ込みどころは腐るほどあるけど、どうしてもそのディストリで自前ビルドしたものを使いたい、かつ、
ほかにも使いまわしたいのならRPM作って署名してローカルリポジトリを使うようにする。

>>276
全部yumでインストールしたなら全部yumでアップデートすればいい。
なぜ最新版がリポジトリにないのかについては、それがCentOSだからという答えになる。
RHELのクローンということを認識してるか?
279nobodyさん:2010/06/07(月) 18:46:23 ID:???
なんでサーバー用のOS使ってるのに最新版にこだわるんだろうね
280nobodyさん:2010/06/07(月) 19:28:33 ID:???
別にいいんじゃねーの?
281nobodyさん:2010/06/07(月) 19:39:23 ID:???
>>279
名前空間って書いてあるじゃん
282nobodyさん:2010/06/07(月) 21:36:24 ID:goYJN4/h
【OS名】WindowsXP
【PHPのバージョン】5.3
【連携ソフトウェア】いまのところなし
【質問内容】
すみません。質問させてください。
「10日でおぼえるPHP入門教室(第2版)」という本で勉強中のものです。
5日目の2限目のゲストブック閲覧のところで、つまってしまいました。
うまく動いてはいるのですが、名前かメッセージのところの1文字目が全角英数字だと、
(2文字目以降だと正常に表示されます)
guest.datには書かれるのに、閲覧ページのguest_read.phpには何も入っていなく空欄なのです。
ぐーぐる先生に聞いても半角⇔全角変換のことばかり出てきてうまく答えがみつかりませんでした。
全角英数字のまま出力はできないのでしょうか?
文字コードは本のとおりUTF-8(BOM無し)です。
よろしくお願いします。
283nobodyさん:2010/06/07(月) 23:41:38 ID:???
現在エスパーは席を外しているようです
284nobodyさん:2010/06/08(火) 01:43:03 ID:X6L4SMDo
>>282
ソースを出せよ。
それじゃわからんないでしょうが。
285nobodyさん:2010/06/08(火) 01:55:27 ID:???
そんなタイトルからだめそうな本持ってるやつおらんで
286nobodyさん:2010/06/08(火) 01:59:43 ID:X6L4SMDo
>>282
もっとちゃんとした本買ったほうがいいぞ。
本の名前書くと著者乙とか書かれてしまうから
かかねーけど
287nobodyさん:2010/06/08(火) 02:28:54 ID:???
オライリーやマンモス本ならさすがに著者乙とは言われんだろ?
288nobodyさん:2010/06/08(火) 02:33:17 ID:???
みんな
買ってね!

Amazon.co.jp: 10日でおぼえるPHP5入門教室 第2版 (CD-ROM付): 山田 祥寛: 本
http://www.amazon.co.jp/dp/4798118761
289nobodyさん:2010/06/08(火) 02:55:18 ID:???
お前ら本なんて買ってるの?
Webからの情報のみで勉強してるのは俺ぐらいなのか?
290nobodyさん:2010/06/08(火) 03:24:23 ID:???
知りたいことはwebで知れるんだけど
手っ取り早く1-10を見れるのは本かな
来週から突然pythonやってね。って言われたら
経費で本買って読む。みたいな
291nobodyさん:2010/06/08(火) 08:53:55 ID:???
>>289
PHP自体は違ったけど、PEAR、ZFなんかはマニュアル全ページ読んだ
292nobodyさん:2010/06/08(火) 10:14:47 ID:???
>>282
fgetcsvの文字化けと予想。  fgetcsv 文字化けで検索するといろいろあるよ。
293nobodyさん:2010/06/08(火) 10:57:16 ID:???
ttp://web.archive.org/web/20071011041237/http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html
 ↓ ↓ ↓ ↓ ↓
ttp://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/003.html

1) 例えば、PHPを避ける
 ↓ ↓ ↓ ↓ ↓
1) プログラマが脆弱性をつくり易い環境を避ける
294nobodyさん:2010/06/08(火) 10:59:33 ID:???
ウイルス対策はwindowsを避けろっていう程度の話か。
295nobodyさん:2010/06/08(火) 11:03:23 ID:O0+3kZk7
LinuxにEclipse PDTを導入しようと思ってインストールしたのですが、
PHP実行可能ファイルの設定の所で実行ファイルパスにphp.exeを指定する所があるのですがここが分かりません
検索しても出てきませんでした
後、/usr/local/lib/phpの中にphpが展開されていると思うのですが、いくら探しても出てきませんでした
linux(FedoraやcentOS)ではどこにphp.exeがあるのでしょうか?

linuxにそもそもphp.exeというものはあるのでしょうか?
もし無いとすれば、この実行可能ファイルパスの所には一体何を指定すればいいのでしょうか?
296nobodyさん:2010/06/08(火) 11:15:18 ID:???
>>295
そりゃあ、Linuxにphp.exeは無いでしょうね。
単に「php」。

ちゃんとphpがインストールされてるなら、"whiich php"で、どこにあるやつが遣われるか判るよ。
297nobodyさん:2010/06/08(火) 11:20:59 ID:???
>>296
Thanksです
298295:2010/06/08(火) 11:26:48 ID:???
あれ、そうなるとEclipseの実行ファイル・パスにはいったい何を指定すればいいのでしょうか?
which phpで検索した/usr/local/lib/php というディレクトリ(?)では先に進めないのですが
system.phpとかを指定するのでしょうか?
299nobodyさん:2010/06/08(火) 11:32:28 ID:???
>>298
phpはどうやってインストールした?
単にCLI版が入ってないだけだと思うが。
300295:2010/06/08(火) 11:33:04 ID:???

which phpで検索した/usr/bin/php の間違いでした
301295:2010/06/08(火) 11:34:23 ID:???
何度も連投すみません
/usr/local/bin/phpで解決しました
解決したことを書き込む前にアップしてしまいました
302nobodyさん:2010/06/08(火) 12:39:01 ID:???
>>296
フィーーッチになってるお
303nobodyさん:2010/06/08(火) 12:39:50 ID:???
ちゃんと通じていたことを見ておくべきでした
304nobodyさん:2010/06/08(火) 12:52:25 ID:lvF7sIjD
PHPで1円の誤差も許さない金額計算などを行うときには
どのような点に気をつければよいでしょうか。

JavaでいうところのBigDecimalを使うとか、
特定のクラスを使用する必要がありますか?
305nobodyさん:2010/06/08(火) 13:08:53 ID:???
小数を使わない。誤差が出ない計算を考える。他の言語でもそうじゃないの?
306nobodyさん:2010/06/08(火) 13:10:50 ID:o6m5GUPU BE:1452744386-2BP(2)
>>210
やってみます
307nobodyさん:2010/06/08(火) 13:17:20 ID:???
>>304
例えば、PHPを避ける
308nobodyさん:2010/06/08(火) 14:06:45 ID:YOnOVKl0
PHP:5.1.6
OS:Centos
utf-8でmail関数を使ってメールを送るクラスをつくっています
phpスクリプトから送信をしてOutlookで受信した際に本文が正しく表示されません
通常であれば表示されてはいけない This is a MIME encoded message から全て表示されてしまいます
正しくメッセージを表示するようにするにはどうしたらいいでしょうか?

メッセージ部分を生成関数
private function MakeBody()
{
 if(count($this->APPENDFILE) > 0)
 {
  $FILEDATA = '';
  foreach($this->APPENDFILE as $RECORD)
  {
   $FILE = chunk_split(base64_encode($RECORD['DATA']));
   $FILEDATA .= "--{$this->BOUNDARY}\n\n"
    . "Content-Type: text/plain; name=\"{$RECORD['NAME']}\"\n"
    . "Content-Transfer-Encoding: base64\n"
    . "{$FILE}\n";
  };
 };
 $RESULT = mb_convert_encoding("This is a MIME encoded message.\n\n",'iso-2022-jp','utf-8');
 $RESULT .= mb_convert_encoding("--{$this->BOUNDARY}\n\n",'iso-2022-jp','utf-8');
 $RESULT .= mb_convert_encoding("Content-Type: text/plain; charset=\"iso-2022-jp\"\n",'iso-2022-jp','utf-8');
 $RESULT .= mb_convert_encoding("Content-Transfer-Encoding: base64\n",'iso-2022-jp','utf-8');
 $RESULT .= mb_convert_encoding("{$this->MESSAGE}\n\n",'iso-2022-jp','utf-8');
 $RESULT .= $FILEDATA;
 $RESULT .= mb_convert_encoding("--{$this->BOUNDARY}--\n",'iso-2022-jp','utf-8');
 return $RESULT;
}
309nobodyさん:2010/06/08(火) 14:07:40 ID:???
//メール送信関数
function Send($MODE = true)
{
 $SUBJECT = mb_encode_mimeheader($this->SUBJECT,'iso-2022-jp','utf-8');
 $HEADER = $this->MakeHeader();
 $BODY = $this->MakeBody();
 $FROM = "-f{$this->FROM['NAME']} <{$this->FROM['ADDRESS']}>";
 foreach($this->TO as $RECORD)
 {
  $TO = mb_encode_mimeheader("{$RECORD['NAME']} ",'iso-2022-jp','utf-8')."<{$RECORD['ADDRESS']}>";
  if($MODE === true)
  {
   mail($TO,$SUBJECT,$BODY,$HEADER,$FROM);
  }
  else
  {
   echo "--HEADER--\n{$HEADER}\n--TO--\n{$TO}\n--SUBJECT--\n{$SUBJECT}\n--BODY--\n{$BODY}\n";
  };
 };
}
310nobodyさん:2010/06/08(火) 14:08:41 ID:???
送信テスト用スクリプト
$MAIL = new SENDMAIL();

if($MAIL->SetFROM('送信テスト元','[email protected]') === true)
{
if($MAIL->AddTO('送信テスト先','[email protected]') !== false)
{
$TIME = 'TEST'.strftime('%Y-%m-%d %H:%M:%S',time());
$MAIL->SetMessage("てすとにゃーん {$TIME} ");
$MAIL->SetSubject("サブジェクトテスト");
$MAIL->SEND(true);
}
else
{
echo 'error TO';
};
}
else
{
echo 'error FROM';
};
311308:2010/06/08(火) 14:17:04 ID:YOnOVKl0
色々設定を変えてテストしていたのですが修正漏れがありました
>>308
違:$RESULT .= mb_convert_encoding("Content-Transfer-Encoding: base64\n",'iso-2022-jp','utf-8');
正:$RESULT .= mb_convert_encoding("Content-Transfer-Encoding: 7bit\n",'iso-2022-jp','utf-8');
312200:2010/06/08(火) 14:23:33 ID:KP/ycwH2
>>210
Error: invalid method
そのままではこれがでます。なので、

//エラーチェック
//リクエストメソッドチェック
if($REQUEST_METHOD != "POST") {
print "Error: invalid method";
exit();
}
を削除しました。
するとやはりDBの中身すべてが出てしまいます。
313282:2010/06/08(火) 14:41:31 ID:IOcc/liv
すみません。遅くなりました。
ファイルは全部で5つあるのでzipにしてアップしました。
http://loda.jp/shm/?id=12

>>292 ぐぐってみたらこれっぽい気がするのですが、なにがなんだか分からない状態です;
もう少しがんばってみようとおもいます。。
314282:2010/06/08(火) 14:57:42 ID:???
guest_red.phpの13行目の
while ($row = fgetcsv($file, 1024, "\t")){

while ($date = fgets($file, 1024)){
$row = explode("\t", $date);
としたら解決しました。
すみませんでした。
315nobodyさん:2010/06/08(火) 16:39:32 ID:???
下のような検索フォームを作りたいです。
phpとセレクトフォームによって呼び出すcgiを選択させるphpを教えてください。
呼び出すcgiについては完成しています。

<form method="post" action="http://aaa.php">
<input type="text" name="keyword" size="20" value="定着率" />
<br />
<select name="search">
<option value="bookmark">あああ</option>
<option value="mobile">いいい</option>
<option value="pc">えええ</option>
</select>
<input type="submit" value="検索" />
</form>
316nobodyさん:2010/06/08(火) 16:57:07 ID:???
呼び出すCGIを選択するのではなくて
searchの値によってaaa.phpの中で場合分けして処理するのがセオリーだろうね。

どうしてもってんなら、Javascriptでselectが変更されたら、formのactionを書き換えるか。
でも、このやり方じゃ、アクセシビリティー的にアウトだろう。
317nobodyさん:2010/06/08(火) 17:38:05 ID:hMNg2N9l
最近って文字コードどうしてますか?
もうUTF−8に統一されました?
まだEUCだよとかSJISで頑張ってるとか教えて下さい。
318nobodyさん:2010/06/08(火) 17:39:56 ID:???
>>316
レスありがとうございます。
すでに検索用のインデックスは作成してしまったので、
それに対応するcgiを選択すればいいだけだったのですが難しそうですね。
319nobodyさん:2010/06/08(火) 19:00:54 ID:???
対応するcgiに302でいいんじゃないの?
てか、cgiとphpという言葉の使い分けはなんだろ。perl-cgiとか使ってんのかな。なんでもいいんだけどさ。
320nobodyさん:2010/06/08(火) 21:08:21 ID:???
>>169でファイルロックに関して質問した者です。
>>179のやり方を試して数日様子を見たところ、どうやら問題が解消されたようです。
とても困っていたので助かりました。
ありがとうございました。
321nobodyさん:2010/06/09(水) 01:36:39 ID:???
appleのhtml5デモサイトでphpが使われてた件
322nobodyさん:2010/06/09(水) 01:41:01 ID:???
そんなアップル
323nobodyさん:2010/06/09(水) 03:00:39 ID:BsRvxOVf
初歩的で申し訳ありません。
PHPでローカル鯖から送信すると問題なく送れますが
鯖にUPして送ると表示される文字が全部???になってしまいます。

文字コードをいろいろ弄ってみたのですが、全部???で文字化けの変化もしません。
お知恵を貸してください。宜しくお願いします。
324nobodyさん:2010/06/09(水) 03:14:49 ID:???
それだけじゃ何とも言えないかな。
文字コードは何なのかとか、表示される文字ってHTMLの文字?
325nobodyさん:2010/06/09(水) 03:26:35 ID:???
これは難しい。
2行目を読んだ時点ではメール送信かと思ったが、3行目でどん詰まりだ。
326nobodyさん:2010/06/09(水) 04:34:39 ID:???
教えてください!!!
何が分からないのか分かりません!!!(><)
327nobodyさん:2010/06/09(水) 04:40:29 ID:???
ああわかった。
鯖とローカルのphp.iniを見比べてみてくれ。
encodで検索した内容を主に見てくれ。encodeではない、encodで、だ。
それから、ローカルはIISで鯖はapacheじゃないか?
328nobodyさん:2010/06/09(水) 04:41:36 ID:???
じゃないな、phpinfoの結果を見比べてくれ。

あと、薄い可能性として、鯖にUPするときに改行コードがおかしくなってないかも疑ってみてくれ。
329nobodyさん:2010/06/09(水) 05:00:03 ID:BsRvxOVf
回答ありがとうございます。

>>324
POST送信でしょうか・・・
pearでインストールしたPHPを使っているので、
どう送ってるのかわかりません。すいません。

>>327
ローカル鯖はapacheです。UPした鯖は、仕様がわかりませんがPHPは
safe_modeで動いているようです。
phpinfoはエラーを吐いてしまいました。

Warning: phpinfo() has been disabled for security reasons in
330nobodyさん:2010/06/09(水) 09:24:00 ID:???
文字が?になっちまうのは、文字コード変換処理で*失敗*してる。
mbstring.encoding_translation が onか、自前の処理が入ってるか分からんけど。
htaccess使えればoffにする。 使えないようなサーバーなら、
文字化けしないエンコードにページのエンコードを変えるしかない・・・
331nobodyさん:2010/06/09(水) 11:14:04 ID:W1sVZbXG
http://php.net/manual/ja/session.configuration.php
session.use_trans_sid の項目

「PHP_INI_ALL は PHP <= 4.2.3、PHP_INI_PERDIR は PHP < 5 から。PHP 4.0.3 から利用可能。」

意味がわからん 幼稚園児にもわかる日本語で説明頼む
4.0.3〜4.2.3 は PHP_INI_ALL 
4.2.3〜現行ver まで PHP_INI_PERDIR なのか??
332nobodyさん:2010/06/09(水) 11:26:06 ID:???
から。がチョットいまいちだけど分からんほどではないかと。
英語のページ見ればよろし。
5からは INI_ALL
333nobodyさん:2010/06/09(水) 11:38:27 ID:BsRvxOVf
>>330
ありがとうございます。ローカル、UP先ともに
;mbstring.encoding_translation = Off
という状態です。

>>327
encodというところはなく、encodingの文字が入るところは
先頭に全て;がついていました。
334nobodyさん:2010/06/09(水) 11:42:59 ID:W1sVZbXG
ありがとう いまいちわかってないけどw
4.0.3 〜 PHP_INI_SYSTEM
4.2.3〜 PHP_INI_PERDIR
5〜   PHP_INI_ALL

が正解かな??
「PHP <= 4.2.3」て書かれると 4.3.2以下のバージョンと読んじゃうね
335nobodyさん:2010/06/09(水) 11:51:23 ID:???
いや、なんか変だな。ちょっと調べる。
336nobodyさん:2010/06/09(水) 12:47:11 ID:W1sVZbXG
>>323

phpinfo(); のmb_string の項目をローカルと鯖両方さらすがよろし
337nobodyさん:2010/06/09(水) 12:54:11 ID:???
PHP <= 4.2.3って書いて 4.2.3から (ALL)
PHP < 5 って書いて 5から (PERDIR) なのかねぇ。
338nobodyさん:2010/06/09(水) 13:05:54 ID:W1sVZbXG
5.1.6 でプログラム中の
 ini_set('session.use_trans_sid', '1'); 効いたんだべ

339nobodyさん:2010/06/09(水) 13:45:29 ID:BsRvxOVf
>>336
ありがとうございます。
phpinfoを実行するとエラーがでてしまいます。
Warning: phpinfo() has been disabled for security reasons in
340nobodyさん:2010/06/09(水) 14:07:58 ID:W1sVZbXG
なる 今まさにワシもそのタイプのものと格闘中w

mbstring.detect_order → print mb_detect_order();
mbstring.internal_encoding → print mb_internal_encoding(); 
mbstring.internal_encoding → print mb_internal_encoding();

手な感じで1個1個調べるしか無いっぽいですね

mbstring.encoding_translation はどうやって調べればよかたかな?

情報少ないのであてずぽですが、
internal_encoding = EUC
mbstring.encoding_translation = on
になってんじゃないかなー 笑顔鯖 ならw
341nobodyさん:2010/06/09(水) 17:03:38 ID:wh/h1AEj
Livedoor Blog APIのAtomについて質問です。

http://wiki.livedoor.jp/staff/d/API/AtomPub
ここを見ると、本文の投稿には次の二つのやり方があるみたいですが

<content type="text/html" xml:lang="ja" xml:base="http://blog.livedoor.jp/staff/archives/000000.html">
<p>記事本文</p>
</content>

<blogcms:source>
<blogcms:body><![CDATA[<p>記事本文</p>]]></blogcms:body>
<blogcms:more><![CDATA[<p>記事追記部分</p>]]></blogcms:more>
</blogcms:source>

上の例の場合に、記事追記部分を指定するにはどうすればいいのでしょうか。
342nobodyさん:2010/06/09(水) 18:51:55 ID:BsRvxOVf
>>340
ありがとうございます

mb_internal_encodingを設定しない場合、
echo mb_internal_encoding();は
ISO-8859-1 でした。

343nobodyさん:2010/06/09(水) 23:02:26 ID:kxHltjxi
大抵の通販サイトなどで使用される、画像を表示する処理を作っているのですが
商品がたくさんある場合、「次へ」などのリンクをクリックすると
次の画像群が表示される……という処理を作ろうとしています。

PHP+SQLで画像のパスを保存しておいて、PHPファイル内でHTMLを記述し描画を行う処理はできたのですが
次の画像群を表示するというメッセージはどのようにすればPHPに送ることができるのでしょうか。

すごく初歩的な質問ですがよろしくお願いします。
344nobodyさん:2010/06/09(水) 23:06:28 ID:kxHltjxi
曖昧な質問の仕方でした。
知りたいことは、一般的な通販サイトではどのような処理になっているのかということと
前述した、「次へ」というリンクをクリックすることで、
動的にページを更新し、次の画像群を表示するためのメッセージを送る方法についてです。

よろしくお願いします。
345nobodyさん:2010/06/09(水) 23:07:32 ID:???
ページング処理のことかな?
346nobodyさん:2010/06/09(水) 23:11:52 ID:???
getでページnoを指定する
index.php?page=1みたいに
PHPでpage=1のパラメータを受け取った後
画像の表示件数を1ページに50とした場合
50*page-1から50*pageまでをLIMITで指定したものをSQLから取り出すとか
取り方なんかはDBの構造にもよってもっと効率のいい指定方法ができるけど
まぁこんな感じ
347nobodyさん:2010/06/09(水) 23:11:58 ID:kxHltjxi
OKWaveで同様の質問を見つけることが出来ました。
ありがとうございます!
まずそこを見て実装してみます。
348nobodyさん:2010/06/09(水) 23:23:43 ID:kxHltjxi
>>346
ありがとうございます!
ページング処理(今知りました)はget送信で送るみたいですね。
概要はわかりましたが、index.php?page=1が解読できないので調べている最中です。
349nobodyさん:2010/06/09(水) 23:28:12 ID:???
タッチの差だったな
350nobodyさん:2010/06/09(水) 23:45:16 ID:YOGuQm0P
>>342

ということはその値を設定してるのかな??

もちーっと詳しく書かないと
エスパーにしか答えがわからんっぽい

mb関係の実際のPHP動作時の設定
何が文字化けしているのか(POST GETで渡された文字列のみ 全体 etc)
などなど
351nobodyさん:2010/06/10(木) 00:35:45 ID:/fuvg3FQ
phpでのページング処理は、再帰構造でカレントページのIDをどんどん受け渡す感じなんですね。

肝心のHTMLの記述方法が分からなくてどうすればいいのか探してたら
>>346さんのindex.php?page=1で直接GET送信するってことか。
やっと作れます。
ありがとうございました。
352nobodyさん:2010/06/10(木) 01:47:48 ID:???
多分再帰という用語の使い方を間違えてるだけだろうからそのままがんばってください
353nobodyさん:2010/06/10(木) 14:31:48 ID:PM/fSWQl
XMLのURLに色々な指定を加えていると
http://api.com/xml?aaaaa=1&bbbbb=1&ccccc=a&ddddd=0
こんな感じで長くなってしまい見にくいので、整列する方法を教えてください。
要素を一つずつ配列にしてみたんですが、ループしないとすべて表示できないのでうまくいきませんでした。
354nobodyさん:2010/06/10(木) 16:08:19 ID:I9t81ujy
スマナイ ニホンゴで頼む
355nobodyさん:2010/06/10(木) 16:12:46 ID:???
XMLの話か?URLの話か?
長いから整列ってのも意味分かんないし、
突然でてきた要素ってものの指すものもわからんし、
配列、ループでうまく出来ないって、なにがさ。
356nobodyさん:2010/06/10(木) 16:45:05 ID:???
プログラムへたなやつって日本語も苦手なやつ多いよな。
357nobodyさん:2010/06/10(木) 17:58:51 ID:???
言っちゃあ要件定義も設計書もコーディングも翻訳作業だもんな
358nobodyさん:2010/06/10(木) 23:37:48 ID:/fuvg3FQ
また質問させて頂きます。
PHP 5.3.1
Eclipse php galileo SR2 win32 (PDT)
XDebug 2.1.0 rc1
を使用し、ブレークポイントで処理がとまるようにデバッガの設定を行っていますが出来ませんでした。
デバッガを利用してる方で、安定して動くバージョンを教えてください。
よろしくお願いします。
359nobodyさん:2010/06/11(金) 01:12:25 ID:???
xdebug.dll は ts/nts vc6/9 などは合わせてあるか
php.ini での設定内容を晒す
360nobodyさん:2010/06/11(金) 01:53:05 ID:8X4/rYMm
dllは、non-thread-safeでない方です。

phpInfoで確認したところ、
Compiler MSVC6 (Visual C++ 6.0)となっていますので、
使用しているdllは、php_xdebug-2.1.0RC1-5.3-vc6.dllです。

iniファイルの設定内容は、ファイルの最後に

zend_extension_ts = "C:\xampp\php\ext\php_xdebug-2.1.0RC1-5.3-vc6.dll"
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_log="C:\xampp\apache\logs\xdebug.log"
xdebug.manual_url = http://jp2.php.net
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *

を追加しました。
361nobodyさん:2010/06/11(金) 02:43:41 ID:???
見た感じ問題なさそうだなぁ
なんとなくeclipse側の気がする
ポート9000 で通信してるかとか確認してみるのがいいかも

可能ならphp/xdebug vc9ビルドを試してみるとか
xdebug は結構不安定だったりするからver変えてみるのもいいかも
362nobodyさん:2010/06/11(金) 03:23:14 ID:8X4/rYMm
>>361
ほとんどのバージョンを試してみましたがダメのようです。
ありがとうございました。

もし正常にデバッグできている方がおられたら、PHPやEclipseのバージョンを教えてください。
363nobodyさん:2010/06/11(金) 03:26:13 ID:/BtEfgaD
XAMPPは標準装備
追加いらず
php.ini書き換えだけ
364nobodyさん:2010/06/11(金) 03:28:28 ID:???
xdebug.idekey はどうなってる?
eclipse と php.ini 両方で合わせる必要があったはず
365nobodyさん:2010/06/11(金) 03:30:56 ID:???
ふと自分の php.ini 見て思った。
zend_extension_ts の ts が要らんかも
zend_extension="/path/to/xdebug.dll"
にしてみて
366nobodyさん:2010/06/11(金) 03:36:51 ID:8X4/rYMm
>>365
tsが無いと、終了せずにどこかでループを起こしてるみたいです。
進捗が途中で動かなくなります。

xdebug.idekey について今調べているところです。
367nobodyさん:2010/06/11(金) 04:52:38 ID:8X4/rYMm
ttp://www.php-seed.net/blog/archives/95

によると、私の環境であればzend_extension_tsでないとダメみたいなのですが
phpInfo()をみると、XDebugの記述が出てきません。
しかし、zend_extensionとすると、phpInfo()にXDebugの情報が出てくるようです。
368nobodyさん:2010/06/11(金) 09:43:31 ID:S65wpJHf
皆さんの会社はLinuxを使っていると思いますが、どのディストリビューションを使っていますか?
またサーバ機とAMP開発用ではOSを使い分けてたりしますか?
369nobodyさん:2010/06/11(金) 12:24:55 ID:E6U8qQpk
AND(絞り込み)検索を簡単にする方法、あるいは関数などないでしょうか?

http://q.hatena.ne.jp/1160731894

ここを読んだ限り、"いちご AND バナナ" などのキーワードに整形すると
AND検索をしてくれる関数があるように思えるのですが。。

それとも、Keywordをスペースで分割して、一つ一つif文でつなげて
mb_strposしていくしかないのでしょうか?
370nobodyさん:2010/06/11(金) 12:31:26 ID:???
まあ、SQLのことですね。
データベースでないなら、ちまちまやるしかないです。

#LINQ PHPなんてものもあるんだな。
371nobodyさん:2010/06/11(金) 12:32:55 ID:/BtEfgaD
データベース
372nobodyさん:2010/06/11(金) 12:34:59 ID:E6U8qQpk
>>370

レスありがとうございます。
やはりSQL限定ということですね。

自分の用途としては、
HP上にある文字列をscrapで取り出して、 保存していたキーワードを使って検索というものです。

例えば、 "りんご バナナ" というキーワードをデーターベースに登録。
HP上で ”りんご ぶどう バナナ” などのように絞り込み検索に適合するものがアップされたらマッチするといったものです。
373nobodyさん:2010/06/11(金) 14:39:35 ID:1mHG41R+
ファイルの読み込み速度のことで困っています。

現在、外部サーバにあるファイルを取得したいと考えているのですが、
どうも取得に5秒近くかかってしまいます。

また、ローカルのファイルであれば100ms程度で取得が完了します。

この開きをなるべく縮めたいのですが、何か解決策はありますでしょうか?
アドバイスよろしくお願いします。

環境:Win7/Apache2/PHP5
374nobodyさん:2010/06/11(金) 14:43:31 ID:???
>>373
PHPでどうこうなる問題じゃない
レスポンスの速い外部サーバにかえてください
375373:2010/06/11(金) 14:48:12 ID:1mHG41R+
>>374
ありがとうございます。

説明不足でしたが、いかなる外部サーバであっても結果は同じなんです。
違いはローカルかそうでないかという点のみです。

ブラウザのように高速にファイルを取得することはできないのでしょうか?
376nobodyさん:2010/06/11(金) 14:50:17 ID:???
ファイルを取得してる部分のソースは?
377373:2010/06/11(金) 14:56:15 ID:1mHG41R+
>>376
今は簡単に file_get_contents で取得しています。

file_get_contents("http://www.google.com/"); //遅い
file_get_contents("http://66.249.89.99/"); //IP指定するも変化なし
file_get_contents("./index.html"); //ローカルであれば高速

先ほどローカル内で他サーバのファイルを取得してみましたが、
やはりこちらも時間がかかってしまいました。

file_get_contents("http://192.168.1.25/index.html");
378nobodyさん:2010/06/11(金) 15:03:44 ID:???
外部サーバから外部サーバのファイル取得ではなく、
ローカルから外部サーバのファイル取得?
そのスクリプト自体はサーバのレスポンス次第ですぐ返ってくる
www.google.comだと一瞬
ファイアーウォールとかが邪魔してるんだろうか
379373:2010/06/11(金) 15:10:07 ID:1mHG41R+
>>378
今はローカルサーバから外部サーバへの接続という形ですが、
将来的には外部サーへ移行させる予定です。(完成次第)

先ほどファイアーウォールをすべて無効にした上でテストしてみましたが、
結果に変わりはありませんでした;
380nobodyさん:2010/06/11(金) 15:18:06 ID:???
サーバーで wgetってやっても遅いんじゃない?サーバーの設定の問題かも。
381nobodyさん:2010/06/11(金) 15:20:09 ID:???
>>379
サーバ(かPHP?)のipv6をdisabると良い


らしい↓
http://www.directadmin.com/forum/showthread.php?t=35549
382373:2010/06/11(金) 15:32:53 ID:1mHG41R+
>>380
サーバ機にインストールされているブラウザでは通常のスピードで
ページの読み込みができました。

>>381
どうやらこちらが怪しいみたいなので、もう少し時間を置いて設定を
見直してみたいと思います。

下らない質問にお付き合い頂きありがとうございました。
383nobodyさん:2010/06/11(金) 16:53:35 ID:bRlHND6j
質問です。
Cache_Liteを使ってキャッシュを保存しているんですが
新着があった場合(キャッシュがない場合)に、
キャッシュとの差分のみ(新着部分のみ)を取得することってできませんか?
384nobodyさん:2010/06/11(金) 20:34:14 ID:???
385nobodyさん:2010/06/11(金) 20:44:10 ID:???
http://pc11.2ch.net/test/read.cgi/php/1166232514/931
これって終わってない?海外は情報も多いので兎も角、国内www
386nobodyさん:2010/06/11(金) 20:44:11 ID:/BtEfgaD
1.htmlと2.htmlの差分抽出を求めることでキャッシュは必然ではない。
387nobodyさん:2010/06/11(金) 22:08:35 ID:???
>368
開発環境はWindows or Macだが、動作させる開発サーバーはLinux(仮想マシン)で、本番環境と同じもの。
ディストリは某日本語サポートのあるものを使っている。
388nobodyさん:2010/06/12(土) 05:44:24 ID:???
>>382
自分の環境でもfile_get_contentsはすっごい遅かった、cURLの1、5倍ぐらい遅い
<?php
function curl_get($url) {
  $ch = curl_init();
  $option = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true, //結果を出力させない
    CURLOPT_BINARYTRANSFER => true, //結果を加工しない
    CURLOPT_FORBID_REUSE => true, //処理が終了した際に接続を切断
  );
  curl_setopt_array($ch,$option);
  return curl_exec($ch);
}
echo "file_get_contents<br />";
for($i = 1 ; $i <= 10 ; $i++) {
  $time_begin = microtime(true);
  file_get_contents("http://www.google.com/");
  echo $i." : ".(microtime(true)-$time_begin)."s<br />";
}
echo "curl<br />";
for($i = 1 ; $i <= 10 ; $i++) {
  $time_begin = microtime(true);
  curl_get("http://www.google.com/");
  echo $i." : ".(microtime(true)-$time_begin)."s<br />";
}
389nobodyさん:2010/06/12(土) 05:57:57 ID:???
1.5倍なら大したことないじゃん
390nobodyさん:2010/06/12(土) 06:00:00 ID:???
1.5倍どころじゃないわ、3-4倍ぐらい違う
file_get_contents
1 : 0.282200098038s
2 : 0.286005020142s
3 : 0.289804935455s
4 : 0.285599946976s
5 : 0.285084962845s
curl
1 : 0.110718011856s
2 : 0.0746190547943s
3 : 0.0745959281921s
4 : 0.0765240192413s
5 : 0.0723419189453s
391nobodyさん:2010/06/12(土) 06:06:46 ID:???
1/10秒でそこまでするのもな・・・
5秒ってのが明らかに異常なわけで
392nobodyさん:2010/06/12(土) 14:05:51 ID:CAUo94F7
最近PHPを始めたものです。とても初歩的な事を聞くようで申し訳ないのですが…

PHPを書いたファイルをWEBサーバで開いたところ何も表示されず、真っ白いままです。
おそらく、コーディングに誤りがあるのだと思うのですが、式が膨大な量なためどこにミスがあるのか見つけるのが大変です><
エラーメッセージを出して誤りのヒントを探りたいのですがどうやったらいいのでしょうか?
できれば、何行目にミスがあると指定してくれるものがあれば最高です。。ご教授くださいませ…
393nobodyさん:2010/06/12(土) 16:52:59 ID:???
デバッガ使う
394nobodyさん:2010/06/12(土) 19:06:06 ID:???
>>392
とりあえず、Webサーバの方のエラーログを覗いてみたら何か出てるかもよ。
395nobodyさん:2010/06/12(土) 20:29:04 ID:???
>>392
ローカルでエラー表示するような実行環境作るといいよ
396nobodyさん:2010/06/12(土) 21:18:33 ID:???
<?php
$domain = "127.0.0.1";
$fp = fsockopen ( $domain , 80 );
fwrite($fp, "Referer: http://www.google.co.jp/\r\n");
fclose($fp);
?>
<a href=http://www.kojikoji.net/>確認</a>



こう書いても送られるリファラがhttp://www.google.co.jp/になりません
原因はなんでしょうか
397396:2010/06/12(土) 21:19:17 ID:7hIU3RqJ
すいません、ID出すのを忘れていました
398nobodyさん:2010/06/12(土) 22:10:26 ID:???
えっ・・・?
399nobodyさん:2010/06/13(日) 00:36:25 ID:???
リファラを設定するのは誰だろうね
400nobodyさん:2010/06/13(日) 00:47:14 ID:???
ぐぐって、ちゃんとできてるやつ真似たらどうでしょう。
http://d.hatena.ne.jp/mgng/20090430/1241059100
2種類入ってるので、どっちかでテストしてみては

401nobodyさん:2010/06/13(日) 03:03:14 ID:???
php でおもしれえサイトハケーン

ttp://2chtocsv.zzg.jp/

2ちゃんのスレをCSVにするらしい
今まで無かったのが不思議だな
402nobodyさん:2010/06/13(日) 03:58:04 ID:???
宣伝乙
こんなのこのスレにいるやつなら誰でも作れますから
403nobodyさん:2010/06/13(日) 05:50:13 ID:???
>>402
正規表現と、多少の知識あればいけるなって事で同意w
てか、金取ってねぇサイトで宣伝乙もさもしいなw
404nobodyさん:2010/06/13(日) 09:43:25 ID:???
正規表現必要か・・・?
405nobodyさん:2010/06/13(日) 14:27:11 ID:???
でっcSVにしてどうすんの?
406nobodyさん:2010/06/13(日) 17:14:55 ID:???
>>405
Microsoft Moneyにインポートする
407nobodyさん:2010/06/13(日) 18:57:45 ID:0BtVGJ62
Fatal error: [] operator not supported for strings の対処方法でお助けくだされ。

$array = array("33","55");

foreach ( $array as $array ) {

//全角数字を半角に
$array = mb_convert_kana($array , "n");

$test = array();
$test[] = $array;

}

上記のようにしてもエラーが消えず、配列に格納できないのです。
408nobodyさん:2010/06/13(日) 19:02:49 ID:???
> foreach ( $array as $array ) {
409nobodyさん:2010/06/13(日) 19:06:57 ID:0BtVGJ62
>>408

おおーーーーー!!!
上手くいきました!!

ありがとうございます!!!

これでめちゃくちゃはまってたんです。

Thank you!!!!
410nobodyさん:2010/06/13(日) 19:07:09 ID:ebiz4dpp
$array = array("33","55");

foreach ( $array as $array ) {
411nobodyさん:2010/06/13(日) 19:07:36 ID:0BtVGJ62
foreach使う時は 同じ名前の変数を使ってはいけないのですね。。
これからは気をつけたいと思います。
412nobodyさん:2010/06/13(日) 19:34:32 ID:0BtVGJ62
"06/12 タイトル 花見" 

半角スペースで区切られた文字列があります。

この最初のスペースが出現するまでの "06/12" の最初の文字列のみを削除して、

"タイトル 花見" という文字列を作るにはどうすればよいでしょうか?



逆引きレシピを参考にそれらしい関数を探しているのですが、
どうにも見つからず。。
413nobodyさん:2010/06/13(日) 19:53:48 ID:???
>>412
strstr
414nobodyさん:2010/06/13(日) 20:14:37 ID:0BtVGJ62
>>413

ありがとうございます!!
これでなんとか出来そうです!
415nobodyさん:2010/06/13(日) 21:11:04 ID:gv6bC0io
janeのNGFiles.txtに書かれているようなハッシュ値にMD5を変換したいと思います。
http://ideone.com/bNeGf を移植して実現しようと思っているのですが、どうにもうまくいきません。

どなたかMD5→NGFiles.txtのハッシュ値変換のサンプルをください。
416nobodyさん:2010/06/13(日) 21:15:01 ID:???
>>403
dat ファイル見たことある?
417nobodyさん:2010/06/13(日) 21:25:24 ID:???
http://pc11.2ch.net/php/dat/1275032024.dat

<>をカンマに置き換え
文字列のカンマをエスケープする
終了
418nobodyさん:2010/06/13(日) 22:10:02 ID:???
そしてカンマいなくなった・・
419nobodyさん:2010/06/13(日) 22:30:54 ID:???
DATファイルに<BR>とか入ってるのね
420nobodyさん:2010/06/14(月) 05:13:57 ID:???
Excelのインポート時に区切り文字を<>にすればよい。
421nobodyさん:2010/06/14(月) 05:58:34 ID:???
お前ら突っ込みが容赦ないな
>>401はがんばって作ったんだよ
ほめてやれよ
422nobodyさん:2010/06/14(月) 12:30:36 ID:Ea+qDap6
【PHPのバージョン】5.3
if(!empty($var['a']) || !empty($var['b']) || !empty($var['c'])){
$varの配列のキーが可変の場合
上記のようにa,b,cとキーを指定しなくても
どれかの値が入ってればtrueと判別出来る方法ありますか?
423nobodyさん:2010/06/14(月) 12:37:52 ID:???
$b = false;
foreach ($var as $a) {
if (isset($a)) {
$b = true;
break;
}
}
424nobodyさん:2010/06/14(月) 12:48:47 ID:Ea+qDap6
サンクス
425nobodyさん:2010/06/14(月) 13:04:21 ID:???
issetと !empty動作違うので注意ね。 ""のときとか。
426nobodyさん:2010/06/14(月) 14:32:12 ID:Pwcpy8Zl
良くある風俗の出勤管理のシステムを作ってるのですが、

【管理画面でやりたい事】
・管理画面でアクセスした日から一週間分の出勤予定データを登録できる。

【表示ページ】
・日付ごとに出勤予定の女の子の写真と名前表示

【現在の状況】
・table「girlsprof」で女の子のID、名前、プロフを管理。

【質問】
出勤予定を管理できるよう、table「schedule」を作って管理しようと思ったのですが
このtableにはどのようなカラムをもたせればよいですか?

例1:6/1 6/2 6/3 6/4と月日を全部カラムにしておき、管理画面ではプログラムでその日から一週間分を
取得し、それぞれの日付と一致するカラムを更新。ってやらないとだめなのか?

例2:1〜31までをカラムとする。しかしこれだと、30日に管理画面をひらいたときは本来なら30日〜翌月の5日までの
予定を登録できなきゃいけないのに、その月の日数(2月は28日までしかない)とかによっても、狂ってきてしまいます。

これはどうやれば解決できますでしょうか?
427nobodyさん:2010/06/14(月) 14:44:10 ID:???
プログラマを雇う
428nobodyさん:2010/06/14(月) 14:45:04 ID:???
そういうのだったら普通は、日付と女の子IDと出勤予定ありなしの3カラムじゃねーの?
429nobodyさん:2010/06/14(月) 14:55:50 ID:???
ISO 8601のYYYY-DDD形式で入力してもらう
430nobodyさん:2010/06/14(月) 15:02:29 ID:Pwcpy8Zl
>>出勤予定有り無しは確かに必要ですね!ありがとうございます。
3カラムだけって事は日付の部分はどう管理するんですか?

日付にも、
何月かの情報を含めて365カラム(うるう年も考えて366カラム)か
1〜31日までの31カラムかとかいろいろあると思うのですが、

3カラムだけで管理するとなると、どうやるのでしょうか?
日付のカラムに出勤予定日を追記していく感じでしょうか?
それだと、過ぎた過去の日にちも残ってしまうということでしょうか?
431nobodyさん:2010/06/14(月) 15:15:11 ID:???
>>430
PHPがどうのこうの以前の話
データベース板へどうぞ
432nobodyさん:2010/06/14(月) 15:21:35 ID:???
>>430
一週間分なので、"何日から"かと7日分の出勤予定。 表示側なり管理画面では
今日から一週間分の予定をそこから出す。範囲外だったら予定なし。 未定と休み分けるんなら別カラムか
分かるような値にしとく。
3カラムってのは、出勤用に別テーブルで ID、日付、出勤データ つくる形かと。 どっちも一長一短あるので好きな方で。
433nobodyさん:2010/06/14(月) 15:34:24 ID:???
良くある風俗の出勤管理のシステムを作ってるのですが、 | OKWave
http://okwave.jp/qa/q5968001.html
434nobodyさん:2010/06/14(月) 15:36:35 ID:???
>>430
普通は横に持たず、縦に持つ。
表示する時にそれを加工する。
過去のデータがどうしても要らないなら毎日、もしくは毎週削除する処理をつくるが、
あったら困るものでもないと思う。
435nobodyさん:2010/06/14(月) 15:46:37 ID:???
こんなに釣り師にやさしいスレは初めて拝見したんだぜ

まぁ、こんなでいいんじゃないの?
girlsprof: | ID | 名前 | プロフ |
schedule: | ID(girlsprofのIDと一致) | 出勤日 |

例)
girlsprof:
| 0001 | ブス子 | ア○ルもおkです |
| 0002 | デブ美 | デブでよければ |
schedule:
| 0001 | 2010-06-25 |
| 0001 | 2010-06-26 |
| 0002 | 2010-06-25 |

女の子のIDで検索すればその子の出勤日が取得できるし、日付で
検索すればその日に出勤する女の子が取得できるから充分でしょ。
436nobodyさん:2010/06/14(月) 15:48:39 ID:???
>>433
わざわざOKWaveに登録してマルチを装うなんてお前も暇だなw
437nobodyさん:2010/06/14(月) 16:23:40 ID:???
>>433
マルチに見せかけとか正直ひくわ・・・
お前が日本人ではないことを祈るよ
438nobodyさん:2010/06/14(月) 16:32:32 ID:hKCZ/dhE
質問がそのままコピペでワロタ
439nobodyさん:2010/06/14(月) 16:35:40 ID:???
>>436-437
お前らよくマルチに見せかけとかわかるな

俺にはお前らのレスが「マルチに見せかけという事にしたい」と見えてしまうよ
邪推かな?
440nobodyさん:2010/06/14(月) 16:36:24 ID:???
>>437
祈られてもオレは日本人w 日本人は善人ていう思い込みは一体どこから?w
441nobodyさん:2010/06/14(月) 16:41:32 ID:???
>>439
ヒント:登録日

>>440
日本人が優れた人種とは一言も言っていない
要するにこんなくだらんことを思いつくようなやつはチョン以外ありえないって言いたかったんだよ
分かりにくくて悪かったな
442nobodyさん:2010/06/14(月) 17:01:22 ID:???
一つ間違いないのはマルチするやつも、見せかけるやつもクズだってことだ。
443nobodyさん:2010/06/14(月) 17:20:19 ID:???
もう一つ間違いないのは>>426が最もクズだってことだ。
444nobodyさん:2010/06/14(月) 18:18:39 ID:154tZPz8
今までXHTMLで作っていたものをhtml5で作ってみようといじっていたのですが、
下のようにドキュメント宣言を変えただけなのですが、何故かPHPの部分が出力されなくなりました。
なんででしょうか?? apacheの設定が別途必要なのでしょうか??

index.htm
------------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 …
</head>
<body>
<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/aaa.php'); ?>
 …



<!DOCTYPE html>
<html lang=="ja">
<head>
 <meta charset="utf-8" />
 …
</head>
<body>
<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/aaa.php'); ?>
 …
445nobodyさん:2010/06/14(月) 18:33:38 ID:???
ショートオープンタグをOFFにするとか 1行目 echoで出せば直るかも。
446nobodyさん:2010/06/14(月) 19:06:51 ID:???
上のは間違い。
447nobodyさん:2010/06/14(月) 19:46:52 ID:???
>>444
apacheの設定は必要ないだろうからそれだけじゃ分からないよ。
PHPの部分だけ表示されないとの事だけど、肝心のPHPの部分はどうなってるの?
includeしなきゃ表示される?
448nobodyさん:2010/06/14(月) 20:24:19 ID:IP77a2fP
file_get_contentsでは失敗するとfalseが戻りますが404だったときに404を取得する方法はありますか?
449nobodyさん:2010/06/14(月) 20:25:36 ID:154tZPz8
>>445
short_open_tagはoffになってました
>>447
XHTMLのものをそのまま使ってるだけなので
PHPのコード自体は問題ないはずです

試しに
<?php include_once($_SERVER['DOCUMENT_ROOT'] . '/aaa.php'); ?>
の部分を
<?php echo 'test php';?>
に変えてみたのですが、やはり表示されなかったです
450nobodyさん:2010/06/14(月) 20:33:57 ID:???
>>448
file_get_contents 404 で検索。
451nobodyさん:2010/06/14(月) 20:42:11 ID:qzix/x5L
"4時限 日本のメディアと文学 千田 洋幸 教育 "

"4時限 日本のメディアと文学 千田 洋幸 教育"

上のように、半角スペースやタブなど様々な要素が混ざっている文字列を
下のように半角スペース区切りで整形したいです。


■考えたコード

//全角数字を半角に
$keyword = mb_convert_kana($keyword, "n");

//全角スペースを半角に
$keyword = mb_ereg_replace('[ ]{1,}', ' ', $keyword);

$keyword = trim($keyword);

上記のようなコードでは上手くいかなかったのですが、
どうすれば綺麗に整形できるでしょうか?
452nobodyさん:2010/06/14(月) 20:48:46 ID:???
$keyword = str_replace( array(" "," ","\t")," ",$keyword);
453nobodyさん:2010/06/14(月) 21:17:59 ID:qzix/x5L
>>452

ありがとうございます!

試してみたのですが、

” 1時限 社会開発論 店田 廣文 人科”

このように2以上のスペースやタブの時に完全に半角スペースひとつになりませんでした。。
454nobodyさん:2010/06/14(月) 21:20:36 ID:qzix/x5L
$words =" 4時限 日本のメディアと文学 千田 洋幸 教育 ";
$words = trim($words);
$words = preg_split("/[\s,]+/",$words);

正規表現で分割してみたのですが、全角スペースが分割されませんでした。
全角スペースも分割する方法はあるでしょうか?


array
0 => string '4時限' (length=9)
1 => string '日本のメディアと文学' (length=30)
2 => string '千田 洋幸' (length=15)
3 => string '教育' (length=6)

この ”千田 洋幸” も分割したいです。
455nobodyさん:2010/06/14(月) 21:32:25 ID:???
>>454
正規表現に全角スペースを足せばいいじゃん
456nobodyさん:2010/06/15(火) 04:36:19 ID:???
<form enctype="text/css" action="<?php echo $PHP_SELF; ?>" method="get" >
<?php
if(is_null($shu)){
種類:<input type="text" name="shurui">
付属品:
<select name="huzoku">
<option value="abc">ABC</option>
<option value="lmn">LMN</option>
<option value="xyz">XYZ</option>
</select><br>
<input type="submit" value="送信">
}
else{
$shu = $_GET['shurui'];
$huz = $_GET['huzoku'];
echo "Your choice is $shu with $huz";
}
?>
</form>

見にくいコピペですいませんが、if文内のタグがすべてエラー対象になってしまいます。
何がいけないのかどなたかご教授のほどを…
457nobodyさん:2010/06/15(火) 05:05:47 ID:???
文法くらいなんとかしろよ
458nobodyさん:2010/06/15(火) 10:27:34 ID:???
これはひどい
459nobodyさん:2010/06/15(火) 11:02:33 ID:???
SHIFT-JIS環境でPHPファイルを作ってしまい、
それをUTF-8にすると、コメントがすべて文字化けしてしまうのですが、
どうすれば日本語を文字化けせずにUTF-8に変更できるでしょうか?
SHIFT-JISからUTF-8にすると文字コードの違いから
文字化けしちゃうのはわかりますが、対処策がわかりません
460nobodyさん:2010/06/15(火) 11:09:33 ID:???
>>1
461nobodyさん:2010/06/15(火) 13:53:31 ID:???
すみません、スレ違いでした
462nobodyさん:2010/06/15(火) 14:25:48 ID:FYWiA/i5
>>455

ありがとうございます。上手く行きました!
463nobodyさん:2010/06/15(火) 14:29:04 ID:FYWiA/i5
array
0 => string '' (length=0)
1 => string '' (length=0)
2 => string 'テスト' (length=9)
3 => string '12' (length=2)

このような配列の時、配列の中身があるものだけ残すには
どのようにすればよいのでしょうか?

array
0 => string 'テスト' (length=9)
1 => string '12' (length=2)

最終的にこのように変換したいです。

マニュアルを調べたところ、array_spliceでやるのかなと思っているのですが、
やり方がなかなか分かりません。
464nobodyさん:2010/06/15(火) 14:43:49 ID:???
ループさせるのが簡単でいいんじゃね
465nobodyさん:2010/06/15(火) 14:51:30 ID:FYWiA/i5
>>464

できればもう少しヒントを! 使う関数名だけでもよいので!
466nobodyさん:2010/06/15(火) 15:04:30 ID:???
つarray_filter

ただし添え字は詰めてくれないのでarray_mergeあたりと併用
467nobodyさん:2010/06/15(火) 15:05:59 ID:???
素直なものなら
for ( $i = 0 ; $i < count($array) ; $i++) {
if ( $array[$i] ==""){
array_splice( $array ,$i,1);
$i--;
}
}
468nobodyさん:2010/06/15(火) 15:15:54 ID:FYWiA/i5
>>466 >>477

ありがとうございます! 
ヒントをもとにいろいろ試してみます!
469nobodyさん:2010/06/15(火) 15:18:12 ID:???
$WK = array('','11','','','22','33','','44','');
echo "元の状態\n";
var_dump($WK);

$WK2 = array();
foreach($WK as $WK1)
{
if((isset($WK1) === true) and (strlen($WK1) > 0))
{
$WK2[] = $WK1;
};
};

echo "\n結果\n";
var_dump($WK2);
470nobodyさん:2010/06/15(火) 15:19:29 ID:???
>>467で結果が出ていたか
471nobodyさん:2010/06/15(火) 15:26:53 ID:???
$a = array_merge(array_filter($a, function($s){return strlen($s) > 0;}));
472nobodyさん:2010/06/15(火) 15:27:54 ID:wrbhrBX4
>>463
$array = array('', '', 'テスト', '12');
var_dump(array_diff($array, array('')));
473nobodyさん:2010/06/15(火) 17:38:39 ID:pnwlJPRh
会員サイトでユニークID何にするか迷ってるんだけど
UNIXタイムスタンプってよくない?
474nobodyさん:2010/06/15(火) 18:02:28 ID:???
別にそれでもいいけど、それなら連番でもよくね?
475nobodyさん:2010/06/15(火) 18:45:33 ID:???
いやこう登録した時間も分かるし一石二鳥みたいな?
476nobodyさん:2010/06/15(火) 19:41:36 ID:???
そして同じ時刻に2人登録して罠に...
477nobodyさん:2010/06/15(火) 21:01:27 ID:???
同じ時刻に登録されるのが怖いならmicrotime()使えば?
1秒間に10万人が登録しても余裕(1マイクロ秒=100万分の1秒)
478nobodyさん:2010/06/15(火) 21:07:40 ID:???
それでもやっぱり所詮は確率なのであった。ま、シングルコアなら
大丈夫な気がするけどw
479nobodyさん:2010/06/15(火) 21:09:11 ID:???
DB使え。登録日もいれとけ。
480nobodyさん:2010/06/15(火) 21:10:43 ID:???
会員ID&日時でいいじゃん。
481nobodyさん:2010/06/15(火) 21:17:55 ID:???
まあ普通は登録日時は別にとっとくもんだ。
482nobodyさん:2010/06/15(火) 22:49:42 ID:???
まあファイルロックでもして待たせればタイムスタンプでもいいわな
483nobodyさん:2010/06/15(火) 23:14:51 ID:???
uniqidっていうユニークIDを生成する関数があるよ。
484nobodyさん:2010/06/16(水) 00:23:12 ID:???
普通連番だろ
それ以外にする理由がない
485nobodyさん:2010/06/16(水) 00:35:10 ID:???
IDをユーザが決められるようにすればいいじゃん
登録時に既存のIDをチェックして、重複が発生しないようにする
486nobodyさん:2010/06/16(水) 00:44:04 ID:???
まあ掲示板みたくIDを表示する必要があるならそれでいいが
最近はメールアドレスをID代わりにするのがトレンド
487nobodyさん:2010/06/16(水) 01:27:08 ID:???
そして連番にして番号をずらせば他の人の情報が読めちゃう不思議仕様に
488nobodyさん:2010/06/16(水) 01:41:37 ID:sfuhSdY7
拡張子がPHPのファイルにはアクセスさせない、ってのをしたいんですけど、
$HTTP["url"] == "\.(php)$" {
{url.access-deny = ( "" )
}

http://exprode.net/index.php?id=087
http://exprode.net/index.php?id=908700
http://exprode.net/index.php?id=adomin

のようなURLまで対応させるにはどうしたらいいでしょうか?
489nobodyさん:2010/06/16(水) 01:43:16 ID:???
メールアドレスをID代わりにするデメリットもあるよね。
490nobodyさん:2010/06/16(水) 01:46:07 ID:???
>>488
それはPHPの話なのかな?
Webサーバ(lighttpd?)でアクセス制限したいように見えるけど…。
491487:2010/06/16(水) 01:56:07 ID:sfuhSdY7
質問的には正規表現ですね
linux板で聞きます
492nobodyさん:2010/06/16(水) 02:52:57 ID:???
環境Eclipse for PHP Developers(eclipse3.5.2)を使用しています。

デバッグにて引数を渡したいのですが、
メニュー > 実行 > デバッグの構成 > PHPスクリプト引数
に値を設定してもデバッグ時に$_GETの中に値が入ってくれません。
(具体的には、hoge.php?id=1 とし、$_GET['id']で1が取れる事を期待しているのですが・・・)

実行時に引数を渡してやるにはどうしたらよいのでしょうか。
よろしくお願いします。
493nobodyさん:2010/06/16(水) 05:28:00 ID:MIQQfYzz
PHP+PDOで、検索結果の総レコード数を取得したいです。

SELECT * FROM tablename WHERE ( colum BETWEEN 10 AND 20 ) LIMIT 25; # 実際には320件ある
rowCount()だと当然「25」となります。
総レコード数である「320」を取得する効率的な方法を教えてください。

現在は、以下のように2回クエリを発行して対処しています。

$stmt = $pdo->query( 'SELECT COUNT(*) FROM tablename WHERE ( colum BETWEEN 10 AND 20 );' );
list( $count ) = $stmt->fetch();
echo $count;
$stmt = $pdo->prepare( 'SELECT * FROM tablename WHERE ( colum BETWEEN 10 AND 20 ) LIMIT 25;' );
$stmt->execute();

他に定石的な方法はありますでしょうか?
494nobodyさん:2010/06/16(水) 05:43:29 ID:???
2回投げるしかないと思うよ。
495nobodyさん:2010/06/16(水) 07:55:42 ID:J3wcOhw/
【OS名】Windows Vista
【PHPのバージョン】PHP5.10.1
【連携ソフトウェア】MySQL ActionScript3.0
【質問内容】
プログラム初心者です。スレチだったら誘導して頂けると幸いです。
現在、FlashとDBを連携させるプログラムを作っているのですが、
その仲介としてPHPを利用しています。
echo文を使ってFlash側に変数の受け渡しをしようと思っているのですが
PHP側で
echo "key=".$key;
とすると、Flash側に変数$keyを渡すことが出来ているのですが、
echo "key=".$key;
echo "val=".$value;
と記述すると、Flash側の変数keyに文字列として
$keyval=$value;
※&変数には実際の値が入っています。
と表示されてしまいます。

どのような記述をすれば二つの変数をうまくFlash側に渡すことが出来るでしょうか?
よろしくお願いします。
496nobodyさん:2010/06/16(水) 09:07:59 ID:???
MX時代の知識だからバージョンによって違うかもしれないけど
FlashとPHPでの値のやり取りは変数名=値&変数名=値… と&で連結する必要が
あったんじゃなかったかな
あと気をつけるのはphp側の文字エンコード
497nobodyさん:2010/06/16(水) 11:36:03 ID:???
>>493
SELECTは一回で済むけど、結局内部的には二回じゃないのか? であり、
なおかつメモリ効率的には「俺って馬鹿げたことしてんなぁ」という方法

countする方をサブクエリにして、その結果を検索結果の方の一カラムに収める。
(検索結果行の全てに、同じ値(count結果)が収まってるカラムが付いちゃう)



MySQLだったら、SELECTは二回だけど二回目は実際の検索はしないから軽い(だろう)という方法有り(他は知らない)

SQL_CALC_FOUND_ROWS でぐぐってみてね。
498nobodyさん:2010/06/16(水) 11:40:12 ID:???
後半のlimitって、count取ってからごにょごにょして作ったりしない?
499nobodyさん:2010/06/16(水) 12:34:49 ID:???
countは全部数えるしかないし、limitつきのselectは適切なインデックスが
あれば全部見なくても値を返せるから別の処理。2回やってもしょうがない
と思う。まあインデックス使えなければ条件で全部ナメが2回走るかも
だけど、それはむしろインデックス用意しろだな。countとlimitつきのselectを
分けたいぐらい要素数が多いのならその価値はあるだろう。
500nobodyさん:2010/06/16(水) 13:56:16 ID:6gbQuGMY
http://www.plusmb.jp/2008/12/19/1775.html
ここ等を参考に、swfmillで作成した携帯向けFlashを
header('Content-type: application/x-shockwave-flash');
echo $swfOutput;
のように返すと何故か
FireMobileSimulatorでは表示できるのに携帯では表示できない。

いったんfile_put_contentsでファイルに書き出し、そこにLocationヘッダで飛ばしてやると
携帯でも表示される。

ディスクI/Oを減らすためできればファイル吐かずに済ませたいんですが、
何かお知恵はありませんでしょうか。
501nobodyさん:2010/06/16(水) 14:10:56 ID:???
>>500
2つの場合でヘッダに違いがないかよーく比べてみるとなにかわかるかも?
502nobodyさん:2010/06/17(木) 04:56:28 ID:mKgRGi9a
PHPでブログ投稿したいのですがそのようなアプリありますか?
503nobodyさん:2010/06/17(木) 05:16:08 ID:???
phpのセッションはどうやってクライアントを判別してるのでしょうか?

504nobodyさん:2010/06/17(木) 05:20:16 ID:???
あクッキーみたいですね
IPで判別してるのかと思ってました。
クッキーにランダムな文字列のセッションIDだけを入れて
後はサーバー側に保存と・・
505495:2010/06/17(木) 05:26:02 ID:sy18pq7k
>>496
お返事が遅くなって申し訳ありません。
試してみます。
回答ありがとうございました。
506nobodyさん:2010/06/17(木) 09:29:50 ID:Ii8+nE6y
質問いたします。
送信フォームなどで使うボタン。以下のように書けばボタンの代わりに画像を使うことができますよね。

<input type="image" src="image.gif" name="sub" /> ←(ボタンの代わりに、“image.gif”という画像を使う)

そこで、画像の代わりに文字列を使うことは出来ますでしょうか?どういうことかと申しますと、普通によくあるリンク
(< href="xxxxxxxxx.html">リンク</a>)を張る感じで、それをクリックするとデータを送信させるようにしたいのです。

例えば、これは私の予想ですが、ヤフオクとかで条件を絞り込む場合、
「デスクトップ」という文字列のリンクがあり、それをクリックすると「デスクトップ」というデータを送信し、それを抽出して表示…
という仮定を踏んでいるものだと思っています(間違ってたらすいません)。

皆様のお知恵を拝借したいと思います。宜しくお願いします。
507nobodyさん:2010/06/17(木) 09:40:25 ID:???
POSTとGETリクエストは理解してるの?
508nobodyさん:2010/06/17(木) 11:47:14 ID:Ii8+nE6y
>>507
POSTとGETリクエストは理解してるの?
理解はしてる…つもりです。一応ですけど。
<input type="image"……で、画像を使った時はうまくいきました。
509nobodyさん:2010/06/17(木) 12:03:43 ID:???
506はずっとPOSTの話をしていると思うけど、
ヤフオクの例はGETなんじゃねーの?ってことを
507は言いたいんだと思う。

ちなみにリンクでsubmitしたければ、javascriptで
onclickイベントにsumbitを書けばおk
510nobodyさん:2010/06/17(木) 18:22:02 ID:???
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>">
<input type="text" name="search">
<input type="submit" value="search!!">
</form>
<?php
if(isset($_POST["search"])){
$str = $_POST["search"];
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
$url = "http://search.yahooapis.jp/WebSearchService/V1/webSearch?appid=***&results=2";
$url .= "&query=".urlencode($str);
$data = simplexml_load_file($url);
print_r($data);
}
?>

検索したい言葉を入れて、Yahooの検索APIから検索結果を表示させたいんだけど、
検索結果が文字化けしちゃうし、日本語の検索キーワードを入力すると検索結果0件になっちゃうんだけど
どこがおかしいの?
511nobodyさん:2010/06/17(木) 19:55:52 ID:???
>>510
スレタイを読まないお前の頭
512nobodyさん:2010/06/17(木) 23:06:44 ID:???
勝手に質問だと思い込むのはやめてもらえませんか?
513nobodyさん:2010/06/17(木) 23:11:18 ID:???
>>511
「くだらない質問をするときはIDを出さなければならない」とは書かれているようですが、それがいかがなさいましたか?
514nobodyさん:2010/06/17(木) 23:11:53 ID:???
質問じゃないならスレ違い
515nobodyさん:2010/06/17(木) 23:14:24 ID:???
>>514
くだらなくない質問もですか?
516nobodyさん:2010/06/17(木) 23:15:55 ID:???
「くだらなくない質問もですか?」は明らかにくだらない質問だな
517nobodyさん:2010/06/17(木) 23:18:39 ID:???
>>515
もちろんスレ違い。
くだ質というのは昔からそのようにできている。
518nobodyさん:2010/06/17(木) 23:18:57 ID:WMbR8KJ3
亀で横からなんだけど、
>>30でUAを設定してるのと設定してないので取得できる量が変わるのはなんで?
519nobodyさん:2010/06/17(木) 23:21:50 ID:???
なんでかわからんが、そのうちはまりそうな気配がするな。
パケットキャプチャしたりするとわかるのかな。
520nobodyさん:2010/06/18(金) 00:26:09 ID:df2633Ti
php-5.3.2-srcをDLしたんですが
php4ts.dllをシステムフォルダにコピーすればいいらしいんですが
php4ts.dllが見つかりません
どこにおいてあるのでしょうか?
521nobodyさん:2010/06/18(金) 00:27:56 ID:???
>>520
なんでそんなことしてんの?
522nobodyさん:2010/06/18(金) 00:41:58 ID:df2633Ti
http://www.scollabo.com/banban/php/apd_02.html
このサイトによると必要らしいので
523nobodyさん:2010/06/18(金) 00:49:38 ID:???
windowsへのインストールなら、xamppでいいじゃん。
少なくともそこのサイトの通りやっても5系の入れられないし、
あなたがダウンロードしちゃったのはソースなので使えないです。
524nobodyさん:2010/06/18(金) 01:29:12 ID:df2633Ti
ええっーマジですか…
回答ありがとうございます
525nobodyさん:2010/06/18(金) 01:57:21 ID:???
>>523
残婦なんか勧めるなよ
あれは「分かってるヤツ」がほんの若干の手間を省くためのもの

>>524
どこにソースをダウンロードなんて書いてあんだよ
http://windows.php.net/download/
から
x86 Thread Safe
の Installer を落とせ
526nobodyさん:2010/06/18(金) 03:13:36 ID:df2633Ti
>>525さん
インストーラーを落としましたサンクスです
インストールする時にother cgiを選んだんですがこれでもいいですよね?
あとインストールすればすぐにPHP使えますか?
527nobodyさん:2010/06/18(金) 03:33:58 ID:feYzfmHO
すいません、質問です。

最近、PHPの勉強を始めたばかりなのですが。
XAMPPをインストール、テスト用の簡単なPHPも使用できていて、
動作には問題ないように思います。
mysqlは、utf8の文字コードを追加しています。
また、.htmlで、phpが動作するように、.htaccessを使用しています。

ウェブサイトを基本xhtmlでコーディングしていって、ヘッダーなどの部分を
PHPで共通化できればと思い、勉強を始めたのですが、いきなり文字化けに陥りました。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
これがソース内にあると、文字化けします。
逆に、なければ文字化けはしません。

これは、なぜなんでしょうか・・・

どなたか、おわかりになる方、ご教授してください><
528nobodyさん:2010/06/18(金) 03:56:02 ID:???
>>526
ごめん オレには other cgi が何か分からん。
だいたい apache module みたいなんだと思う
君が cgi/fcgi を望んでるとは思えん

>>527
それぞれの文字コードを見直す
529nobodyさん:2010/06/18(金) 03:59:31 ID:???
>>526
言い忘れたけど >>522 の内容は php4 を php5 に置き換えれば
そのまま使えるはず。
530527:2010/06/18(金) 04:33:07 ID:feYzfmHO
>>528
ありがとうございます。
php.iniを、もう1度みなおしていたら、UTF-8じゃない部分がありました。
単純なミスで質問してしまって、すいませんでした。

回答ありがとうございました!
531nobodyさん:2010/06/18(金) 07:32:29 ID:???
>>520
phpに限らず、メジャーバージョンが異なるものの情報を鵜呑みにするのはやめたほうがいいよ
532nobodyさん:2010/06/18(金) 08:52:21 ID:KlmzoK3k
echo $_SERVER["REMOTE_ADDR"];
は表示されるのですが、

echo $_SERVER["REMOTE_HOST"];
は表示されません。
これは何処の設定をいじくれば表示されるようになるんでしょうか?
533nobodyさん:2010/06/18(金) 09:18:11 ID:???
>>525
またお前か。最後まで面倒みてやれよ。
534nobodyさん:2010/06/18(金) 14:04:34 ID:J92h6I5e
535nobodyさん:2010/06/18(金) 14:43:06 ID:PtT48P2n
もの凄いくだ質なんですが、、気になったので質問します。

MySQLのテーブル「user」の各フィールド名を
user_id|user_name|user_mail
のように、テーブル名を接頭辞にして付けています。

$sql = "SELECT * FROM user";
$res = mysql_query($sql);

みたいにしてSQL文を実行してmysql_fetch_arrayで登録値を取得出来るわけですが、
登録値を取得する時、どういう配列名にすればいいか悩みます。
これまでは
$user = mysql_fetch_array($res);

のように、テーブル名を配列にして代入していたのですが、
これを出力する時、 $user["user_name"]となるので、ややこしく感じます。

どうするのが一般的なかと疑問に感じ、質問させていただきました。
536nobodyさん:2010/06/18(金) 14:45:47 ID:???
フィールド名のuser取ればいいじゃない。自分でもそう思ってるんでしょ?
537535:2010/06/18(金) 14:53:14 ID:PtT48P2n
いえ。それは思っていません。結合する時ややこしくなりますから。
538nobodyさん:2010/06/18(金) 14:59:35 ID:J92h6I5e
僕は>>536の意見に賛成
539nobodyさん:2010/06/18(金) 15:11:06 ID:???
RDBMSがなんのためにスキーマ、テーブル、カラムで空間を分けてるか考えたら
結合のときにカラムのエイリアスを付けなくていい
540nobodyさん:2010/06/18(金) 15:14:44 ID:???
すまそ途中送信
RDBMSがなんのためにスキーマ、テーブル、カラムで空間を分けてるか考えたら
結合のときにカラムのエイリアスを付けなくていいという理由だけで
接頭辞を乱用すべきじゃないね
541535:2010/06/18(金) 15:21:55 ID:PtT48P2n
確かに接頭辞を付けると無駄にフィールド名が長くなるので
乱用すべきでないというのは分かります。

ただ、テーブル数が多くなってくると、やはり接頭辞を付けた方が
ソースが分かりやすいんです。WordPressやMTなんかも接頭辞を付けてますし。

で、>>536-540さんの意見を総合すると、
$user = mysql_fetch_array($res);
というようにテーブル名の配列に代入する方法が一般的なんですかね。
542nobodyさん:2010/06/18(金) 16:42:15 ID:???
これ見てよ↓
http://livedoor.2.blogimg.jp/agomesu/imgs/4/f/4faec292.png
ばらまこうぜ!
543nobodyさん:2010/06/18(金) 18:19:48 ID:df2633Ti
>>525さんのURLからPHP 5.3のインストーラーをDLして
インストールしたんですが
これって設定の変更とかせずにそのまますぐに使えますか?
544nobodyさん:2010/06/18(金) 18:20:53 ID:???
>>525
呼んでるぞー
545nobodyさん:2010/06/18(金) 18:22:19 ID:9ev+TnD6
これすぐ使えるぜ


http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270089/
bamcompileでスタンドアロンEXEアプリを作ろう - PHP TIPS:ITpro
546nobodyさん:2010/06/18(金) 18:25:10 ID:UII6mL4g
APCを使おうと思ってさくらのレンタルサーバーに組み込んだんですが、
どうも上手く動作してないような気がします。

wwwフォルダ以下にある色んなphpやjpgなどを開いたら、
↓のapc.phpキャプチャ画像の2〜4番目あたりが変化しそうな気がするのですが、全く変わりません。
この状態だとキャッシュされているのが、その時開いたapc.phpだけという意味ですよね?

どこが悪いのかさっぱりです。
分かる方いましたらどうかよろしくお願いします。


【組込手順】
 ・本家からAPC.tgzダウンロード→解凍→サーバーにAPCフォルダとしてアップ
 ・cd APC
 ・phpize
 ・./configure --enable-apc
 ・make
 ・modulesにapc.soができたのを確認

【主なフォルダ/ファイル構成】
home
|
└myid
    |
   ├APC
    |  └modules
    |       └apc.so
    |
   └www
        └html/phpなど
547nobodyさん:2010/06/18(金) 18:25:32 ID:9ev+TnD6
サーバー環境付きで動くフルセットはこれ使えよ。

XAMPP Windows版 1.7.3 51 MB 自己解凍型RAR アーカイブ

http://www.apachefriends.org/jp/xampp-windows.html#2671
548546:2010/06/18(金) 18:26:25 ID:UII6mL4g
549nobodyさん:2010/06/18(金) 18:30:17 ID:???
Linuxなら
apt-get install lamp-server とコマンドを打つだけで
Apache MySQL PHPが自動でインストールされるのに

Windowsは非常に面倒だな
550nobodyさん:2010/06/19(土) 05:25:01 ID:9jWjEAKJ
PHPで4バイト整数のファイル入出力はどうやればいいですか。
551nobodyさん:2010/06/19(土) 05:41:28 ID:???
fgets fputs
552nobodyさん:2010/06/19(土) 09:08:29 ID:???
fread, fwrite
553nobodyさん:2010/06/19(土) 19:33:03 ID:PoSyZtDI
<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output("UTF-8");
ob_start("mb_output_handler");
?>
<form method="POST" action="">
<textarea name="replace" cols=20 rows=4></textarea>
<input type="submit" value="replace!!">
</form>
<?
if(isset($_POST["replace"])){
$before = $_POST["replace"];
echo $before;
echo mb_detect_encoding($before);

$after = str_replace("です", "でした", $before);

echo $after;
echo mb_detect_encoding($str)."<br>";
}

フォームで文字列置換をやりたいんだけど、うまくいきません。
置換前の文字列とその文字コード、置換後の文字列とその文字コードを表示させてますが、
「あいうえおです」みたいな日本語を入力しても、該当箇所が置換されないどころか文字列自体が表示されません。
しかも文字コードはどちらもSJISになっちゃいます。
どうしたらうまく置換できるのでしょうか。
554nobodyさん:2010/06/19(土) 19:39:59 ID:???
>>553
問題を細かく切り分けてみそ
555nobodyさん:2010/06/19(土) 19:57:20 ID:???
>>553
mb_internal_encoding("UTF-8");
556nobodyさん:2010/06/19(土) 19:58:59 ID:9jWjEAKJ
パスの内部コードを取得する方法ありますか。
557553:2010/06/19(土) 20:31:04 ID:PoSyZtDI
<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output("UTF-8");
mb_internal_encoding("UTF-8");
ob_start("mb_output_handler");
?>
<META httpequiv="Content-Type" content="text/html;charset=UTF-8">
<form method="POST" action="">
<textarea name="replace" cols=20 rows=4></textarea>
<input type="submit" value="replace!!">
</form>
<?
if(isset($_POST["replace"])){
$before = $_POST["replace"];
echo $before;
echo mb_detect_encoding($before);
}

とりあえずPOSTされたデータを表示させることから解決してみようと
>>555のmb_internal_encoding("UTF-8");を追加し、metaタグも入れてみましたが、
FirefoxではPOSTされたデータはちゃんと表示され、文字コードもUTF-8と出るのですが、
IEでは日本語を入力した場合、POSTされたデータは表示されない上、文字コードもSJISと出てしまいます。

ヘッダーもUTF-8にしてるはずなのでPOSTされたデータはUTF-8だと思ったのですが・・・
ヘッダーの設定方法がおかしいのでしょうか?
558nobodyさん:2010/06/19(土) 21:36:37 ID:???
var_dump($_POST);
してIEとFirefoxで比べてみたらいい
559nobodyさん:2010/06/19(土) 22:46:46 ID:9jWjEAKJ
$n = 123456; を32bitのバイナリとしてファイルへ書き出すには、
int2bin($n) のように変換するしかないですか? 既存関数のみで可能ですか。
fread, fwriteだとテキストで123456が出力されると思うのですが。


function int2bin($x){ return sprintf("%c%c%c%c", $x&255, ($x>>8)&255, ($x>>16)&255, ($x>>24)&255 ); }
function bin2int($s){ return ord ($s)+(ord ($s[1])<<8)+(ord ($s[2])<<16)+(ord ($s[3])<<24); }
560nobodyさん:2010/06/19(土) 23:01:00 ID:???
intval
561nobodyさん:2010/06/20(日) 01:20:59 ID:twag0hRe
forでaaa aab aac ...aaz aba abb abc ...zzy zzzというように3文字の文字列を表示するにはどうしたらいいでしょうか?
562nobodyさん:2010/06/20(日) 01:43:30 ID:???
for ($a='aaa'; $a!='aaaa'; $a++) echo $a.' ';
563nobodyさん:2010/06/20(日) 01:55:32 ID:???
>>562
すごい。そんな技できるんですね。
ありがとうございました。
564nobodyさん:2010/06/20(日) 01:59:37 ID:qnX6bksX
ベーシック認証のページにログインしてHTMLを取得するには
どうすればいいでしょうか?
例えば、URL: http://example.com/basic.htmlと言うベーシック認証の
ページがありID:foo / Passwd:barの場合
$ary = file0("http://example.com/basic.html");じゃ取得できません。
どうすればいいのでしょうか?
565nobodyさん:2010/06/20(日) 02:06:30 ID:???
>>557
ob_start("mb_output_handler");
消したら動いたけど。 ie8/fx3.6
566nobodyさん:2010/06/20(日) 02:09:23 ID:???
>>559
pack
unpack
567nobodyさん:2010/06/20(日) 02:10:51 ID:???
>>564
Basic認証がかかったページにアクセスする方法 - PHPプロ!Q&A掲示板
http://www.phppro.jp/qa/212
568nobodyさん:2010/06/20(日) 02:23:15 ID:???
>>546
apc.stat を off にしてphpソースを変更
実行して変更が反映されてなければ間違いなくキャッシュされてる

jpgのくだりはよく分からないけど
キャッシュされるのはphpのバイトコードだよ
パースの手間が無くなる分軽くなる
569nobodyさん:2010/06/20(日) 02:48:26 ID:???
>>567
ありがとうございます。
570nobodyさん:2010/06/20(日) 09:28:26 ID:???
571nobodyさん:2010/06/20(日) 11:15:41 ID:OE54gla8
Rubyスレで質問したところ、PHPスレで聞けとのことでしたので、ここで質問します

1.PHPのsystem()で.rbを実行するする
2.そのrbの中では色々な処理をする
3.処理が終わったらPHPにその処理結果を戻す
4.PHPでその結果を条件分岐か何かで判断をする
というようなWebページを作ろうとしています

これって可能ですか?
上2行は確認出来たのですが、結果をPHPに戻すのは無理なような気がします
どうですか?
572nobodyさん:2010/06/20(日) 11:37:34 ID:???
できます。やり方は教えません。
573nobodyさん:2010/06/20(日) 12:10:32 ID:???
Rubyで出力した内容がsystem()の2番目の引数に返るんじゃね?

と、Ruby知らなくてPHP中級な俺が言ってみる。
574nobodyさん:2010/06/20(日) 13:45:50 ID:???
2番目に入るのは終了ステータス
標準出力をキャプチャしたかったら popen(), proc_open() などを使う
575nobodyさん:2010/06/20(日) 14:25:20 ID:???
>>574
PHPならもっと便利な関数があるはずだろ。
576nobodyさん:2010/06/20(日) 14:56:32 ID:Zg4Yd11e
みなさんが「このソースは読みやすい」と思うコーディングをしている
オープンソースのPHPシステムを教えて下さい
577nobodyさん:2010/06/20(日) 15:13:03 ID:???
formから放り込んだ日本語をImageTTFTextで縦書きにしたいのですが、句読点やーがおかしな事になります。
正しく表示する方法はないのでしょうか?
578nobodyさん:2010/06/20(日) 17:03:38 ID:???
>>562
これキモイw
579nobodyさん:2010/06/20(日) 17:31:57 ID:???
>>576
有名どころなら何でも
>>577
>>1
580nobodyさん:2010/06/20(日) 17:43:38 ID:7fNS8+df
$FileNameTMP = realpath($FileName);
$FileType = mime_content_type($FileNameTMP);
header("Content-Type:" .$FileType);
readfile($FileName);

こんな感じのソースを書いたのですが、IEだとブラウザでの表示ではなくて保存ダイアログが表示されるようになってしまいます。
Firefoxの場合は問題なく表示できます。
Firefoxも空のテキストファイルだと保存ダイアログが表示されるようになります。
画像ファイルやPDFファイルなどをブラウザで開ける様になる決方法は無いでしょうか?
581nobodyさん:2010/06/20(日) 17:59:44 ID:???
header('Content-Disposition: inline; filename="example.pdf"');
header('Content-Type: application/pdf');
582nobodyさん:2010/06/20(日) 18:02:31 ID:7fNS8+df
>>581
それやるとFirefoxでも問答無用で保存ダイアログが表示される。
やりたいのは>>580でも書いていますが保存ダイアログを出したいのではなくて
ブラウザ上で表示したい。
583nobodyさん:2010/06/20(日) 18:04:12 ID:???
>>582
保存するなら >Content-Disposition: attachment
表示するなら >Content-Disposition: inline
584nobodyさん:2010/06/20(日) 18:04:41 ID:???
>>579
失礼しました。
【OS名】CentOS5
【PHPのバージョン】5.3
【連携ソフトウェア】
【質問内容】
formから放り込んだ日本語をImageTTFTextで縦書きにしたいのですが、句読点やーがおかしな事になります。
正しく表示する方法はないのでしょうか?
過去ログでは縦書き専用フォントで・・・とかが見つかったのですが肝心の縦書き専用フォントがぐぐっても見つけられません。
585nobodyさん:2010/06/20(日) 18:22:53 ID:7fNS8+df
>>581
すみませんでした。
inlineの部分を見落としていました。
IEだとbmpファイルはこの方法でも保存ダイアログが出てしまいます。
また空テキストファイルだとFirefoxだと保存ダイアログがでます。
IEでは空テキストファイルでは保存ダイアログはでません。
これらを解決する方法は無いでしょうか?
586nobodyさん:2010/06/20(日) 18:27:15 ID:7fNS8+df
追加
空テキストファイルのMIMEを見ると
application/x-empty
となっています。
application/x-emptyを調べてみてもいまいちどういうときにできるMIMEなのかわかりません。
application/x-emptyをtext/plain変換してやらないと駄目って事ですかね?
587nobodyさん:2010/06/20(日) 19:43:42 ID:???
たとえばapplication/zipをinlineで送られてもブラウザはどうしようもないだろ
mime-typeを適切に設定しろ
それだけだ
588nobodyさん:2010/06/20(日) 19:49:09 ID:7fNS8+df
>>587
??????
589nobodyさん:2010/06/20(日) 20:02:32 ID:???
>>584
ID出すことを忘れているようだけど、ともあれ、本題についてだけど、それは難しい。
フォントをいじってみてはどうか。
590nobodyさん:2010/06/20(日) 23:22:44 ID:V/OxbjwX
filesize()は使わない方が良い。
他でオープンされていると0になるし、
値がキャッシュされるから実サイズと異なる値を返すことあり。頻繁な更新されている物だと。
591nobodyさん:2010/06/21(月) 00:35:22 ID:???
>>584
ImageTTFTextって使ったことないけど
表示する文字が句読点かどうか調べて
句読点ならは座標をずらせばいいんじゃない?

ハイフンだったら縦棒(|など)に変換するとか。
592nobodyさん:2010/06/21(月) 00:59:52 ID:oQjyj8CX
複数階層のmkdir_rなんですが。これだと日本語パスで失敗します。
\を含むため。どう直せばいいですか。

function mkdir_r( $path ) {
if(is_dir($path)) return;
$path = str_replace( '\\', '/', $path);
$parts = array_filter ( explode('/', $path), 'strlen' );
$s=""; foreach ($parts as $part) { $s.="$part/"; @mkdir($s); } }
593592:2010/06/21(月) 01:12:43 ID:oQjyj8CX
自己解決しました
594592:2010/06/21(月) 01:34:09 ID:oQjyj8CX
これね。

function mkdir_r( $t ) {
$s=array();
while( !is_dir($t) ) { $s[] = $t; $t=dirname($t); }
for( $n=count($s)-1; $n>=0; $n-- ) mkdir($s[$n]); }
595nobodyさん:2010/06/21(月) 01:43:11 ID:???
>>594
そんな関数作らんでもmkdirにrecursiveオプションがあるんだからそれ使えばいいのに
596nobodyさん:2010/06/21(月) 12:33:30 ID:oQjyj8CX
PHP4 PHP5に依存しないことが大事。
597nobodyさん:2010/06/21(月) 12:51:52 ID:???
PHP4でのサンプル、mkdirのマニュアルページに載ってるけど、
pathinfoとかdirnameの日本語の不具合って直ってないよね?
http://bugs.php.net/bug.php?id=37738
598nobodyさん:2010/06/21(月) 18:06:11 ID:oQjyj8CX
デストラクタの時に値が保存されないんですが。どうすれば値が保存されますか。

<?php
$a = new A();
$a->add();
$a->add();

class A {
var $num;
function A() { $this->num=0; register_shutdown_function( array( $this, '_A' ) ); }
function add() { $this->num++; }
function _A() { echo "num={$this->num} \n"; }
}
?>
599nobodyさん:2010/06/21(月) 18:16:36 ID:???
>>591
「〜」の処理とか
> 座標をずらせばいいんじゃない?
これとか、多分素直にさせてくれないよ。

動くとわりと面白い系だから一度は試して遊ぶといいかも。
600nobodyさん:2010/06/21(月) 18:32:23 ID:???
>>598
保存って具体的にどうしたいの?
601nobodyさん:2010/06/21(月) 18:35:41 ID:oQjyj8CX
num=2 が出力したいんですが。
602nobodyさん:2010/06/21(月) 18:41:50 ID:???
そのままコピペしてhoge.phpというファイルに
セーブして実行してみた。

% php hoge.php
num=2

出るじゃん。
603nobodyさん:2010/06/21(月) 18:42:55 ID:oQjyj8CX
PHP4.2程度できる方法ありますか。
604nobodyさん:2010/06/21(月) 18:46:36 ID:???
4系だと出来んな。
グローバルに渡すしか。
605nobodyさん:2010/06/21(月) 18:47:44 ID:oQjyj8CX
外部変数にしたら出来るんですが。
これだとクラス変数と別に変数用意する手間が掛かって良くないです。
クラスの値が破壊、初期化されてからregister_shutdown_functionが起動すると思います。
回避する方法ないですか。PHP4です。



$Anum=0;
$a = new A();
$a->add();
$a->add();

class A {
function A() { global $Anum; $Anum=0;
register_shutdown_function( array( $this, '_A' ) ); }
function add() { global $Anum; $Anum++; }
function _A() { global $Anum; echo "num={$Anum} \n"; }
}
606nobodyさん:2010/06/21(月) 19:00:35 ID:oQjyj8CX
グローバル変数とクラスAをまとめたクラス作ったら成功しました。これで生き残る。

<?php

$b = new B();
$b->add();
$b->add();


class B {
var $Anum=0;
var $a;
function B() { $this->a = new A(); }
function add() { $this->a->add(); } }


class A {
function A() { global $Anum; $Anum=0;
register_shutdown_function( array( $this, '_A' ) ); }
function add() { global $Anum; $Anum++; }
function _A() { global $Anum; echo "num={$Anum} \n"; } }

?>

607nobodyさん:2010/06/21(月) 19:09:33 ID:???
PHP4系はオブジェクト指向まわりとかいろいろ
調子悪いので茨の道だぞ。
608nobodyさん:2010/06/21(月) 19:14:46 ID:???
classBの $Anumと
classAの $Anum 別物じゃん。
結局BがAのインスタンスもってるだけで >>605と同じ・・・
609nobodyさん:2010/06/21(月) 19:16:50 ID:???
PHP4環境ないから知らんけど
$a =& new A();
とかでしょどうせ。
610nobodyさん:2010/06/21(月) 19:27:13 ID:oQjyj8CX
&付きでうまくいきました。有り無しの違いが分からない



<?php
$a = & new A(); $a->add();
$b = & new A(); $b->add(); $b->add();

class A {
var $num;
function A() { $this->num=0; register_shutdown_function( array( &$this, '_A' ) ); }
function add() { $this->num++; }
function _A() { echo "num={$this->num} \n"; } }

?>
611nobodyさん:2010/06/21(月) 19:29:54 ID:???
&入れないとnew直後に別インスタンスにコピーされてしまう変態仕様だから。
PHP4 new演算子
とかでググれば出てくる。
612nobodyさん:2010/06/21(月) 19:30:42 ID:oQjyj8CX
サンクス
613nobodyさん:2010/06/21(月) 19:34:20 ID:???
PHP4はオブジェクトも値渡しだからな、よくはまる罠だった

>>598
>>609 + register_shutdown_function(array(&$this, '_A' ))
614nobodyさん:2010/06/21(月) 22:56:57 ID:???
習い始めたときは既にPHP5の時代だった俺は運が良かったのか
615nobodyさん:2010/06/21(月) 23:23:53 ID:oQjyj8CX
CURLのFTPアップロードで、
複数ファイルを持続接続でアップする方法ありますか。
毎回ログインする方法しか分かりません。
616nobodyさん:2010/06/21(月) 23:39:00 ID:???
617nobodyさん:2010/06/21(月) 23:46:41 ID:oQjyj8CX
複数スレッドで動かせば、帯域を無駄なく使えて良いんですが。
PHP4だと>>616が使えないです。
FTPのログイン動作に3から10秒ほどかかるのでこの時間の転送量は0です。
ログイン省く方法無いですか。
618nobodyさん:2010/06/21(月) 23:58:15 ID:???
なんでPHP5にする選択はしないの?鯖代なんて月数百円だろ。
619nobodyさん:2010/06/22(火) 02:55:15 ID:???
よく分かんないけどFTPってそのまましゃべれないの?
620nobodyさん:2010/06/22(火) 03:50:07 ID:???
二人としゃべらないといけないからちょっと面倒
621nobodyさん:2010/06/22(火) 09:02:05 ID:???
さっさとせめてPHP5に乗り換えたほうがいいと思うけどね。
(そもそもPHP捨てたほうがいいというのは置いといてw)
622nobodyさん:2010/06/22(火) 09:11:04 ID:???
PHPはC++のスクリプト版+追加機能のようなものでもっとも有望なスクリプト言語。
PHPからC++のコード生成出来たり、実行ファイルが作れればいいのだが。
追加機能は例えば、static_php.libを組み込むことで実現出来たり。
623nobodyさん:2010/06/22(火) 09:13:48 ID:???
C++に翻訳するやつはここにあるんだけど。Windowsでは動かないらしい。だれか改良して対応してクリ。



HipHopはCentOSとFedora向けに開発されており、他のオペレーティングシステム上でのビルドは現在のところ機能しません。


HipHop for PHP
http://blog.candycane.jp/archives/295
624nobodyさん:2010/06/22(火) 10:21:03 ID:???
改良して対応してくれって言うけど、その分の人件費はどうなるの?
なんでもWebだったらタダでやってくれると思ってないか?
625nobodyさん:2010/06/22(火) 10:41:41 ID:???
Friendクラスも使えないしPHPダメでしょ。
まぁ使うけど。

5.3で静的遅延束縛が実装されて大分使いやすくなった。
626nobodyさん:2010/06/22(火) 12:37:56 ID:???
C++のfriendキーワードの事か?
今頃取り入れたらそれこそPHPらしいって言われるな
627nobodyさん:2010/06/22(火) 18:42:11 ID:ZnYDyWrv
ファイル読み込み処理ですけど
テキストデータの場合
fgets()を利用してループさせる。
file_get_contents()もしくはfile()でいっきに読み込む

どっちの方が効率がいい処理になるのでしょうか?
みなさんは何を基準にしてどの関数を利用するようにしていますか?
628nobodyさん:2010/06/22(火) 18:48:40 ID:???
メモリに全部乗っかっちゃって大丈夫なら全部読んじゃうかも
629nobodyさん:2010/06/22(火) 18:49:19 ID:???
内容次第だけど全部一気に読むとメモリ食うので一行ずつですむなら
そうする。
630nobodyさん:2010/06/22(火) 18:56:16 ID:???
配列にデータいれる速度 
タブや改行区切りで済むなら一気読みでexplodeが最速。


一回目と二回目

file
10.944231987  14.324997901917

serialize
15.630096912384  10.502514839172

var_export
16.92795419693  13.347457885742

explode
1.0216579437256  1.743134021759
631630:2010/06/22(火) 18:58:18 ID:???
どれも一気読みで、一行読みとは比較していないが一気読み速いことはないだろう。
632nobodyさん:2010/06/22(火) 21:08:21 ID:???
配列チェックでisset って使わなかったけど。isset ( $A[$n] )としたときに
勝手に$A[$n] =NULLがセットされる気がしてたから。
存在しない配列・変数は自動生成するもんだとおもってた。
しかし、今日気づいた。増えてなかった。
633nobodyさん:2010/06/22(火) 21:55:14 ID:???
>>584
亀レスだけど縦書き試してみた。

<?php
$im=imagecreatefrompng('sample.png');
$bgcolor=imagecolorallocate($im,255,255,255);
$im=imagerotate($im,90,$bgcolor); //左90度回転
$black=imagecolorallocate($im,0,0,0);
$font='vSHGM.ttf'; //縦書き専用フォント
$size=22; $x=50; $y=50;
$text='「馬〜鹿、アホー」って書いてみるテスト。';
imagettftext($im,$size,0,$x,$y,$black,$font,$text);
$im=imagerotate($im,-90,$bgcolor); //右90度回転
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
?>

ImageTTFTextのAngleを-90にするとガタガタになるんで、
元の図形を回転させてみた。
いちおう句読点や長音、ニョロ、小さい「っ」の位置は正しく表示される。
でも、もともとのフォントの形が…残念…
634nobodyさん:2010/06/22(火) 22:09:05 ID:???
あ、縦書き専用フォントを使うのか。元をちゃんと読んでなかったorz
635nobodyさん:2010/06/22(火) 23:33:08 ID:???
>>627
効率って、
同じようなことするのにソースコードの行数が少なくて済む効率?
実行時間の効率?
使用メモリの効率?
636nobodyさん:2010/06/23(水) 00:03:36 ID:???
すべて
637nobodyさん:2010/06/23(水) 03:08:02 ID:???
ならループさせない方が効率いい
638nobodyさん:2010/06/23(水) 23:12:08 ID:SXPCexzA
PHPを使ってファイルAをアップロードするとき、アップ途中でtmpフォルダにあるAを特定することって可能ですか?

・tmpファイル名から判断→できないですよね?頭にphpやsess_など特定の語がつくらしいことは分かったのですが・・・
・フォルダを監視し、アップロード開始前後に増えたファイルをAとみなす。→同時期に関係ないファイルが増えることもあるので微妙

639nobodyさん:2010/06/24(木) 01:13:30 ID:???
$_FILES["hoge"]["tmp_name"] ではだめなの?
リクエストを受け取って動くコードじゃなしに、別で動いてるディレクトリ監視用のなんかで、
受信が終わってリクエストされたPHPのファイルのなかみが実行される前に
アップロードされ一時保存されてるファイルにちょっかい出したいとか、そういう感じ?
640nobodyさん:2010/06/24(木) 01:19:10 ID:???
リクエスト受信中はApacheがロックしてるだろ
そもそもバッファに収まるサイズなら一時ファイル作らないだろうし
641nobodyさん:2010/06/24(木) 02:29:20 ID:OBMIoFMZ
>>639
そんな感じです。
642nobodyさん:2010/06/24(木) 06:36:59 ID:WgZlfAT4
朝から失礼します。

PHPにて、以下のコードが意図したように動作しません。

$funcs = array(func_a, func_b, func_c);
foreach ($funcs as $func){
$func(); //$func === String... "func_a", "func_b", "func_c"
}

どうも調べてみると PHP の配列では、関数への参照が期待されるところが、文字列として解釈されてしまうみたいです。

どのようにすればこの問題を回避できるのでしょうか?
アドバイスよろしくお願いします。
643642:2010/06/24(木) 06:46:36 ID:WgZlfAT4
すみません、訂正します。

x この問題を回避
x この問題を解決
644nobodyさん:2010/06/24(木) 07:45:38 ID:???
>>642
よく分からんけど

>php -r "$funcs = array('func_a', 'func_b', 'func_c'); foreach($funcs as $func) $func();

Fatal error: Call to undefined function func_a() in Command line code on line 1
645642:2010/06/24(木) 07:57:50 ID:WgZlfAT4
>>644
すみません、どうやらこちらの勘違いだったみたいです。

> var_dump($funcs)

array(3) { [0]=> string(4) "func_a" [1]=> string(4) "func_b" [2]=> string(4) "func_c" }

上記をまんまに受け取ってしまって、文字列が格納されていると判断していました。
しかし、先ほど確認してみると実際には関数への参照が格納されていることを確認できました;

どうもありがとうございました。
646nobodyさん:2010/06/24(木) 08:34:42 ID:???
連想配列を、ループで順に数字でアクセス出来ますか。
たとえば、$n=10に対して、10個目に格納されているキーと値を取得できますか。
647nobodyさん:2010/06/24(木) 08:37:30 ID:MnfGX6AS
訂正。
ループでなくて、ランダムアクセスする方法ありますか。
こういうやつでなくコストが低いやつが良いです。

$n=10;
$cnt=0; foeeach ( $A as $key->$val ) { if($cnt==$n) break; $cnt++; }
648nobodyさん:2010/06/24(木) 08:43:48 ID:WgZlfAT4
>>647
array_rand じゃだめなの?
649647:2010/06/24(木) 08:48:10 ID:MnfGX6AS
$n番目のキーと値を取得したいのですが。
ランダムアクセス = シーケンシャルサーチ(>>647)をしないアクセスってことです。
650nobodyさん:2010/06/24(木) 09:35:17 ID:???
array_keysかなぁ・・・
配列の配列にすべきと思うけど。
651nobodyさん:2010/06/24(木) 09:48:42 ID:???
array_sliceでキーを保持したまま1対取り出せばいいんじゃないかな。
652nobodyさん:2010/06/24(木) 12:10:57 ID:MnfGX6AS
サンクス
653nobodyさん:2010/06/24(木) 13:05:35 ID:???
>>645
未定義の定数 func_a は文字列 "func_a" と等価に扱われているだけ
関数はファーストクラスオブジェクトじゃないのから
識別子となる文字列で間接的に扱うしかない
http://php.net/manual/ja/functions.variable-functions.php
654nobodyさん:2010/06/24(木) 16:04:42 ID:sfa066RH
プログラム板の略称はム板ですが
ここの略称の略称はなんでしょうか?
655nobodyさん:2010/06/24(木) 16:34:14 ID:???
ペ板
656nobodyさん:2010/06/24(木) 17:26:06 ID:???
P板
657nobodyさん:2010/06/24(木) 17:31:46 ID:???
WEP板
658nobodyさん:2010/06/24(木) 23:37:31 ID:???
WindowsでPHP最新版をC++に変換するツールがほしいです。
HipHop PHPをwindowsに対応してほしいです。
659nobodyさん:2010/06/25(金) 02:25:39 ID:???
HipHop PHPってこのスレで開発してたんだっけ?
660nobodyさん:2010/06/25(金) 07:58:18 ID:???
独り言でしょ?
661nobodyさん:2010/06/25(金) 10:36:18 ID:beZDHavc
phpのfopenで作成したファイルが、更新も削除も出来なくなりました。
FTPソフトからもphpからも操作不可能です。
どんなアクセスも可能なファイルはどのように作成すればいいですか?
662nobodyさん:2010/06/25(金) 10:37:35 ID:beZDHavc
fopenしつつ、パーミッションを777にしたいということなんですが。
オプションでは付いてないんですが。
あとから変更すると既に変更不可になってそうです。
663nobodyさん:2010/06/25(金) 11:31:43 ID:???
phpでchmodしてください
664nobodyさん:2010/06/25(金) 11:33:14 ID:beZDHavc
10進で777を書き込んで
パーミッションが411になってしまったんだと思うんですが。
これって削除も更新も出来ないんですが。
FTPソフトから。
これにアクセスする方法はないんですか?
665nobodyさん:2010/06/25(金) 11:34:25 ID:beZDHavc
>>663
サンクス。 phpから親ディレクトリのパーミッション変更してみます。
666nobodyさん:2010/06/25(金) 11:35:07 ID:???
PHPでchmodを 777 じゃなくて 0777としてください。
667nobodyさん:2010/06/25(金) 13:10:12 ID:beZDHavc
サンクス
668nobodyさん:2010/06/25(金) 13:47:53 ID:F/VYj9su
phpinfo()で出力される情報の中に、
extension_dirとinclude_pathという2つのパスがありますが
これらは何を基準に分けてるのですか?

extension_dirの中を見るとso拡張子のファイルしかないので、こちらはバイナリファイルを置けばいいのですか?

追加したいライブラリがso拡張子だったらextension_dirに突っ込んで
phpファイルだったらinclude_pathに突っ込む、という感じでいいのかな。
669nobodyさん:2010/06/25(金) 19:25:21 ID:TAYX3VSM
mb_convert_encodingで文字コードを変換すると、
一部の漢字がうまく変換されずに困っています。

JIS第三水準以上になると、ほとんど駄目なようなのですが、
対処法はありますでしょうか?

よろしくお願いします。
670nobodyさん:2010/06/25(金) 20:04:08 ID:beZDHavc
全文字揃うユニコードにする
671nobodyさん:2010/06/27(日) 01:38:10 ID:aVrX+ivV
$text = "abcdefg";
echo $text[3];
こうやれば「d」の文字が拾えますが
$text = "あいうえお";
echo $text[3];
とやった場合マルチバイトのため文字として拾えません。
これを拾えるようにする方法は無いのでしょうか?
$text = array("あ","い","う","え","お");
これはなしの方法であくまで
$text = "あいうえお";とやった変数に格納したデータを拾う方法。
672nobodyさん:2010/06/27(日) 02:28:26 ID:???
>>671
mbstringのページを見てみると幸せになれるかも
673nobodyさん:2010/06/27(日) 07:09:15 ID:???
>>663
>>666
え。

>>662
umask値を変更してください。
674nobodyさん:2010/06/27(日) 07:10:24 ID:???
ああ、読み間違えたね、俺。
675nobodyさん:2010/06/27(日) 12:43:50 ID:aVrX+ivV
>>672
それつてmb_系(mb_substr)の関数仕えって事?
676nobodyさん:2010/06/27(日) 13:05:05 ID:???
>>675
つかやってみろよ
677nobodyさん:2010/06/27(日) 14:02:58 ID:???
678nobodyさん:2010/06/27(日) 14:29:26 ID:???
むしろなぜCみたく文字列を扱うのか
679nobodyさん:2010/06/27(日) 15:06:07 ID:???
JavaScriptなら配列のように扱ってもちゃんと文字が取れるけど
普通は関数使うね
680nobodyさん:2010/06/27(日) 17:02:21 ID:???
UTF8リテラルもなくなったしな
681nobodyさん:2010/06/27(日) 21:53:55 ID:hmPoeXmO
test.datの中に以下のようにデータが格納されている場合
1,佐藤,ok,43
2,鈴木,no,65
3,田中,ok,87
4,斉藤,no,23
5,紅子,ok,90
4番目の斉藤のnoの部分をokに変えようとした場合
シェルのsedみたいに該当部分だけを書き換えることが出来る関数とかあるでしょうか?
ちなみにDBへの移行が出来ないのでfileで読み込んで斉藤にヒットした行のnoをokに変更、それ以外はそのままファイルに追記していく形で変更を行ってます。
682nobodyさん:2010/06/27(日) 22:34:28 ID:???
直接的な関数はないけどfgetcsvとfputcsvとか使えば少しは負担減るかも

DBは使えないってsqliteもだめなの?
683nobodyさん:2010/06/27(日) 22:39:39 ID:???
テキストはログファイル程度にしておかないと後で苦労する
684681:2010/06/27(日) 22:45:42 ID:hmPoeXmO
>>682
csvとして扱う関数があるわけですね。
そちらをちょっと調べてみます。
DB(sqlite含)関連が入っていない+追加出来ない状態です。これはサーバーの仕様なのであきらめてます。

>>683
私もそう思います。
でもきっとこれを作った当初は規模の拡大を予測してなかったんだと思います。
ソースを見たところ社内SEが部署内のちょっとした効率化のために作成したもののようです。
部署内でちょっとずつ機能追加してたら、他の部署からも〜みたいな感じで膨らんで今にいたるという状況みたいです。
ゼロから完全書き換えしたほうが後々いいとおもってはいますが、そこは大人の事情で出来そうにないので現状で何とかしようとしていたところです。
685nobodyさん:2010/06/28(月) 14:52:59 ID:t3TKO+l1
すみません。

PEARの公式サイトからXML-RPC2のパッケージをダウンロードして解凍したら
PHPファイルじゃなくてXMLファイルでした。

何を言っているのか分からないかもしれませんが
私にも何が起こったのか分かりません。

超能力とかそういうのじゃありません。
もっと恐ろしい能力の片鱗を味わいました。

どうすればいいですか教えて下さい。
686nobodyさん:2010/06/28(月) 15:05:34 ID:t3TKO+l1
解凍レンジで解凍したら出来ました。
本当にありがとうございました。
687nobodyさん:2010/06/28(月) 17:01:14 ID:me2fxhSA
<a href="http://aaa.jp/aaa/"><img id="pac-A_00000" alt="暑い" src="http://aaa.jp/aaa/A_000000.jpg" ></a>

これを
<a href="http://aaa.jp/aaa/"><img src="http://aaa.jp/aaa/A_000000.jpg" ><br>暑い</a>
と置き換えたいのですがどうすればいいでしょうか?
688nobodyさん:2010/06/28(月) 17:04:09 ID:???
>>687
正規表現で置換しろ。
689nobodyさん:2010/06/28(月) 17:08:50 ID:me2fxhSA
ちょっと説明不足
<a href="http://aaa.jp/aaa/"><img id="pac-A_00000" alt="暑い" src="http://aaa.jp/aaa/A_000000.jpg" ></a>
<a href="http://aaa.jp/bbb/"><img id="pac-b_00001" alt="寒い" src="http://aaa.jp/aaa/A_000001.jpg" ></a>
etc・・・
これを
<a href="http://aaa.jp/aaa/"><img src="http://aaa.jp/aaa/A_000000.jpg" ><br>暑い</a>
<a href="http://aaa.jp/bbb/"><img src="http://aaa.jp/bbb/b_000001.jpg" ><br>寒い</a>

>>688
正規表現分りません><
690nobodyさん:2010/06/28(月) 17:20:11 ID:???
http://oshiete.goo.ne.jp/qa/5999304.html
#1嘘つき君。
>HP作成集などに載っている素材
>どれも問題ありません。
>(本の中で素材の注意書きに、「再配布や販売を目的とする素材の2次使用、商用利用は禁止する」とあります)
の部分は完全無視。
691690:2010/06/28(月) 17:21:02 ID:???
間違えた。
692nobodyさん:2010/06/28(月) 17:23:52 ID:???
>>689
>正規表現分りません><
調べる気がないの?
http://www.google.co.jp/search?source=ig&hl=ja&rlz=&q=%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE&aq=f&aqi=g10&aql=&oq=&gs_rfai=

>事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

さらに
>【その他諸注意】
>・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
693nobodyさん:2010/06/28(月) 17:26:25 ID:???
答え教えると別のパターンの時も聞いてくるだろ
勉強しろ
694nobodyさん:2010/06/28(月) 18:10:59 ID:me2fxhSA
$var = '<a href="http://aaa.jp/aaa/"><img id="pac-A_00000" alt="暑い" src="http://aaa.jp/aaa/A_000000.jpg" ></a>';
$rcd = ereg_replace("^id=\".+\"$", "123", $var);
echo "$rcd";

とりあえず実験でこうやってみましたが駄目でした
>>693
これ以降は聞きません
今回だけです
695nobodyさん:2010/06/28(月) 18:19:01 ID:???
$rcd = ereg_replace("id=\"[^\"]+\"", "123", $var);
いろいろやってみるといいよ。
http://www.rider-n.sakura.ne.jp/regexp/regexp.php
696nobodyさん:2010/06/28(月) 18:35:46 ID:???
DOMでも使えば?
697nobodyさん:2010/06/28(月) 18:35:48 ID:me2fxhSA
>>695
( ^ω^)おっおっおっ
良いサイトありがとう!
698nobodyさん:2010/06/28(月) 18:37:34 ID:me2fxhSA
>>696
DOMとかわかんないお( ^ω^)
でもありがとう( ^ω^)
699nobodyさん:2010/06/28(月) 18:47:59 ID:z0Gu2+zS
PHP5で質問です。

try{
in_array($hoge,$fuga);
}catch(Exception $e){
echo 'error';
}
としたときに
in_array関数のパラメータに誤ったデータが入ってきたら
Exceptionのキャッチが出来るかと思っていたのですが、
キャッチできませんでした。

そういうものなのでしょうか?

もしキャッチをするとしたらどの様に記述すればよろしいのでしょうか?
よろしくお願いいたします。
700nobodyさん:2010/06/28(月) 18:53:51 ID:???
>>699
http://jp.php.net/manual/ja/function.in-array.php
例外なんて発生しません
701nobodyさん:2010/06/28(月) 19:48:46 ID:???
>>700

ありがとうございます。
やっぱり無理なんですね。

実務では、DB操作で複数テーブルへの操作を行おうとしていて、
in_arrayでエラーが発生したら
例外をキャッチしてロールバックをしたかったのですが、
そのまま素通りしていたものですから、
なにか良い方法がないかと思案しているところでした。

702nobodyさん:2010/06/28(月) 19:58:52 ID:???
>>699
誤ったデータってどんなデータ?
703nobodyさん:2010/06/28(月) 19:59:50 ID:???
if (!in_array($hoge, $fuga)) throw new Exception();
すればいいのでは?
704nobodyさん:2010/06/28(月) 20:13:30 ID:???
戻り値見ないの?馬鹿なの?死ぬの?
705nobodyさん:2010/06/28(月) 20:53:04 ID:???
標準関数なのに例外投げないのね
706699:2010/06/28(月) 20:57:18 ID:???
>>702
第二引数に配列でない値がとんできたとか・・そういう類の予期し得ないデータです。

>>703
ありがとうございます。その場合PHPのエラーが発生したらfalseが
返ってくるのでしょうか。
ちょっと今試せない環境なので、試せるようになったら
試してみたいと思います。
707nobodyさん:2010/06/28(月) 20:59:53 ID:???
標準関数が例外投げたら逆にうざいっていうか、ありえん
708nobodyさん:2010/06/28(月) 21:22:59 ID:???
709nobodyさん:2010/06/28(月) 21:24:49 ID:???
Mon,28 Jun 2010 21:24:24 +0900
こんな感じの日時をunixtimeに変換する関数みたいなのありますか?
710nobodyさん:2010/06/28(月) 21:32:23 ID:???
>>708
ななななになに?
711709:2010/06/28(月) 21:42:50 ID:DMKCG0er
id出し忘れてました。すいません
712nobodyさん:2010/06/28(月) 23:37:43 ID:???
>>706
703だけどもしくはset_error_handlerでPHPエラー時に例外投げるようにするという手もある
>>711
みんなには内緒だよ つstrtotime
713nobodyさん:2010/06/29(火) 00:12:53 ID:???
>>710
>標準関数が例外投げたら逆にうざいっていうか
標準関数が例外を吐く例
714nobodyさん:2010/06/29(火) 00:50:43 ID:???
>>706
is_arrayでチェックする。そういうデータが来る可能性は予期できるはず。
715nobodyさん:2010/06/29(火) 00:56:28 ID:???
>>713
>>708は標準関数が例外を吐く例には見えないんだが・・・?

>>706
第二引数に配列でない値、それは予期し得ないデータとは言えませんw
is_array使えばいいだけだろwww馬鹿なの?wwww死ぬの?wwwwww
716nobodyさん:2010/06/29(火) 01:01:32 ID:???
>>707
ifとか減らせるからコードの見通しがよくなるんだけどな
717nobodyさん:2010/06/29(火) 02:53:00 ID:???
>>713
吐いてないですし、投げてもいません。
718nobodyさん:2010/06/29(火) 07:50:59 ID:???
警告を出すことはあるけど例外を出す関数は標準関数には無い
719nobodyさん:2010/06/29(火) 07:53:01 ID:???
つSPL
720nobodyさん:2010/06/29(火) 07:55:11 ID:???
クラスは例外投げるよw
721nobodyさん:2010/06/29(火) 12:00:35 ID:???
try〜catchで囲んでおけば
何かあったらcatchでつかんでくれるって方が楽だと思うんだけどな・・
PHPにはterminate()も無いんだよね?
722nobodyさん:2010/06/29(火) 12:56:17 ID:???
1.phpで自分自身のファイルのエンコーディングって取得できますか?
2.sambaのunix charsetのようなファイル名の文字コード等は取得できますか?

$_SERVERにはないようですし。。。
getlocaleは地域の取得で違いましたし。。

なぜ必要か、
1.は便利だから。
2.はファイルアップロード機能の汎用性のあるものを作りたいからです。
  ファイル保存時適切に日本語ファイル名のエンコーディングを指定、変換しないと化けちゃうからです。

PHP初心者です。至急宜しくお願いします。昼休みあと5分(涙
723nobodyさん:2010/06/29(火) 15:34:47 ID:???
アップロードされた時のファイル名をそのまま使うつもりですか。どきどきしますね。
724nobodyさん:2010/06/29(火) 15:42:37 ID:???
>>723
別にそんなの珍しくもないのに何言ってんだか
大抵のアップローダはオリジナルのファイル名が見れるだろ
725nobodyさん:2010/06/29(火) 15:44:34 ID:???
>>724
オリジナルのファイル名のまま保存してるわけがなかろう
726nobodyさん:2010/06/29(火) 15:46:22 ID:???
> ファイル保存時
これがどの行為を指しているかによるな
727681:2010/06/29(火) 22:09:22 ID:DeLVAKxK
eregはPHP5.3から非推奨となってますが、これは5.3ではeregはまったく動かないということでしょうか?
それとも動くけど推奨は出来ないということでしょうか?
728nobodyさん:2010/06/29(火) 22:25:16 ID:???
> 注意: PHP 5.3.0 以降、 regex 拡張モジュールは非推奨となりました。
> かわりに PCRE 拡張モジュール を使うことが推奨されています。
> この関数をコールすると E_DEPRECATED が発生します。 PCRE への変換についてのヘルプは 相違点の一覧 を参照ください。

消えて無くなることは無いがlinuxはモジュールを選んでいれられるため
今後regexが入ってない環境が出てくる可能性が高いということ

特殊な使い方をしない限りすべてpregで代替可能です
そしてeregより高速に動作します
729nobodyさん:2010/06/29(火) 22:41:44 ID:DeLVAKxK
>>728
なるほど。
eregをpregに書き換えるスクリプトでも作って書き換えてみます。
730nobodyさん:2010/06/30(水) 01:40:45 ID:???
MVCの勉強になった!ってニッチな軽量フレームワークを教えてください。
731nobodyさん:2010/06/30(水) 09:46:55 ID:XzF49h+x
ちょっと質問ですが
計算できる数値で00、01
とか2桁で数値を表示させるにはどうすればよいのでしょうか?
732nobodyさん:2010/06/30(水) 10:11:06 ID:???
733nobodyさん:2010/06/30(水) 10:41:22 ID:XzF49h+x
レスありがとうございます。
なんかうまくいかないんですけど原因がわからないのでお願いします。
$number = "1";
echo printf("%02b",$number);
→ 012
と表示されます。
本当は01としたいのですがどの変がおかしいのでしょうか?

【OS名】winxp sp3 (xampp1.6.4)
【PHPのバージョン】 5.2.4

734nobodyさん:2010/06/30(水) 10:46:04 ID:???
echo printfとかしてるからだろ。

printfだけで出力までするからechoは余計。printfは出力した文字数を
値として返す(この場合は"01"で2文字だから2)から、それがechoで
さらに出力されて余計な2も出てる。
735nobodyさん:2010/06/30(水) 10:48:14 ID:???
  [s]printf   あと、bだと2進数になっちゃうのでdね。1なら同じだけどさ。
736nobodyさん:2010/06/30(水) 11:10:33 ID:XzF49h+x
ありがとうございます。echoが無駄なんですね
表示については解決できました。
これを1づつ増やしていくにはどう処理すればいいのでしょうか
$number = '0';
$number =($number + 1);
file_put_contents( "a.txt", "$number" );

テキストに01 02みたいに出力したいんですが
この場合02ではなく 2 で出力されてしまいます
737nobodyさん:2010/06/30(水) 11:12:13 ID:XzF49h+x
訂正 $number ="01";
738nobodyさん:2010/06/30(水) 11:27:43 ID:???
文字列とは何ぞやとか、 PHP数値への変換の仕様とか
http://www.php.net/manual/ja/language.types.string.php#language.types.string.conversion
739nobodyさん:2010/06/30(水) 12:16:22 ID:???
>>736
おまえは2時間前のできごとをもう忘れているのか?
740nobodyさん:2010/06/30(水) 14:31:43 ID:XzF49h+x
>>739 ???

>>738
仕様でできないってことなのかな

他の方法考えて見ます(01スタートでなく最初から2桁の11スタートとか

どうもありがとうございました。
741nobodyさん:2010/06/30(水) 15:00:40 ID:???
$number =1;
$number = $number + 1;
file_put_contents( "a.txt", sprintf("%02d",$number) );

数値足してくんなら、最初っから数値にしとけよ。
数値にみなせる文字列だったら+1すれば数値に解釈して"01" + 1 ってやれば 2になるけど "02"にはならねーから。
2桁で表示させる方法聞いといてそれなんでつかわねーんだよ。
俺らバカにしてんのか?
分かんなかったら分からんって書けよ。
742nobodyさん:2010/06/30(水) 15:02:56 ID:???
>>740
???
743nobodyさん:2010/06/30(水) 19:10:54 ID:???
プログラム初心者か、ただのバカなんだろ。
優しくしてやれよw
744nobodyさん:2010/06/30(水) 19:36:55 ID:???
会話になってねー
こんな馬鹿と一緒の職場とか想像すると寒気がするな
745nobodyさん:2010/06/30(水) 20:19:11 ID:QOd5zTpX
現在Twitterでbotを作っているのですが、
質問がプログラムのことなのでこちらで質問させていただきます。

$hour = date('H');
if($hour < 12){
$jikan = array(
"時間" => array("AM","午前中"),
"午前" => array("AMです","午前中です"),
"午後" => array("まだAMです","まだ午前中です"),
);
}else{
$jikan = array(
"時間" => array("PM","午後"),
"午前" => array("もうPMです","もう午後です"),
"午後" => array("PMです","午後です"),
);
}

$data = array(
"6月" => array("6月です","JUN"),
"30日" => array("30日です","Thirty"),
"(時間|午前|午後)" => $jikan,
);

このように実装して
「時間、午前、午後」と書き込むと午前か午後によって違う返事を返すが、
「6月、30日」と書き込むと時間に関係なく同じ返事を返すようにしたいと思っていますが、
上記だと、「時間、午前、午後」とif文中の単語で話しかけると、
「Array」という文字列を返してきてしまっています。
まだPHPは初心者のため、すみませんがどこが間違えているのかご教授願えませんでしょうか。
よろしくお願いいたします。
746nobodyさん:2010/06/30(水) 20:35:59 ID:???
エスパーじゃないんで、間違ってるであろう部分をみせてもらえんと
答えようがないよね? 
返事とか書き込むととか、話しかけるとか言われても
他人には分からないことだということは、理解頂きたい。
747nobodyさん:2010/06/30(水) 21:10:31 ID:???
"時間" => array("AM","午前中"),
これを
"時間" => "午前中",
こうするとどうなるの?
748745:2010/06/30(水) 21:51:29 ID:QOd5zTpX
>>746
すみません・・・どう説明すればいいのかわからなくて・・・

>>747
そうすると、$jikanの中に"午前中"が入ります。
749nobodyさん:2010/06/30(水) 22:02:11 ID:???
>>748
じゃあ、話しかけた時の処理にあると予想される、
$jikan[なんとか]
というところを
$jikan[なんとか][0]
こうするとどうなるの?
750nobodyさん:2010/06/30(水) 23:26:23 ID:???
エスパーできないんで、質問返しで悪いが('A`;)
おまいさん、まさか出力が「$data」ってオチじゃないだろうな?
あと、出力結果が「Array」ってことは、配列を理解してないんジャマイカ?
「PHP初心者」って言ってるけど、PHP以外はどんなのを理解してんの?
751nobodyさん:2010/07/01(木) 02:22:42 ID:???
Head first PHPと独習PHPとどっちがお勧めでしょうか?webプログラミングは始めてなんですが、
752nobodyさん:2010/07/01(木) 13:38:55 ID:???
ウェブプログラミング以外のプログラミングは経験済みということですね?
753nobodyさん:2010/07/01(木) 22:35:32 ID:BxoJrqT8
PHPのサブセットで、スクリプトのコンパイルと実行が出来るDLLがほしい。
ありますか。
754nobodyさん:2010/07/01(木) 22:36:53 ID:HAlm0epV
ポータルサイトなどを見ていたら、URLが
view.php?a=index
としているサイトがあり、a=で各ページを指定して
テンプレートを読み込んでいると思います。

MVC的にこうする方が管理しやすいらしいのですが、
index.phpやentry.phpにする場合と比べて、メリットがよくわかりません。
なぜURLパラメータでテンプレート指定するのでしょうか?
755nobodyさん:2010/07/01(木) 22:54:15 ID:???
MVCっていう単語を知ってるならwikiでggr
それでもわからんならまたこい
756nobodyさん:2010/07/01(木) 23:10:32 ID:BxoJrqT8
なんでサーバーサイドのプログラムはPHPで
ユーザーサイドはJavascriptなんだ。
統一したほうがわかりやすいが。
757nobodyさん:2010/07/02(金) 00:18:35 ID:???
サーバーサイドJSって流行んないよな
758nobodyさん:2010/07/02(金) 05:12:45 ID:AwwkgWaD
PHPを一つのDLLにまとめて、多言語から呼び出せるようにしてほしい。
データベースとか単独で動かない機能はけずっていい。
759nobodyさん:2010/07/02(金) 07:42:33 ID:???
クライアントサイドPHPなんてあるのか?
760nobodyさん:2010/07/02(金) 13:10:04 ID:???
まぁ、扱うものが違うから統一は難しいだろうけど
基本的なとこの記述くらいは統一してほしいな。
JSで変数名に$付けて叱られたことが何度あったことか。
761nobodyさん:2010/07/02(金) 13:19:17 ID:???
.と+で毎度苦しむ
762nobodyさん:2010/07/02(金) 13:29:35 ID:???
>>759
JAVAみたいに個人のPCにインストールする形にすればあるいは・・・
763nobodyさん:2010/07/02(金) 13:30:26 ID:???
>>760
jQueryを使うと、$が出てくるからまたややこしいですよ
764nobodyさん:2010/07/02(金) 15:15:32 ID:VD/AbeYD
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1143079761

すみません、知恵袋なんですがおしえてください
全然わからないです・・
765nobodyさん:2010/07/02(金) 15:37:06 ID:???
ヒント:変数のスコープ
766nobodyさん:2010/07/02(金) 16:14:02 ID:tc4YOvkc
MVCについて相談です。
お問い合わせフォームのような機能がある場合

Model:DBへの追加やメール送信処理を行う(/model/contact.php)
View:お問い合わせフォームのテンプレートを選択(/template/contact.tpl)
Controller:どのファイルを操作するか指定。上記の例なら「contact」
そして結果を受け取って出力

と言う考えで正しいでしょうか?
そして、ControllerにModelの内容書いた方が早い気もするのですが、
それはやっぱり駄目なのでしょうか?
767nobodyさん:2010/07/02(金) 16:22:42 ID:???
それでいいならもうMVCじゃなくていいじゃん
例えば半年放置して再開したときその真価が分かる
768nobodyさん:2010/07/02(金) 16:45:38 ID:VD/AbeYD
>>764です
解決しました!
ありがとう
769nobodyさん:2010/07/02(金) 17:23:24 ID:???
コントローラをもっと肥大化させよう
770nobodyさん:2010/07/02(金) 17:25:56 ID:???
VはテンプレにおまかせだけどMとCはどこで線を引くかいつも悩むな
771766:2010/07/02(金) 18:06:49 ID:tc4YOvkc
皆さんありがとうございます。MVCの考え方自体は合ってるのでしょうか?

自分が作っているシステムでは、Controllerが肥大化する事はないので
Modelと分けなくても良いのではないか?と思っています。

ただ、コーディングを向上させたいので、MVCを勉強して
どういう分け方をすればいいか学んでいます。

オープンソースのOpenPNEとかEC CUBEとか見てますが、
classファイルが複雑化されていて、元を辿るのに一苦労です。
コーディング的にはそれが正しいのかも知れませんが。
772nobodyさん:2010/07/02(金) 19:36:02 ID:???
「分けてて良かった」っていう経験がないと理解は難しいかね
疎結合とか単純化とか後で楽するため的な無駄な作業だからなw

考えを保守とかバグ対応とかに向けたら少し分かるかも。
773nobodyさん:2010/07/02(金) 20:15:37 ID:???
Pythonだったらクライアントもサーバーもいけるよ
774nobodyさん:2010/07/02(金) 20:25:22 ID:???
いけるかどうかなら
775nobodyさん:2010/07/02(金) 20:54:48 ID:asARGkCP
PHP初心者でver.5.3.2をダウンロードしようとしたんですが、VC9 x86などの意味は分かるのですが、
Non Thread SafeとThread Safeの違いが判りません。
これらはどういった機能で、どちらを使えばいいんでしょうか?
776775:2010/07/02(金) 21:14:48 ID:gGj5zy9Z
事故解決しました
777nobodyさん:2010/07/03(土) 18:25:21 ID:84+K0MiS
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1243134947

すみません。質問なんですがこれわかるかたいませんか?

76行目は最後の行なんですが、なにが問題なのかがわかりません・・
778nobodyさん:2010/07/03(土) 18:39:53 ID:???
ブレースの閉じ忘れじゃないかな
779nobodyさん:2010/07/03(土) 20:06:53 ID:84+K0MiS
>>778
おおできた!w
ありがとう!
780nobodyさん:2010/07/04(日) 02:22:50 ID:lkrZPMso
$config = DATA . $dataname . "/" . CONFIG_NAME;
すいませんこれってどういうことですが?質問自体バカで申し訳ない
781nobodyさん:2010/07/04(日) 02:37:21 ID:???
782nobodyさん:2010/07/04(日) 03:25:39 ID:???
http://www.yourfilehost.com/media.php?cat=video&file=0620_minori_002.wmv

すみません。質問なんですがこの方が誰か分かる方いませんか?
783nobodyさん:2010/07/04(日) 03:35:25 ID:lkrZPMso
>>781
非常にありがたいのですが、できればヒントをいただけると幸いです。
784nobodyさん:2010/07/04(日) 04:12:47 ID:???
>>782
おまいさんはこっち
ttp://set.bbspink.com/test/read.cgi/avideo/1274977885/
ネタかも知れんが2chでの質問者は大概「age」だぞ
785nobodyさん:2010/07/04(日) 09:39:50 ID:???
<<784
サンクス
786nobodyさん:2010/07/04(日) 10:38:00 ID:fEOSEN4h
>>783
良い質問は良い回答から。
「これってどういうことですか?」と言う質問は漠然としすぎて、
質問になっていない。
答える方も困るんだよ。

「やかんってなんですか?」って聞かれて
「金属です。」「お湯を注ぐものです」「お湯をわかすものです」
たくさん答えができてしまうだろ。

「やかんってどういう物質でできているんですか?」
という具体的な文章で質問しなさい。

中学生2年女子より。
787nobodyさん:2010/07/04(日) 11:12:10 ID:???
改造しようと思ったけど、定数が分からないってオチ?
788nobodyさん:2010/07/04(日) 12:38:39 ID:???
定数というか「どうしてこういう書き方してるんですか?」だと思うけどな。

質問の仕方もそうだけど、回答する側もある程度質問者の
意図するところを汲み取るようにしないと。相手は分からないんだから。
エスパー出来ない奴は答えるべきじゃないよ。
789nobodyさん:2010/07/04(日) 13:34:13 ID:???
どうしてこういう書き方をしてるかどうかなんて分かるわけないじゃん書いた当人じゃないんだから
国語のテストかよ
790nobodyさん:2010/07/04(日) 13:47:16 ID:???
>>786
最後で吹いたw
791nobodyさん:2010/07/04(日) 13:57:27 ID:???
>>789
俺ならこう答えるよ
「定数にする事で、共通ディレクトリや設定値を入れて
 各ファイルで呼び出すが出来るから。」
792nobodyさん:2010/07/04(日) 14:07:56 ID:???
定数を知ってたらこんな質問しないだろうし>>787だろうな
793nobodyさん:2010/07/04(日) 16:02:43 ID:???
文字列の足し算がわからないのかなと思った。

ちなみに . 足し算ってなんの言語由来?
794nobodyさん:2010/07/04(日) 17:06:01 ID:/aajFMKw
if (isset($_POST["title"]) && $_POST["title"]) {

すみません、このifの条件文なんですが、どういうことなんでしょうか?;
変数がセットされていることと、もうひとつの条件がよくわからないです・・
795nobodyさん:2010/07/04(日) 17:24:09 ID:???
true
796nobodyさん:2010/07/04(日) 17:28:16 ID:???
!emptyだけでいい気もする
797nobodyさん:2010/07/04(日) 18:07:51 ID:???
!= ""
じゃ駄目?
798nobodyさん:2010/07/04(日) 18:54:41 ID:/aajFMKw
うーん・・
$_POST["title"]がtrueってどういうことを意味するのですか?
799nobodyさん:2010/07/04(日) 18:59:52 ID:???
800nobodyさん:2010/07/04(日) 19:35:11 ID:/aajFMKw
>>799みました

注意: $xが定義されていない状態で単に if ($x)としてしまうと
E_NOTICE レベルのエラーが発行てしまいます。
代わりに、empty()や isset()を使うかあるいは変数を初期化するようにしてください

このことですか?
いまいちわからないです;
801nobodyさん:2010/07/04(日) 19:56:27 ID:???
if($_POST["title"] == 0)
って判断したい場合、$_POST["title"]が未定義の場合もtrueと判断される。
それを防ぐため定義チェック(isset)を追加したりする。

んで>>794の場合は条件的にissetは必要ないのだけど、クセかなんかで
issetを付けちゃってるだけだと思う。
802nobodyさん:2010/07/04(日) 20:28:54 ID:???
PHPの設定次第では、未定義参照でエラーっす。
で、issetでチェックしてあれば、ショートサーキットで後ろの評価しないんで・・・
803nobodyさん:2010/07/04(日) 21:59:15 ID:lkrZPMso
>>780です。お返事ありがとうございます。
すいませんが、定数の定義付けってdefine("定数名","定数の値") でなくとも
できるのでしょうか?
どうしてこういう書き方をしているのかご教授お願いいたします。
804nobodyさん:2010/07/04(日) 23:07:11 ID:???
どうして定数だと判断したの?
805nobodyさん:2010/07/05(月) 01:21:12 ID:kve1q94K
constructの使い方について質問です。

class Main extends Sub
{
public function __construct()
{
echo $this->test;
}
}

abstract class Sub
{
public function __construct()
{
$this->test = 1;
}
}

$ob = new Main;


というコードを書いたのですが、何も出力されません。
イメージ的には継承されたSubの値がMainに反映されて
結果が表示されると思ったのですが、継承元でconstructは無理なのでしょうか?
806nobodyさん:2010/07/05(月) 02:01:53 ID:???
>>805
子クラスでコンストラクタを定義した場合は
明示的に parent::__construct() で呼ぶ必要がある
807nobodyさん:2010/07/05(月) 04:49:47 ID:???
>>801
issetは必要。存在し、未入力じゃないことのチェックのイディオムだよ。
808nobodyさん:2010/07/05(月) 05:10:09 ID:???
!=か!emptyでも同じやん
809nobodyさん:2010/07/05(月) 05:13:11 ID:???
>>807
揚げ足で悪いが未入力じゃないというのは語弊がある
正しくは存在し且つNULL以外で初期化されている変数だと思う
810805:2010/07/05(月) 10:20:52 ID:???
>>806
ありがとうございます。上手くできました。
811nobodyさん:2010/07/05(月) 12:23:16 ID:???
テキストボックスに0が入力されたらどうなるんだろうな
812nobodyさん:2010/07/05(月) 12:54:33 ID:???
内容は "0"だよな  == だと 0 でも trueだけど。
==による緩やかな比較の欄どぞ
http://php.net/manual/ja/types.comparisons.php
813nobodyさん:2010/07/05(月) 13:26:37 ID:E/YNQXWp
if (isset($_POST["title"]) && $_POST["title"]) {
}
else {
echo "titleが未入力ですよ";
}

未入力チェックってこういうことだと思うんだけど、
"0"の場合に未入力と判定されちゃわない?

質問になってしまったのでID出し。
814nobodyさん:2010/07/05(月) 14:01:03 ID:???
emptyは?
815nobodyさん:2010/07/05(月) 14:36:41 ID:???
emptyは0を「存在しない」扱いしたはず
816nobodyさん:2010/07/05(月) 15:00:30 ID:???
未定義でエラー出さんだけで ! つけたのとか、 == falseと同じでしょ。
817nobodyさん:2010/07/05(月) 15:06:22 ID:???
>>813
される
それをやりたいなら
if(isset($_POST["title"]) && $_POST["title"] != "") {
}
とするべき
818nobodyさん:2010/07/05(月) 15:06:31 ID:???
== null
もよく見るけど、あれと == "" とは違うの?
819nobodyさん:2010/07/05(月) 15:08:32 ID:???
>>818
nullと空はまったくの別物
820nobodyさん:2010/07/05(月) 15:13:38 ID:???
test
821nobodyさん:2010/07/05(月) 15:15:29 ID:???
== null って有効だっけ?
is_nullをいつも使っているんだが
822nobodyさん:2010/07/05(月) 15:18:34 ID:???
だからー
!== とか === 使えって。

== NULL って、 false でも 0でも 空の配列でも  "" でも 通るぞ。
823nobodyさん:2010/07/05(月) 15:25:57 ID:???
書き込みできなくてイライラしてる人が沢山いるんだろうな
824nobodyさん:2010/07/05(月) 16:03:47 ID:???
回答者は●を買いなさい
825nobodyさん:2010/07/05(月) 16:08:53 ID:???
また大規模規制でもあったのか?
826nobodyさん:2010/07/05(月) 16:33:32 ID:???
通年です
827nobodyさん:2010/07/05(月) 16:36:38 ID:???
モリタポもらってp2お勧め
828nobodyさん:2010/07/05(月) 16:38:39 ID:???
そろそろ夏休みの季節か・・・
829nobodyさん:2010/07/05(月) 16:42:07 ID:???
大学の夏休みはたしか10月までだっけ?
830794:2010/07/05(月) 17:07:39 ID:XGgM750L
むずかしいなぁ・・

$_POST["title"]がtrueを返すときの条件が比較表?みてもわからない;

http://www.phppro.jp/school/phpschool/vol13/2
今このスケジュール表のプログラミングしてるんですが、このページの下のほうにある

<dl>
<dt><label for="schedule-title" id="label-title">タイトル
</label></dt>
<dd><input type="text" name="title" id="schedule-title"
value="<?php print(htmlspecialchars($_POST["title"],
ENT_QUOTES)); ?>" /></dd>
<dt><label for="schedule-body" id="labe-body">内容</label></dt>
<dd><textarea name="body" id="schedule-body">
<?php print(htmlspecialchars($_POST["body"], ENT_QUOTES)); ?>
</textarea>
</dd>
</dl>

これは正しいのですか?
何回試してもエラーが出てしまいます。
Undefined index: title in <b>C:\Apache2.2\htdocs\schedule_edit.php</b>
on line <b>121</b><br />
<br />
<b>Notice</b>: Undefined index: body in <b>C:\Apache2.2\htdocs
\schedule_edit.php</b> on line <b>125</b><br />
831nobodyさん:2010/07/05(月) 17:23:48 ID:???
>>830
Undefined index: となってるから
$_POST["title"]と$_POST["body"]を空で送信(submit)してるでしょ
空で送信されたら未定義になる。
未定義なのにprintさせようとしてるからNoticeがでてる。

正しくはissetなどで確認してから・・・となるんだろうけど
この場合のNoticeは無視しちゃう所多いよ
832nobodyさん:2010/07/05(月) 17:39:17 ID:???
>>830
http://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting

あとphpproの講座は使えないから他の本で勉強する事をお勧めする
833nobodyさん:2010/07/05(月) 17:41:56 ID:qHUIRNCb
大角本がいいよ
834nobodyさん:2010/07/05(月) 17:48:04 ID:???
ひろゆきオススメのあれか?w
835nobodyさん:2010/07/05(月) 18:26:03 ID:E/YNQXWp
>>817
formで送られるデータって文字列として取得されることが保障されてるんだっけ?
それなら !== ""でよさそうだけど。

>>830
phpの内容がわからないのでどこが121行目かちょっとわからんとです。
836nobodyさん:2010/07/05(月) 21:22:59 ID:???
>>831
最初のフォーム表示時じゃないの?
空で送信しても string(0) "" にならない?
837nobodyさん:2010/07/05(月) 21:59:14 ID:???
入力欄が空なんじゃなくて、$_POST["title"]を送信してないって意味では
838nobodyさん:2010/07/05(月) 22:07:58 ID:???
>>837
そのためのissetでしょう?
839nobodyさん:2010/07/05(月) 22:17:23 ID:???
まだやってんのか。
所詮はただの配列なんだからちょこっとコード書いてみりゃ分かるだろ。
840nobodyさん:2010/07/05(月) 22:22:52 ID:???
if( isset($_POST['title'][0]) )

これだけでおk、
841nobodyさん:2010/07/05(月) 22:23:16 ID:???
誰も明確な回答を示さずにぐだぐだやってる感じがいいよね
842nobodyさん:2010/07/05(月) 22:37:01 ID:???
その内、派閥的な論争が始まる
843nobodyさん:2010/07/05(月) 22:55:30 ID:???
>>840
空送信し放題じゃん
!==か、分かりづらければisset && != とかでいい
この辺は好みだよね
844nobodyさん:2010/07/05(月) 22:59:24 ID:???
>>843
> 空送信し放題じゃん
どこがw
845nobodyさん:2010/07/05(月) 23:26:29 ID:???
それでおkってことは、フォームデータは文字列として取得することが
保障されているってことでいいのかしら。
ラジオボタンとかでvalue=1とかしてても勝手にint変換されたりしない、でおk?
846nobodyさん:2010/07/05(月) 23:34:50 ID:???
リクエストパラメータは常に文字列ってマニュアルの何処かに書いてあったはずだからググれ
847nobodyさん:2010/07/05(月) 23:49:49 ID:???
ありがとう!
848nobodyさん:2010/07/05(月) 23:54:24 ID:???
>>840
[0]っていったいどういうこと?
849nobodyさん:2010/07/05(月) 23:56:22 ID:???
もはやバッドノウハウ系な気が
850nobodyさん:2010/07/06(火) 00:49:38 ID:???
PHPはフィールド名に[]が付いてたら配列に展開するので
文字列か配列かのどちらかになる可能性がある
コードゴルフならともかく初心者に>>840を教えてるのが居たら袋叩きにしていいぞ
851nobodyさん:2010/07/06(火) 01:07:54 ID:???
コードが短ければ玄人ってわけじゃないんだし、
第三者が見てわかりやすい記述を心がけようぜ。
852nobodyさん:2010/07/06(火) 01:42:19 ID:???
そんなに叩く程か?
Cのコードゴルフじゃあるまいし全然原型とどめてるじゃん。
853nobodyさん:2010/07/06(火) 02:24:13 ID:???
>>852
application/x-www-form-urlencoded の title[0]=0 を受け入れるが意図した挙動じゃないだろ?
入力値を信用したコードの時点で使いものにならない
854nobodyさん:2010/07/06(火) 02:57:17 ID:???
そもそも空文字列の時に[0]は\0だったりしないのかな。C的な発想で申し訳ないが。
855nobodyさん:2010/07/06(火) 08:57:03 ID:???
>>835
name属性がない場合 null

name属性があって入力がない場合 ""

よって

if( isset($_POST['hogehoge'] ) && $_POST['hogehoge'] !== "")
{

}

じゃねーのかい!
856nobodyさん:2010/07/06(火) 10:38:17 ID:???
こんな基本的なところで何騒いでいるんだ・・・
857nobodyさん:2010/07/06(火) 11:22:03 ID:1Cm5WNj+
よくフレームワークやMVCのコードを書く時、URLが
http://(ドメイン)/(コントローラー)/(アクション)
という形になっているのを見かけます。

例)掲示板に投稿
http://hoge.com/bbs/entry

それで思ったのですが、アクション(メソッド)が指定されているURLに
直アクセスされた場合、どうするのでしょうか?
POSTのデータが送られてきたか否かで判断して、直アクセスの場合は
元のページにリダイレクトする、とかそう言う事をしているのでしょうか?
アクションを直接GETとしてURLに含めるのは、セキュリティ的に疑問です。
858nobodyさん:2010/07/06(火) 11:32:45 ID:???
セキュリティ的にGETでだめならPOSTでもだめだろ。
859nobodyさん:2010/07/06(火) 11:39:40 ID:???
そもそも、アドレス関係ない話じゃん。
860857:2010/07/06(火) 12:07:00 ID:1Cm5WNj+
>>858
GETだとフォームを介さなくてもアクセスできるから
POSTより緩いと思うんですよね

>>859
857に書いたようなURLがformのactionにしていされていたら
検索エンジンのクローラーに取得される可能性があります。
そうなると、セキュリティ的にまずいと思うんですよ。
861nobodyさん:2010/07/06(火) 12:18:29 ID:???
セキュリティの問題でクローラーがどうのとか、そこが変なんだよ。
862nobodyさん:2010/07/06(火) 12:25:44 ID:???
cakephpかなんかで適当にサンプル作って、ソース見ればいいよ。
あっさり解決するから。
863857:2010/07/06(火) 13:34:39 ID:???
わかりました。そうします。
864nobodyさん:2010/07/06(火) 13:51:27 ID:???
>>860
せ…、セッ

いや、なんでもない。
865nobodyさん:2010/07/06(火) 21:14:40 ID:???
セキュリティがまずいっていうか、クローラーやトレンドマイクロからスパム投稿される
866nobodyさん:2010/07/07(水) 00:12:26 ID:???
キャプチャでもおいとけば?
867nobodyさん:2010/07/07(水) 00:32:00 ID:???
置けばどうなるの?
868nobodyさん:2010/07/08(木) 08:59:00 ID:Tsw8WKYJ
【PHPのバージョン】5.2 above
【質問内容】
PHP で文字列を組み上げるのに、Ruby でいうところの #{} 的な
インラインテンプレートみたいなのってないでしょうか?
sprintf と + で処理の実現自体は可能なんですが、なんかごちゃごちゃしてしまうので
もうちょっとエレガントな記法ってないのかなと思って質問する次第です。
よろしくお願いします。
869nobodyさん:2010/07/08(木) 09:53:28 ID:???
つSmarty
870868:2010/07/08(木) 10:05:54 ID:???
あぁ、Smarty 使ってるプロジェクトならいちおそれありなのかなぁ。
ただ、それだけのために Smarty 組み込んだところで、余計可読性下げそうでちょっと勘弁。
ありがとうございました。
871nobodyさん:2010/07/08(木) 10:51:51 ID:???
可読性が下がることはないと思うけどな。
まあ、自分でテンプレート処理書いちまえばいいんだと思うけど。
実際は "This is a {$pen}";ですむんじゃねーの?
872868:2010/07/08(木) 11:04:41 ID:???
m9(・∀・) ソレダ
単純に "{$var}" で展開されたのね・・・万事解決です、本当にありがとうございました。
ってかくと感謝してなさそうに見えて不思議ですが、ほんとに助かりました。ありがとう。
873nobodyさん:2010/07/08(木) 11:07:30 ID:???
Rubyの#{}が何なのか分からなかったのはオレだけ
874868:2010/07/08(木) 11:31:52 ID:???
この手の記述って便利なんだけど、ググれないのが困るんですよね。
875nobodyさん:2010/07/08(木) 18:18:32 ID:???
.htaccessの話なのですが、
アクセス規制用に以下の部分を別ファイルにしたいのです。

deny from 192.168.0.11
deny from 192.168.0.12
deny from 192.168.0.13
deny from 192.168.0.14

みたいな感じで。

httpd.confを触れるなら  include ファイルパス
で、できるのですが。。。。

.htaccessではできないんどえしょうか?
876nobodyさん:2010/07/08(木) 18:22:36 ID:???
なぜここで聞く
877nobodyさん:2010/07/08(木) 18:28:08 ID:???
>>876
apache スレ言ってきます。
878nobodyさん:2010/07/08(木) 22:38:14 ID:lGIUgqyl
勉強中の初心者です。PHP+MYsqlで質問です。
DB名を、配列に取得して、プルダウンメニューで選択するようにしたいのですが
ボックスに表示する部分なのですが
mysql_list_dbsを使ってmysql_fetch_arrayでいけますか?
879nobodyさん:2010/07/09(金) 03:37:15 ID:xzt7gYmY
同じくPHP + MYSQLについて。
ユーザー定義関数内でデータベースを扱う場合、
各関数内に

//MySQLに接続
$con=mysql_connect(DB_SERVER, DB_USER, DB_PASS);

//データベース選択
mysql_select_db(DB_NAME,$con);

として一々データベースに接続しているのですが、
パフォーマンスは悪くならないのでしょうか?
みなさんがどうしてるか知りたいのです。
もし一々接続しなくてもいける方法、
もっとパフォーマンスが良くなる方法などがあればご教授ください。
880nobodyさん:2010/07/09(金) 04:23:31 ID:???
クラスにしてプロパティに入れておく
881nobodyさん:2010/07/09(金) 08:47:02 ID:???
>>879
インターフェース作ればいいんじゃね?
882nobodyさん:2010/07/09(金) 17:23:12 ID:7d5uHpFB
PHPにインターフェイスは実装されていません
883nobodyさん:2010/07/09(金) 17:29:30 ID:???
884nobodyさん:2010/07/09(金) 17:42:25 ID:???
>>883
お前php.netハッキングしただろ
885nobodyさん:2010/07/09(金) 21:53:07 ID:???
>>879
同じ引数で接続する場合は既存の接続を再利用してくれるが
USE `database` を毎回発行するのは無駄なので、
リソースをどこかにプールしておくべき

function get_connection() {
  static $c;
  if (!$c) {
    $c = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
    mysql_select_db(DB_NAME,$con);
  }
  return $c;
}
886名無しさん@そうだ選挙に行こう:2010/07/10(土) 04:56:21 ID:WdQ5SbfS
今まで問題なく動いていたシステムが鯖移転で一点不具合でてまして、にっちもさっちもな状態なので助言いただきたく思ってます。
外部へのコネクションが極端に時間がかかるのです。
普通のテキストを読み込むだけで10〜20秒程度要します。

厳密には関係ないかもですが、ネットワーク帯域自体は細いわけではなくサイトは瞬時に表示されます。
ただのこの外部へのコネクション時は非常に時間がかかるんです。

PearのHTTP_Clientを使って接続しているのですが、何か情ありませんでしょうか?
887名無しさん@そうだ選挙に行こう:2010/07/10(土) 04:58:08 ID:WdQ5SbfS
忘れてました。
PHPは5.1,6です。
888名無しさん@そうだ選挙に行こう:2010/07/10(土) 05:37:00 ID:4d57FSnB
<?php
$fruit = array("Apple" => "りんご", "Orange" => "みかん",
"Grape" => "ぶどう");

で例えばAppleの中にある文字が本当にりんごだった場合のみ
処理を続行するようなことってできますか?

もしAppleに「みかん」が入っていたら処理を中断するような感じにしたいんですけど
889名無しさん@そうだ選挙に行こう:2010/07/10(土) 06:07:03 ID:WdQ5SbfS
>>888
if ($fruit['Apple'] === 'りんご') {
echo 'Appleはりんごだよー';
}
else {
echo '中断するよ';
}



887です。
原因はDNS周りにありそうです。汚しましてすいませんでした。
890名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:37:46 ID:2QvhDB/5
PHP掲示板で、携帯とJaneとPCに対応しているやつはありませんか。
891名無しさん@そうだ選挙に行こう:2010/07/10(土) 12:41:51 ID:2QvhDB/5
このへんがよさげなんですが。PHPかJaneに対応していないんですが。

0ch PHP
http://script.s16.xrea.com/2ch/php/

Sch BBS
http://www.sanadake.info/sch/bbs/

0ch BBS
http://0ch.mine.nu/
892名無しさん@そうだ選挙に行こう:2010/07/10(土) 14:58:38 ID:g8ZkkqTi
文字列の末尾に指定文字が含まれているか
調べるにはどうすればいいのでしょうか?

$text = 'testName';
$type = 'Name';
if (strstr($text, $type)) {
echo $text."に".$type ."は含まれています";
}

とするれば一応出来るのですが、「末尾が$typeである」
という条件を加えたいと思います。やり方を教えてください。
893名無しさん@そうだ選挙に行こう:2010/07/10(土) 15:01:24 ID:2QvhDB/5
正規表現使っとけ。
PHP5とかからだと、文字列の後方検索に対応していたはずだけど。
多くで動くようにするなら、正規表現。
894名無しさん@そうだ選挙に行こう:2010/07/10(土) 15:10:36 ID:g8ZkkqTi
ありがとうございます。自信ないけど、こんな感じですかね?
if(preg_match("/(.*)+" . $type . "$/", $text, $array)){
echo $text."に".$type ."は含まれています";
}
895名無しさん@そうだ選挙に行こう:2010/07/10(土) 15:15:33 ID:2QvhDB/5
たぶんそんなかんじ。聞くより動作みたほうがいいでしょ。
896名無しさん@そうだ選挙に行こう:2010/07/10(土) 15:21:46 ID:g8ZkkqTi
動作はするのですが、
もし別の条件で通ったり通らなかったり無いか自信が無くて・・・
とりあえずこれでいきます。
897名無しさん@そうだ選挙に行こう:2010/07/10(土) 16:01:10 ID:???
こんなのでわざわざ正規表現使う必要ないだろ

if( substr( $text, 0-strlen($type)) === $type )
898794:2010/07/10(土) 17:45:08 ID:9rtjPRpZ
.= ってどういう意味ですか?
899名無しさん@そうだ選挙に行こう:2010/07/10(土) 17:57:03 ID:???
$title = "baka";
$title .= "test";
echo $title; //bakatest
900794:2010/07/10(土) 18:18:52 ID:9rtjPRpZ
ありがとう!
901名無しさん@そうだ選挙に行こう:2010/07/10(土) 22:32:13 ID:0jjmMoFC
「elseif」と「else if」、どっち使ってます?
ちなみにPHPのネストの上限ってあります?
後者が内部的にはネスト扱いとなるなら、関係あるのかなーと思って。
902名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:11:38 ID:o7F/R3R5
903901:2010/07/10(土) 23:44:49 ID:0jjmMoFC
>>902
なるほど〜。どうもです。
インタプリタ的には前者を使った方が優しいかな。
904名無しさん@そうだ選挙に行こう:2010/07/11(日) 01:19:52 ID:C1oKqEx5
クラスが継承されているか否か調べる関数か、書き方があれば教えてください
905名無しさん@そうだ選挙に行こう:2010/07/11(日) 02:54:27 ID:???
>>904
function is_class_extended($base) {
    foreach (get_declared_classes() as $super) {
        $class = new ReflectionClass($super);
        while ($class = $class->getParentClass()) {
            if ($class->getName() === $base) {
                return true;
            }
        }
    }
    return false;
}

echo 'Exception is extended? ', var_export(is_class_extended('Exception'), true), PHP_EOL;
echo 'stdClass is extended? ', var_export(is_class_extended('stdClass'), true), PHP_EOL;
906名無しさん@そうだ選挙に行こう:2010/07/11(日) 08:03:31 ID:???
get_parent_class($object)
907名無しさん@そうだ選挙に行こう:2010/07/11(日) 11:42:10 ID:???
class_parents($object)
908名無しさん@そうだ選挙に行こう:2010/07/11(日) 19:08:50 ID:aH0kYx2z
preg_match関数で正規表現の複数指定方法について
./aaaディレクトリ内においてディレクトリ名がbbb/
さらにその中のccc/までたどり着くには
どういった記述がよろしいのでしょうか
909nobodyさん:2010/07/12(月) 10:44:20 ID:???
日本語でおk
910nobodyさん:2010/07/12(月) 18:29:55 ID:2AUEyQFR
>>908
正規表現で投票してみればいいさ。
911nobodyさん:2010/07/12(月) 20:09:58 ID:o18xCfm1
$sql = "SELECT user.name,category.name FROM user INNER JOIN category USING(category_id)";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res,MYSQL_ASSOC)){
print_r($row);
}

とした時に、nameの部分が被って配列に代入されます。
フィールド名の指定を「user.name, category.name AS cate_name」
みたいに変更する以外に方法はないのでしょうか?
912nobodyさん:2010/07/12(月) 21:29:01 ID:r9oprwp5
mysqli、PDOとか使えば、SQLの段階でasるのは避けられるけど、
結局bind時に変数名がかぶるから、asった方がいいと思う。
913nobodyさん:2010/07/12(月) 23:47:53 ID:???
>904
その実装方法は地雷だからやめた方がいい。
「必要なメソッドが実装されているか」だけを検査すべき。
スマートにやるならインターフェイスを使う。
914nobodyさん:2010/07/13(火) 00:07:54 ID:???
>>913
クラスが継承されている場合、継承元のクラスファイルを読み込む
ような仕様がしたいのですが、これも地雷になるのでしょうか?
915nobodyさん:2010/07/13(火) 00:43:05 ID:lEQMzPMj
タマゴが先かニワトリが先か。
916nobodyさん:2010/07/13(火) 00:51:22 ID:???
ニワトリが居ないと卵は産まれない
917nobodyさん:2010/07/13(火) 01:02:31 ID:???
>914
その場合、親クラスは絶対に読み込み済。だから読み込む必要などない。
やってみればすぐ分かるが、親クラスを読み込んでいない状態で子クラスは宣言できない。
918nobodyさん:2010/07/13(火) 03:29:43 ID:???
>>914
クラス定義する時にどのファイルが必要か判ってるんだから
require_once 基底クラス を書いておくか、
オートローディングを使うのが定石
http://www.php.net/manual/ja/language.oop5.autoload.php

A.php
<?php class A {}

B.php
<?php require_once 'A.php'; class B extends A {}

C.php
<?php require_once 'B.php'; new B();
919904:2010/07/13(火) 10:11:14 ID:???
>>917-918
ありがとうございます。

クラス定義する時、どのファイルが必要か分からないようにしたいんです。
フレームワークのように、柔軟に作ったファイルが読み込まれるような。

オートローディングは使っているのですが、
PHP4に対応させたい場合、どうすればいいかと思いまして。

また、918さんのような書き方もB.phpを各ファイルに書かなくてはいけず、
効率が悪いと思います。
920nobodyさん:2010/07/13(火) 10:26:14 ID:???
なんだ、オートローディングのPHP4対応の話と言えば早かったのかもね。
俺も困ったけど諦めた。
921nobodyさん:2010/07/13(火) 10:32:32 ID:???
もういいかげんPHP4は捨てていいと思うが
922904:2010/07/13(火) 10:35:05 ID:???
万が一の事を考えて想定していたのですが、
捨てても良いかもしれませんね。Class定義しにくいし。
オートローディングでやります。
923nobodyさん:2010/07/13(火) 20:22:51 ID:hmJ3ix43

xmlのエレメントを再帰的に配列に格納したいと思いますが、
いい案が思い浮かびません。

xsltのように捜索してテンプレートにマッチさせ値を取得できればと思っています。
xpathを利用しても、取り出す要素は固定化してるし。

何かいい方法はありませんでしょうか。

924nobodyさん:2010/07/13(火) 20:51:27 ID:???
require_once 'Zend/Json.php';
$array = Zend_Json::decode(Zend_Json::fromXml($xml, true));
925923:2010/07/13(火) 22:32:14 ID:hmJ3ix43
924さん、ありがとうございます。

さすがに、アトリビュートも取得する方法はありませんでしょうか。
一応取得時にarrayでなく、objectも指定しましたがアトリビュートの値までは
取得できませんでした。

926nobodyさん:2010/07/13(火) 23:06:59 ID:???
false にすれば @attributes でのるはずです。
927923:2010/07/14(水) 01:19:28 ID:ez+KFUZ4
すごい!載りました。

ありがとうございました。

928nobodyさん:2010/07/14(水) 08:49:45 ID:XR87xhsM
<?php
$b = '$a = "あいうえお"';

var_dump($b);

$aの変数を取り出す方法はありませんでしょうか。

929nobodyさん:2010/07/14(水) 09:37:02 ID:???
何がしたいかよくわからんが、

$b = $a.'="あいうえお"';

じゃないのか?
シングルクォートで囲んでたら文字列扱いされるよ
930nobodyさん:2010/07/14(水) 09:42:02 ID:XR87xhsM
文字列をphpのコードとして実行させたいです。

931nobodyさん:2010/07/14(水) 09:43:27 ID:???
932nobodyさん:2010/07/14(水) 10:00:23 ID:XR87xhsM
ありがとうございました。

javascriptみたいですね。
933nobodyさん:2010/07/14(水) 10:40:28 ID:???
>>932
なぜそうなる
934nobodyさん:2010/07/14(水) 10:58:15 ID:XR87xhsM

単純にevalで評価するところとか。
935nobodyさん:2010/07/14(水) 14:54:55 ID:???
スクリプト言語っぽさがでてるところだね。

>>933は読み間違いをしたんだと思う。
936nobodyさん:2010/07/14(水) 16:43:45 ID:oe5o0zrz
ADODBのCacheFlushが全削除かSQL文ごとにしかキャッシュを消せないようなのですが、
テーブルごとのキャッシュを消すためになんかいい方法ないでしょうか?
今のところSQL文を別テーブルに保存してそれを消すときに取り出してひたすらforeachしようかと思っているのですが。
937nobodyさん:2010/07/14(水) 17:54:19 ID:???
スレチ失礼。ATNDより、PHP関連の勉強会を紹介します。


■Ktai Library for cakephp 勉強会@関東
URL: http://atnd.org/events/6209
日時: 2010/07/17 11:00 to 15:00
場所: マイ・スペース&ビジネスブース池袋西武横店
参加条件: Masa-Pさんの本「PHPで作る携帯サイト デベロッパーズガイド」を持参、かつ4章までを自力である程度実装できている、もしくは出来る方


■OpenPNE3で学ぶsymfony勉強会
URL: http://atnd.org/events/6255
日時: 2010/07/24 15:00 to 17:00
場所: 手嶋屋新宿御苑オフィス
内容: この勉強会は毎回OpenPNE3の各機能、仕様にフォーカスを当て、ベースフレームワークであるsymfonyを理解していく勉強会です。
参加者はみんなsymfonyに興味のあるプログラマです。Webエンジニアとのネットワークづくりにもお役立てください。


■Python4PHPer 第7回講習会
URL: http://atnd.org/events/6344
日時: 2010/08/12 10:00 to 22:00
場所: 国立オリンピック記念青少年総合センター
内容: Python未経験者向けの、PythonとGoogle App Engine (GAE) の入門講座です。


■第11回 LOCAL PHP部勉強会
URL: http://atnd.org/events/6443
日時: 2010/08/28 14:00 to 16:30
場所: 札幌市産業振興センター セミナールーム9
938nobodyさん:2010/07/14(水) 17:56:29 ID:???
スレチ失礼って何もしらずに書き込むよりたちわりいな。しね
939nobodyさん:2010/07/14(水) 18:16:54 ID:???
しかもマルチだしな
940nobodyさん:2010/07/14(水) 19:12:50 ID:???
Masa-Pさんの名前を出していろんなスレに書き込むとは・・・とりあえずMasa-Pさんを恨むわ
941nobodyさん:2010/07/14(水) 19:14:08 ID:???
まさPとやらを叩けばいいってことだな?Masa-Fの兄弟か?
942nobodyさん:2010/07/14(水) 19:14:13 ID:???
スパムにマジレスかっけー
943nobodyさん:2010/07/14(水) 20:31:35 ID:???
マジレスしてないと思うけど
944nobodyさん:2010/07/15(木) 23:59:02 ID:???
スレチ失礼(キリッ

分かってんなら書き込むな氏ね
945nobodyさん:2010/07/16(金) 13:45:22 ID:???
ハァ?
946nobodyさん:2010/07/16(金) 14:04:06 ID:???
何に対して怒ってんだよ
947nobodyさん:2010/07/16(金) 15:29:50 ID:SH5lEMBU
WordPressで先頭に固定表示した投稿の、タイトルや投稿日時などを非表示にするにはどうしたらよいでしょうか。
固定表示した投稿をページのようにまっさらな状態にしたいのですが。
948nobodyさん:2010/07/16(金) 15:41:32 ID:???
自己解決しました。
index.phpに、以下の方法で該当部分のコードを囲んで出来ました。
これを機にPHPの勉強をしたいと思います。お騒がせしました。

<?php if (is_sticky()) {?>
<?php } else{ ?>
該当部分のコード
<?php } ?>
949nobodyさん:2010/07/17(土) 04:00:38 ID:thvaY0IW
質問させてください
画像をアップロードする時にリサイズしようと思っているのですが
リサイズ後の画像が真っ暗です
どこが悪いのでしょうか?
$src = @imagecreatefromjpeg($move_file);
$dst = imagecreatetruecolor($new_width,$new_high);
imagecopyresampled($dst,$src,0,0,0,0,$new_width,$new_high,$file_width,$file_high);
imagejpeg($dst,"./test.jpg");
950nobodyさん:2010/07/17(土) 04:11:39 ID:???
$file_width どこで出してんだ?
951nobodyさん:2010/07/17(土) 12:57:59 ID:???
一部しか出してこなかったらその変数がカラかどうかも分からないな
952nobodyさん:2010/07/17(土) 21:59:34 ID:z9LmUGB3
Apacheの公開フォルダに入れたWebアプリケーション等のソースコードを、ブラウザからは実行できるものの、ソースコードは他人に見られないように保護するような設定って出来るんでしょうか?
もし出来るのであればWindows、Linux共に方法を知りたいです

例えば友人のパソコンにWebサイトなどを作ってやってApache下に置いたとしても、友人がそのソースコードを真似て他に配布したりというのを避けたいのです
Linuxであればパーミッションでと思ったのですが、相手のパソコンなので、普通にroot権限だとパーミッションなんか関係なくなるので意味が無いなと思いまして
どうしたらいいのでしょうか?
953nobodyさん:2010/07/17(土) 22:28:43 ID:???
そんな友人と言えない仲なら何もしないでスルーする。
954nobodyさん:2010/07/17(土) 22:34:13 ID:???
難読化でいいんじゃないですか
955nobodyさん:2010/07/18(日) 00:01:33 ID:???
友人のパソコン使わせてもらって何を言ってるんだか
956nobodyさん:2010/07/18(日) 12:13:05 ID:MZPafWAG
そもそもOSは何だ?
957952:2010/07/18(日) 13:21:53 ID:???
確かに、おかしな質問だということは分かるのですが、あまり自分のコードを他に使って欲しくない理由がありまして
友人のパソコンを使うのではなく、自分で開発したものをフォルダ内に入れるということです

OSは相手はWindowsXPとか7のHome版です
自分はCentOS使ってますけど

難読化以外には何か対策は無いのでしょうか?
例えば何かソフトでそのフォルダへのアクセスをガードできたとしても、ブラウザ上で実行が出来なければ意味が無いですし

皆さんは商用の場合はどのような対策をされているのでしょうか?
そのままシステムを丸々他にコピーされても困ると思うのですが
例えcopyrightを書いていたとしてもさほど関係なさそうですし
958nobodyさん:2010/07/18(日) 13:34:46 ID:???
他に使って欲しくないなら友人のパソコンに入れなきゃ良いだけ。
なんでそれが友人なの?最初から隠さず商用と書けば良いのに。
商用なら色々方法あるし。
959nobodyさん:2010/07/18(日) 13:42:03 ID:???
ライセンス契約で縛る。本当に価値のあるソフトウェアの場合、損害賠償額が凄まじい事になる。
最近は「オープンソースにする」という裏技もあるが。

友人と契約なんてできない?そもそも人のコードを勝手に盗む、あるいは盗むかもしれないと疑わないといけないような奴は友人ではない。
960952:2010/07/18(日) 13:57:38 ID:???
>>958
まぁ友人に頼まれてって感じなのですが、個人で使うならいいのですが、おそらく他人のパソコンにも入れるだろうなと思いまして
例えばWindowsのダウンロード→インストールするタイプのフリー版以外のソフト(詳しく知りませんがCだかVisual C++なんかで作られたものなど)は簡単には他のパソコンには入れられませんが、
PHP何かで作ったものはApache下に置いたフォルダさえあれば言い訳で、どう対処するんだろうと疑問に思いまして
自分は自分の為だけにしか作ったことが無いもので、そういった場合どうするんだろうと思いまして


>商用なら色々方法あるし
具体的にはどのような対処法があるのでしょうか?
もし宜しければ教えていただきたいです


>>959
ライセンス契約ですか
確かにそれが一番だと思います
ただ、興味本位で聞かせていただきたいのですが、その場合中にはそういうのを無視して配布するような人もいて、こちらがそういう相手を認識できないこともあると思いますが、
そういう場合はどのようにするのがいいのでしょうか?

よく考えてみて、こういう問題ってPHPは難しいな、と思いまして
961nobodyさん:2010/07/18(日) 15:18:50 ID:???
レン鯖かなんかでwebapi的に動かしたら?
962952:2010/07/18(日) 16:47:37 ID:???
>>961
確かにそのような事も考えたのですが、アプリケーションによってはlocalhost/のようにネットに繋がなくても使えるものもありまして
特にDBを動かすようなものは

そこで振り返ってみて、PHPでそういう話題とか記事を見聞きしたことが無いな、と思いまして質問させてもらいました
そういう場合に自分ではどうにも対策が分かりませんでした
963nobodyさん:2010/07/18(日) 17:21:45 ID:???
ローカルで動かさすならローカルにコード置くしかないだろ
964nobodyさん:2010/07/18(日) 18:42:48 ID:VLBtU4j9
おかしいな人。
それはその人を信頼するしかないんじゃないの?
もしくは自分で自宅サーバーを作ってその友達しか入れないように
するとか。
後はライセンスだな。でもこっそりほかの人に配布したら
意味ないし、つーかPHPは難しいなというよりあんたが難しい。
後別にlocalhostでの起動ならphpでなくてもよかったんじゃないの?
965nobodyさん:2010/07/18(日) 20:06:43 ID:WiuHCw18
リクエストされたURLを取る方法を教えてください。
ぐぐって$_SERVER ['REQUEST_URI']とか試しましたがドメイン部分が取れません。
他にも色々試しましたがドメイン部分移行の/の後しか取れません。
PHP5.2.11でCentOS、Apache2.2です。
966nobodyさん:2010/07/19(月) 00:05:30 ID:???
$_SERVERをvar_dump()するだけで解決するのに
967nobodyさん:2010/07/19(月) 08:29:41 ID:???
>>952
システム屋なんかはシステム入りのサーバーを丸ごと貸し出して
内部には入らせないようにするとこもあるらしいけど。
あくまで使用のみの権限にして。まあWEBAPIみたいなもんだけど。
難読化は解読が難しくなるだけで、ブラウザ上でも実行可能だけど。

実は以前これで揉めた事があるので、良い対策方法を俺も知りたい。
968nobodyさん:2010/07/19(月) 11:10:14 ID:???
中の確認できないようなサーバーを社内にって
969nobodyさん:2010/07/19(月) 11:26:37 ID:???
phpをc++に変換して実行
970nobodyさん:2010/07/19(月) 13:52:04 ID:???
>>967
PHPはこの点は難しいよね。
ちょっとPHP知ってる人がいればすぐに真似されたり転用され得るから。
例えばVC++で作られている(と思われる)ソフトなんかは例えばテキストエディタで開いても文字化けしてたりして、詳しくない人はビビってそれ以上やらないだろうけど。
難読化はただ相手に転用される時に判別付きにくくする程度の気休めだろうけどね。




>>969
自分はC++はやったこと無いんだけど、C++に変換とか出来るの?
またそういうので対策になるの?
971nobodyさん:2010/07/19(月) 16:14:03 ID:2i1rbnSf
コンパイルすりゃーいい
972nobodyさん:2010/07/19(月) 16:30:35 ID:???
すみません 教えてください。 whileを使ってHTMLでテーブル作成するとき、
<?php
while ($row1 = mysql_fetch_array($res1)) {
print "<tr>\n";
print "<td><b><a href=./e=&view_id=".$row1["s_name"].">" . $row1["s_name"]."</a></b></td>\n";
print "</tr>\n";
}
?>
<td>を<td align="center">とか余分なタグを入れるとエラーがでます。
<table>も同じくです。printするだけなのに、どうしてエラーになるのでしょう?
973nobodyさん:2010/07/19(月) 16:37:57 ID:???
"を\"でエスケープしてみたらどうなの
974nobodyさん:2010/07/19(月) 17:51:26 ID:sHIUCWJE
レッツPHP!様の新着ブロガー(ttp://php.s3.to/net/)というプログラムを利用しようと思い
RSSサイトURLをひとつだけ設定し、記事表示件数を5としました。
すると表示される一番最初の記事だけが表示され
あとの四行が全て(1970/01/01)と表示されてしまいます。
これは何がいけないのでしょうか?
975sage:2010/07/19(月) 17:53:10 ID:Ug5vBszx
print "<td><b><a href=./e=&view_id=".$row1['s_name'].">" . $row1['s_name']."</a></b></td>\n";

シングルクォート使っちゃいなよ。
976nobodyさん:2010/07/19(月) 18:31:31 ID:???
>>974
var_dump($ch) してみたら?
977nobodyさん:2010/07/19(月) 23:12:05 ID:???
>>973.975
ありがとうございます。 HTMLをprintする時は注意が必要なんですね。
問題点が見えました。
978nobodyさん:2010/07/19(月) 23:34:04 ID:???
>HTMLをprintする時は注意が必要なんですね

いや、そうじゃなくてな、
文字列の中に(中略)というわけでそれを言うなら「時は」じゃなくて「に限らず」だな。
979nobodyさん:2010/07/20(火) 01:26:17 ID:???
次は

$str = "<td><b><a href=./e=&view_id=".$row1["s_name"].">" . $row1["s_name"]."</a></b></td>\n";

でエラーになります><

だな
980nobodyさん:2010/07/20(火) 21:20:03 ID:???
別に難読化しても解読できるような友人なら初めから>>952に製作を頼まなくね?
だから難読化で無問題だと思う。
981nobodyさん:2010/07/20(火) 23:02:30 ID:???
実はPHPの上記のような商用の場合の対策はあるのだよ
そのパソコンでしか使えないようにするような事は
ただ、コードが複雑になってしまう

難読化に関してはまぁしてもしなくてもいいんだけど、出来るならした方がいいと思うね
982nobodyさん:2010/07/21(水) 02:35:12 ID:FRhRPQxh
shimmieという画像投稿SNSライクなソースコードを日本語化して運用してるのですが、

http://lh4.ggpht.com/_M6yDAZ34keM/TEXa-23DdOI/AAAAAAAAAEU/pt0imvSvoDs/mbstr.jpg

上記画像のようにフォームから出力された文章の一部がランダムに文字化けしたり、半角空白が挿入されたりしています。
色々試すと、ある程度の長文でマルチバイト文字のみがこうなるようです。
php.iniを見直しても分からずじまいで、原因はどこにあるのでしょうか。
983nobodyさん:2010/07/21(水) 04:07:51 ID:???
mb_convert で変換してるなら mb_detect_order の設定が怪しいかも・
それか自前でへんなエスケープしてるとか
984nobodyさん:2010/07/21(水) 22:29:40 ID:???
>>982
の内容にちょっとワロタ
985nobodyさん:2010/07/22(木) 00:31:23 ID:9L3V/lR5
本当にくだらない質問なんですが
$cgi = $context->getCgi();

この場合の「->」ってどういう働きをしているのでしょうか
986nobodyさん:2010/07/22(木) 00:54:29 ID:???
>985
>5 の4。ちなみに名前は「アロー演算子」と言うのだが、あまりこの名称を使っている人を見ない。
つうかこのスレだけで数回出てきているので「->」で検索。

まずは配列(array、連想配列)を思い浮かべてくれ。
$user["name"]とか$user["age"]とか、そういう変数を複数持てるアレだ。

配列だとキー名は単なる文字列だが、オブジェクトの場合はキー名の代わりに変数名みたいなものを使える。
$user->age とか $user->name とかいう形でアクセスできる。 ちなみにうっかり$user->nmae とかタイプミスするとエラーになる。
んで、オブジェクトを使っている場合は、値だけではなく「関数」も持たせられる。
$user->get_price()とかすると、$userの持ってるget_price()という関数が呼び出される。
この関数の中では、$user->ageや$user->nameのような、「オブジェクトの持つ変数」も使えるし、$user->get_gender()のような他の関数も(書いてあれば、だが)呼べる。

詳しくはマニュアルにて熟知すべし。
http://jp2.php.net/manual/ja/language.oop5.php
987nobodyさん:2010/07/22(木) 01:56:48 ID:9L3V/lR5
>>986
すばらしいお返事です!ありがとうございました!
988nobodyさん:2010/07/22(木) 02:49:53 ID:???
テンプレにあるんだけどな!
989nobodyさん:2010/07/22(木) 08:46:02 ID:???
phpでローカルのプログラムをexec() で実行すると遅いんですが、
なにか理由があるのでしょうか。

990nobodyさん:2010/07/22(木) 14:09:39 ID:NJJj5G9E
投票サイトで連続投稿とか投票ボタン連打されると
データ保存用のdatファイルの内容が消えたりするんだが
何が原因なの?

サイトurl
http://test001.atumari.net/miku/miku.php
ソースurl
http://test001.atumari.net/miku.zip
991nobodyさん:2010/07/22(木) 14:38:59 ID:???
IP抜かれちゃったぜ
992nobodyさん:2010/07/22(木) 14:40:14 ID:???
サイトもソースも見てないけど、どうせ排他制御してないんでしょ
993nobodyさん:2010/07/22(木) 14:55:10 ID:NJJj5G9E
flock($file,LOCK_EX);
はしてるけどやり方が間違ってるのかな?
994nobodyさん:2010/07/22(木) 15:09:19 ID:???
parse_ini_fileで読み込むiniファイルの仕様についての
まとまった説明ってどっかにない? がんばって探してる
けどどうにも見つけられない
995nobodyさん:2010/07/22(木) 15:22:24 ID:???
>>993
やり方が間違っている。

排他制御対象のファイルは読むときもロックしないとだめ。
そうじゃないと書き換え中の半端な状態のファイルを読んで
しまうことがある。

"w"でfopenするとその時点でファイルが空になるので、その
あとでflockしても手遅れ。ロック外で書き換えたことになる。
996nobodyさん:2010/07/22(木) 16:54:25 ID:NJJj5G9E
>>955
ありがとうございます!
997nobodyさん:2010/07/22(木) 21:45:15 ID:???
>>994
iniなんてwindows世界のものなんだから[*]
「PHPで」という風に探さずに
↓という方向で探せばけっこう見つかるよ。
http://www.google.co.jp/search?hl=&q=windows+ini%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB+%E6%9B%B8%E5%BC%8F&sourceid=navclient-ff&rlz=1B3GGLL_jaJP384JP384&ie=UTF-8&aq=1&oq=windows+ini%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

[*]厳密にそうなのかどうかは、まあ知らん。
998nobodyさん:2010/07/22(木) 22:18:31 ID:???
次スレはどこ?
999nobodyさん:2010/07/23(金) 01:27:05 ID:???
999
1000nobodyさん:2010/07/23(金) 01:27:48 ID:???
このスレは1000の風になりました
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。