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

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

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

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

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

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

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);
}
0019nobodyさん2010/05/29(土) 21:37:15ID:???
スパゲッティコード乙
0020nobodyさん2010/05/29(土) 22:07:07ID:???
別にコード自体は単純なもんだけど、何か暗号化の使い方が間違っているような気がする。
エンコード側どうやってる?
0021nobodyさん2010/05/29(土) 22:43:33ID:???
エンコ側は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);
}
0022nobodyさん2010/05/29(土) 22:50:25ID: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
0023nobodyさん2010/05/29(土) 23:23:39ID:???
>>21
それとデコードをPHPだと、うちだと動くんだけどな。

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

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

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

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

ここまでしか取得できていないんですが、一体なにが原因なんでしょう??
ちなみに>>22はブックオフのサイトです。
0028nobodyさん2010/05/30(日) 08:28:54ID:???
>>26
PHPでも同じことすればいいんだよ。使ってる文字コードの範囲かチェックすれば。
結果がバイナリだからって失敗ではないのだし。
0029nobodyさん2010/05/30(日) 09:24:13ID:???
>>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();
}
0030nobodyさん2010/05/30(日) 10:55:46ID:???
>>27
なんじゃこれ。と思って実験してみたら
UAを設定したら全部取れた。
鯖が途中までしか送ってこない理由は分からん

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

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

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

0051EM114-48-95-102.pool.e-mobile.ne.jp2010/05/31(月) 23:42:10ID:dCMCj0N4
http://tsushima.2ch.net/test/read.cgi/newsplus/1275313544/20

質問あげ
0052nobodyさん2010/06/01(火) 07:26:04ID:qOSq8mL1
$option = array (
"src" => ここ,
"folder" => "folder/",
"size" => 120
);

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

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

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

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

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

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

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

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

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

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

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

$dr6 = preg_match("|(¥./)|", "", $thum);
0068nobodyさん2010/06/01(火) 19:56:54ID:???
と思ったらereg_replaceかよw
0069nobodyさん2010/06/01(火) 20:31:05ID: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しか帰ってきません・・・・
0070nobodyさん2010/06/01(火) 20:44:06ID:???
>>69
>>66
0071nobodyさん2010/06/01(火) 20:45:49ID:???
preg_matchの構文がおかしい
マニュアルみたらすぐ解決するのになぜ見ないかね
./を消すだけならstr_replaceでやればいいじゃん
0072nobodyさん2010/06/01(火) 21:44:02ID:6jzz/jSk
str_replaceで処理するようにしました
ありがとうございました
0073nobodyさん2010/06/01(火) 22:04:52ID:???
超初級質問です
echoの際、シングルクオテーションで囲まれた$変数はそのまま$つきで
表示されるはずなんですが、以下はなんでちゃんと、
$変数の中身が表示されるんでしょう?

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

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


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

フレームか何かでその部分だけはVBの部分と独立させてやれると尚いいのですが
0083nobodyさん2010/06/02(水) 16:07:21ID:???
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を編集したら時間は延びたようでしたが、元に戻ってしまったようです
(ファイルの中身はちゃんと追記されたままになってるのに)。

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

while($num=strpos(゙あかあおしろ゙,゙あが,0))
)
で一番最初の文字列にヒットした場合弾かれてしまいます。
何かいい解決法があれば、どうかご教示をお願いします。
0104nobodyさん2010/06/03(木) 00:03:18ID:???
>>103
while (($num = strpos('あかあおしろ', 'あか', 0)) !== false) {}
0105nobodyさん2010/06/03(木) 00:42:40ID:???
>>102
{}使ったほうがすっきりする場合は使ってる。
0106nobodyさん2010/06/03(木) 01:25:57ID:???
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>';
も動きませんでした。
書き方がまちがっていますでしょうか?
0107nobodyさん2010/06/03(木) 01:26:34ID:???
展開可能とはいえ文字列ん中に変数入れるとか普通気持ち悪くね?
HTMLの中に書くって事でスタートしてるからこうなってるんだと思うよ
つまりビュー層のハナシ
zend のコーディング規約でもシングルクオートで変数は連結しろとかなかったっけ?
他言語の使い手にも読みやすいって事まで考えてそうなってると思うんだけどな
0108nobodyさん2010/06/03(木) 01:35:04ID:???
>>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>';
でいいじゃんかよ

ちゃんとエスケープもしろよ?歯も磨けよ?
0109nobodyさん2010/06/03(木) 01:35:14ID:???
>>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>';

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

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

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

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

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

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

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

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

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

お尋ねしたいのは、_SERVER['SCRIPT_NAME']でもエスケープする必要があるのかということです。
SCRIPT_NAMEにはPHP_SELFのようなXSSの脆弱性はないと思ってたんですが、
何か特殊な方法による攻撃の対象になることがあるんでしょうか?
0128nobodyさん2010/06/03(木) 17:55:31ID:???
>>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'
現在実行されているスクリプトの絶対パス
0129nobodyさん2010/06/03(木) 17:57:58ID:OUHRb8my
CentOS5.3でPHP5.1を使っています。

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

0150nobodyさん2010/06/04(金) 10:48:26ID:???
>>149
書いてはいけない理由はこのあたりを参考に
http://d.hatena.ne.jp/fbis/20090716/1247714151
http://d.hatena.ne.jp/Kiske/20100128/1264643384
0151nobodyさん2010/06/04(金) 10:53:50ID:???
>>150
ありがとうございます。
拝見いたしました。

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


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

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

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

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

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

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

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

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

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

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

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

上書きする際の流れは

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

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

ご指摘お願いします。
ソース必要でしたら貼ります。
0170nobodyさん2010/06/05(土) 00:03:29ID: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の仕様?
0171nobodyさん2010/06/05(土) 00:33:54ID:???
うん
0172nobodyさん2010/06/05(土) 00:34:22ID:???
>>168
うん。君が的外れ。

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

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

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

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

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

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

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

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

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

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

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

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

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

flockとかがアレなのはアレなんで,つまりそう言うのはDBゲホゲホ
0189nobodyさん2010/06/05(土) 06:03:58ID:???
>>187
internal encoding の事かー!!
0190nobodyさん2010/06/05(土) 08:09:37ID:???
>>188
それに頼るならわざわざfile_existsする必要なくね?
0191nobodyさん2010/06/05(土) 13:48:58ID:???
0192nobodyさん2010/06/05(土) 13:57:26ID: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 |
0193nobodyさん2010/06/05(土) 14:11:06ID:???
Adobe のDreamweaverCS5で開発やってる人っている?
どーも、ついに本格的にCS5でPHPのコードヒントとか関数リファレンス、
動的な部分もプレビューしてくれたりとか、プロジェクト管理もできるようです。

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

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

どうもありがとうございました。
0198nobodyさん2010/06/05(土) 15:12:55ID:???
>>186
普段DB使ってて、ファイルでのデータ管理は経験ない素人が適当なこと言って悪いけど、
ロックファイル作成後、書き込み時にロックファイルを確認すればいいんじゃない?
ロックファイルが複数あったら、先に作成されたほうだけを有効にするとか。
0199nobodyさん2010/06/05(土) 17:06:14ID:dqtCuv4f
>>194
ありがとうございます。とりあえずサンプルみて頑張ります。
(こんな関数しらんかった…)
0200質問1/22010/06/05(土) 18:17:47ID: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' && ";
}
0201質問2/22010/06/05(土) 18:18:54ID: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>
0202nobodyさん2010/06/05(土) 18:29:58ID:???
$Col0と$Col5がないんじゃ?
0203nobodyさん2010/06/05(土) 18:30:23ID:???
古くさいコードだな
0204nobodyさん2010/06/05(土) 18:35:44ID:???
某所ってどこなんだよ
0205nobodyさん2010/06/05(土) 18:47:16ID:IfiEpjR7
【OS名】
 Ubuntu 9.10
【PHPのバージョン】
 5.2.10
【連携ソフトウェア】
 MySQL
【質問内容】
 SQLインジェクションを防ぐためには、プリペアードステートメント(PDOのbindParam)を
 使うだけで十分なんでしょうか?
 怖いので、今はhtmlspecialchars($text, ENT_QUOTES)というのをやってから
 プリペアードステートメントを使ってINSERTやUPDATEをしてます。
0206nobodyさん2010/06/05(土) 19:37:59ID:???
>>205
htmlspecialcharsをそこで使うのは間違い
0207nobodyさん2010/06/05(土) 19:47:38ID:???
bindParamは変数をバインドするだけだから関係ない
prepareね

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

説明じっくりよんでみ
0208nobodyさん2010/06/05(土) 20:08:07ID: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対策は十分ですか?

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

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

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

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

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

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

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

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

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

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

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

>・SQLインジェクションを防ぐ方法はプリペアードステートメントを使うのが良いのはわかりますが、
> htmlspecialcharsを使う方法が代わりにならない理由は何ですか?
xssとsqlインジェクションとではエスケープすべき文字列が異なるからです
02172132010/06/05(土) 23:34:04ID:bkBaLixK
>>214
つまりどう書けばいいんですか?
0218nobodyさん2010/06/05(土) 23:37:11ID:???
>213
preg_match("/[0-9]+$/", $str);
0219nobodyさん2010/06/05(土) 23:37:52ID:???
>>213
$str = "28habcpt918";
$length = count($str) - strlen((int)strrev($str)) - 1;
$format = sprintf("%05d", strrev((int)strrev($str)));
echo substr($str, 0, $length) . $format;
0220nobodyさん2010/06/05(土) 23:39:11ID: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
になってしまいます。初歩的で申し訳ありませんが、
希望の動作にするためにはどう記述すればいいか宜しくお願いします。
02212132010/06/05(土) 23:46:34ID:bkBaLixK
>>219
すごいです
感動しました
02222192010/06/05(土) 23:47:44ID:???
$lengthがおかしかったから訂正

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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


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

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

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


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

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

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

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

> 以前yumで全部インストールしたんだけど、あまりにバージョンが全部古いんで今回最新版を全部入れようと思ったら
yum update
0275nobodyさん2010/06/07(月) 14:50:49ID: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だとすぐだけど
0276nobodyさん2010/06/07(月) 15:15:25ID:hz9Zbx6T
>>274
あれ?
yum updateでPHPのバージョンとかも5.2とかにアップデートされるのでしょうか?
自分はyumでPHP環境を作る前に2度ほどyum updateをしたのですが、5.1.16とかの古いバージョンのままでした
php infoでも確認したつもりだったのですが
それかcentOSはそうなのでしょうか・・・

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

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

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

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

Amazon.co.jp: 10日でおぼえるPHP5入門教室 第2版 (CD-ROM付): 山田 祥寛: 本
http://www.amazon.co.jp/dp/4798118761
0289nobodyさん2010/06/08(火) 02:55:18ID:???
お前ら本なんて買ってるの?
Webからの情報のみで勉強してるのは俺ぐらいなのか?
0290nobodyさん2010/06/08(火) 03:24:23ID:???
知りたいことはwebで知れるんだけど
手っ取り早く1-10を見れるのは本かな
来週から突然pythonやってね。って言われたら
経費で本買って読む。みたいな
0291nobodyさん2010/06/08(火) 08:53:55ID:???
>>289
PHP自体は違ったけど、PEAR、ZFなんかはマニュアル全ページ読んだ
0292nobodyさん2010/06/08(火) 10:14:47ID:???
>>282
fgetcsvの文字化けと予想。  fgetcsv 文字化けで検索するといろいろあるよ。
0293nobodyさん2010/06/08(火) 10:57:16ID:???
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) プログラマが脆弱性をつくり易い環境を避ける
0294nobodyさん2010/06/08(火) 10:59:33ID:???
ウイルス対策はwindowsを避けろっていう程度の話か。
0295nobodyさん2010/06/08(火) 11:03:23ID:O0+3kZk7
LinuxにEclipse PDTを導入しようと思ってインストールしたのですが、
PHP実行可能ファイルの設定の所で実行ファイルパスにphp.exeを指定する所があるのですがここが分かりません
検索しても出てきませんでした
後、/usr/local/lib/phpの中にphpが展開されていると思うのですが、いくら探しても出てきませんでした
linux(FedoraやcentOS)ではどこにphp.exeがあるのでしょうか?

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

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

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

JavaでいうところのBigDecimalを使うとか、
特定のクラスを使用する必要がありますか?
0305nobodyさん2010/06/08(火) 13:08:53ID:???
小数を使わない。誤差が出ない計算を考える。他の言語でもそうじゃないの?
0306nobodyさん2010/06/08(火) 13:10:50ID:o6m5GUPU?2BP(2)
>>210
やってみます
0307nobodyさん2010/06/08(火) 13:17:20ID:???
>>304
例えば、PHPを避ける
0308nobodyさん2010/06/08(火) 14:06:45ID: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;
}
0309nobodyさん2010/06/08(火) 14:07:40ID:???
//メール送信関数
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";
  };
 };
}
0310nobodyさん2010/06/08(火) 14:08:41ID:???
送信テスト用スクリプト
$MAIL = new SENDMAIL();

if($MAIL->SetFROM('送信テスト元','hoge@example.com') === true)
{
if($MAIL->AddTO('送信テスト先','hagu@example.com') !== 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';
};
03113082010/06/08(火) 14:17:04ID: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');
03122002010/06/08(火) 14:23:33ID:KP/ycwH2
>>210
Error: invalid method
そのままではこれがでます。なので、

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

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

while ($date = fgets($file, 1024)){
$row = explode("\t", $date);
としたら解決しました。
すみませんでした。
0315nobodyさん2010/06/08(火) 16:39:32ID:???
下のような検索フォームを作りたいです。
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>
0316nobodyさん2010/06/08(火) 16:57:07ID:???
呼び出すCGIを選択するのではなくて
searchの値によってaaa.phpの中で場合分けして処理するのがセオリーだろうね。

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

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

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

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

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

Warning: phpinfo() has been disabled for security reasons in
0330nobodyさん2010/06/09(水) 09:24:00ID:???
文字が?になっちまうのは、文字コード変換処理で*失敗*してる。
mbstring.encoding_translation が onか、自前の処理が入ってるか分からんけど。
htaccess使えればoffにする。 使えないようなサーバーなら、
文字化けしないエンコードにページのエンコードを変えるしかない・・・
0331nobodyさん2010/06/09(水) 11:14:04ID: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 なのか??
0332nobodyさん2010/06/09(水) 11:26:06ID:???
から。がチョットいまいちだけど分からんほどではないかと。
英語のページ見ればよろし。
5からは INI_ALL
0333nobodyさん2010/06/09(水) 11:38:27ID:BsRvxOVf
>>330
ありがとうございます。ローカル、UP先ともに
;mbstring.encoding_translation = Off
という状態です。

>>327
encodというところはなく、encodingの文字が入るところは
先頭に全て;がついていました。
0334nobodyさん2010/06/09(水) 11:42:59ID: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以下のバージョンと読んじゃうね
0335nobodyさん2010/06/09(水) 11:51:23ID:???
いや、なんか変だな。ちょっと調べる。
0336nobodyさん2010/06/09(水) 12:47:11ID:W1sVZbXG
>>323

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

0339nobodyさん2010/06/09(水) 13:45:29ID:BsRvxOVf
>>336
ありがとうございます。
phpinfoを実行するとエラーがでてしまいます。
Warning: phpinfo() has been disabled for security reasons in
0340nobodyさん2010/06/09(水) 14:07:58ID: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
0341nobodyさん2010/06/09(水) 17:03:38ID: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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ブラウザのように高速にファイルを取得することはできないのでしょうか?
0376nobodyさん2010/06/11(金) 14:50:17ID:???
ファイルを取得してる部分のソースは?
03773732010/06/11(金) 14:56:15ID: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");
0378nobodyさん2010/06/11(金) 15:03:44ID:???
外部サーバから外部サーバのファイル取得ではなく、
ローカルから外部サーバのファイル取得?
そのスクリプト自体はサーバのレスポンス次第ですぐ返ってくる
www.google.comだと一瞬
ファイアーウォールとかが邪魔してるんだろうか
03793732010/06/11(金) 15:10:07ID:1mHG41R+
>>378
今はローカルサーバから外部サーバへの接続という形ですが、
将来的には外部サーへ移行させる予定です。(完成次第)

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


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

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

下らない質問にお付き合い頂きありがとうございました。
0383nobodyさん2010/06/11(金) 16:53:35ID:bRlHND6j
質問です。
Cache_Liteを使ってキャッシュを保存しているんですが
新着があった場合(キャッシュがない場合)に、
キャッシュとの差分のみ(新着部分のみ)を取得することってできませんか?
0384nobodyさん2010/06/11(金) 20:34:14ID:???
http://pc11.2ch.net/test/read.cgi/php/1188789351/
0385nobodyさん2010/06/11(金) 20:44:10ID:???
http://pc11.2ch.net/test/read.cgi/php/1166232514/931
これって終わってない?海外は情報も多いので兎も角、国内www
0386nobodyさん2010/06/11(金) 20:44:11ID:/BtEfgaD
1.htmlと2.htmlの差分抽出を求めることでキャッシュは必然ではない。
0387nobodyさん2010/06/11(金) 22:08:35ID:???
>368
開発環境はWindows or Macだが、動作させる開発サーバーはLinux(仮想マシン)で、本番環境と同じもの。
ディストリは某日本語サポートのあるものを使っている。
0388nobodyさん2010/06/12(土) 05:44:24ID:???
>>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 />";
}
0389nobodyさん2010/06/12(土) 05:57:57ID:???
1.5倍なら大したことないじゃん
0390nobodyさん2010/06/12(土) 06:00:00ID:???
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
0391nobodyさん2010/06/12(土) 06:06:46ID:???
1/10秒でそこまでするのもな・・・
5秒ってのが明らかに異常なわけで
0392nobodyさん2010/06/12(土) 14:05:51ID:CAUo94F7
最近PHPを始めたものです。とても初歩的な事を聞くようで申し訳ないのですが…

PHPを書いたファイルをWEBサーバで開いたところ何も表示されず、真っ白いままです。
おそらく、コーディングに誤りがあるのだと思うのですが、式が膨大な量なためどこにミスがあるのか見つけるのが大変です><
エラーメッセージを出して誤りのヒントを探りたいのですがどうやったらいいのでしょうか?
できれば、何行目にミスがあると指定してくれるものがあれば最高です。。ご教授くださいませ…
0393nobodyさん2010/06/12(土) 16:52:59ID:???
デバッガ使う
0394nobodyさん2010/06/12(土) 19:06:06ID:???
>>392
とりあえず、Webサーバの方のエラーログを覗いてみたら何か出てるかもよ。
0395nobodyさん2010/06/12(土) 20:29:04ID:???
>>392
ローカルでエラー表示するような実行環境作るといいよ
0396nobodyさん2010/06/12(土) 21:18:33ID:???
<?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/になりません
原因はなんでしょうか
03973962010/06/12(土) 21:19:17ID:7hIU3RqJ
すいません、ID出すのを忘れていました
0398nobodyさん2010/06/12(土) 22:10:26ID:???
えっ・・・?
0399nobodyさん2010/06/13(日) 00:36:25ID:???
リファラを設定するのは誰だろうね
0400nobodyさん2010/06/13(日) 00:47:14ID:???
ぐぐって、ちゃんとできてるやつ真似たらどうでしょう。
http://d.hatena.ne.jp/mgng/20090430/1241059100
2種類入ってるので、どっちかでテストしてみては

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

ttp://2chtocsv.zzg.jp/

2ちゃんのスレをCSVにするらしい
今まで無かったのが不思議だな
0402nobodyさん2010/06/13(日) 03:58:04ID:???
宣伝乙
こんなのこのスレにいるやつなら誰でも作れますから
0403nobodyさん2010/06/13(日) 05:50:13ID:???
>>402
正規表現と、多少の知識あればいけるなって事で同意w
てか、金取ってねぇサイトで宣伝乙もさもしいなw
0404nobodyさん2010/06/13(日) 09:43:25ID:???
正規表現必要か・・・?
0405nobodyさん2010/06/13(日) 14:27:11ID:???
でっcSVにしてどうすんの?
0406nobodyさん2010/06/13(日) 17:14:55ID:???
>>405
Microsoft Moneyにインポートする
0407nobodyさん2010/06/13(日) 18:57:45ID: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;

}

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>440
日本人が優れた人種とは一言も言っていない
要するにこんなくだらんことを思いつくようなやつはチョン以外ありえないって言いたかったんだよ
分かりにくくて悪かったな
0442nobodyさん2010/06/14(月) 17:01:22ID:???
一つ間違いないのはマルチするやつも、見せかけるやつもクズだってことだ。
0443nobodyさん2010/06/14(月) 17:20:19ID:???
もう一つ間違いないのは>>426が最もクズだってことだ。
0444nobodyさん2010/06/14(月) 18:18:39ID: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'); ?>
 …
0445nobodyさん2010/06/14(月) 18:33:38ID:???
ショートオープンタグをOFFにするとか 1行目 echoで出せば直るかも。
0446nobodyさん2010/06/14(月) 19:06:51ID:???
上のは間違い。
0447nobodyさん2010/06/14(月) 19:46:52ID:???
>>444
apacheの設定は必要ないだろうからそれだけじゃ分からないよ。
PHPの部分だけ表示されないとの事だけど、肝心のPHPの部分はどうなってるの?
includeしなきゃ表示される?
0448nobodyさん2010/06/14(月) 20:24:19ID:IP77a2fP
file_get_contentsでは失敗するとfalseが戻りますが404だったときに404を取得する方法はありますか?
0449nobodyさん2010/06/14(月) 20:25:36ID:154tZPz8
>>445
short_open_tagはoffになってました
>>447
XHTMLのものをそのまま使ってるだけなので
PHPのコード自体は問題ないはずです

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

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

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


■考えたコード

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

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

$keyword = trim($keyword);

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

ありがとうございます!

試してみたのですが、

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

このように2以上のスペースやタブの時に完全に半角スペースひとつになりませんでした。。
0454nobodyさん2010/06/14(月) 21:20:36ID: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)

この ”千田 洋幸” も分割したいです。
0455nobodyさん2010/06/14(月) 21:32:25ID:???
>>454
正規表現に全角スペースを足せばいいじゃん
0456nobodyさん2010/06/15(火) 04:36:19ID:???
<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文内のタグがすべてエラー対象になってしまいます。
何がいけないのかどなたかご教授のほどを…
0457nobodyさん2010/06/15(火) 05:05:47ID:???
文法くらいなんとかしろよ
0458nobodyさん2010/06/15(火) 10:27:34ID:???
これはひどい
0459nobodyさん2010/06/15(火) 11:02:33ID:???
SHIFT-JIS環境でPHPファイルを作ってしまい、
それをUTF-8にすると、コメントがすべて文字化けしてしまうのですが、
どうすれば日本語を文字化けせずにUTF-8に変更できるでしょうか?
SHIFT-JISからUTF-8にすると文字コードの違いから
文字化けしちゃうのはわかりますが、対処策がわかりません
0460nobodyさん2010/06/15(火) 11:09:33ID:???
>>1
0461nobodyさん2010/06/15(火) 13:53:31ID:???
すみません、スレ違いでした
0462nobodyさん2010/06/15(火) 14:25:48ID:FYWiA/i5
>>455

ありがとうございます。上手く行きました!
0463nobodyさん2010/06/15(火) 14:29:04ID: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でやるのかなと思っているのですが、
やり方がなかなか分かりません。
0464nobodyさん2010/06/15(火) 14:43:49ID:???
ループさせるのが簡単でいいんじゃね
0465nobodyさん2010/06/15(火) 14:51:30ID:FYWiA/i5
>>464

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

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

ありがとうございます! 
ヒントをもとにいろいろ試してみます!
0469nobodyさん2010/06/15(火) 15:18:12ID:???
$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);
0470nobodyさん2010/06/15(火) 15:19:29ID:???
>>467で結果が出ていたか
0471nobodyさん2010/06/15(火) 15:26:53ID:???
$a = array_merge(array_filter($a, function($s){return strlen($s) > 0;}));
0472nobodyさん2010/06/15(火) 15:27:54ID:wrbhrBX4
>>463
$array = array('', '', 'テスト', '12');
var_dump(array_diff($array, array('')));
0473nobodyさん2010/06/15(火) 17:38:39ID:pnwlJPRh
会員サイトでユニークID何にするか迷ってるんだけど
UNIXタイムスタンプってよくない?
0474nobodyさん2010/06/15(火) 18:02:28ID:???
別にそれでもいいけど、それなら連番でもよくね?
0475nobodyさん2010/06/15(火) 18:45:33ID:???
いやこう登録した時間も分かるし一石二鳥みたいな?
0476nobodyさん2010/06/15(火) 19:41:36ID:???
そして同じ時刻に2人登録して罠に...
0477nobodyさん2010/06/15(火) 21:01:27ID:???
同じ時刻に登録されるのが怖いならmicrotime()使えば?
1秒間に10万人が登録しても余裕(1マイクロ秒=100万分の1秒)
0478nobodyさん2010/06/15(火) 21:07:40ID:???
それでもやっぱり所詮は確率なのであった。ま、シングルコアなら
大丈夫な気がするけどw
0479nobodyさん2010/06/15(火) 21:09:11ID:???
DB使え。登録日もいれとけ。
0480nobodyさん2010/06/15(火) 21:10:43ID:???
会員ID&日時でいいじゃん。
0481nobodyさん2010/06/15(火) 21:17:55ID:???
まあ普通は登録日時は別にとっとくもんだ。
0482nobodyさん2010/06/15(火) 22:49:42ID:???
まあファイルロックでもして待たせればタイムスタンプでもいいわな
0483nobodyさん2010/06/15(火) 23:14:51ID:???
uniqidっていうユニークIDを生成する関数があるよ。
0484nobodyさん2010/06/16(水) 00:23:12ID:???
普通連番だろ
それ以外にする理由がない
0485nobodyさん2010/06/16(水) 00:35:10ID:???
IDをユーザが決められるようにすればいいじゃん
登録時に既存のIDをチェックして、重複が発生しないようにする
0486nobodyさん2010/06/16(水) 00:44:04ID:???
まあ掲示板みたくIDを表示する必要があるならそれでいいが
最近はメールアドレスをID代わりにするのがトレンド
0487nobodyさん2010/06/16(水) 01:27:08ID:???
そして連番にして番号をずらせば他の人の情報が読めちゃう不思議仕様に
0488nobodyさん2010/06/16(水) 01:41:37ID: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まで対応させるにはどうしたらいいでしょうか?
0489nobodyさん2010/06/16(水) 01:43:16ID:???
メールアドレスをID代わりにするデメリットもあるよね。
0490nobodyさん2010/06/16(水) 01:46:07ID:???
>>488
それはPHPの話なのかな?
Webサーバ(lighttpd?)でアクセス制限したいように見えるけど…。
04914872010/06/16(水) 01:56:07ID:sfuhSdY7
質問的には正規表現ですね
linux板で聞きます
0492nobodyさん2010/06/16(水) 02:52:57ID:???
環境Eclipse for PHP Developers(eclipse3.5.2)を使用しています。

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

実行時に引数を渡してやるにはどうしたらよいのでしょうか。
よろしくお願いします。
0493nobodyさん2010/06/16(水) 05:28:00ID: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();

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

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



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

SQL_CALC_FOUND_ROWS でぐぐってみてね。
0498nobodyさん2010/06/16(水) 11:40:12ID:???
後半のlimitって、count取ってからごにょごにょして作ったりしない?
0499nobodyさん2010/06/16(水) 12:34:49ID:???
countは全部数えるしかないし、limitつきのselectは適切なインデックスが
あれば全部見なくても値を返せるから別の処理。2回やってもしょうがない
と思う。まあインデックス使えなければ条件で全部ナメが2回走るかも
だけど、それはむしろインデックス用意しろだな。countとlimitつきのselectを
分けたいぐらい要素数が多いのならその価値はあるだろう。
0500nobodyさん2010/06/16(水) 13:56:16ID: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を減らすためできればファイル吐かずに済ませたいんですが、
何かお知恵はありませんでしょうか。
0501nobodyさん2010/06/16(水) 14:10:56ID:???
>>500
2つの場合でヘッダに違いがないかよーく比べてみるとなにかわかるかも?
0502nobodyさん2010/06/17(木) 04:56:28ID:mKgRGi9a
PHPでブログ投稿したいのですがそのようなアプリありますか?
0503nobodyさん2010/06/17(木) 05:16:08ID:???
phpのセッションはどうやってクライアントを判別してるのでしょうか?

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

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

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

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

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

ちなみにリンクでsubmitしたければ、javascriptで
onclickイベントにsumbitを書けばおk
0510nobodyさん2010/06/17(木) 18:22:02ID:???
<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件になっちゃうんだけど
どこがおかしいの?
0511nobodyさん2010/06/17(木) 19:55:52ID:???
>>510
スレタイを読まないお前の頭
0512nobodyさん2010/06/17(木) 23:06:44ID:???
勝手に質問だと思い込むのはやめてもらえませんか?
0513nobodyさん2010/06/17(木) 23:11:18ID:???
>>511
「くだらない質問をするときはIDを出さなければならない」とは書かれているようですが、それがいかがなさいましたか?
0514nobodyさん2010/06/17(木) 23:11:53ID:???
質問じゃないならスレ違い
0515nobodyさん2010/06/17(木) 23:14:24ID:???
>>514
くだらなくない質問もですか?
0516nobodyさん2010/06/17(木) 23:15:55ID:???
「くだらなくない質問もですか?」は明らかにくだらない質問だな
0517nobodyさん2010/06/17(木) 23:18:39ID:???
>>515
もちろんスレ違い。
くだ質というのは昔からそのようにできている。
0518nobodyさん2010/06/17(木) 23:18:57ID:WMbR8KJ3
亀で横からなんだけど、
>>30でUAを設定してるのと設定してないので取得できる量が変わるのはなんで?
0519nobodyさん2010/06/17(木) 23:21:50ID:???
なんでかわからんが、そのうちはまりそうな気配がするな。
パケットキャプチャしたりするとわかるのかな。
0520nobodyさん2010/06/18(金) 00:26:09ID:df2633Ti
php-5.3.2-srcをDLしたんですが
php4ts.dllをシステムフォルダにコピーすればいいらしいんですが
php4ts.dllが見つかりません
どこにおいてあるのでしょうか?
0521nobodyさん2010/06/18(金) 00:27:56ID:???
>>520
なんでそんなことしてんの?
0522nobodyさん2010/06/18(金) 00:41:58ID:df2633Ti
http://www.scollabo.com/banban/php/apd_02.html
このサイトによると必要らしいので
0523nobodyさん2010/06/18(金) 00:49:38ID:???
windowsへのインストールなら、xamppでいいじゃん。
少なくともそこのサイトの通りやっても5系の入れられないし、
あなたがダウンロードしちゃったのはソースなので使えないです。
0524nobodyさん2010/06/18(金) 01:29:12ID:df2633Ti
ええっーマジですか…
回答ありがとうございます
0525nobodyさん2010/06/18(金) 01:57:21ID:???
>>523
残婦なんか勧めるなよ
あれは「分かってるヤツ」がほんの若干の手間を省くためのもの

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

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

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

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

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

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

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

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

echo $_SERVER["REMOTE_HOST"];
は表示されません。
これは何処の設定をいじくれば表示されるようになるんでしょうか?
0533nobodyさん2010/06/18(金) 09:18:11ID:???
>>525
またお前か。最後まで面倒みてやれよ。
0534nobodyさん2010/06/18(金) 14:04:34ID:J92h6I5e
>>532
http://nyx.pu1.net/practice/server_var/server_var2.php#sample6
0535nobodyさん2010/06/18(金) 14:43:06ID: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"]となるので、ややこしく感じます。

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

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

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


http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270089/
bamcompileでスタンドアロンEXEアプリを作ろう - PHP TIPS:ITpro
0546nobodyさん2010/06/18(金) 18:25:10ID: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など
0547nobodyさん2010/06/18(金) 18:25:32ID:9ev+TnD6
サーバー環境付きで動くフルセットはこれ使えよ。

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

http://www.apachefriends.org/jp/xampp-windows.html#2671
05485462010/06/18(金) 18:26:25ID:UII6mL4g
【apc.php】
ttp://up.mugitya.com/img/Lv.1_up120571.jpg
ttp://up.mugitya.com/img/Lv.1_up120572.jpg
ttp://up.mugitya.com/img/Lv.1_up120573.jpg
ttp://up.mugitya.com/img/Lv.1_up120574.jpg

【phpinfo】
ttp://up.mugitya.com/img/Lv.1_up120575.jpg
ttp://up.mugitya.com/img/Lv.1_up120576.jpg
0549nobodyさん2010/06/18(金) 18:30:17ID:???
Linuxなら
apt-get install lamp-server とコマンドを打つだけで
Apache MySQL PHPが自動でインストールされるのに

Windowsは非常に面倒だな
0550nobodyさん2010/06/19(土) 05:25:01ID:9jWjEAKJ
PHPで4バイト整数のファイル入出力はどうやればいいですか。
0551nobodyさん2010/06/19(土) 05:41:28ID:???
fgets fputs
0552nobodyさん2010/06/19(土) 09:08:29ID:???
fread, fwrite
0553nobodyさん2010/06/19(土) 19:33:03ID: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になっちゃいます。
どうしたらうまく置換できるのでしょうか。
0554nobodyさん2010/06/19(土) 19:39:59ID:???
>>553
問題を細かく切り分けてみそ
0555nobodyさん2010/06/19(土) 19:57:20ID:???
>>553
mb_internal_encoding("UTF-8");
0556nobodyさん2010/06/19(土) 19:58:59ID:9jWjEAKJ
パスの内部コードを取得する方法ありますか。
05575532010/06/19(土) 20:31:04ID: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だと思ったのですが・・・
ヘッダーの設定方法がおかしいのでしょうか?
0558nobodyさん2010/06/19(土) 21:36:37ID:???
var_dump($_POST);
してIEとFirefoxで比べてみたらいい
0559nobodyさん2010/06/19(土) 22:46:46ID: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); }
0560nobodyさん2010/06/19(土) 23:01:00ID:???
intval
0561nobodyさん2010/06/20(日) 01:20:59ID:twag0hRe
forでaaa aab aac ...aaz aba abb abc ...zzy zzzというように3文字の文字列を表示するにはどうしたらいいでしょうか?
0562nobodyさん2010/06/20(日) 01:43:30ID:???
for ($a='aaa'; $a!='aaaa'; $a++) echo $a.' ';
0563nobodyさん2010/06/20(日) 01:55:32ID:???
>>562
すごい。そんな技できるんですね。
ありがとうございました。
0564nobodyさん2010/06/20(日) 01:59:37ID:qnX6bksX
ベーシック認証のページにログインしてHTMLを取得するには
どうすればいいでしょうか?
例えば、URL: http://example.com/basic.htmlと言うベーシック認証の
ページがありID:foo / Passwd:barの場合
$ary = file0("http://example.com/basic.html");じゃ取得できません。
どうすればいいのでしょうか?
0565nobodyさん2010/06/20(日) 02:06:30ID:???
>>557
ob_start("mb_output_handler");
消したら動いたけど。 ie8/fx3.6
0566nobodyさん2010/06/20(日) 02:09:23ID:???
>>559
pack
unpack
0567nobodyさん2010/06/20(日) 02:10:51ID:???
>>564
Basic認証がかかったページにアクセスする方法 - PHPプロ!Q&A掲示板
http://www.phppro.jp/qa/212
0568nobodyさん2010/06/20(日) 02:23:15ID:???
>>546
apc.stat を off にしてphpソースを変更
実行して変更が反映されてなければ間違いなくキャッシュされてる

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

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

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

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

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

ハイフンだったら縦棒(|など)に変換するとか。
0592nobodyさん2010/06/21(月) 00:59:52ID: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); } }
05935922010/06/21(月) 01:12:43ID:oQjyj8CX
自己解決しました
05945922010/06/21(月) 01:34:09ID: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]); }
0595nobodyさん2010/06/21(月) 01:43:11ID:???
>>594
そんな関数作らんでもmkdirにrecursiveオプションがあるんだからそれ使えばいいのに
0596nobodyさん2010/06/21(月) 12:33:30ID:oQjyj8CX
PHP4 PHP5に依存しないことが大事。
0597nobodyさん2010/06/21(月) 12:51:52ID:???
PHP4でのサンプル、mkdirのマニュアルページに載ってるけど、
pathinfoとかdirnameの日本語の不具合って直ってないよね?
http://bugs.php.net/bug.php?id=37738
0598nobodyさん2010/06/21(月) 18:06:11ID: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"; }
}
?>
0599nobodyさん2010/06/21(月) 18:16:36ID:???
>>591
「〜」の処理とか
> 座標をずらせばいいんじゃない?
これとか、多分素直にさせてくれないよ。

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

% php hoge.php
num=2

出るじゃん。
0603nobodyさん2010/06/21(月) 18:42:55ID:oQjyj8CX
PHP4.2程度できる方法ありますか。
0604nobodyさん2010/06/21(月) 18:46:36ID:???
4系だと出来んな。
グローバルに渡すしか。
0605nobodyさん2010/06/21(月) 18:47:44ID: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"; }
}
0606nobodyさん2010/06/21(月) 19:00:35ID: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"; } }

?>

0607nobodyさん2010/06/21(月) 19:09:33ID:???
PHP4系はオブジェクト指向まわりとかいろいろ
調子悪いので茨の道だぞ。
0608nobodyさん2010/06/21(月) 19:14:46ID:???
classBの $Anumと
classAの $Anum 別物じゃん。
結局BがAのインスタンスもってるだけで >>605と同じ・・・
0609nobodyさん2010/06/21(月) 19:16:50ID:???
PHP4環境ないから知らんけど
$a =& new A();
とかでしょどうせ。
0610nobodyさん2010/06/21(月) 19:27:13ID: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"; } }

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

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



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


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

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

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


一回目と二回目

file
10.944231987  14.324997901917

serialize
15.630096912384  10.502514839172

var_export
16.92795419693  13.347457885742

explode
1.0216579437256  1.743134021759
06316302010/06/22(火) 18:58:18ID:???
どれも一気読みで、一行読みとは比較していないが一気読み速いことはないだろう。
0632nobodyさん2010/06/22(火) 21:08:21ID:???
配列チェックでisset って使わなかったけど。isset ( $A[$n] )としたときに
勝手に$A[$n] =NULLがセットされる気がしてたから。
存在しない配列・変数は自動生成するもんだとおもってた。
しかし、今日気づいた。増えてなかった。
0633nobodyさん2010/06/22(火) 21:55:14ID:???
>>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にするとガタガタになるんで、
元の図形を回転させてみた。
いちおう句読点や長音、ニョロ、小さい「っ」の位置は正しく表示される。
でも、もともとのフォントの形が…残念…
0634nobodyさん2010/06/22(火) 22:09:05ID:???
あ、縦書き専用フォントを使うのか。元をちゃんと読んでなかったorz
0635nobodyさん2010/06/22(火) 23:33:08ID:???
>>627
効率って、
同じようなことするのにソースコードの行数が少なくて済む効率?
実行時間の効率?
使用メモリの効率?
0636nobodyさん2010/06/23(水) 00:03:36ID:???
すべて
0637nobodyさん2010/06/23(水) 03:08:02ID:???
ならループさせない方が効率いい
0638nobodyさん2010/06/23(水) 23:12:08ID:SXPCexzA
PHPを使ってファイルAをアップロードするとき、アップ途中でtmpフォルダにあるAを特定することって可能ですか?

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

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

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

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

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

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

x この問題を回避
x この問題を解決
0644nobodyさん2010/06/24(木) 07:45:38ID:???
>>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
06456422010/06/24(木) 07:57:50ID:WgZlfAT4
>>644
すみません、どうやらこちらの勘違いだったみたいです。

> var_dump($funcs)

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

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

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

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

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

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

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

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

>>662
umask値を変更してください。
0674nobodyさん2010/06/27(日) 07:10:24ID:???
ああ、読み間違えたね、俺。
0675nobodyさん2010/06/27(日) 12:43:50ID:aVrX+ivV
>>672
それつてmb_系(mb_substr)の関数仕えって事?
0676nobodyさん2010/06/27(日) 13:05:05ID:???
>>675
つかやってみろよ
0677nobodyさん2010/06/27(日) 14:02:58ID:???
>>675
http://jp.php.net/manual/ja/ref.mbstring.php
0678nobodyさん2010/06/27(日) 14:29:26ID:???
むしろなぜCみたく文字列を扱うのか
0679nobodyさん2010/06/27(日) 15:06:07ID:???
JavaScriptなら配列のように扱ってもちゃんと文字が取れるけど
普通は関数使うね
0680nobodyさん2010/06/27(日) 17:02:21ID:???
UTF8リテラルもなくなったしな
0681nobodyさん2010/06/27(日) 21:53:55ID: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に変更、それ以外はそのままファイルに追記していく形で変更を行ってます。
0682nobodyさん2010/06/27(日) 22:34:28ID:???
直接的な関数はないけどfgetcsvとfputcsvとか使えば少しは負担減るかも

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

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

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

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

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

どうすればいいですか教えて下さい。
0686nobodyさん2010/06/28(月) 15:05:34ID:t3TKO+l1
解凍レンジで解凍したら出来ました。
本当にありがとうございました。
0687nobodyさん2010/06/28(月) 17:01:14ID: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>
と置き換えたいのですがどうすればいいでしょうか?
0688nobodyさん2010/06/28(月) 17:04:09ID:???
>>687
正規表現で置換しろ。
0689nobodyさん2010/06/28(月) 17:08:50ID: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
正規表現分りません><
0690nobodyさん2010/06/28(月) 17:20:11ID:???
http://oshiete.goo.ne.jp/qa/5999304.html
#1嘘つき君。
>HP作成集などに載っている素材
>どれも問題ありません。
>(本の中で素材の注意書きに、「再配布や販売を目的とする素材の2次使用、商用利用は禁止する」とあります)
の部分は完全無視。
06916902010/06/28(月) 17:21:02ID:???
間違えた。
0692nobodyさん2010/06/28(月) 17:23:52ID:???
>>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等)・フレームワークは各該当スレへ
0693nobodyさん2010/06/28(月) 17:26:25ID:???
答え教えると別のパターンの時も聞いてくるだろ
勉強しろ
0694nobodyさん2010/06/28(月) 18:10:59ID: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
これ以降は聞きません
今回だけです
0695nobodyさん2010/06/28(月) 18:19:01ID:???
$rcd = ereg_replace("id=\"[^\"]+\"", "123", $var);
いろいろやってみるといいよ。
http://www.rider-n.sakura.ne.jp/regexp/regexp.php
0696nobodyさん2010/06/28(月) 18:35:46ID:???
DOMでも使えば?
0697nobodyさん2010/06/28(月) 18:35:48ID:me2fxhSA
>>695
( ^ω^)おっおっおっ
良いサイトありがとう!
0698nobodyさん2010/06/28(月) 18:37:34ID:me2fxhSA
>>696
DOMとかわかんないお( ^ω^)
でもありがとう( ^ω^)
0699nobodyさん2010/06/28(月) 18:47:59ID:z0Gu2+zS
PHP5で質問です。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数値足してくんなら、最初っから数値にしとけよ。
数値にみなせる文字列だったら+1すれば数値に解釈して"01" + 1 ってやれば 2になるけど "02"にはならねーから。
2桁で表示させる方法聞いといてそれなんでつかわねーんだよ。
俺らバカにしてんのか?
分かんなかったら分からんって書けよ。
0742nobodyさん2010/06/30(水) 15:02:56ID:???
>>740
???
0743nobodyさん2010/06/30(水) 19:10:54ID:???
プログラム初心者か、ただのバカなんだろ。
優しくしてやれよw
0744nobodyさん2010/06/30(水) 19:36:55ID:???
会話になってねー
こんな馬鹿と一緒の職場とか想像すると寒気がするな
0745nobodyさん2010/06/30(水) 20:19:11ID: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は初心者のため、すみませんがどこが間違えているのかご教授願えませんでしょうか。
よろしくお願いいたします。
0746nobodyさん2010/06/30(水) 20:35:59ID:???
エスパーじゃないんで、間違ってるであろう部分をみせてもらえんと
答えようがないよね? 
返事とか書き込むととか、話しかけるとか言われても
他人には分からないことだということは、理解頂きたい。
0747nobodyさん2010/06/30(水) 21:10:31ID:???
"時間" => array("AM","午前中"),
これを
"時間" => "午前中",
こうするとどうなるの?
07487452010/06/30(水) 21:51:29ID:QOd5zTpX
>>746
すみません・・・どう説明すればいいのかわからなくて・・・

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

んで>>794の場合は条件的にissetは必要ないのだけど、クセかなんかで
issetを付けちゃってるだけだと思う。
0802nobodyさん2010/07/04(日) 20:28:54ID:???
PHPの設定次第では、未定義参照でエラーっす。
で、issetでチェックしてあれば、ショートサーキットで後ろの評価しないんで・・・
0803nobodyさん2010/07/04(日) 21:59:15ID:lkrZPMso
>>780です。お返事ありがとうございます。
すいませんが、定数の定義付けってdefine("定数名","定数の値") でなくとも
できるのでしょうか?
どうしてこういう書き方をしているのかご教授お願いいたします。
0804nobodyさん2010/07/04(日) 23:07:11ID:???
どうして定数だと判断したの?
0805nobodyさん2010/07/05(月) 01:21:12ID: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は無理なのでしょうか?
0806nobodyさん2010/07/05(月) 02:01:53ID:???
>>805
子クラスでコンストラクタを定義した場合は
明示的に parent::__construct() で呼ぶ必要がある
0807nobodyさん2010/07/05(月) 04:49:47ID:???
>>801
issetは必要。存在し、未入力じゃないことのチェックのイディオムだよ。
0808nobodyさん2010/07/05(月) 05:10:09ID:???
!=か!emptyでも同じやん
0809nobodyさん2010/07/05(月) 05:13:11ID:???
>>807
揚げ足で悪いが未入力じゃないというのは語弊がある
正しくは存在し且つNULL以外で初期化されている変数だと思う
08108052010/07/05(月) 10:20:52ID:???
>>806
ありがとうございます。上手くできました。
0811nobodyさん2010/07/05(月) 12:23:16ID:???
テキストボックスに0が入力されたらどうなるんだろうな
0812nobodyさん2010/07/05(月) 12:54:33ID:???
内容は "0"だよな  == だと 0 でも trueだけど。
==による緩やかな比較の欄どぞ
http://php.net/manual/ja/types.comparisons.php
0813nobodyさん2010/07/05(月) 13:26:37ID:E/YNQXWp
if (isset($_POST["title"]) && $_POST["title"]) {
}
else {
echo "titleが未入力ですよ";
}

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

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

== NULL って、 false でも 0でも 空の配列でも  "" でも 通るぞ。
0823nobodyさん2010/07/05(月) 15:25:57ID:???
書き込みできなくてイライラしてる人が沢山いるんだろうな
0824nobodyさん2010/07/05(月) 16:03:47ID:???
回答者は●を買いなさい
0825nobodyさん2010/07/05(月) 16:08:53ID:???
また大規模規制でもあったのか?
0826nobodyさん2010/07/05(月) 16:33:32ID:???
通年です
0827nobodyさん2010/07/05(月) 16:36:38ID:???
モリタポもらってp2お勧め
0828nobodyさん2010/07/05(月) 16:38:39ID:???
そろそろ夏休みの季節か・・・
0829nobodyさん2010/07/05(月) 16:42:07ID:???
大学の夏休みはたしか10月までだっけ?
08307942010/07/05(月) 17:07:39ID: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 />
0831nobodyさん2010/07/05(月) 17:23:48ID:???
>>830
Undefined index: となってるから
$_POST["title"]と$_POST["body"]を空で送信(submit)してるでしょ
空で送信されたら未定義になる。
未定義なのにprintさせようとしてるからNoticeがでてる。

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

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

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

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

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

よって

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

}

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

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

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

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

いや、なんでもない。
0865nobodyさん2010/07/06(火) 21:14:40ID:???
セキュリティがまずいっていうか、クローラーやトレンドマイクロからスパム投稿される
0866nobodyさん2010/07/07(水) 00:12:26ID:???
キャプチャでもおいとけば?
0867nobodyさん2010/07/07(水) 00:32:00ID:???
置けばどうなるの?
0868nobodyさん2010/07/08(木) 08:59:00ID:Tsw8WKYJ
【PHPのバージョン】5.2 above
【質問内容】
PHP で文字列を組み上げるのに、Ruby でいうところの #{} 的な
インラインテンプレートみたいなのってないでしょうか?
sprintf と + で処理の実現自体は可能なんですが、なんかごちゃごちゃしてしまうので
もうちょっとエレガントな記法ってないのかなと思って質問する次第です。
よろしくお願いします。
0869nobodyさん2010/07/08(木) 09:53:28ID:???
つSmarty
08708682010/07/08(木) 10:05:54ID:???
あぁ、Smarty 使ってるプロジェクトならいちおそれありなのかなぁ。
ただ、それだけのために Smarty 組み込んだところで、余計可読性下げそうでちょっと勘弁。
ありがとうございました。
0871nobodyさん2010/07/08(木) 10:51:51ID:???
可読性が下がることはないと思うけどな。
まあ、自分でテンプレート処理書いちまえばいいんだと思うけど。
実際は "This is a {$pen}";ですむんじゃねーの?
08728682010/07/08(木) 11:04:41ID:???
m9(・∀・) ソレダ
単純に "{$var}" で展開されたのね・・・万事解決です、本当にありがとうございました。
ってかくと感謝してなさそうに見えて不思議ですが、ほんとに助かりました。ありがとう。
0873nobodyさん2010/07/08(木) 11:07:30ID:???
Rubyの#{}が何なのか分からなかったのはオレだけ
08748682010/07/08(木) 11:31:52ID:???
この手の記述って便利なんだけど、ググれないのが困るんですよね。
0875nobodyさん2010/07/08(木) 18:18:32ID:???
.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ではできないんどえしょうか?
0876nobodyさん2010/07/08(木) 18:22:36ID:???
なぜここで聞く
0877nobodyさん2010/07/08(木) 18:28:08ID:???
>>876
apache スレ言ってきます。
0878nobodyさん2010/07/08(木) 22:38:14ID:lGIUgqyl
勉強中の初心者です。PHP+MYsqlで質問です。
DB名を、配列に取得して、プルダウンメニューで選択するようにしたいのですが
ボックスに表示する部分なのですが
mysql_list_dbsを使ってmysql_fetch_arrayでいけますか?
0879nobodyさん2010/07/09(金) 03:37:15ID:xzt7gYmY
同じくPHP + MYSQLについて。
ユーザー定義関数内でデータベースを扱う場合、
各関数内に

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

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

として一々データベースに接続しているのですが、
パフォーマンスは悪くならないのでしょうか?
みなさんがどうしてるか知りたいのです。
もし一々接続しなくてもいける方法、
もっとパフォーマンスが良くなる方法などがあればご教授ください。
0880nobodyさん2010/07/09(金) 04:23:31ID:???
クラスにしてプロパティに入れておく
0881nobodyさん2010/07/09(金) 08:47:02ID:???
>>879
インターフェース作ればいいんじゃね?
0882nobodyさん2010/07/09(金) 17:23:12ID:7d5uHpFB
PHPにインターフェイスは実装されていません
0883nobodyさん2010/07/09(金) 17:29:30ID:???
てことはこれは幻覚か
http://php.net/manual/ja/language.oop5.interfaces.php
0884nobodyさん2010/07/09(金) 17:42:25ID:???
>>883
お前php.netハッキングしただろ
0885nobodyさん2010/07/09(金) 21:53:07ID:???
>>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;
}
0886名無しさん@そうだ選挙に行こう2010/07/10(土) 04:56:21ID:WdQ5SbfS
今まで問題なく動いていたシステムが鯖移転で一点不具合でてまして、にっちもさっちもな状態なので助言いただきたく思ってます。
外部へのコネクションが極端に時間がかかるのです。
普通のテキストを読み込むだけで10〜20秒程度要します。

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

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

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

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



887です。
原因はDNS周りにありそうです。汚しましてすいませんでした。
0890名無しさん@そうだ選挙に行こう2010/07/10(土) 12:37:46ID:2QvhDB/5
PHP掲示板で、携帯とJaneとPCに対応しているやつはありませんか。
0891名無しさん@そうだ選挙に行こう2010/07/10(土) 12:41:51ID: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/
0892名無しさん@そうだ選挙に行こう2010/07/10(土) 14:58:38ID:g8ZkkqTi
文字列の末尾に指定文字が含まれているか
調べるにはどうすればいいのでしょうか?

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

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

if( substr( $text, 0-strlen($type)) === $type )
08987942010/07/10(土) 17:45:08ID:9rtjPRpZ
.= ってどういう意味ですか?
0899名無しさん@そうだ選挙に行こう2010/07/10(土) 17:57:03ID:???
$title = "baka";
$title .= "test";
echo $title; //bakatest
09007942010/07/10(土) 18:18:52ID:9rtjPRpZ
ありがとう!
0901名無しさん@そうだ選挙に行こう2010/07/10(土) 22:32:13ID:0jjmMoFC
「elseif」と「else if」、どっち使ってます?
ちなみにPHPのネストの上限ってあります?
後者が内部的にはネスト扱いとなるなら、関係あるのかなーと思って。
0902名無しさん@そうだ選挙に行こう2010/07/10(土) 23:11:38ID:o7F/R3R5
http://jp.php.net/manual/ja/control-structures.if.php
09039012010/07/10(土) 23:44:49ID:0jjmMoFC
>>902
なるほど〜。どうもです。
インタプリタ的には前者を使った方が優しいかな。
0904名無しさん@そうだ選挙に行こう2010/07/11(日) 01:19:52ID:C1oKqEx5
クラスが継承されているか否か調べる関数か、書き方があれば教えてください
0905名無しさん@そうだ選挙に行こう2010/07/11(日) 02:54:27ID:???
>>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;
0906名無しさん@そうだ選挙に行こう2010/07/11(日) 08:03:31ID:???
get_parent_class($object)
0907名無しさん@そうだ選挙に行こう2010/07/11(日) 11:42:10ID:???
class_parents($object)
0908名無しさん@そうだ選挙に行こう2010/07/11(日) 19:08:50ID:aH0kYx2z
preg_match関数で正規表現の複数指定方法について
./aaaディレクトリ内においてディレクトリ名がbbb/
さらにその中のccc/までたどり着くには
どういった記述がよろしいのでしょうか
0909nobodyさん2010/07/12(月) 10:44:20ID:???
日本語でおk
0910nobodyさん2010/07/12(月) 18:29:55ID:2AUEyQFR
>>908
正規表現で投票してみればいいさ。
0911nobodyさん2010/07/12(月) 20:09:58ID: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」
みたいに変更する以外に方法はないのでしょうか?
0912nobodyさん2010/07/12(月) 21:29:01ID:r9oprwp5
mysqli、PDOとか使えば、SQLの段階でasるのは避けられるけど、
結局bind時に変数名がかぶるから、asった方がいいと思う。
0913nobodyさん2010/07/12(月) 23:47:53ID:???
>904
その実装方法は地雷だからやめた方がいい。
「必要なメソッドが実装されているか」だけを検査すべき。
スマートにやるならインターフェイスを使う。
0914nobodyさん2010/07/13(火) 00:07:54ID:???
>>913
クラスが継承されている場合、継承元のクラスファイルを読み込む
ような仕様がしたいのですが、これも地雷になるのでしょうか?
0915nobodyさん2010/07/13(火) 00:43:05ID:lEQMzPMj
タマゴが先かニワトリが先か。
0916nobodyさん2010/07/13(火) 00:51:22ID:???
ニワトリが居ないと卵は産まれない
0917nobodyさん2010/07/13(火) 01:02:31ID:???
>914
その場合、親クラスは絶対に読み込み済。だから読み込む必要などない。
やってみればすぐ分かるが、親クラスを読み込んでいない状態で子クラスは宣言できない。
0918nobodyさん2010/07/13(火) 03:29:43ID:???
>>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();
09199042010/07/13(火) 10:11:14ID:???
>>917-918
ありがとうございます。

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

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

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

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

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

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

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

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

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

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

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

var_dump($b);

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

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

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

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

0931nobodyさん2010/07/14(水) 09:43:27ID:???
>>930
ttp://php.net/manual/ja/function.eval.php
0932nobodyさん2010/07/14(水) 10:00:23ID:XR87xhsM
ありがとうございました。

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

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

>>933は読み間違いをしたんだと思う。
0936nobodyさん2010/07/14(水) 16:43:45ID:oe5o0zrz
ADODBのCacheFlushが全削除かSQL文ごとにしかキャッシュを消せないようなのですが、
テーブルごとのキャッシュを消すためになんかいい方法ないでしょうか?
今のところSQL文を別テーブルに保存してそれを消すときに取り出してひたすらforeachしようかと思っているのですが。
0937nobodyさん2010/07/14(水) 17:54:19ID:???
スレチ失礼。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
0938nobodyさん2010/07/14(水) 17:56:29ID:???
スレチ失礼って何もしらずに書き込むよりたちわりいな。しね
0939nobodyさん2010/07/14(水) 18:16:54ID:???
しかもマルチだしな
0940nobodyさん2010/07/14(水) 19:12:50ID:???
Masa-Pさんの名前を出していろんなスレに書き込むとは・・・とりあえずMasa-Pさんを恨むわ
0941nobodyさん2010/07/14(水) 19:14:08ID:???
まさPとやらを叩けばいいってことだな?Masa-Fの兄弟か?
0942nobodyさん2010/07/14(水) 19:14:13ID:???
スパムにマジレスかっけー
0943nobodyさん2010/07/14(水) 20:31:35ID:???
マジレスしてないと思うけど
0944nobodyさん2010/07/15(木) 23:59:02ID:???
スレチ失礼(キリッ

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

<?php if (is_sticky()) {?>
<?php } else{ ?>
該当部分のコード
<?php } ?>
0949nobodyさん2010/07/17(土) 04:00:38ID: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");
0950nobodyさん2010/07/17(土) 04:11:39ID:???
$file_width どこで出してんだ?
0951nobodyさん2010/07/17(土) 12:57:59ID:???
一部しか出してこなかったらその変数がカラかどうかも分からないな
0952nobodyさん2010/07/17(土) 21:59:34ID:z9LmUGB3
Apacheの公開フォルダに入れたWebアプリケーション等のソースコードを、ブラウザからは実行できるものの、ソースコードは他人に見られないように保護するような設定って出来るんでしょうか?
もし出来るのであればWindows、Linux共に方法を知りたいです

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

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

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

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

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


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


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

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

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

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




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

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

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

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

でエラーになります><

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

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

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

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

この場合の「->」ってどういう働きをしているのでしょうか
0986nobodyさん2010/07/22(木) 00:54:29ID:???
>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
0987nobodyさん2010/07/22(木) 01:56:48ID:9L3V/lR5
>>986
すばらしいお返事です!ありがとうございました!
0988nobodyさん2010/07/22(木) 02:49:53ID:???
テンプレにあるんだけどな!
0989nobodyさん2010/07/22(木) 08:46:02ID:???
phpでローカルのプログラムをexec() で実行すると遅いんですが、
なにか理由があるのでしょうか。

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

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

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

"w"でfopenするとその時点でファイルが空になるので、その
あとでflockしても手遅れ。ロック外で書き換えたことになる。
0996nobodyさん2010/07/22(木) 16:54:25ID:NJJj5G9E
>>955
ありがとうございます!
0997nobodyさん2010/07/22(木) 21:45:15ID:???
>>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

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