2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :nobodyさん:2010/03/17(水) 23:17:41 ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ

2 :nobodyさん:2010/03/17(水) 23:18:35 ID:???
■過去ログ
【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/
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/

3 :nobodyさん:2010/03/17(水) 23:19:20 ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/

4 :nobodyさん:2010/03/17(水) 23:20:05 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。


5 :nobodyさん:2010/03/17(水) 23:20:48 ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください


6 :nobodyさん:2010/03/17(水) 23:21:30 ID:???
      ■□■□■□■□テンプレここまで■□■□■□■□

7 :nobodyさん:2010/03/17(水) 23:46:36 ID:???
でかした

8 :nobodyさん:2010/03/18(木) 00:07:27 ID:???

↑これは乙

9 :nobodyさん:2010/03/18(木) 01:11:53 ID:BU8CJWOl
関数の中でグーロバル変数を参照するには
global $test と $GLOBALS['test'] 以外に方法ってないですか?

10 :nobodyさん:2010/03/18(木) 01:21:12 ID:???
引数で参照渡し

11 :nobodyさん:2010/03/18(木) 01:31:11 ID:???
>>9
グローバル変数を返す関数を書けば、間接的にアクセスはできる

function getGlobalVar() {
global $test;

return $test;
}

そのグローバル変数が何らかのクラスのインスタンスなら、クラス変数にする。
文字列、数値なら、$GLOBALSで十分かと。

12 :nobodyさん:2010/03/18(木) 09:59:41 ID:???
URLから値の受け渡しをしています。
hoge.php?moji=test#hoge
のような場合、#を受け取るためにはどうすればいいですか?
$_GET['moji'];の返り値はtestです。
test#hogeを受け取ることは可能でしょうか。

13 :12:2010/03/18(木) 10:00:22 ID:3nNsoQtD
IDだし忘れてました

14 :nobodyさん:2010/03/18(木) 10:41:43 ID:???
それはブラウザが持つデータだからね
どうしても受け取りたければ「#」を「%23」に変えてみてはいかがか

15 :nobodyさん:2010/03/18(木) 10:56:31 ID:3nNsoQtD
>>14
ありがとうございます。
ひとまずは%23で対応して今のダメ仕様を修正します。

16 :nobodyさん:2010/03/18(木) 13:06:03 ID:TIxzPczz
CSRF対策なんですが、ワンタイムトークンの場合、

ワンタイムトークン生成

DBにinsert&入力画面にhiddenで出力

submitで送信&postで受け取ったトークンが正しいか確認

書き込み

って流れであってますか?

CSRFの対策についてはワンタイムトークンがいいとか、だめだとか諸説あるようですが
結局どれがいいのでしょうか?

17 :nobodyさん:2010/03/18(木) 14:06:20 ID:???
気になるなら複数の予防線をはるしかない

絶対にGETは使わない
前画面からセッションの発行
書き込み動作確認画面用のトークンの発行
Cookieにトークンを埋める
送信されたアクションに対して、それらを照合するロジックをつける

他にも書き込み時に、認証コードを手作業で入力させる等の手もあるが、
利用者の手間になるような方法は嫌われるので選びたくないな
Captcha画像でクリックさせるのが関の山か

18 :nobodyさん:2010/03/18(木) 14:34:05 ID:TIxzPczz
>>17
ありがとうございます。

19 :nobodyさん:2010/03/18(木) 15:12:37 ID:???
PHP5でメールフォームの確認画面を
最も効率良く楽に作成する方法って何でしょうか?
(というか皆どの様に開発してますか?参考までにお聴かせ下さい)

自分の場合は
・form.html (入力画面)
・form_confirm.php (確認画面)
・form_ok.php (メール送信処理・完了画面)
の3ファイルを作って、confirm.phpの方に

<?=htmlspecialchars($_POST["name"])?>
<input type="hidden" name="name" value="<?=htmlspecialchars($_POST['name']?>">

という風な記述をしているのですが、これがどうも面倒で…。
入力画面と確認画面を1ファイルで済ませる様な書き方だと
どうしてもソースが乱雑になってしまいますよね。

20 :nobodyさん:2010/03/18(木) 16:12:53 ID:???
最近、アンケートのフォーム作ったけど、そのときは
同じURLに集約して、メインのスクリプト内でフォーム
の状況を判別して、画面ごとのテンプレートをその後
で読み込むようにしていたよ。Cookieとかリファラとか
で、正しくその画面にちゃんとブラウザから辿りついた
のかをチェックする処理も共通化できる。

21 :9:2010/03/18(木) 18:23:59 ID:???
いろいろありがとうございます!

22 :nobodyさん:2010/03/18(木) 18:56:20 ID:Pe46n0U8

http://www.php.net/manual/ja/indexes.php
このページでリンクが付いてなくて太字のものって削除された関数でしょうか?
たとえばapd_set_socket_session_trace()とかです

23 :nobodyさん:2010/03/18(木) 19:07:50 ID:???
入力されたページあるいはファイルは存在しませんでした。

24 :nobodyさん:2010/03/18(木) 20:39:52 ID:???
GD使って数式を画像として表示しようとしているんですが、「・」ができません。
その他日本語がダメです。
print"日本語"はできます。
GDをコメントすると
Warning: imagettftext() [function.imagettftext]: any2eucjp():
だそうです。
mb_convert_encoding($str,"UTF-8","EUC-JP")
としてもだめでした。
何か思い当たる事があれば教えてください。
お願いします。

25 :nobodyさん:2010/03/18(木) 21:10:56 ID:???
「・」に該当するフォントがない
自分のパソコンにインストールされている物が、必ず相手の環境にあると思ったらそれは間違いだ
開発する側は、自分の常識は他人の非常識で動こうぜ

26 :nobodyさん:2010/03/18(木) 21:11:27 ID:???
関数の使い方をマニュアル等で確認

27 :nobodyさん:2010/03/19(金) 01:49:32 ID:???
連想配列で重複チェックをしようとしているのですがまったく分かりません・・・。
$keyがユーザー名、$valがパスワードでユーザー名の重複チェックをして重複したらエラーを出すようにしたいのです。
どうしたらいいのでしょう・・・。

28 :nobodyさん:2010/03/19(金) 02:45:50 ID:???
>>27
$id = 'user';
$pass = 'pass';
foreach ($IDとパスの配列 as $key => $val) {
if ($key == $id && $val == $pass) {
die("重複しています");
}
}
それとIDな。


29 :nobodyさん:2010/03/19(金) 02:50:34 ID:???
>>24
そもそも数式に「・」なんて使うのか?
どうしてもってなら、LineToとかドットを書く関数使って
□□□□
□■■□
□■■□
□□□□
みたいな点を書けばいい。めんどくさいけどな。

30 :nobodyさん:2010/03/19(金) 07:45:11 ID:???
>>27
ユーザ確認
if (isset($arr[$id])) {
echo "重複";
}
パス合致確認
if (isset($arr[$id]) && $arr[$id] == $pass) {
echo "パス合致";
}


31 :nobodyさん:2010/03/19(金) 10:53:20 ID:???
>>30
ありがとうございます。
issetでいけたのですねw

あとdieでエラーさせる時にフォーム画面が消えずにそのまま下に出てしまう・・・。
なぜですかorz
perlはこんなんじゃなかった気がするのに・・・。

32 :nobodyさん:2010/03/19(金) 11:10:35 ID:???
>>30より>>28の方が何かしっくりきましたw
ありがとうございますw

33 :nobodyさん:2010/03/19(金) 11:12:46 ID:???
どちらも効率悪い認証方法だな

34 :nobodyさん:2010/03/19(金) 11:43:21 ID:???
mb_send_mailで""などの特殊な文字をメール送信すると受信時"?"に文字化けしてしまいます
スクリプトの文字コードはUTF-8、受信されたメールはcharset=ISO-2022-JP、
確認画面上では正常に表示されているのですが対処法はないものでしょうか

PHP5

35 :nobodyさん:2010/03/19(金) 11:46:02 ID:???
mb_send_mailは使うな氏ねカス
mailを使え

36 :nobodyさん:2010/03/19(金) 12:10:20 ID:???
PHP 5.3.2 Released!
[04-Mar-2010]

The PHP development team is proud to announce the immediate release of PHP 5.3.2. This is a maintenance release in the 5.3 series, which includes a large number of bug fixes.

Security Enhancements and Fixes in PHP 5.3.2:

* Improved LCG entropy. (Rasmus, Samy Kamkar)
* Fixed safe_mode validation inside tempnam() when the directory path does not end with a /). (Martin Jansen)
* Fixed a possible open_basedir/safe_mode bypass in the session extension identified by Grzegorz Stachowiak. (Ilia)

Key Bug Fixes in PHP 5.3.2 include:

* Added support for SHA-256 and SHA-512 to php's crypt.
* Added protection for $_SESSION from interrupt corruption and improved "session.save_path" check.
* Fixed bug #51059 (crypt crashes when invalid salt are given).
* Fixed bug #50940 Custom content-length set incorrectly in Apache sapis.
* Fixed bug #50847 (strip_tags() removes all tags greater then 1023 bytes long).
* Fixed bug #50723 (Bug in garbage collector causes crash).
* Fixed bug #50661 (DOMDocument::loadXML does not allow UTF-16).
* Fixed bug #50632 (filter_input() does not return default value if the variable does not exist).
* Fixed bug #50540 (Crash while running ldap_next_reference test cases).
* Fixed bug #49851 (http wrapper breaks on 1024 char long headers).
* Over 60 other bug fixes.


37 :nobodyさん:2010/03/19(金) 12:12:02 ID:???
今回のうpは重要だから今PHP5.3.0〜1を使ってる人はPHP5.3.2にうpしたほうがいいよ

38 :nobodyさん:2010/03/19(金) 12:15:44 ID:???
レン鯖借りてるけど古いままなんだよな
安いから仕方ないがセキュリティに真剣じゃない鯖会社って

39 :nobodyさん:2010/03/19(金) 17:35:42 ID:SW7s0cVl
質問させください

UTF-8で

<?php echo strftime("%Y年%m月%d日", time());?>

とやると、%dの部分が日付(DAY)に変換されず、%dという文字列のままになってしまいます。
SJISやEUCの時は問題は起こりませんでした。
月と%dの間に、半角スペースや、何か適当な1バイト文字を置くときちんと変換されます。

マルチバイト文字によるおかしな挙動だとは思うのですが、どう修正すればきちんと動きますでしょうか?

ぐぐったところ
mb_language("uni");
mb_internal_encoding("utf-8");
こうするべきという記述を発見したので、試してみましたが症状は変わりませんでした。
また、この2つが正常終了を表すTRUEを返しているのも確認済みです。

ご教示よろしくお願いいたします。

40 :nobodyさん:2010/03/19(金) 17:48:12 ID:???
だからバージョンぐらい書いてくれない?
PHP5.3.2でそのコードを実行したら2010年03月19日と表示したよ?


41 :nobodyさん:2010/03/19(金) 17:55:24 ID:SW7s0cVl
すいませんでした。
Ver5.2.6ですが、早速5.3.2に入れ替えてみます。

【OS名】windowsXP SP3
【PHPのバージョン】php5.2.6

xamppでテストしています

42 :nobodyさん:2010/03/19(金) 17:57:40 ID:SW7s0cVl
すいません。原因がわかりました。
Windowsだからですね。
strftimeはPHP上で処理せず、Cライブラリに処理を委譲しているようなので、そのCライブラリの側が原因のようです。

Linux環境にもっていったらうまく変換されました。失礼しました。

43 :nobodyさん:2010/03/19(金) 21:22:54 ID:bPeaTmWJ
Twitter API を Service_Twitter を使って利用しています。
USER A が USER Bをフォローしているかを調べたいと思っています。

Service_Twitterでは戻り値がJSON形式で返ってくるようなので

$jd = new Jsphon_Decoder;
$twitter = new Services_Twitter();
$oauth = new HTTP_OAuth_Consumer(
consumer_key,
$consumer_secret,
$consumer->getToken(),
$consumer->getTokenSecret()
);

$twitter -> setOAuth($oauth);

$jd = $twitter ->friendships->exists("ユーザーAのScreenName","ユーザーBのScreenName");

のようなソースを書いていますが $jd に値が返ってきません。
TRUEもしくはFALSEが返ってくると思うのですが。
ブラウザ上では 「Not Found」 と返されていますが渡しているユーザーのScreenNameに間違いはありません。

解決方法があれば教えて下さい。

44 :nobodyさん:2010/03/19(金) 23:15:41 ID:h08zA6/I
phpを実行したのですが、真っ白画面です。
ソースを見るとちゃんと表示されているのですが、それがきちんと表示されなく、POSTで渡した値もとれてないようです。
ほかのphpファイルはきちんと実行出来ています。
原因はどんなことが考えられるでしょうか?

45 :nobodyさん:2010/03/19(金) 23:17:31 ID:???
ワロス

46 :nobodyさん:2010/03/20(土) 00:18:00 ID:???
var_dump($_REQUEST);
var_dump($_SERVER);
これを付け加えて

>ちゃんと表示されているのですが、それがきちんと表示されなく

日本語覚えなおして、1読んで出直してきな

47 :nobodyさん:2010/03/20(土) 00:22:51 ID:???
>>46

>ソースを見るとちゃんと表示されているのですが、それがきちんと表示されなく、

48 :nobodyさん:2010/03/20(土) 00:35:11 ID:???
>>43
http://php.net/manual/ja/function.json-decode.php

json_decode でやってみれ。

でもできなきゃ、var_dump や print_r 使って戻り値の内容を確認してみろ。

49 :nobodyさん:2010/03/20(土) 00:36:06 ID:???
考えられる原因は、視力が悪いんだと思います

50 :44:2010/03/20(土) 00:37:59 ID:7GREwXAK
自己解決しました。お手数おかけして申し訳ないです。
ifやelseのカッコの対応があってなかったようです。

51 :nobodyさん:2010/03/20(土) 04:56:02 ID:???
httpなどのパスを一意化する方法ありますか?

52 :nobodyさん:2010/03/20(土) 05:18:22 ID:???
>>51
そのままでも一意だと思うけどファイル名として使いたいとか?

あと質問はID出してくださいな

53 :nobodyさん:2010/03/20(土) 05:44:54 ID:W6ikhWcl
>>52
http://hoge.jp/uuu
http://hoge.jp//uuu
http://hoge.jp/ooo/././../uuu

これは同じURLと思いますが一意でないんです。
一番上のurlを求めたいです。

54 :nobodyさん:2010/03/20(土) 05:55:56 ID:???
>>53
標準機能にはないな
http://nashruddin.com/PHP_Script_for_Converting_Relative_to_Absolute_URL
こんなん見つけたけど、
http://hoge.jp/ooo/././../uuu は解釈出来なかった

もっといいの探すか、ちょっといじって自分で作るしかないかな

55 :nobodyさん:2010/03/20(土) 07:29:28 ID:???
URLのパス修正書いてみた
http://codepad.org/Woc567uB
codepadのエラーは無視していいと思う・・

デバッグよろ^^;

56 :nobodyさん:2010/03/20(土) 09:50:51 ID:???
環境変数に入ってるんじゃね?って思ってやってみたら、そもそも././が省かれていて話にならなかった

57 :53:2010/03/20(土) 12:09:51 ID:W6ikhWcl
thx!
よさげ

58 :53:2010/03/20(土) 12:10:35 ID:W6ikhWcl
55=56ですか。駄目なんですか?

59 :nobodyさん:2010/03/20(土) 12:23:30 ID:???
>>55
<a href="//2ch.net">http://がない版もあるぜよ</a>

60 :53:2010/03/20(土) 12:31:51 ID:W6ikhWcl
はじめに$url = str_replace("\\", "/", $url);入れとく良いみたいです。
ローカルファイルを一意にしたいのですが。
C:\pppが c:///ppp などとなります。/が増えます。

61 :nobodyさん:2010/03/20(土) 12:34:55 ID:W6ikhWcl
相対指定ははじめに今のこカレントディレクトリをつけてから
やれば良いんでは。
カレントディレクトリを知るには、引数からでは無理なので
http付きとしていいのでは

62 :nobodyさん:2010/03/20(土) 12:39:19 ID:???
>>53
http://jp.php.net/manual/ja/function.realpath.php


function get_absolute_path($path) {
$parts = array_filter(explode("/", $path), 'strlen');
$absolutes = array();
foreach ($parts as $part) {
if ('.' == $part) continue;
if ('..' == $part) {
array_pop($absolutes);
} else {
$absolutes[] = $part;
}
}
return implode("/", $absolutes);
}

63 :nobodyさん:2010/03/20(土) 12:58:01 ID:W6ikhWcl
これいい。これ完璧かも。thx

64 :nobodyさん:2010/03/20(土) 15:06:42 ID:???
>>55
http://ideone.com/00vgxXl8
こっちならエラーでない

65 :55:2010/03/20(土) 17:37:01 ID:???
>>64
codepadより見た目いいな
ありがとう



66 :nobodyさん:2010/03/20(土) 20:44:34 ID:???
つまらない質問で申し訳ありません
よくプログラムで見る$to->OAuthRequest(〜などの
->とはどのような意味があるのでしょうか

67 :nobodyさん:2010/03/20(土) 20:48:03 ID:cSBO/oUO
PHPのDOMを使って、getElementsByTagName()メソッドでタグを検索するのですが、
タグが見つからなかったときにタグを作成するという方法はどうするのでしょうか?
タグが見つからないとgetElementsByTagName()メソッドはFatal errorを吐いてしまいます。
エラー制御演算子は負荷が高いということなので、なるべく使いたくないのですが・・・

---test.xml---
<root>
<value1>hogehoge</value1>
</root>

---test.php---
$xml = new DOMDocument('1.0', 'EUC-JP');
$xml->load('test.xml');

$root_list = $xml->getElementsByTagName('root');
$root_node = $root_list->item(0);

$value2 = $root_node->getElementsByTagName('value2'); //value2要素は存在しないのでFatal error


(理想としては、

$value2 = $root_node->getElementsByTagName('value2');
if(!$value2){
$vlaue2 = $xml->createElement('value2');
$root_node->appendChild($value2);
}

というようにしてみたい。)

68 :nobodyさん:2010/03/20(土) 21:15:57 ID:SPy4ZUkx
つかほんとに下らないんだけど
printでダブルクォート表示するのってどうやるんだっけ?

69 :nobodyさん:2010/03/20(土) 21:20:00 ID:???
>>66
クラスのメソッドへのアクセス
class Test
{
  public function method() {
    print 1;
  }
}
t = new Test();
t->method();


>>68
print '"';

print "\"";

70 :nobodyさん:2010/03/20(土) 21:21:32 ID:???
>>69
ありがとうございます

71 :nobodyさん:2010/03/20(土) 21:23:09 ID:???
違う。クラスじゃなくてオブジェクトだからな

72 :nobodyさん:2010/03/20(土) 21:23:10 ID:???
>>67
試してないけど
try {
  $value2 = $root_node->getElementsByTagName('value2');
}
catch (Exception $e) {
  $value2 = FALSE;
}
if ($value2) {
  //続き
}

もしくはtryの中で続きを書いちゃってもいいし

73 :nobodyさん:2010/03/20(土) 21:28:29 ID:???
>>71
そうだね、すまん

>>66
正確には

class Test
{
  static function classFunc(){}
  public function objectFunc() {}
}
$t = new Test();//インスタンス(オブジェクト)生成
$t->objectFunc();//オブジェクトのメソッド

Test::classFunc();//こっちがクラスのメソッド

かな

74 :nobodyさん:2010/03/20(土) 21:37:38 ID:???
クラスとオブジェクトは並列する概念じゃねぇよ
クラスをインスタンス化したのがオブジェクト

75 :nobodyさん:2010/03/20(土) 21:38:19 ID:cSBO/oUO
>>72
すみません
完全な自分の勘違いでした。

Fatal errorが発生するのは、getElementsByTagName()メソッドを使った時ではなく、
返り値のDOMNodeListから取り出したDOMNodeを使った時にFatal errorが発生するということでした。

$root_list = $xml->getElementsByTagName('root');
$root_node = $root_list->item(0);

$value2_list = $root_node->getElementsByTagName('value2');
$value2_node = $value2_list->item(0);
$node = $value2_node->getElementsByTagName('string'); //$value2_nodeは存在しないオブジェクトなのでFatal error


お騒がせして誠に申し訳ございませんでした。

76 :nobodyさん:2010/03/20(土) 22:28:44 ID:???
みんな綺麗なコードかけるようになるまで何年かかった?

77 :nobodyさん:2010/03/20(土) 22:32:30 ID:???
15年だけどまだだなぁ

78 :nobodyさん:2010/03/20(土) 22:38:33 ID:???
ネットに公開してる人のソースコードってみんな綺麗だよね、鬱になりそう

79 :nobodyさん:2010/03/20(土) 22:48:18 ID:???
綺麗なコード書けるようになった
と思った瞬間に止まる

80 :nobodyさん:2010/03/20(土) 23:32:12 ID:???
>>68
// ヒアドキュメント
echo <<<EOF
"
EOF;


// NowDoc (PHP5.3以降)
echo <<<'EOF'
"
EOF;


81 :nobodyさん:2010/03/20(土) 23:34:33 ID:???
printでっつてんだろカス

82 :nobodyさん:2010/03/20(土) 23:41:52 ID:???
echo を printに置き換えられることも知らないのかカスは

83 :nobodyさん:2010/03/20(土) 23:53:48 ID:???
じゃあprintで書けよw

84 :nobodyさん:2010/03/20(土) 23:56:07 ID:???
FOE!FOE!

85 :nobodyさん:2010/03/21(日) 01:43:30 ID:5ebOvBjC
そういえばなんでprintなんでしょうね。
値を返さないechoのほうが速いはずなんですが。

それはそうと質問があります。
【OS名】xp
【PHPのバージョン】最新
【質問内容】リファラを取得できません。
テストしたブラウザのバージョンも最新。
$ref = $_SERVER['HTTP_REFERER'];
echo $ref;

FireFoxやChromeだと正しく表示されますが、IEだとNULLでした。なぜ?

86 :nobodyさん:2010/03/21(日) 01:56:46 ID:???
HTTPヘッダー確認できる?

87 :nobodyさん:2010/03/21(日) 02:25:16 ID:5ebOvBjC
getallheaders()でヘッダ確認しましたが、IEのみReferer;が格納されないようです。
特にリファラ偽装などは設定していないのですが。

88 :nobodyさん:2010/03/21(日) 02:53:05 ID:???
>>87
IE8で再現出来ないから、
http://www.vector.co.jp/soft/winnt/net/se308001.html
こういう感じのソフトで生のHTTPヘッダーを確認してみてくれい


89 :nobodyさん:2010/03/21(日) 02:55:41 ID:???
ありがとうございます、やってみます。

90 :nobodyさん:2010/03/21(日) 03:15:54 ID:CFDZ8J9i
エラーがでるから添削して
<?php
include("../scripts/conf.inc.php");
$conndatabase = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or trigger_error(mysql_error(),E_USER_ERROR);
$db = "$mysql_database";
$user = user("username");
$id = addslashes($_POST["id"]);
$title = addslashes($_POST["title"]);
$text = addslashes($_POST["text"]);
$url = addslashes($_POST["url"]);
$id_from=maketransid();
$sql = "SELECT * FROM whitead WHERE id = '$id'";
$rs = mysql_db_query($db,$sql);
while($row=mysql_fetch_array($rs)){
$point = $row[4] * 100;
$sql = "insert into email_ads(emailid,id,description,site_url,ad_text,run_quantity,run_type,value,vtype,timer,login,hrlock,cheat_link,creation_date)
values('".$id_from."','".$user."','".$title."','".$url."','".$text."','".$row[2]."','".clicks."','".$point."','".points."','".$row[3]."','".0."','".0."','".0."','".date('Y-m-d-H-i-s')."')";
}
$res = mysql_query($sql) or die(mysql_error());
?>


91 :nobodyさん:2010/03/21(日) 03:18:21 ID:???
values('".$id_from."','".$user."','".$title."','".$url."','".$text."','".$row[2]."','".$clicks."','".$point."','".$points."','".$row[3]."','". 0 ."','". 0 ."','". 0 ."','".date('Y-m-d-H-i-s')."')";


92 :nobodyさん:2010/03/21(日) 03:40:11 ID:CFDZ8J9i
>>92
ありがとう!うまくできた。
↓動作はしても半端なくおもいの・・・・or2
<script language="php"> include("setup.php");</script>
<center>
<?php
include("../scripts/conf.inc.php");
$conndatabase = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or trigger_error(mysql_error(),E_USER_ERROR);
$db = "$mysql_database";
$id = addslashes($_POST["id"]);
$title = addslashes($_POST["title"]);
$text = addslashes($_POST["text"]);
$text = nl2br($text);
$url = addslashes($_POST["url"]);
$sql = "SELECT * FROM whitead WHERE id = '$id'";
$res = mysql_query($sql) or die(mysql_error());
$tr = "<tr>";
$trs = "</tr>";
while($row=mysql_fetch_array($res)){
$point = $row[4] / 1000;


93 :nobodyさん:2010/03/21(日) 03:40:56 ID:CFDZ8J9i
print("<form method=\"post\" action=\"self_regist.php\">");
print("<input type=\"hidden\" name=\"id\" value=\"$id\">");
print("<input type=\"hidden\" name=\"title\" value=\"$title\">");
print("<input type=\"hidden\" name=\"text\" value=\"$text\">");
print("<input type=\"hidden\" name=\"url\" value=\"$url\">");
?>
<input type="hidden" name="user" value="<script language="php"> user("username");</script>">
<?php
print("<TABLE border=1>");
print("<TBODY>");
print $tr;
print("<TD>test:</TD>");
print("<td>".$row[1]."</td>");
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>".$row[2]."</td>");


94 :nobodyさん:2010/03/21(日) 03:41:53 ID:CFDZ8J9i
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>".$row[3]."</td>");
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>".$point."</td>");
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>".$row[5]."</td>");
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>".$row[6]."</td>");
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>$title</td>");
print $trs;


95 :nobodyさん:2010/03/21(日) 03:46:11 ID:CFDZ8J9i
print $tr;
print("<TD>test:</TD>");
print("<td>$text</td>");
print $trs;
print $tr;
print("<TD>test:</TD>");
print("<td>$url</td>");
print $trs;
print $tr;
print("<th colSpan=2><input type=\"submit\" value=\"送信\" class=\"send\"></th>");
print $trs;
print("</TBODY>");
print("</TABLE>");
}
mysql_close();
?>
</center>

96 :nobodyさん:2010/03/21(日) 10:58:13 ID:TTlWvHhB
functionとclassの違いって何でしょうか

97 :nobodyさん:2010/03/21(日) 11:24:28 ID:???
文字の長さ

98 :nobodyさん:2010/03/21(日) 11:43:30 ID:???
クラスってのは3年B組
関数ってのは用務員
クラス内の関数(メソッド)は給食係とか保健係

99 :nobodyさん:2010/03/21(日) 11:57:19 ID:???
>>96
クラスっていうのは板の名前(Webプログラミング)
関数っていうのはスレの名前(【PHP】下らねぇ質問はID出して書き込みやがれ 94)


100 :nobodyさん:2010/03/21(日) 11:59:05 ID:???
大喜利スレになってもうた・・

101 :nobodyさん:2010/03/21(日) 12:00:18 ID:???
$obj = new Webプログラミング;
echo $obj->【PHP】下らねぇ質問はID出して書き込みやがれ 94;

102 :nobodyさん:2010/03/21(日) 12:28:59 ID:Pf4rphJX
ファイルの管理ってどうしてますか?

例えば完成したシステムAがあるとして、
そこから一部分だけ追加・変更したいとします。
しかし、Aはそれだけで完成しているから、
余計な機能を付けてバグが出た時に困る。

かといってAをコピーしてA"にして変更していくのも非効率な気がして・・・

103 :nobodyさん:2010/03/21(日) 12:30:41 ID:???
・cvs使う
・コメントしとく
・継承する

104 :nobodyさん:2010/03/21(日) 12:33:39 ID:sYkTdyYJ
自前コピーが確実だよ。zipにして固めてセットとして
公開用としてweb上にでも置いておけば安心。

105 :nobodyさん:2010/03/21(日) 12:35:36 ID:sYkTdyYJ
ソースコード管理ツールで自動バックアップしていた時期もあるけど
複数ファイルを更新した場合どれとどれの組み合わせだと動作するのか
わからなくなる。zip固めが安心。失敗したらzip復元すればいい。

106 :nobodyさん:2010/03/21(日) 12:37:46 ID:???
出ないようにちゃんと設計やればいいんじゃね

107 :nobodyさん:2010/03/21(日) 15:11:03 ID:???
>>105
svnなら、タグ付けたり、ブランチ切っておけばいいんじゃないの
安定してることが確認出来たら、トランクにマージ。

リリースはタグやブランチでエクスポートすればいいし。

ほかのSCMはシラネ。


108 :102:2010/03/21(日) 16:44:08 ID:Pf4rphJX
みなさん、ありがとうございます。
SVNは使っていますが、「このclassファイルだけ修正したい」
と言う時にちょっと不便なんですよね。。

そのファイルを使いながらバグが見つかったりする時もあるし、
実際は1ファイルで済まない時が多くて、どう管理するか迷います。
まだあまり使いこなせていないだけなのかも知れませんが。

とりあえず、zip固めにして何か修正・追加加えたい時は
コピーしてファイルを修正するようにします。

109 :nobodyさん:2010/03/21(日) 16:55:09 ID:6nW4u3iT
function checkCookie(){
if(isset($_COOKIE['checkCookie'])){return 1;}
else{
$expire = time() + 86400*14;
if(setcookie("checkCookie",time(),$expire)){return 1;}
else{return 0;}
}
}
このような関数でクッキーが有効かチェックしているのですが、機能してないようです。
もちろんブラウザの設定でクッキーを無効にしてテストしてます。
問題点はどこでしょうか?

110 :nobodyさん:2010/03/21(日) 17:10:11 ID:???
>>108
このclassファイルだけ修正したい。
ってときに便利なのがsvnですよ。

111 :nobodyさん:2010/03/21(日) 17:11:19 ID:G7Ek1+IS
svnの導入の仕方を教えてください
windowsです

112 :nobodyさん:2010/03/21(日) 17:23:37 ID:???
なるほど継承してアップデートってのもありか…

そんなうまいこと設計できないけど

113 :nobodyさん:2010/03/21(日) 17:24:12 ID:???
>>111
そのくらい、自分で調べろw。
http://kuronuko.com/web/subversion.html

114 :nobodyさん:2010/03/21(日) 17:30:55 ID:67bsJ4U+
>>48
ありがとうございます。
var_dumpでやってみた結果、bool(false)という結果が返ってきてました。
ずっと、print_rで見ていたのでなにも表示されずでした。

しかし、どのIDを使っても false が返ってきます。
フォローしている場合は true が返ってくるはずなのですが。

var_dump(($twitter->friendships->exists("ユーザーAのScreenName","ユーザーBのScreenName")));

こんな感じでソースは書いております。

なにが原因でしょうか?
ご教授下さい。

115 :nobodyさん:2010/03/21(日) 17:31:31 ID:G7Ek1+IS
>>113
ありがとうございます
トータスSVNっていうのを入れるとフォルダに変なマークが付いたのでやめて、svn.exeだけをインストールしました
あと、個人でPHPスクリプトを書く場合でもSNVの導入は便利でしょうか?
あと、PHPだけじゃなくてHTMLとかにも使えますでしょうか?
上記のURLは便利で大変重宝しており感謝して折ります
宜しくお願いいたします

116 :nobodyさん:2010/03/21(日) 18:12:50 ID:6nW4u3iT
Firefoxなどのブラウザ側でクッキーを拒否してたとしても
setcookieの引数が正しければtrueが返って来るのでしょうか?

117 :nobodyさん:2010/03/21(日) 18:16:53 ID:???
>>116
ブラウザでクッキーを有効にしていたらtrueが返ってくるとかどこかで書いてあったの?
ちゃんとマニュアルくらい読んだほうがいいよ

118 :nobodyさん:2010/03/21(日) 18:28:42 ID:6nW4u3iT
>>117

function checkCookie(){
$expire = time() + 86400*14;
if(!setcookie("checkCookie",time(),$expire)){return 0;}
else{
if(!isset($_COOKIE['checkCookie'])){return 0;}
else{return 1;}
}
}

こうすればよいですね!ありがとうございます。

119 :EM114-48-97-102.pool.e-mobile.ne.jp:2010/03/21(日) 19:31:44 ID:???
おいこらさっさと質問ぶつけてこいや〜〜〜〜〜〜〜!

120 :nobodyさん:2010/03/21(日) 19:32:29 ID:???
OCN vs イーモバイル!

121 :nobodyさん:2010/03/21(日) 20:43:30 ID:???
WiMAXの方がよくね?

122 :nobodyさん:2010/03/21(日) 21:47:22 ID:???
あえてうぃるこぬ

123 :nobodyさん:2010/03/21(日) 22:10:24 ID:???
>>115
>個人でPHPスクリプトを書く場合でもSNVの導入は便利でしょうか?

便利です。
エンバグ恐れずに手を入れられます。
何か新しい機能を入れる場合でも、ブランチで存分に試せます。
使ってるのが自分ひとりでも、こういうのを覚えてしまうとかなり気楽になる。

>PHPだけじゃなくてHTMLとかにも使えますでしょうか?

テキストファイルなら何にでも使えます。
(オフィスのファイル等のバイナリファイルにも使えるけど)

124 :nobodyさん:2010/03/21(日) 22:27:11 ID:sYkTdyYJ
必要なときにzipで固めた方が簡単で速い。
挑戦するときにzipにしておく、完成したらzipにしておく。
管理ツールは重いし、常駐するし良くない。

125 :nobodyさん:2010/03/21(日) 22:28:35 ID:sYkTdyYJ
しかもシステムが破損すると取り出せない。自分で壊すこともある。消しても問題とか思って。

126 :nobodyさん:2010/03/21(日) 22:53:54 ID:???
自動バックアップで壊れて全部消えたとかそういうのもあるな。
VisualStudioとかw

127 :nobodyさん:2010/03/22(月) 00:04:02 ID:rMqH0aHx
APCについて質問です。

ファイルアップロード中に同じサーバー上で apc_fetch() を呼べば、
引数さえあってれば進捗状況が見れるという解釈で合っていますか?

下ソースのtest.phpをブラウザから二つのウィンドウ(A、B)で開き、
Aでアップロード中に、Bで表示しようとしたんですが、apc_fetch()による結果が空です。
ですが、Aでのアップロードが終わった時に、Aに>>128のような結果が表示されました。

【環境】
APC Version 3.0.19
PHP Version 5.2.12
Server Software : Apache/1.3.42 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e

-----------------------------
test.phpソース
-----------------------------
<?php
print_r(apc_fetch('upload_abc'));
?>
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="APC_UPLOAD_PROGRESS" value="abc" />
<input type="file" name="upload_file" />
<input type="submit" />
</form>


128 :nobodyさん:2010/03/22(月) 00:05:31 ID:rMqH0aHx
-----------------------------
表示結果
-----------------------------
Array
(
[total] => 16982
[current] => 16982
[rate] => 616952.19311244
[filename] => 91b9b7998269669e83a94bc5cd95de8b_400.jpg
[name] => upload_file
[temp_filename] => /var/tmp/phpZtvdO8
[cancel_upload] => 0
[done] => 1
[start_time] => 1269183432.2302
)

129 :nobodyさん:2010/03/22(月) 00:33:03 ID:POFKX9jJ
デザインパターンってどうやって学ばれました?
ネット上にあまりないのですが

130 :nobodyさん:2010/03/22(月) 01:33:18 ID:???
>>129
PHP特化では、見つからないかもしれんね。
比較的syntaxが似てるC#やJava+デザインパターンで検索するといいかも。

ちなみに自分は、今は亡きCマガの連載で勉強した。

あと、デザインパターン勉強するなら、クラス図やシーケンス図が読めないとつらいかも。
ほかには、多態や継承がバンバンでるから気をつけてね。

131 :nobodyさん:2010/03/22(月) 03:15:45 ID:a2delEMy
phpでファイル転送の処理内容をツラツラと書き連ねていきたいのですが、そういったことは可能ですか?



report-slow-request 100% 3725 3.6KB/s 00:00
find-junk 100% 5385 5.3KB/s 00:00
convert-db 100% 7548 7.4KB/s 00:00
upgrade 100% 3379 3.3KB/s 00:00

132 :nobodyさん:2010/03/22(月) 04:38:32 ID:Rk6TrDyI
配列から特定部分の取り出しでお助け頂きたいです。

http://www.imagecheese.com/gallery/ee.jpg

上記のような配列で、array[0]['Keyword']['name'] の部分だけをユーザーごとに取り出したいです。
例えば、 

address が"test@test.com" は "授業"、"テーマスタティ"
address が"test2@test2.com" は "エクササイズ","オープン"

といったような形でループ処理をしたいのですが、よい方法はないでしょうか?



133 :nobodyさん:2010/03/22(月) 04:46:45 ID:???
array_mapとかarray_walk使う方法もあるけど単純にやるなら

foreach ($array as $row) {
foreach ($row['keyword'] as $keyword) {
$result[$row['address']][] = $keyword['name'];
}
}

134 :nobodyさん:2010/03/22(月) 04:51:22 ID:Rk6TrDyI
>>133
ありがとうございます!

ありがたく参考にさせて頂きたいと思います。

135 :nobodyさん:2010/03/22(月) 05:04:04 ID:Rk6TrDyI
>>133さん 上手くいきそうです。 ありがとうございます!

136 :nobodyさん:2010/03/22(月) 05:27:50 ID:???
すみません
最近のyoutubeのAPIに対応したソースがあるサイトってありませんか?
どれも動かないんです

137 :nobodyさん:2010/03/22(月) 05:33:45 ID:???
どれも動かないんならどれもだめだろう

138 :nobodyさん:2010/03/22(月) 06:07:13 ID:???
諦めます

139 :nobodyさん:2010/03/22(月) 07:23:28 ID:QPPKsgL4
ボタンとボタンの上に0という数字を配置して
ボタンを押すごとにその数値が増えていくというものはPHPで作れますか?

140 :nobodyさん:2010/03/22(月) 08:20:58 ID:Rk6TrDyI
ローカルでメール送信のテストをしたいのですが、てっとりばやいオススメの方法はあるでしょうか?

1 プロバイダのメールサーバを使う?? (さくらとOCNとgmailのアカウントあり)
2 メールサーバをローカルで立てる?


とりあえず

ini_set( "SMTP", "adminname.sakura.ne.jp" );

とさくらメールのSMTPをいれて試したけどダメでした。。

141 :139:2010/03/22(月) 10:40:17 ID:???
自己解決しました

142 :nobodyさん:2010/03/22(月) 13:15:15 ID:???
>>140
それが一番良いと思うよ

143 :nobodyさん:2010/03/22(月) 13:16:58 ID:???
>>140
ごめん、142は読み間違えた・・。

ini_setじゃなくて、php.iniに直接書けば?
あと、さくらの場合、smtp_portを587にしないと駄目だよ。

144 :nobodyさん:2010/03/22(月) 13:19:17 ID:???
>>140
xmail

145 :nobodyさん:2010/03/22(月) 13:25:55 ID:???
radishおすすめ

146 :nobodyさん:2010/03/22(月) 13:26:43 ID:???
radishは古いxmailにしとけ

147 :nobodyさん:2010/03/22(月) 13:41:15 ID:???
PDOでSQLite3に接続してるんですが、
fetchメソッドのoffsetが効かなくて困ってます。

$sth->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 10);

こんな感じでやると検索結果の10行目から取得し始めると思ってたんですけど
間違ってますか?







148 :nobodyさん:2010/03/22(月) 20:51:06 ID:r5y42//h
htaccessの問題の気がするのですが

RewriteEngine On
RewriteRule ^search\/([A-Z0-9]{10})$ http://example.com/dev/search.php?q=$1

これをdevに置いて、http://example.com/dev/search/ABCDEFGH10
にアクセスしても、ABCDEFGH10をgetできてないようです。
PHP側の処理に問題があったりするのでしょうか?

149 :nobodyさん:2010/03/22(月) 20:54:45 ID:???
正規表現を練習できるサイトとかないかな

150 :nobodyさん:2010/03/22(月) 20:55:02 ID:???
>>148
RewriteLog 取ってみるといいよ。

151 :nobodyさん:2010/03/22(月) 21:09:38 ID:r5y42//h
>>149
練習かどうかは分からないが、便利
http://www.rubular.com/

>>150
ありがとうございます。
ですが、やってみると500エラーになってしまうようです。
レンタルサーバーの共用プランではログは取れないのでしょうか?

152 :nobodyさん:2010/03/22(月) 21:11:06 ID:???
>>149
今度からスレタイをちゃんと読めよ。

ttp://www.rider-n.sakura.ne.jp/regexp/regexp.php

153 :nobodyさん:2010/03/22(月) 21:16:09 ID:???
>>151,152
マスターできる気がする

154 :127:2010/03/22(月) 21:30:08 ID:???
>>127はPHPプロ掲示板に聞きにいってきます


155 :nobodyさん:2010/03/23(火) 00:51:02 ID:unctT7f6
質問です。
UTF-8の環境でmb_strcut("あいうえお",0,7)とした時、"あい"と表示された後次の文字が文字化けしてしまいます。
原因は"う"の1バイト目までしか出力されないからのようですが、このように余った時"あい"までの出力で止めるようにすることはできるのでしょうか?

試した環境、win32 PHP 5.3.0

156 :nobodyさん:2010/03/23(火) 00:57:32 ID:???
自己解決しました。
>encoding パラメータには文字エンコーディングを指定します。省略した場合は、内部文字エンコーディングを使用します。
とマニュアルに書いてあったので文字コードの指定を省略したのが原因でした。

157 :nobodyさん:2010/03/23(火) 09:43:05 ID:???
内部文字エンコーディングを適切に設定してないのが根本原因じゃないの?

158 :nobodyさん:2010/03/23(火) 15:23:09 ID:ssmJpUwM
質問させてください
この度、WinからcentOS5.4へ移行し、PHPを実行しようと思ったのですがどうにもうまくいきません
まず、Apacheを入れようとしたら、make installの所でエラーが出、しかもエラー内容が分からなかった為
centOSに標準で入っているApache(2.2.3)、Mysql、PHP(5.1.6)をインストールしました
例えばyum install phpとか、yum install http-serverとかを実行しました

で、centOSでApacheの公開フォルダ(Winではhtdocs)が/var/www/html/だと知ったので、そのフォルダ内にphpのファイルを置きました
phpinfo.phpとか、index.htmlのようなファイルをhttp://localhost/phpinfo.phpと実行するとちゃんとブラウザに内容が表示されます
しかしながら、/var/www/html/フォルダ内にtestやphpMyAdminのようなフォルダを入れると、
The requested URL /test was not found on this server
のようにエラーが出てしまいます
これはどうしてなのでしょうか?
どのようにすれば意図したようにきちんと表示されるのでしょうか?

php.ini、http.confはデフォルトのままですが、phpinfoで確認した所、php.iniの場所はちゃんとなっておりました
また、/etc/httpd/conf/httpd.confを調べてみた所、
ServerRoot "/etc/httpd"
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
のように特におかしいような気もしませんでした

159 :nobodyさん:2010/03/23(火) 15:42:58 ID:???
リクエストされたページが見つからないそうです

160 :nobodyさん:2010/03/23(火) 15:46:17 ID:???
パーミッションだったりして。

161 :nobodyさん:2010/03/23(火) 16:01:08 ID:???
apacheのエラーログは?

162 :nobodyさん:2010/03/23(火) 16:12:28 ID:ssmJpUwM
パーミッションはdrwxr-xr-x となっております
一応Readと実行権限はあると思います

Apacheのエラーログは今見てみます

163 :nobodyさん:2010/03/23(火) 16:24:05 ID:ssmJpUwM
[Tue Mar 23 14:46:48 2010] [notice] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Mar 23 14:46:48 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Mar 23 14:46:48 2010] [notice] Digest: generating secret for digest authentication ...
[Tue Mar 23 14:46:48 2010] [notice] Digest: done
[Tue Mar 23 14:46:48 2010] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Tue Mar 23 14:48:48 2010] [notice] caught SIGTERM, shutting down
[Tue Mar 23 14:51:22 2010] [notice] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Mar 23 14:51:22 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Mar 23 14:51:23 2010] [notice] Digest: generating secret for digest authentication ...
[Tue Mar 23 14:51:23 2010] [notice] Digest: done
[Tue Mar 23 14:51:24 2010] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Tue Mar 23 15:14:13 2010] [error] [client 127.0.0.1] File does not exist: /var/www/html/test
[Tue Mar 23 15:14:13 2010] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
[Tue Mar 23 15:48:31 2010] [notice] caught SIGTERM, shutting down
[Tue Mar 23 15:51:07 2010] [notice] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Mar 23 15:51:07 2010] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Mar 23 15:51:08 2010] [notice] Digest: generating secret for digest authentication ...
[Tue Mar 23 15:51:08 2010] [notice] Digest: done
[Tue Mar 23 15:51:09 2010] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations

のようになっております

164 :nobodyさん:2010/03/23(火) 16:41:20 ID:???
/var/www/html/test/(スラッシュあり)は?

165 :163:2010/03/23(火) 16:49:36 ID:???
>>164
どういう事でしょうか?
例えばtestフォルダを表示したい時にhttp://localhost/testではなく、http://localhost/test/でアクセスということでしょうか?
それともtest内にtest.phpとか入れてって事でしょうか?
どちらもやはりエラーになってしまいました

もしやと思い、testフォルダの名前をtest/と変えてみましたが、/は含められないとLinux側でエラーが出ました



166 :nobodyさん:2010/03/23(火) 16:58:21 ID:???
>>165
いまちょっとググってみたんだけど
もしかして/etc/httpd/conf.d/welcome.confとか読み込まれてない?

167 :nobodyさん:2010/03/23(火) 16:58:26 ID:???
>testフォルダを表示したい

スレ違いだし、なにをしたいんだ一体
表示させたいページ用意してないだけと違うかと

168 :nobodyさん:2010/03/23(火) 17:25:09 ID:ssmJpUwM
>>166
welcome.confは、ErrorDocument 403 /error/noindex.htmlと、noindex.htmlを表示するのだと思うのですが、それとは違うようです
良く分からないのですが

>>167
すみません

例えばtest.phpという
<?php echo"test";
ファイルを/var/www/html下に置くとブラウザ上にtestと表示されます
しかし、これがディレクトリ構造を持つようになると、途端にエラーが出てしまいます
例えば、/var/www/html/test/test.phpとかになると、上記のように存在しないとエラーになります

>testフォルダを表示したい
Winの頃は、htdocs下にtest/test.phpを置き、localhost/testとすると、そのディレクトリ構造が表示されましたが、という事を言いたかったのです

今まではApacheのhtdocs下にphpMyAdminを入れて使っていたのですが、Linuxで同じように公開されているフォルダ内に入れたらそのフォルダと中身が認識されないので困ってしまって


169 :167:2010/03/23(火) 17:28:29 ID:???
じゃあhttpd.confのDirectoryIndexディレクティブで設定してないだけでしょ
あとtestディレクトリでアクセスしてtest/と補完されないならmod_dirモジュールがApacheに組み込まれてないとかか

170 :168:2010/03/23(火) 17:53:08 ID:???
皆さん、申し訳ございません
何が理由かわかりませんが、急にtestフォルダを読み込むようになりました
今までと同じ状態だったのですが・・・
ただ、phpMyAdminは何故かパーミッションでアクセス拒否が入っておりますが
お手数お掛け致しました


171 :nobodyさん:2010/03/23(火) 18:20:57 ID:Gn31sNCx
別ドメイン間でファイルの書き込み操作を行いたいのです。

php初心者です。
一つのバリューサーバーで全ドメイン管理しています。
ドメイン取得もバリューでしました。

AのドメインのファイルにB、C、Dというドメインから直接書き込みを行いたいのですが
上手く行きません。

Aドメイン内のファイルをB、C、Dから読み込みは出来ます。(ちなみに)

パーミッションの設定はいじってみましたが、解決しません。
その問題ではないようです。

どなたかご教授いただけませんでしょうか。
よろしくお願いいたします。

172 :nobodyさん:2010/03/23(火) 18:22:36 ID:???
できるわけねえだろks

173 :nobodyさん:2010/03/23(火) 18:25:49 ID:/hsQzdjS
PHPを起動しろ そしたらアクセス出来る

174 :nobodyさん:2010/03/23(火) 18:38:27 ID:a2W0beeP
貴方は「いじめられる側にもいじめの原因がある」と思ってませんか
或いは「死刑には凶悪事件の抑止力がある」と思ってませんか
或いは「掲示板で不愉快になったらその原因は発言者にある」と思ってませんか

これらの考えの根っこは、実は同じです(※善悪の話ではありません)

これまで当たり前だと思って、深く考えなかったこと・・・
周りに言われるままに、何の疑問も抱かなかったこと・・・
それらが本当に正しいのか、ちょっと立ち止まって考えてみませんか


いじめに関するよくある勘違い
http://mamono.2ch.net/test/read.cgi/youth/1268212962/

死刑制度に関するよくある勘違い
http://society6.2ch.net/test/read.cgi/court/1268212298/

外界は内界を映し出す鏡だって言ってたようちの嫁も
http://academy6.2ch.net/test/read.cgi/philo/1264845494/

175 :nobodyさん:2010/03/23(火) 18:40:06 ID:???
>>174
環境くらいかけks

176 :nobodyさん:2010/03/23(火) 18:49:27 ID:???
なんでこんなとこで宣伝するんだろ

177 :nobodyさん:2010/03/23(火) 19:34:09 ID:Gn31sNCx
>>175さん
環境はどのあたりを書けばよいでしょうか?
このあたりでしょうか?

バリューサーバーの環境
PHP Version 5.2.5

Directive Local Value Master Value
==============================
allow_call_time_pass_reference On On
allow_url_fopen On On
allow_url_include Off Off
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off

他にどの部分を書けばいいのかよければ教えて下さい。
初心者ですみません。

178 :nobodyさん:2010/03/23(火) 19:45:35 ID:???
同じユーザで管理してたら普通にできると思うが
自前のサイトからCIAのサイトを書き換えようみたいなこと考えてるなら>>172


179 :nobodyさん:2010/03/23(火) 19:49:12 ID:???
もっとPHPらしく殺伐としろやks

180 :nobodyさん:2010/03/23(火) 21:26:41 ID:???
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1238417757

181 :nobodyさん:2010/03/23(火) 22:10:26 ID:???
>Phar アーカイブは PHP V5.3 に追加されたかなり便利な機能です。

ファイルI/Oは減少しそうだけど、便利ですか?

182 :nobodyさん:2010/03/23(火) 22:12:51 ID:???
>>1

183 :nobodyさん:2010/03/23(火) 23:00:49 ID:RFIu07UK
広告をランダム表示しようとしてもできません。
グーグルで調べて、何回が試してみました。


<?php
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$rndtxt[3] = 'テキスト4';
$rndtxt[4] = 'テキスト5';
$length = count($rndtxt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$rndtxt[$num]");
?>

でphpファイルを作成してアップ


<!-- PHPランダム広告 ここから -->
<? include("/rndtxt.php"); ?>
<!-- PHPランダム広告 ここまで -->

をファイルに入力して読み込みを行うようにする。


こんな感じでやってみたのですが、アップロードすると表示部分が下のようになってしまいます。なにが悪いのか教えてください。

Warning: main(/pph/ttt.php) [function.main]: failed to open stream: No such file or directory in (ファイル位置の表示) on line 25

Warning: main() [function.include]: Failed opening '/pph/ttt.php' for inclusion (include_path='.:/usr/local/php4/share/pear') in (ファイル位置の表示)on line 25

184 :nobodyさん:2010/03/23(火) 23:20:40 ID:???
キャッシュしろよ

185 :nobodyさん:2010/03/23(火) 23:22:15 ID:/hsQzdjS
ファイル位置=カレントの違いだろ

186 :nobodyさん:2010/03/24(水) 00:55:17 ID:???
<? include("/rndtxt.php"); ?>
がエラー。
ファイルがその場所にないんだろ。
同じディレクトリなら
include 'rndtxt.php';
で十分

187 :nobodyさん:2010/03/24(水) 00:58:45 ID:dTWj0POb
HTTPでHEADクエリ送信してファイルの有無を確かめたいのですが
どうすればいいのでしょうか?

188 :nobodyさん:2010/03/24(水) 01:46:02 ID:X47Xx9mp
スレ違いかもしれませんが質問させてください。
(スレ違いの場合はお手数ですが誘導の方お願いいたします。)

風俗のリンク集なんかで「本日出勤中」というようなサイトをみかけますが
これはどのような仕組みで表示しているのでしょうか?

ttp://www.delihels.com/main.php
(このようなサイトです)


189 :nobodyさん:2010/03/24(水) 01:55:47 ID:???
>>188
サーバ・クライアント方式

とでも言えばいいのか

190 :nobodyさん:2010/03/24(水) 01:57:04 ID:???
>>187
HTTPリクエスト投げてレスポンスコードを見る

とでも言えばいいのか

191 :nobodyさん:2010/03/24(水) 01:58:58 ID:???
各店が出勤情報を提供してるんじゃないの

192 :nobodyさん:2010/03/24(水) 02:05:37 ID:???
ナニコレ新手の宣伝?

193 :nobodyさん:2010/03/24(水) 02:46:17 ID:Kwea1nv5
>>184
>>186
>>185

ありがとうございます

194 :nobodyさん:2010/03/24(水) 06:13:51 ID:X47Xx9mp
>>188です。
お答え頂いた方々、どうもありがとうございました。

各お店の専用ページのようなものがあり、そこからお店側が更新して、
サーバに反映されてるんですね!!・・・?

これってRSSなんかじゃできないですよね・・・
勉強が必要ですね・・・

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

195 :nobodyさん:2010/03/24(水) 09:17:55 ID:???
>>194
イメージ的にはそれで正解だと思います。
ただRSSに拘る必要はない仕組みです。

196 :nobodyさん:2010/03/24(水) 11:03:40 ID:WEWtuFeV
171です。

>>178さん
同じユーザで管理しています、もちろん。
ですが、ドメインが変わると書き込みが出来ないんです。(呼び出しは出来ます)
書き込み用のファイルの設定を変えなければならないのでしょうか?

197 :nobodyさん:2010/03/24(水) 11:13:42 ID:???
>>196
だからドメイン関係ないって
www.omae.comからwww.google.comにおいてあるファイルを書き換える事できないだろ?
フォームにPOSTして書き込むかローカルで書き込むファイルのパス指定しないと。
どういう関数使おうとしてるとかもっと詳しく書かないとこれ以上わからんよ。

198 :nobodyさん:2010/03/24(水) 12:25:32 ID:WEWtuFeV
171です。

FORM METHOD="POST" action="

action="
↑の続きに別のドメインを書けば書き込めるということでしょうか?

199 :nobodyさん:2010/03/24(水) 12:29:13 ID:???
同じ鯖ならさー
システムコールで弄ればいいじゃない

200 :nobodyさん:2010/03/24(水) 12:34:28 ID:???
まずサーバーサイドスクリプトが何なのか調べた方がいいかも

201 :nobodyさん:2010/03/24(水) 13:18:49 ID:???
A鯖/view.php:
<?php
$file = 'add.txt';
touch($file);
chmod($file, 0666);
if(isset($_GET['add'])){
file_put_contents($file, $_GET['add']);
}
echo htmlspecialchars(file_get_contents($file));
?>

B鯖/input.php:
<form action="A鯖/view.php" method="get">
<textarea name="add"></textarea>
<input type="submit">
</form>

B鯖から入力してA鯖に書き込んで表示できる。
こんな感じか?

202 :nobodyさん:2010/03/24(水) 14:32:22 ID:???
攻撃されたらひとたまりもなさそうだな

203 :nobodyさん:2010/03/24(水) 14:49:46 ID:WEWtuFeV
171です。

>>201さん
ありがとうございます。
できました。

204 :nobodyさん:2010/03/24(水) 14:52:04 ID:JopdS9PV
>>201

function h($str){


205 :204:2010/03/24(水) 14:54:44 ID:JopdS9PV
>>203

途中送信すまん。

function h($str){
return htmlspecialchars($str);
}


h($_GET['add'])とした方が良い。

あと、CSRF的に危ないかも。。

206 :nobodyさん:2010/03/24(水) 15:00:53 ID:???
>>205
>h($_GET['add'])とした方が良い。

なんで?

207 :nobodyさん:2010/03/24(水) 15:05:05 ID:JopdS9PV
>>206
XSS危なくね?

208 :nobodyさん:2010/03/24(水) 15:18:03 ID:???
>>207

>>201はサンプル程度のつもりだろうからセキュリティ対策がどうとかは別として
そこを関数にしたところで変数の中身は変わらないとおもうんだが。。

209 :nobodyさん:2010/03/24(水) 15:25:39 ID:JopdS9PV
1回くらいだったら関数にしなくてもいいけど、何回もhtmlspecialchars()よりはh()の方が楽かと

210 :nobodyさん:2010/03/24(水) 15:57:47 ID:???
ENT_QUOTESやらんのかい!

211 :nobodyさん:2010/03/24(水) 16:00:03 ID:???
htmlspecialcharsだけがサニタイズだと思ってる奴は素人
XSSでも喰らってろ

212 :nobodyさん:2010/03/24(水) 16:00:56 ID:???
動く動かないはともかくきめえ

213 :nobodyさん:2010/03/24(水) 16:26:29 ID:???
素人丸出しワロタ

214 :nobodyさん:2010/03/24(水) 16:35:12 ID:???
はいはい。叩くの楽しいよねー。

215 :nobodyさん:2010/03/24(水) 16:38:42 ID:???
htmlspecialcharsのラッパなんていまさらだな
CakePHPにもh()あるしな


216 :nobodyさん:2010/03/24(水) 16:38:46 ID:???
批判だけなら誰でもできる

217 :nobodyさん:2010/03/24(水) 16:47:12 ID:9W7AG8ph
少々質問させてください。

現在作成中のWebサイト上で、ユーザー登録をするページを作成中なのですが、
登録ページ内で入力されたユーザーIDが既に登録されている物と重複しないかの確認をさせたいと思っています。

この場合、どのようにすればよいのでしょうか?
データベースにはMySQLを使用しています。

218 :nobodyさん:2010/03/24(水) 16:59:01 ID:???
>>217
DBに既にあるか無いかを調べればいいよね

219 :nobodyさん:2010/03/24(水) 17:55:47 ID:???
検索すればええんちゃうの

220 :nobodyさん:2010/03/24(水) 17:57:11 ID:JL5BpxOE
PHPマニュアル
http://douseidoumei.com/phpman1/

221 :nobodyさん:2010/03/24(水) 18:12:40 ID:???
>>220
公式じゃないところを持ってくるのは宣伝したかったから?

222 :nobodyさん:2010/03/24(水) 18:29:28 ID:???
>>221
perlの方にもあったから宣伝。スルーで。

223 :nobodyさん:2010/03/24(水) 19:51:05 ID:K69tMWx3
マニュアルの見方を教えてください。
例えばmysqliを例にすると、
http://jp2.php.net/manual/ja/book.mysqli.php
mysqli::method
mysqli->method
の2種類の書き方がありますが、
これは前者がstaticメソッドで後者がインスタンスメソッドであることを意味するのでしょうか?
もしその場合mysqliのコンストラクタはstaticコンストラクタということでよろしいでしょうか?
あとmysqli_queryのパラメータは、
mixed mysqli::query ( string $query [, int $resultmode ] )
となってますが、[, int $resultmode]って書いてるとこはどういう意味なのでしょうか?
string $query, int $resultならわかるのですが、この[]の意味はなんなんでしょう?
よろしくお願いします。

224 :nobodyさん:2010/03/24(水) 20:23:03 ID:???
>>220涙目wwwwwwwwwwwwwwwwwwwwwwww

225 :nobodyさん:2010/03/24(水) 20:30:43 ID:???
ナカシマ マサアキ君 ピーンチ

226 :nobodyさん:2010/03/24(水) 20:40:37 ID:???
>>223
>これは前者がstaticメソッドで後者がインスタンスメソッドであることを意味するのでしょうか?
おk
>もしその場合mysqliのコンストラクタはstaticコンストラクタということでよろしいでしょうか?
これはよくわからない
>string $query, int $resultならわかるのですが、この[]の意味はなんなんでしょう?
関数呼び出し時、省略できます

227 :nobodyさん:2010/03/24(水) 21:00:31 ID:FLvwWD9b
20100324203804686
みたいな日時の文字列を
2010-03-24 20:38:04.686
のように変形するコードを、短く格好よく書いて!

preg_match( '/(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/',$time, $m )
これ使う長くてダサいので、もxも

228 :nobodyさん:2010/03/24(水) 21:07:49 ID:???
どうせ関数にするんだから短くする必要ないやん

229 :nobodyさん:2010/03/24(水) 21:09:05 ID:???
また正規表現君か

230 :nobodyさん:2010/03/24(水) 21:12:12 ID:K69tMWx3
>>226
どうもありがとうございます。
省略可能とのことですが、これを自分で定義する場合はどうするのでしょうか?
function hoge($a, $b=NULL)のようにデフォルト値を入れるのでしょうか?
またfunction hoge($a, $b=NULL, $c=NULL, $d=NULL)のようになっていて、
$aと$dにパラメーターを入れたい場合、中間にある$bと$cは省略できないという認識であってますか?
つまりhoge("a", "d")ではdが$bになってしまうのでhoge("a", NULL, NULL, "d")としないといけませんか?

231 :nobodyさん:2010/03/24(水) 22:52:07 ID:+UL/zmjA
DLL aをアップロードして読み込むことは出来ますか。
php.iniに登録していない独自の拡張モジュールを使いたいのですが

232 :nobodyさん:2010/03/24(水) 22:54:44 ID:???
>>227
$datetime = '20100324203804686';
$format = '0000-00-00 00:00:00.000';
$result = '';
for ($i = 0, $j = 0, $len = strlen($format); $i < $len; ++$i) {
$result .= $format[$i] === '0' ? $datetime[$j++] : $format[$i];
}
var_dump($result);

あんまかっこよくないしループもホントはしたくない。もxも

233 :nobodyさん:2010/03/24(水) 23:01:02 ID:???
>>231
DLLということはWIN?
ならextとかextensionフォルダに突っ込めばいい。
無理ならdl();
それも実行時のディレクトリにphp.iniを置く。ってできたっけ

234 :nobodyさん:2010/03/24(水) 23:06:00 ID:+UL/zmjA
サンクス。
サーバーで動くバイナリ用意すれば非対応の機能もうごかせるってことですか。

235 :nobodyさん:2010/03/24(水) 23:09:23 ID:+UL/zmjA
注意: この関数は、PHP が safe-mode で動作している場合は無効となります。
http://php.net/manual/ja/function.dl.php

236 :nobodyさん:2010/03/25(木) 01:08:46 ID:???
>>227
ダサく書いてみた。
$datetime = '20100324203804686';
$t = sscanf( $datetime , "%4s%2s%2s%2s%2s%2s%3s");
print sprintf ("%s-%s-%s %s:%s:%s.%s",$t[0],$t[1],$t[2],$t[3],$t[4],$t[5],$t[6]);

237 :nobodyさん:2010/03/25(木) 01:14:05 ID:slfY8WwG
phpで、繰り返し出てくるチェック処理を、staticメソッド(いわゆるクラスメソッド)で実装しようと思うのですが、
こういう使い方は間違ってますか?


■インスタンスメソッドの場合
$check = new Check();
$result = $check->checkInput($hoge);

■クラスメソッドの場合
$result = Check::checkInput($hoge);

クラスメソッドのほうはnewしなくていいから便利かなと思ったのですが、、、
よろしくご教示お願いします。

インスタンスメソッドとクラスメソッドの使い分けの考えかたも教えていただければと存じます。


238 :nobodyさん:2010/03/25(木) 01:47:34 ID:???
>>237
「入力が同じであれば、出力も同じとなる」の様な場合は、クラスメソッドを使う。


内部の状態(インスタンスフィールドの値)に応じて、「入力が同じでも、出力が異なる」ような場合、
または、メソッド実行した結果、内部の状態が変化する場合はインスタンスメソッドを使う。

これを踏まえて、

> phpで、繰り返し出てくるチェック処理を、staticメソッド(いわゆるクラスメソッド)で実装しようと思うのですが、
> こういう使い方は間違ってますか?

内部の状態に依存しないのであれば、クラスメソッドで問題なし。依存するならインスタヌメソッドとなる。


239 :nobodyさん:2010/03/25(木) 02:01:36 ID:???
>>237
入力内容のチェックだけならスタティックメソッドでおk
メンバー変数(プロパティ)使わないだろうし

240 :nobodyさん:2010/03/25(木) 03:14:08 ID:wY11EtqU
PHPでプログラムを書く場合
ソースファイルの文字コードは何にするのがスタンダードですか?

241 :nobodyさん:2010/03/25(木) 03:38:10 ID:p6Ic0f1/
日本語使わなければUTF8もEUCもsjisも同じだろ

242 :nobodyさん:2010/03/25(木) 04:11:36 ID:???
何も考えずにutf8で書いとけば大丈夫

243 :147:2010/03/25(木) 04:26:53 ID:???
自己解決したので一応報告。
どうやらPDOのSQLiteはスクロール可能なカーソルをサポートしていないので
offsetが使えないんだとか。
↓のURLで外人が書いてくれてた。つーか情報これだけかよ。

http://www.php.net/manual/ja/pdostatement.fetch.php

244 :nobodyさん:2010/03/25(木) 04:58:11 ID:???
>>242
合州国?
反日サヨクか?
合衆国をわざわざ合州国なんて書くのはサヨクだけだぞ。
「合衆国」は“United States”の対訳語ではなく、「共和制」(Republic=君主のいない、民衆から元首を選ぶ制度。合衆国の保守本流)
ないしは「民主主義」(democratic 合衆国左派) の古い訳語であり、「合衆制度により治められる国」という意味だぞ。
本当に日本で教育受けてんのか?
日教組の左翼教師に捏造史の教科書丸暗記させられただけだろお前の地域は。
英語の"state"は日本語の「州」とは全く異なる概念であり、“United States”の訳語であるならば「連邦」と書くのが正しい。
サヨク同士でやり取りする辞書とネット工作に使う辞書は分けとかないとこういう所で簡単にボロが出るんだよ。

245 :nobodyさん:2010/03/25(木) 10:16:49 ID:???
一瞬考えちまったじゃねーか

246 :227:2010/03/25(木) 10:18:55 ID:???
>>232 >>236
ありがとう!でもダサいよね。

strftimeとstrptimeを使えばいいかな? と思ったんだけど
PHPだとstrftimeの引数ってUNIXTIMEなんだよね。
はっきりいって、これを設計したやつはアホだと思う。

なんで往復できるように作らないんだよ、氏ねよ、ほんとに。

247 :nobodyさん:2010/03/25(木) 10:53:22 ID:3VlbO4al
http://www.php.net/manual/ja/indexes.phpに載ってるXMLWriter::textについて質問です

これはどういう風に使うのでしょうか?
PHP5.3.1で

$text = "HelloWorld!!";
XMLWriter::text($text);

としてもエラーになります。
どなたかご教示お願いします

248 :nobodyさん:2010/03/25(木) 11:10:45 ID:???
まず、そのURLを出してきている時点でマニュアルを読んでないだろ

249 :nobodyさん:2010/03/25(木) 11:18:58 ID:3VlbO4al
248さんアドバイスありがとうございます
URLは正しくはhttp://www.php.net/manual/ja/function.xmlwriter-text.phpになります
使い方にbool text ( string $content )と書いてありますがこれはどのように書くのでしょうか?

250 :nobodyさん:2010/03/25(木) 11:22:23 ID:???
>>249
classの使い方をわかってないと厳しいと思うよ
「php XMLWriter」で検索してでてくるサイトのサンプルを見たほうが良い

251 :nobodyさん:2010/03/25(木) 11:24:08 ID:???
最近のPHPの本って完全Windows対応の物しか出てないね・・・
Linuxのリの字も消えてるというか・・・
後Xammp

252 :nobodyさん:2010/03/25(木) 11:25:47 ID:???
インストール以外に機種依存はほぼない。
持っているやつが多い方むきになるだろ

253 :nobodyさん:2010/03/25(木) 11:35:07 ID:???
IISでPHPが安定して動くようになってきたのもありますね

254 :nobodyさん:2010/03/25(木) 11:35:49 ID:???
初心者向けがwindowsになるのはしょうがないよ
linuxから教えてたらページ足りないし初心者混乱するし

255 :nobodyさん:2010/03/25(木) 11:43:21 ID:3VlbO4al
>>250さん検索キーワードを添えて頂きありがとうございます

$obj = new XMLWriter();
$obj->openMemory();
echo $obj->text("test");
とすることで動作を確認できました。


一つ疑問があるのですが>>4
>→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
とあるのですが

XMLWriter::textという風に書くことはできないのでしょうか?


256 :nobodyさん:2010/03/25(木) 11:54:58 ID:???
質問です。
OS WindowsXP
PHP php5.2.6
にて、XAMPPで勉強中なのですが、1点分からない挙動がありました。

require_once('MDB2.php');
とこのようにPEARのPHPを指定しているのですが、ふとini_get('include_path')を出力してみたところ、PEARにパスは通っていませんでした。
(Eclipse上で、デバッグ起動しました)

なぜinclude_pathが通っていないのに、読みこめてしまうのでしょうか?

PHPの仕様で「PEARには勝手にパスが通ってることになるんだ」というのであれば良いのですが、
XAMPPが勝手に裏でごにょごにょだと、いざLinuxに移行した際などにハマりそうで…。

257 :nobodyさん:2010/03/25(木) 11:56:15 ID:Irf8TYh6
すいませんID出し忘れました、>>256です。

258 :nobodyさん:2010/03/25(木) 11:57:32 ID:???
XAMPPを使ってるようじゃLinuxに移行したらパニくるだろうね
WAMPで導入しなされどうせ一回インストールすればいいんだから

259 :nobodyさん:2010/03/25(木) 11:58:59 ID:???
質問部分ガン無視レスワロタw

260 :nobodyさん:2010/03/25(木) 12:05:51 ID:???
>>259=質問者乙


261 :nobodyさん:2010/03/25(木) 12:08:00 ID:???
>>258
どうパニくるの?
例えばcentOSであれば標準で入っているものをyumすればいいだけだけど、個別に入れる時とか、>>256のようにパス設定等の問題でって事かな?
それともパーミッションだとか文字コードって事かな?


262 :nobodyさん:2010/03/25(木) 12:08:55 ID:???
>>256
(Eclipse上で、デバッグ起動しました)

同じXAMPPのPHP5.2.6で
include_pathを空にして試してみたら普通にエラー吐くよ

263 :nobodyさん:2010/03/25(木) 12:11:14 ID:???
linux使ってるのにソースコードからコンパイルできない奴ってまだいたの?

264 :nobodyさん:2010/03/25(木) 12:12:26 ID:???
で,linuxのインストールはディストリビューション使ってるんだろ?

265 :nobodyさん:2010/03/25(木) 12:13:37 ID:fXHFk6pN
文字化けが直りません。

デフォルトでEuc-jpを使用しているサーバーで、
スクリプト上で
mb_internal_encoding("Shift_JIS");
header ("Content-Type: text/html; charset=Shift_JIS");
Htmlのメタタグで
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
という処理をやっても文字化けします。
もちろんファイルもShift-jisで保存してます。

なのにPCから閲覧して表示の文字コードをEuc-jpにすると普通に見えるんです・・・。
他に修正すべきところってあるんでしょうか?


266 :nobodyさん:2010/03/25(木) 12:19:46 ID:???
>>230
おk

267 :nobodyさん:2010/03/25(木) 12:23:52 ID:???
OS使ってる時点でダサい

268 :nobodyさん:2010/03/25(木) 12:26:13 ID:???
えっ

269 :nobodyさん:2010/03/25(木) 13:04:14 ID:???
>>262
空っぽはともかく、
ini_set('include_path', ini_get('include_path'));
これでも動かなくなりましたね。

XAMPPが裏でこっそり。なのでしょうか・・?

270 :nobodyさん:2010/03/25(木) 13:06:49 ID:Irf8TYh6
>>269です。
失礼しました。269の奴は私の勘違いでした。(コマンドライン実行してました)

>>256の件は相変わらず起こる状態です。

271 :nobodyさん:2010/03/25(木) 13:34:36 ID:???
おれはxampplite使ってるけどPEARパス始めから通ってるぞ
phpinfo()で読み込んでる設定ファイル確認してみ

272 :nobodyさん:2010/03/25(木) 13:55:57 ID:???
__autoload()なんてことじゃないよな

273 :nobodyさん:2010/03/25(木) 18:14:37 ID:???
もうphpも終焉気味だな

274 :nobodyさん:2010/03/25(木) 18:32:25 ID:???
CGIでは一番敷居が低いであろう言語だからね

275 :nobodyさん:2010/03/25(木) 18:34:08 ID:???
Python流行らねーかな

276 :nobodyさん:2010/03/25(木) 18:35:24 ID:???
pythonは文字コードがイミフで諦めた

277 :nobodyさん:2010/03/25(木) 18:36:02 ID:???
何が終焉なのかわからないが革新的な代替技術はでてきてないでしょ
ほとんどの鯖に入ってて覚えやすいものといったらPHPかPerlしかないし
モバイル分野が活発でSNSアプリが流行っててクライアントサイドが熱いといっても
サーバ処理部分は結局PHPとか使わざるをえないわけであって
スレの活気が昔よりないのは初心者が減ってるのと運営が暴走して最近アク禁しまくってるせい
ブログやSNSがなかった時代はHTML覚えて自分でいろいろ作りたいなんてのもあったが
今は用意されてるのが多いしそういう意欲をもつやつが昔ほど少ない

278 :nobodyさん:2010/03/25(木) 19:05:53 ID:???
マジレス(;゚Ж゚;)ブホォ

279 :nobodyさん:2010/03/25(木) 21:45:57 ID:oHiCs4cC
ファイルを読み込んだり書き込んだりする前に
file_existsを使って事前チェックすればPHP側のエラーを出さずにすみますが
同じようにDBが繋がるかを事前にチェックする方法はないでしょうか?
@で制御して繋いでみるしかないでしょうか?

280 :nobodyさん:2010/03/26(金) 06:27:03 ID:dSbdTEMe
ググったソースコードphpファイルとしてを鯖にうpしました。
内容はファイルの作成とディレクトリの作成です。

無事作成出来ましたが、権限が鯖の?アパッチにあるようで、FTPでいじれません…
削除したいのですが、方法ありますか?

削除cgiなども試しましたがダメでした。
6.ql.bzの鯖つかってます。

281 :nobodyさん:2010/03/26(金) 07:50:59 ID:???
アップロードしたPHPファイルが削除できないの?
それともPHPで作成したファイルが削除できないの?
後者ならPHPのchmod関数で権限を変えてから消すか、直接PHPで消せると思うよ

282 :nobodyさん:2010/03/26(金) 07:51:28 ID:???
FTPで消せないってのは考えにくいけどなぁ。
まあどうしても駄目なら、PHP通してchownとかchmodしてみれば?

283 :nobodyさん:2010/03/26(金) 08:08:19 ID:dSbdTEMe
>281
後者です。
ホント初心者なんで、まさかこんな事になるとは。。。
>281,282
chmodとchown関数調べてみます。

284 :280:2010/03/26(金) 08:30:25 ID:dSbdTEMe
[public_html](初めからあったディレクトリです)
麓cgi-bin](上に同じく)

こっから下は試行錯誤して出来て消えなくなったものです。こんな感じの構成です。
麓test_dir]
麓test]
和aaa(アパッチ権限のファイルがあります。消えません。)
test_
和aaa
user

という構成になってるのですが、
ググって出てきたchmodとchown関数のソースをどこに置いて、実行すればいいのかが分からないです。
出来ればこれをここに置いてアクセスしろ!みたいな感じでソース下さればありがたいです…
ttp://www.phppro.jp/phpmanual/php/function.chown.html
ここ見たんですがファイルのパスをどうすればいいのか?ユーザー名ってなんぞ?ってな状況です><

285 :280:2010/03/26(金) 08:32:57 ID:dSbdTEMe
あ、インデント無効でズレました;
とにかくいっぱい消せないってことです…

286 :nobodyさん:2010/03/26(金) 08:40:22 ID:???
消したいファイルとフォルダ全てに対して
<?php
chmod('aaaa', 0777);
chmod('test_', 0777);
chmod('user', 0777);
?>
みたいにすればいいと思われます
んで、適当な名前付けて、サーバに上げてブラウザからアクセス

287 :280:2010/03/26(金) 09:11:16 ID:dSbdTEMe
>286
ありがとうございます!
ちなみにそのphpソースはどこに置けばいいでしょう?

288 :280:2010/03/26(金) 09:15:30 ID:dSbdTEMe
あと、
<?php
chmod('aaaa', 0777);
?>
とするとして、aaaaというディレクトリにアパッチ権限のファイルがあるとすれば、それも同時に消せるでしょうか
それとも、中身も一個ずつchmodしないといけませんか?

聞きっぱなしですみません。

289 :nobodyさん:2010/03/26(金) 09:17:34 ID:???
消すのはunlinkな

290 :280:2010/03/26(金) 09:27:23 ID:dSbdTEMe
>>289
chmodでパーミッションを変更するんですよね?
そしたらFTPから削除出来るのではなく、unlinkでまた削除しないといけないのでしょうか・・・

291 :nobodyさん:2010/03/26(金) 09:34:03 ID:???
パーミッション777に変更したら手動でもスクリプトでも消せる

292 :280:2010/03/26(金) 09:37:04 ID:dSbdTEMe
>>291
ありがとうございます。

<?php
chmod('消えないファイル名', 0777);
?>
のソース実行してもパーミッション644のままです…

293 :nobodyさん:2010/03/26(金) 09:38:29 ID:???
パスはちゃんととおってる?
フルパスで指定してみ

294 :280:2010/03/26(金) 09:41:10 ID:dSbdTEMe
>>293
消したいファイルがあるディレクトリにソース置いて実行しました。

フルパスとはURLのことですか?
それともFTPから見たフォルダ/フォルダ/消したいファイルということですか?

295 :nobodyさん:2010/03/26(金) 09:44:36 ID:???
>>294
後者
/home/>>294/public_html/フォルダ/ファイル
みたいな感じ

296 :nobodyさん:2010/03/26(金) 09:45:42 ID:???
>>295
お前、優しいなw

297 :nobodyさん:2010/03/26(金) 09:47:21 ID:???
>>296
お前も手伝えよw

298 :280:2010/03/26(金) 09:50:09 ID:dSbdTEMe
>>295
クソったれ初心者に優しくありがとうございます。
ttp://apxxxn.6.ql.bz/user/WS000005.JPG
こんな感じになってます。
フルパスの意味は理解しましたが
homeとは?>>294とは?ってな感じです。

299 :nobodyさん:2010/03/26(金) 09:54:52 ID:???
>>298
Windowsしか知らない世代だからね
WindowsでのDocuments and Settingsだよ

300 :nobodyさん:2010/03/26(金) 09:59:53 ID:???
echo realpath(dirname(__FILE__));

301 :280:2010/03/26(金) 10:22:35 ID:dSbdTEMe
>>299
Documents〜って言ったらHDD内のデータの事ですよね?
鯖に置いてるファイルが消したいのですが、連携?してるのでしょうか…

>>300さんは私へのレスでしょうか…日本語で…お願いします><

302 :nobodyさん:2010/03/26(金) 10:32:36 ID:???
>>298
FFFTPを使ってるなら
ttp://www.hereticanthem.com/webtips/215/

これで消えると思うよ

303 :nobodyさん:2010/03/26(金) 10:36:11 ID:???
FFFTP(笑)

304 :nobodyさん:2010/03/26(金) 10:37:22 ID:???
というかファイル削除なんてPHPよりCGIでやったほうが良いんじゃないの?

305 :280:2010/03/26(金) 10:45:54 ID:dSbdTEMe
>>302
ありがとうございます、でもNextFTP使ってます…

>>304
cgi使いましたが、無理でした。
なぞです…

306 :nobodyさん:2010/03/26(金) 10:47:22 ID:???
【os】SuSE 9.1 x86_64
【php】4.4.8
【GD】2.0.28
黒のドット絵を、赤に塗りなおそうと

imagecolortransparent(imagecolorclosest($im, 0, 0, 0));
$out = imagecolorallocate($im, 0, 0, 0);
$in = imagecolorallocate($im, 255, 0, 0);
imagefilltoborder($im, 0, 0, $out, $in);

こんな感じでやってみたのですが、赤単色にしかなりません。
どうすればいいですか?

307 :nobodyさん:2010/03/26(金) 10:48:37 ID:5PFtTpzk
ID出し忘れたので、再カキコ。

【os】SuSE 9.1 x86_64
【php】4.4.8
【GD】2.0.28
黒のドット絵を、赤に塗りなおそうと

imagecolortransparent(imagecolorclosest($im, 0, 0, 0));
$out = imagecolorallocate($im, 0, 0, 0);
$in = imagecolorallocate($im, 255, 0, 0);
imagefilltoborder($im, 0, 0, $out, $in);

こんな感じでやってみたのですが、赤単色にしかなりません。
どうすればいいですか?

308 :nobodyさん:2010/03/26(金) 12:30:11 ID:???
>>280
http://jp2.php.net/manual/ja/function.unlink.php
ここからお借り
実行できるならpublic_htmlに適当な名前でUPする
でブラウザから実行
"./test_dir"は消したいディレクトリを書く
例えばtest_dir/testだけなら"./test_dir/test"
<?php
recursiveDelete("./test_dir");

/**
* Delete a file or recursively delete a directory
*
* @param string $str Path to file or directory
*/
function recursiveDelete($str){
if(is_file($str)){
return @unlink($str);
}
elseif(is_dir($str)){
$scan = glob(rtrim($str,'/').'/*');
foreach($scan as $index=>$path){
recursiveDelete($path);
}
return @rmdir($str);
}
}
?>
UPするファイルをcgi-binに置くならパスは
"../test_dir"と書く
実行するときはバックアップを取ってからね

309 :nobodyさん:2010/03/26(金) 13:19:37 ID:???
>280のはSAFEモードかつaaaaの作成者がphpともFTPとも違うんじゃねーの

310 :nobodyさん:2010/03/26(金) 14:05:06 ID:hlkI0cqo
set_time_limit(600)にして、10分間PHP処理を継続して
それ以上かかる処理についてはスルーする方法ってないでしょうか?

今作っているプログラムは、forでデータをチェックして
問題なければ書き込み用の配列に代入し、
forが完了したらfopenでデータを書き込んでいます。

311 :nobodyさん:2010/03/26(金) 14:09:32 ID:???
forの中で時間チェックしてそれ以上は打ち切って書き込み?

312 :280:2010/03/26(金) 14:10:34 ID:dSbdTEMe
>>308
ありがとうございます。
URLをうpして実行したらPHPリファレンスかな?が表示されました。
cgi-binでもpublic_htmlで実行しても、真っ白な画面(404ではなかったです)で
FTPから確認しても、消せずでした…

<?php
recursiveDelete("./test_dir/test/aaaa/");

以下そのままのPHPファイルをうpし、アクセスしました。
cgiのディレクトリで実行する場合はピリオドをひとつ増やしました。
何か間違っているのでしょうか…;;

313 :280:2010/03/26(金) 14:12:16 ID:dSbdTEMe
>>309
自分でうpしたファイル、ディレクトリの権限は4012ですが
phpで作成したファイルは48でした。
名前の変更、消えないディレクトリへのうp、権限の変更ともに

「削除できませんでした。権限があるか、フォルダの中は空かどうか確かめてください。 」
とはじかれます。

314 :310:2010/03/26(金) 14:14:30 ID:hlkI0cqo
>>311
そう言う事って出来るんですか?
forしながら時間チェックって。

315 :310:2010/03/26(金) 14:16:03 ID:hlkI0cqo
あ、わかりました。
$start_time = time();
for(){
$check_time = time();
if($check_time > $start_time+600){
break;
}
}

こんな感じですね。勉強になりました。

316 :nobodyさん:2010/03/26(金) 14:24:59 ID:???
もう鯖管に頼んじゃったほうが早いんじゃね…

317 :nobodyさん:2010/03/26(金) 14:26:46 ID:???
レン鯖変えたほうがいいよ
ロリポ最高だよ

318 :nobodyさん:2010/03/26(金) 14:32:57 ID:???
>>317
ロリポもセーフモードじゃん
ああ、ネタで言ってるのか

319 :nobodyさん:2010/03/26(金) 14:39:14 ID:???
>>318
気づいたんなら前半消せばいいじゃん
ああ、ネタで言ってるのか

320 :280:2010/03/26(金) 14:54:01 ID:dSbdTEMe
鯖が原因ってのは考えてなかったです。
PHPの練習に使ってるだけなので、有料じゃなければいいのですが…
とりあえず鯖管に連絡してみます。
みなさんご親切にありがとうございました!

321 :nobodyさん:2010/03/26(金) 14:55:38 ID:???
練習で人様の鯖使うとかナメてんな
何でlocalhost使わないんだろう

322 :nobodyさん:2010/03/26(金) 15:16:35 ID:???
↓XAMPPがどうのこうの

323 :nobodyさん:2010/03/26(金) 15:16:38 ID:???
他人の物は俺の物、俺の物は俺の物。
今の子に共有という言葉はありません。

324 :nobodyさん:2010/03/26(金) 15:21:51 ID:???
今のガキが大人になったら犯罪が今以上に増えて恐ろしい世の中になりそう
しかも事件のきっかけがしょうもないきっかけとかなw


325 :nobodyさん:2010/03/26(金) 15:24:00 ID:???
え?練習でレン鯖使うとかふざけてんの?
ゆとるのもいい加減にしろよ

326 :nobodyさん:2010/03/26(金) 15:35:43 ID:???
>>318
今のロリポはphp.ini書き換えてセーフモード解除できる

327 :nobodyさん:2010/03/26(金) 15:53:36 ID:???
>きっかけがしょうもないきっかけ

328 :nobodyさん:2010/03/26(金) 16:43:44 ID:???
ロリポはどうでもいいしスレち


329 :nobodyさん:2010/03/26(金) 17:06:33 ID:???
自動生成したページにコメントを付けられるようにするにはどうしたらよいですか?


330 :nobodyさん:2010/03/26(金) 17:06:55 ID:edKl/0SZ
age忘れ

331 :nobodyさん:2010/03/26(金) 17:13:07 ID:???
エスパーかもーん

332 :nobodyさん:2010/03/26(金) 17:14:27 ID:???
コメントにページIDつけて保存すればいいじゃない

333 :nobodyさん:2010/03/26(金) 17:26:01 ID:???
>>329
フォームもついでに生成してコメントは別ファイルに保存しておけばよい

334 :nobodyさん:2010/03/26(金) 20:05:21 ID:DpRkdepW
define("HOGE_A", 1);
define("HOGE_B", 2);_
if ($test == "A") {
 echo HOGE_A;
} elseif ($test == "B") {
 echo HOGE_B;
}

こんな感じの定数がいっぱいあるのですが
上の呼び出し方だと非効率なのでイメージとして

echo HOGE_$test;
ということをやりたいのですができません
文字列を定数で評価できればいいのですが
何か方法はないでしょうか?
よろしくお願いします

335 :nobodyさん:2010/03/26(金) 20:14:31 ID:???
echo constant("HOGE_" . $test);

336 :nobodyさん:2010/03/26(金) 20:19:34 ID:???
$hoge = {A=>1,B=>2,C=>3}

echo $hoge($test);
これでいいんじゃね


337 :nobodyさん:2010/03/26(金) 20:20:29 ID:???
()じゃなくて[]だった

338 :nobodyさん:2010/03/26(金) 20:21:49 ID:DpRkdepW
>>335
どうもありがとうございます!
マニュアルに書いてないと思って見なかったのですがdefineの関連に思いっきり書いてましたね
反省してきます

>>336さんもレスありがとうございます
今回は定数項目なのでハッシュは見送りたいと思います

339 :nobodyさん:2010/03/26(金) 20:24:16 ID:???
チッウッセーナ

340 :nobodyさん:2010/03/26(金) 22:24:01 ID:VBrvLXHV
phpで既存のexcel(officeは2003)のファイルを読み込んで
データを加工して出力させたいと思っていて調べた所
php reviserかphp excelreaderが良さそうと思ったのですが
どちらがオススメでしょうか?

また良い解説サイトはあるでしょうか?

341 :nobodyさん:2010/03/26(金) 23:07:50 ID:???
phpでやる必要もないが
はじめからデータ場所わかっていれば
例 googleキャッシュ

342 :nobodyさん:2010/03/26(金) 23:11:48 ID:???
POIがいい

343 :nobodyさん:2010/03/26(金) 23:59:44 ID:nTGjIJ+3
みなさんこんばんは
前の方と似た質問ですが別人です。

PHPでエクセルを読み込んでウェブページとして表示したいと思っています。
ttp://etoh.seesaa.net/article/36670358.html
↑このサイトのこのページ↓のようなイメージです。
ttp://iscp.jp/Excel_to_HTML/test/SoftBank_2007.php?t=0
エクセルの行ごとにhtml整形されたデータをphpで
このようにパラメータで呼び出したいです。

このソフトをインストールしてみたのですが
私の環境はオープンオフィスのため動作しませんでした。
同じようなphpスクリプトはありませんでしょうか?
このスクリプトで生成されたソースが分かればいいのですがorz
アドバイスお願いします。

344 :nobodyさん:2010/03/27(土) 00:01:49 ID:???
動くツールでHTML生成しておけ

345 :nobodyさん:2010/03/27(土) 00:09:57 ID:???
オンラインゲーム作りたいんですが
PHPはその用途に向いてるでしょうか?
それともC++が良いでしょうか?

346 :nobodyさん:2010/03/27(土) 00:13:54 ID:???
C++とDirect3DかOpenGLが最良です

347 :nobodyさん:2010/03/27(土) 00:29:04 ID:???
>>346
thx
おとなしくC++勉強します

348 :nobodyさん:2010/03/27(土) 00:49:39 ID:???
オンラインゲームって幅広すぎだろw

349 :nobodyさん:2010/03/27(土) 01:16:59 ID:???
ウェブゲーならPHPでもいいだろ

350 :nobodyさん:2010/03/27(土) 01:39:19 ID:???
基本登録制のウェブゲームで職業とか選んで他のプレイヤーと戦闘したり交流したりってイメージです。
昔やってたDragon of Floorのイメージです。知ってる人いるかな?

351 :nobodyさん:2010/03/27(土) 01:41:12 ID:???
MMORPGみたいにリアルタイムに動かすならFlashかAjaxらへんが必要

352 :nobodyさん:2010/03/27(土) 02:05:58 ID:???
一番向いてると思われるのはサーブレット
Cでトムキャットを超えるものをゴリゴリ書くのもあり
しかしそんな質問するようならPHPで済ませた方が無難だろう


353 :nobodyさん:2010/03/27(土) 02:11:35 ID:???
通信技術よりゲームが出来ない意味ないがな。
一台のPCで出来るゲーム。
構想としてネットワーク考えるのは良いけど。

354 :nobodyさん:2010/03/27(土) 02:12:46 ID:???
ゲームが出来ないと意味ないがな。
キーボードの「と」が押しにくい。初期不良か。

355 :nobodyさん:2010/03/27(土) 02:34:45 ID:???
Penguin Chatをちょっといじった程度ならなんとかなるが
本格的にやるとまずインフラが無理
安いレン鯖じゃまず許可されない

356 :nobodyさん:2010/03/27(土) 02:45:07 ID:???
Barギコオンラインを思い出したw

357 :nobodyさん:2010/03/27(土) 02:50:37 ID:???
とりあえずTCP/IPとJavaをマスターしとけ。話はそれからだ

358 :nobodyさん:2010/03/27(土) 03:04:56 ID:???
出来もしねーやつに言われても

359 :nobodyさん:2010/03/27(土) 09:51:18 ID:???
zendはじまってたな
ttp://www.zend.com/en/company/news/press/zend-to-collaborate-with-adobe

360 :nobodyさん:2010/03/27(土) 11:35:40 ID:mKFS7c+R
Apacheのログを取得してアクセス解析みたいな表示をさせたいと思います。
Apacheのログを取得するのって、fopenを使うのでしょうか?
ググっても、PHPからApacheのログに任意の文字列を追加することしか
紹介しているサイトが無くて、どうすればいいか悩んでいます。

361 :nobodyさん:2010/03/27(土) 12:20:41 ID:???
>>360
どうして自分で試さないの?

362 :nobodyさん:2010/03/27(土) 12:29:55 ID:badDEIlD
SVNを導入してPHPスクリプトを書いた場合
テキストエディタで上書き更新するたびにバックアップみたいなのが増えていくのでしょうか?

363 :nobodyさん:2010/03/27(土) 13:04:11 ID:???
コミットしなければいいのでは

364 :nobodyさん:2010/03/27(土) 13:07:25 ID:???
>>363
暖かい思いやりに感謝する。


365 :nobodyさん:2010/03/27(土) 13:34:19 ID:w96ELak8
ここが一番勢いあるからここで質問するけど
今2chを騒がせてるスクリプト荒らしの対策スレッドや
それに準ずる避難場所しらんかね?

366 :nobodyさん:2010/03/27(土) 13:39:00 ID:???
騒がせてると言われても見たことないけど

367 :nobodyさん:2010/03/27(土) 13:46:48 ID:w96ELak8
VIP,ν即,アニメ板が攻撃範囲みたい、今のところ。

368 :nobodyさん:2010/03/27(土) 13:48:35 ID:w96ELak8
爆撃範囲拾ってきた

被害を受けている板
ニュース速報 , ニュー速VIP , YouTube , ハード・業界 , ソフトウェア , Download , プロ野球 , ポケモン , 番組ch(NHK) , ネトゲ実況 , アニメ , アニメ2 , シャワートイレ・トイレ

369 :nobodyさん:2010/03/27(土) 15:00:19 ID:???
ここはプログラム組む人が集まる板だからそもそも板違い
セキュ板あたりにでもいけばいいんじゃね

370 :nobodyさん:2010/03/27(土) 15:45:42 ID:???
スクリプト荒らしってどんな事するの?
ウイルスコードを書き込むとか?

371 :nobodyさん:2010/03/27(土) 15:47:47 ID:???
知らん
なぜか質問者は該当スレ貼ってくれないし

372 :nobodyさん:2010/03/27(土) 15:48:28 ID:???
>>370
<?php
echo "どうだまいったかカスども!";
?>

373 :nobodyさん:2010/03/27(土) 15:56:19 ID:???
http://www28.atwiki.jp/mopekiti/pages/175.html
連投まとめ

perlのスプリクトみたいっすよ
あと有料の●が必要

金払って何がしたいんだが

374 :nobodyさん:2010/03/27(土) 16:04:13 ID:???
>>345
俺はブラウザゲームに需要があると予測してるから
いろいろゲームやって勉強してるよ
ドラゴンクルセイドとか三国志とか英雄の城とかな
俺がやってるのは英雄の城だ

375 :nobodyさん:2010/03/27(土) 16:22:48 ID:???
有料●ってしたらばには使えないよね?

376 :need:2010/03/27(土) 16:30:14 ID:BLNff2FT
オリジナルの表紙的なのにパスワード付けて
掲示板みたいなのやチャットやらメルマガやらの機能ってつけれますか?


377 :nobodyさん:2010/03/27(土) 16:35:08 ID:???
理解できる文章で

378 :need:2010/03/27(土) 16:37:21 ID:BLNff2FT
会員制サイトって言えばいいですかね?

379 :nobodyさん:2010/03/27(土) 16:38:15 ID:???
>>378
そういうことでしたらできます
頑張ってください

380 :need:2010/03/27(土) 16:41:56 ID:BLNff2FT
5人くらいで共同してやろうとしてるんですけど
僕もですけどみんなそういうの詳しくなくて・・・

ヒント的なのくださいw

381 :nobodyさん:2010/03/27(土) 16:44:11 ID:???
まず貴様の文章を脳内変換するかしないか考えるから年齢教えろ

382 :nobodyさん:2010/03/27(土) 16:45:53 ID:???
スルー決定

383 :need:2010/03/27(土) 16:47:00 ID:BLNff2FT
18歳です

384 :nobodyさん:2010/03/27(土) 16:49:53 ID:???
これ使ってろ
ttp://joomla.jp/

385 :nobodyさん:2010/03/27(土) 16:50:08 ID:???
美少女なら考える

386 :need:2010/03/27(土) 16:55:09 ID:BLNff2FT
ヒントありがとうございました
またみんなと相談してみますでわでわノシ

387 :nobodyさん:2010/03/27(土) 18:09:59 ID:???
$sql = "SELECT * FROM test WHERE id = '***'"; //実際はもっと複雑
$result = mysql_query($sql);

mysql_queryのレスポンスでn秒以上かかったら、強制的に中断したいのですが
どうすれば出来ますか?

388 :nobodyさん:2010/03/27(土) 18:12:47 ID:hCQYGWPc
あげ忘れた。。

389 :nobodyさん:2010/03/27(土) 18:14:16 ID:???
シグナルアラーム

390 :nobodyさん:2010/03/27(土) 18:48:45 ID:???
>>387
SHOW PROCESSLISTやKILLあたり
実行スクリプトでは待ちというか調べられないので別に監視するようなモノを作る感じ
http://dev.mysql.com/doc/refman/5.1/ja/kill.html

またはmysql_unbuffered_queryでなんとかする
http://jp2.php.net/manual/ja/function.mysql-unbuffered-query.php

件数が多くなりそうなクエリーで遅いなら
SQL_BIG_SELECTSやSQL_MAX_JOIN_SIZE
を設定するとか
http://dev.mysql.com/doc/refman/5.1/ja/set-option.html

391 :nobodyさん:2010/03/27(土) 20:16:16 ID:fkziy9mv
htmlspecialchars()の抜け穴を教えてください

392 :nobodyさん:2010/03/27(土) 20:31:37 ID:h7pdGwVR
ログファイルは拡張子を .cgi にすれば他人から覗かれる心配はなくなるとよく言われているけど
これ本当に覗かれる心配はないって断言できるの?

あと拡張子を .cgi ではなく .php にした場合はどう?
これでもログを覗かれずに済む?

393 :nobodyさん:2010/03/27(土) 20:33:31 ID:???
サーバの設定次第
ご自身の環境でお試しあれ

394 :nobodyさん:2010/03/27(土) 20:42:02 ID:???
>>392
.cgiにしたらサーバの設定次第だけど
とにかく実行とか、怖い設定になっていたら
うまくすればログのフリして実行できるんじゃないかな。

あと、phpにしていたら上の問題プラス、
下手い設定でも筒抜けになるな。こえぇーーー

395 :nobodyさん:2010/03/27(土) 20:46:53 ID:???
質問

バーミッションって意味あんの?
書き換え不可にしたって
同じサーバーの奴から参照されてる時点で
バーミッションも変えられてしまうのでは?

396 :nobodyさん:2010/03/27(土) 20:47:36 ID:???
>>391
phpspotでそのネタ見た

397 :nobodyさん:2010/03/27(土) 21:01:35 ID:h7pdGwVR
>>394
> とにかく実行とか、怖い設定になっていたら
> うまくすればログのフリして実行できるんじゃないかな。

だよね(´・ω・`)

ログのフリしてコード実行とか考えるだけで末恐ろしい・・・
やっぱログは .log ファイルに格納して .htaccess でそのファイルに
アクセスできないようにした方がいいよね( ´・ω・)

398 :nobodyさん:2010/03/27(土) 21:56:20 ID:m9Aaq+Yx
お勧めのテンプレートエンジン教えてください


399 :nobodyさん:2010/03/27(土) 22:00:57 ID:???
>>398
include "header.php";
include "menu.php";
include "body.php";
include "footer.php";

400 :nobodyさん:2010/03/27(土) 22:46:02 ID:m9Aaq+Yx
Twigにしました
皆さんありがとうございました

401 :nobodyさん:2010/03/27(土) 23:49:17 ID:???
いや待て *.log がCGIとして動作するように設定されてるとも(ry

402 :2ヶ月:2010/03/28(日) 01:43:36 ID:/hrsIc1c
複数サイトのRSSを読み込んで新規順に並べるスクリプトをXML/RSSを使って作っています。
各サイトに画像を割り当てて表示したいと思っています。
RSSは時間順に表示されるのですが、画像の順番が固定されています。

画像には時間情報がないので、画像とサイトを関連付ければ表示できる
ようになると思いますが、その部分が作れません。

よろしくお願いします。



403 :nobodyさん:2010/03/28(日) 01:51:39 ID:???
RSSのURLをmd5でハッシュ化
ハッシュ.jpgでサイト画像を用意

それか重複するドメインがなければ
ドメイン名.jpgとかでもいいんじゃない?

404 :2ヶ月:2010/03/28(日) 03:38:35 ID:/hrsIc1c
>>403
ドメイン名.jpgでhttpやら抜いてできました!
ありがとうございます。

405 :nobodyさん:2010/03/28(日) 10:25:11 ID:???
はじめましてphp入門者です

IPアドレスで初回訪問時、2回目以降の訪問のページをわけたいのですがPHPで実現できますでしょうか?

出来るのなら参考に出来るサイトなど教えていただければ幸いです

よろしくお願いします

406 :405:2010/03/28(日) 10:25:52 ID:???
すいませんID出し忘れてました>>405です

407 :405:2010/03/28(日) 10:26:34 ID:afRJ3+O7
何度もすいません・・・

408 :nobodyさん:2010/03/28(日) 10:28:01 ID:???
PHPに関わらずクッキー食わせて処理してください

409 :405:2010/03/28(日) 10:44:47 ID:afRJ3+O7
クッキーではやりたいことが実現できなくて・・・

初回訪問時にIPアドレス、名前を登録して次回以降

こんにちは 名前 さん のような感じで表示したいんです・・・

410 :nobodyさん:2010/03/28(日) 10:51:26 ID:???
IPアドレスは毎回変わるからなぁ・・・ドメイン名にしたって
レベル3以降はころころ変わるからその方法は厳しいん
じゃないの

411 :nobodyさん:2010/03/28(日) 10:56:50 ID:???
>>405
初回訪問フォームでnameを入力させてsubmit

クッキーにname,IP,訪問時間,訪問回数なんかセット

クッキーにこれらの情報が登録されていたら、変更すべき項目をクッキーにセットしつつnameを表示

なんでクッキーでできない?

>>410
クッキーがあれば前回訪問していることがわかるのでIPは関係ない
というかIPを記録する意味がわからないから何とも言えないが

412 :nobodyさん:2010/03/28(日) 11:00:32 ID:???
気が向いたら何時もキャッシュとクッキーを削除している俺のような奴もいる。
そこまで気にするならnameとpasswordで取り扱うしかないかと。

413 :nobodyさん:2010/03/28(日) 11:05:48 ID:???
>>411
410は408に対する409について書いたの

414 :nobodyさん:2010/03/28(日) 15:40:46 ID:???
クッキー→クライアント側でコントロールできてしまう、よって×

IP→固定IPでない限り常に流動的、よって×

同一人物特定可能な機器の固有情報→ないわけではないが機器がない人もいるしセキュリティ的にもやってはいけない、よって×

IDとパスを登録してもらって鯖側で管理する→会員制サイト向け、もっとも現実・実用的
ログイン後にユーザ別に操作する情報があるなら話は別だが「こんにちは名前さん」のためだけにログインさせるのはアフォ

結論、動的ページに感動して初心者にはありがちな行為だがやめたほうがいい。
俺も最初はうれしくてついついサイトのトップにJavaScriptで時計表示したり、
むやみに訪問者のIP出してみたりしたっけなぁ。
今思えば痛々しい。

415 :nobodyさん:2010/03/28(日) 15:54:28 ID:???
IDとパスものクッキー使うが
yahooとか

416 :nobodyさん:2010/03/28(日) 16:24:20 ID:???
そりゃそうだ毎回のログインが大変だからな。
>>414のクッキーってのは初回訪問時(orクッキーが消えた次の訪問時)に
名前を入力させてそれをクッキーに入れるということでしょ。
でもまークッキーが見つからなかったら結局何かを入力するという点では一緒なわけだから、
普通にクッキーが見つからなかったら名前入力させて食わせるでいいと思うけどな。
ただそんなめんどくさいのをユーザーは望まないし、
作り手の自己満足だからやめたほうがいいとは思うが。

417 :nobodyさん:2010/03/28(日) 17:16:58 ID:I5spPOJr
携帯向けサイトを作成していて、認証やID登録にSSL通信を使おうと考えています。
ベリサインのグローバルIDは高すぎるので他の安いものを探しているのですが、
たとえば、ベリサインのセキュアIDにして、
対応している端末はSSL通信を行い、非対応の機種はなんらかの判別処理をして
非SSL通信にしてしまうなんて、都合の良い方法はあるでしょうか?


418 :nobodyさん:2010/03/28(日) 17:18:04 ID:LnmjTtuZ
basic認証を破る方法を教えてください


419 :nobodyさん:2010/03/28(日) 18:32:25 ID:???
ベリサインの手続き踏んで高い金払ってるサイトだから信頼が得られるのに
金払わずに取り繕うなんて馬鹿じゃないの

420 :nobodyさん:2010/03/28(日) 19:00:28 ID:I5spPOJr
>>419
おっしゃることはごもっともです。
ただ、利用者がセキュリティを気にする層と気にしない層がいて、
古い機種を所有している人に特に気にしない層が当てはまるんです。
なので、古い機種を使用しているあまりセキュリティを気にしない人は非SSLで運用を考えているんです。


421 :nobodyさん:2010/03/28(日) 19:03:21 ID:???
セキュリティを気にするのはサイト管理者だろうが
自分がケチなのを利用者のせいにするな

422 :nobodyさん:2010/03/28(日) 19:09:19 ID:???
>>421
営利目的でない為、運用の都合上、コストがそのまま利用者にかかるんですよ・・・。
コストが上がっても、私の腹は痛みません・・・。
扱う情報がメールアドレスと氏名くらいなので、できればSSLを使わずにしたいのですが、
SSLじゃないと嫌だという利用者もいるので、上記のような方法を考えているんです。

423 :nobodyさん:2010/03/28(日) 19:52:07 ID:???
言ってることがよく分からない。

SSL要らないからコスト上げるな、って顧客と
コストかかってもいいからSSLを入れろ、って顧客がいて

どっちにも対応できる道を探してるということ?

424 :nobodyさん:2010/03/28(日) 19:55:32 ID:???
利用者がいるんでしょ

425 :nobodyさん:2010/03/28(日) 20:17:00 ID:???
単純に機種別にSSLかけるかかけないかしたいって読めばいいんじゃねーの

426 :nobodyさん:2010/03/28(日) 20:40:56 ID:???
SSL通信はするけど認証機関はとおさなければ良いんでは
無料

427 :nobodyさん:2010/03/28(日) 20:42:07 ID:???
無料の認証機関ってなかったっけ?

428 :nobodyさん:2010/03/28(日) 20:49:55 ID:???
要するに証明書が対応、非対応の判別処理がphpでできるか?って事じゃね
SSL、非SSLのリンク並べた方が楽じゃね
使いたい奴は使えと、使いたいけど非対応の端末は買い換えろと

429 :nobodyさん:2010/03/28(日) 21:04:02 ID:???
その方法は単純にSSLに対応したサイトだわな

430 :nobodyさん:2010/03/28(日) 21:04:33 ID:???
Rails使えば解決するよ!

431 :nobodyさん:2010/03/28(日) 22:54:42 ID:rVlISy+X
PHPでunixtimeを表示したいのですが、どのようにすれば表示できますか?

432 :nobodyさん:2010/03/28(日) 22:56:57 ID:I5spPOJr
>>423
そういうことです。
>>428
やっぱり、それが賢明ですかね。
>>426
携帯サイトなので、たしかauは通信できなかったように思います。
実機がないのでわからないのですが、そういった記事を目にしたことがあるので。

433 :nobodyさん:2010/03/28(日) 22:58:42 ID:???
>>431
print time();

434 :nobodyさん:2010/03/28(日) 23:01:51 ID:rVlISy+X
>>433
ありがとうございます><

435 :nobodyさん:2010/03/29(月) 09:47:34 ID:4cY5kwZW
すみません、質問させてください。
centOS環境にて、公開フォルダ下にphpMyAdminを入れました。
そしてhttp://localhost/phpMyAdminとブラウザで入れたのですが、
You don't have permission to access /phpMyAdmin on this server.
とエラーが出ました。
で、パーミッションを見てみた所、drwxr-xr-x となっておりました。
しかし、アクセスできるフォルダ(例えばhogeフォルダ)もdrwxr-xr-x とパーミッションはなっておりました。
同様に-rw-r--r--とパーミッションの与えられているphpMyAdmin内のindex.phpにも当たり前でしょうが、
http://localhost/phpMyAdmin/index.phpでアクセスしてもダメでした。
どのようにすればphpMyAdminを実行出来るのでしょうか?

436 :nobodyさん:2010/03/29(月) 09:56:22 ID:???
ちなみに公開ディレクトリはapacheの初期設定のまま?

437 :nobodyさん:2010/03/29(月) 10:11:49 ID:???
>>436
ハイそうです
centOS、Apacheの初期設定のままです
特にphp.iniとかは何もいじっておりません


438 :nobodyさん:2010/03/29(月) 11:37:55 ID:FXTZBx7Y
ローカルでメール送信プログラムのテストをしたいです。

さくらのメールボックスなどのメールアカウントを持っていますが、
POP before SMTPなどややこしい機能があるみたいです。

この場合、ローカルにメールサーバを立てるのが一番手軽でしょうか?

439 :nobodyさん:2010/03/29(月) 11:46:10 ID:???
うん

440 :nobodyさん:2010/03/29(月) 11:51:52 ID:???
お手軽
「windows php メール」とかで検索あれ

441 :nobodyさん:2010/03/29(月) 11:53:00 ID:FXTZBx7Y
ありがとうございました!

442 :nobodyさん:2010/03/29(月) 13:51:48 ID:Th+hpH2Z
お願いします。
これからphpを学ぼうと、Amazonでphpの本を探してみたのですが、どれも高くて気軽に買えません。
phpというと、Wikiなどを見ながらApacheでrep2を一週間かけて動かしたぐらいしか経験無いのですが、
そんな初心者にオススメのphpの本を教えていただけませんでしょうか。


443 :nobodyさん:2010/03/29(月) 13:55:43 ID:???
まずhttp://www.php.net/manual/ja/の言語リファレンスを全部やってから家

444 :nobodyさん:2010/03/29(月) 14:09:14 ID:???
>>442
今までにCとかC++とかPerlとかJavaとか、まあそのあたりの言語でのプログラミングを
してたなら、「PHP 入門」とかでぐぐって出てくる適当なサイトで十分いけるよ。
それでどういうものなのか、とりあえずどう使うのかを掴んだら、後は>>443を随時参照でおk。

445 :nobodyさん:2010/03/29(月) 15:10:31 ID:???
smartyのアンチと信者ども前スレの続きするぞ
ttp://pc11.2ch.net/test/read.cgi/php/1269841264/

446 :nobodyさん:2010/03/29(月) 15:12:34 ID:???
知るかバカ

447 :nobodyさん:2010/03/29(月) 17:20:21 ID:1Ehd5H1b
throwの挙動なんですが、returnと同じでthrowしたらその関数はそこで終了するということでよろしいですか?

448 :nobodyさん:2010/03/29(月) 17:27:58 ID:???
せやで!

449 :447:2010/03/29(月) 17:44:03 ID:???
ありがとうー

450 :nobodyさん:2010/03/29(月) 18:12:06 ID:???
throw new Exception();
return;

と書いてた俺に一言

451 :nobodyさん:2010/03/29(月) 18:16:46 ID:???
(;゚Ж゚;)ブホォ

452 :nobodyさん:2010/03/29(月) 18:16:47 ID:???
読みやすくていいと思います・・

453 :nobodyさん:2010/03/29(月) 19:25:19 ID:???
いまどきのまともなコンパイル型の処理系なら、
こんとろーるふろーがそこまで行かないぞって警告くらい出してくれたろうけどなぁ。

454 :nobodyさん:2010/03/29(月) 19:25:45 ID:MUiCUZA9
【OS名】linux
【PHPのバージョン】php5.26
【連携ソフトウェア】特になし
【質問内容】

ブログのコメント機能に似たものをPHPで実装しています。

これを自分のサイトの各ページに読み込ませることで擬似的にブログの様に閲覧者が各ページで
自分の意見を自由に投稿できるようになります。

そこで疑問なのですが、自動的に生成するログファイルの命名規則をどう扱うべきかで悩んでいます。
各ページ毎にログは独立させるつもりなので、ページが複数あれば必然的にログファイルも複数になります。
メンテナンスのことを考えるとログファイル一式は一カ所のフォルダに保存しておいた方がいいと思います。

たとえば次のようなページ構成の場合・・・

/public_html/FolderA/index_1.html
              index_2.html
        /FolderB/FolderC/index_1.html

3つのページにコメントスクリプトを埋め込むので合計3つのログファイルが生成されるわけですが

/public_html/log/

フォルダに3つのログファイルを保存するとき、ログファイルそれぞれのファイル名はどういう規則で
自動生成するべきでしょうか?ちなみにlogフォルダの下にはフォルダは一切作らないでおきたいと
思っています。またメンテナンス性を高めるためログファイルの名前はランダムな文字列ではなく
どのページに関するものか人目で判別できるようなものにしたいと思っています。

455 :nobodyさん:2010/03/29(月) 19:29:39 ID:???
お前の都合に合わせろよ

456 :nobodyさん:2010/03/29(月) 22:39:29 ID:???
PHPのランダム表示についての質問です。
ランダム表示をしてさらに表示頻度を設定したいのですが、どのようにすればいいか教えてください。

<?php
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$length = count($rndtxt) - 1;
srand( (double)microtime()*1000000 );
$num=round( rand(0,$length) );
print("$rndtxt[$num]");
?>

現在は上のPHPで広告をランダム表示しています。
これのテキスト1を60%、テキスト2を20%、テキスト3を20%の割合で表示させたいです。

どのように書けばそのように設定できるのでしょうか?

457 :nobodyさん:2010/03/29(月) 22:48:10 ID:???
>>456
$weight = array(0, 0, 0, 0, 0, 0, 1, 1, 2, 2);
$num = $weight[round(rand(0, count($weight) - 1))];
print("$rndtxt[$num]");

それか0から9のランダムな整数出して
if ($num < 6) {
$rndtxt[0];
}
else if ($num < 8) {
$rndtxt[1];
}
..

とか
広告をランダムに出したいっていう質問かなり多いなw

458 :nobodyさん:2010/03/29(月) 22:55:14 ID:???
>>457
えっ11%で表示したくなったらどうすんの?100個の要素作るの?w

459 :nobodyさん:2010/03/29(月) 23:02:25 ID:???
>>458
スレタイ

460 :nobodyさん:2010/03/29(月) 23:03:19 ID:???
>>457
ありがとうございます。
完成型は下を単純に入れ換えてこうなるのですか?

<?php
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
$weight = array(0, 0, 0, 0, 0, 0, 1, 1, 2, 2);
$num = $weight[round(rand(0, count($weight) - 1))];
print("$rndtxt[$num]");
?>

<?php
$rndtxt[0] = 'テキスト1';
$rndtxt[1] = 'テキスト2';
$rndtxt[2] = 'テキスト3';
if ($num < 6) {
$rndtxt[0];
}
else if ($num < 8) {
$rndtxt[1];
}
..
?>

461 :nobodyさん:2010/03/29(月) 23:10:18 ID:???
>>460
上のほうはたぶんそんなんでいけると思うけど、
下の方は別のやり方で

$num = rand(1, 10);//分かりやすく1から10の整数
if ($num <= 6) {//1から6の6割の確立
print $rndtxt[0];
}
else if ($num <= 8) {//7から8の2割の確立
print $rndtxt[1];
}
else {//9から10の2割の確立
print $rndtxt[2];
}

462 :nobodyさん:2010/03/30(火) 00:25:21 ID:???
>>461
丁寧にありがとうございます。

463 :nobodyさん:2010/03/30(火) 01:48:09 ID:vJQ1xggI
クラスオブジェクトを生成するとき、条件に合致しない場合はオブジェクトを生成せずnullを返したいと思っています。

たとえば、MyClassというクラスを作製する際初期値numberが正の値のときは

if ( $obj = new MyClass(5) )
{
・・・
}

普通にオブジェクトを生成し、負の値の時は

if ( $obj = new MyClass(-3) )
{
・・・
}

オブジェクトを生成せずnullを返すようなプログラムを組みたいです。

そういうクラスを作製することは可能でしょうか?
もし可能だとしたら(おそらく__construct($number)に)どう記述すれば実現できますか?

464 :nobodyさん:2010/03/30(火) 02:00:03 ID:???
オブジェクト生成では返り値指定できないでしょ

465 :nobodyさん:2010/03/30(火) 02:21:32 ID:vJQ1xggI
返り値は指定できませんか・・・

代わりに「条件を満たさないときはオブジェクトを生成しない(=newに失敗する)」ようにはできないでしょうか?

466 :nobodyさん:2010/03/30(火) 02:26:05 ID:wKtmg6ou
ですのでで来ません

467 :nobodyさん:2010/03/30(火) 02:51:17 ID:???
>>465
正の値しか受け付けないコンストラクタに何かのミスで負の値を渡された時には
コンストラクタ内で例外を投げて止めるが、
正負どちらの値も有り得るのならstaticなメソッドを用意した方が行儀がいい

class Klass { public static function create($c) { return $c ? new self() : null; }}

468 :nobodyさん:2010/03/30(火) 03:02:58 ID:vJQ1xggI
>>467
ありがとうございました。
メソッドのほうでnullを返すようにさせますm(_ _)m

469 :nobodyさん:2010/03/30(火) 05:50:51 ID:g1YqBDS1
<?php
$foo = 'Bob'; // 値'Bob'を$fooに代入する。
$bar = &$foo; // $fooを$barにより参照
$bar = "My name is $bar"; // $barを変更...
echo $bar;
echo $foo; // $fooも変更される。
?>

これで'My name is Bob'が2回出力されるのがわからない。
$fooが書き換えられたら、元の 'Bob' という文字列は "My name is $bar" に上書きされて消えちゃうんだよね?
そしたら$barと$fooをechoで出力するときに 'Bob' という文字列はどこから来てるの?

470 :nobodyさん:2010/03/30(火) 07:22:34 ID:???
非国民端末iPhoneだけを観覧禁止にすることは可能ですか?

471 :nobodyさん:2010/03/30(火) 07:28:31 ID:???
pandaなんちゃらを弾けばいいんじゃね?ワイファイは知らんが

472 :nobodyさん:2010/03/30(火) 10:36:09 ID:???
>>469
右から評価される

$bar = "My name is $bar"; // $barを変更...
ここは

$bar = "My name is Bob";
という動作になる。

473 :nobodyさん:2010/03/30(火) 17:36:46 ID:dG8PavZ2
$arrayには以下が入ってます。
[0] => 1-text [1] => 2-text [2] => 21-text [3] => 27-text [4] => 3-text
rsortで配列を並べ変えてるんですが
[0] => 3-text [1] => 27-text [2] => 21-text [3] => 2-text [4] => 1-text
このようになります。
下記のように数が多い順に並べ替えたいのですがどの関数を使えばいいのでしょうか?
[0] => 27-text [1] => 21-text [2] => 3-text [3] => 2-text [4] => 1-text


474 :nobodyさん:2010/03/30(火) 17:40:39 ID:???
>>473
http://jp.php.net/manual/ja/function.natsort.php

475 :473:2010/03/30(火) 18:00:50 ID:dG8PavZ2
>>474
こんな関数あるの知りませんでした。
ありがとうございます。


476 :nobodyさん:2010/03/30(火) 18:19:22 ID:???
新アルゴリズム 納豆ソート

477 :nobodyさん:2010/03/30(火) 18:41:47 ID:jgFCVhFf
アクセスカウンタの作り方を下記ページで勉強してるのですが、
http://www.phpbook.jp/appli/accesscounter/index3.html
<?php
$counter_file = 'counter.txt';
$counter_lenght = 8;
$fp = fopen($counter_file, 'r+');
★if ($fp){
★if (flock($fp, LOCK_EX)){
$counter = fgets($fp, $counter_lenght);
$counter++;
rewind($fp);
if (fwrite($fp, $counter) === FALSE){
print('ファイル書き込みに失敗しました');
}
★flock($fp, LOCK_UN);
}
}
fclose($fp);

★のつけたところがよくわかりません・・・。if文の == TRUEが省略されてるんだと思うんですが、
全体の意味が理解できません・・。1つ目のifがtrueで処理がされて、その次のif (flock($fp, LOCK_EX))
ここはどういうことなのでしょうか?読み書き禁止 == TRUEの場合?

478 :nobodyさん:2010/03/30(火) 18:47:09 ID:???
>>477
★1つ目:fopenに成功した時
★2つ目:flockでの書き込み禁止ロックが成功した時
★3つ目:flockでのロックを開放する

479 :nobodyさん:2010/03/30(火) 18:50:45 ID:???
>>477

$fp = fopen();
でファイルを正常に開くと$fpはファイルへのポインタになって、失敗するとfalseになる
if ($fp) は if ($fp != false) と同じ

flock($fp, LOCK_EX)は戻り値で成功したらtrue、失敗したらfalseを返す

if (flock($fp, LOCK_EX)){

$succeed = flock($fp, LOCK_EX);
if ($succeed){
と同じ

480 :nobodyさん:2010/03/30(火) 18:53:51 ID:???
リソース型は特殊だけどリソースが返ってくるということはbooleanでtrueであることだと思えばよい。
そのほかの型については、
http://php.net/manual/ja/types.comparisons.php
例えば、$x = 0;のboolean項目はFALSEとなっているので、
if ($x)は通らないがif(!$x)は通る。

481 :477:2010/03/30(火) 19:03:25 ID:???
うおーみなさん素早いレスありがとうございます!
ひとつづつ噛み砕いてみます!

482 :477:2010/03/30(火) 19:14:26 ID:???
大変すみませんまたよろしいでしょうか・・・・
$fp = fopen($counter_file, 'r+');
★if ($fp){
ここでr+にして、まず読み書き許可しますよね?

★2つ目 flockでの書き込み禁止ロック
ここで、どうしてすぐに書き込み禁止にしてしまうのでしょうか・・?
イメージとして、読み込んだテキストから数字8を取り出して、1つ足して数字9にして
ファイルを閉じる、というのがあるのですが、書き込み可能にしてすぐ書き込み禁止にする
行為がイメージつきません・・・だもんで、★2つ目から下の文の内容もよくわからんのです・・・



483 :477:2010/03/30(火) 19:16:55 ID:???
あれ?禁止ロックは条件指定で、実際はしてないのかな?混乱してきた・・・・

484 :nobodyさん:2010/03/30(火) 19:20:00 ID:???
>>483
排他処理でぐぐれ

485 :nobodyさん:2010/03/30(火) 19:22:29 ID:???
>>477のリンクが開けない

486 :nobodyさん:2010/03/30(火) 19:43:54 ID:???
//カウンター数が書かれてるファイル
$counter_file = 'counter.txt';
//カウンターの最大桁数
$counter_lenght = 8;
//ファイルオープン成功時リソースを$fpにセット失敗時は$fp = false;
$fp = fopen($counter_file, 'r+');
//オープン成功してたら
if ($fp){
 //他の訪問者と処理かぶった時にデータが狂わないようにロック
 if (flock($fp, LOCK_EX)){
  //カウンター数を桁数分読み込む
  $counter = fgets($fp, $counter_lenght);
  //読み込んだカウンター数に1足す
  $counter++;
  //ファイルを上書きするためにファイルポインタを先頭にもっていく
  rewind($fp);
  //新しい数値(足した数値)を上書きする
  if (fwrite($fp, $counter) === FALSE){
   //失敗時
   print('ファイル書き込みに失敗しました');
  }
  //ロックを解放し他の人が処理できるようにする
  flock($fp, LOCK_UN);
 }
}
fclose($fp);

487 :nobodyさん:2010/03/30(火) 19:47:02 ID:???
どうでもいいがlenghtじゃなくてlengthな

488 :nobodyさん:2010/03/30(火) 21:24:19 ID:???
恥ずかしいけど間違いじゃないからどーでもいい

489 :nobodyさん:2010/03/30(火) 21:53:56 ID:???
>>488
間違いは間違いだろwww

490 :nobodyさん:2010/03/30(火) 23:11:49 ID:PJO3T1x9
最近wordpressを使いだしてPHPに興味が出てきたんですが、
wordpressテーマみたいに、PHPでソースを吐き出させるPHPと
アプリを作ったりするPHPは別物なんでしょうか?

まずはブログのテーマを作って、その後は検索システムとか掲示板とか作りたいなって
思ってるんですが、書籍を見てても、ブログ系はブログ。アプリはアプリみたいにわかれてるんで、
同じものなのか自信がなくなってしまいました。

491 :nobodyさん:2010/03/30(火) 23:21:21 ID:???
PHPで作れるアプリケーションは大きく分けて3つ

Webアプリケーション
デスクトップアプリケーション(ただし向いてはいない)
コンソールアプリケーション(コマンドラインから使うやつ)

んでブログやらブラウザでサーバにアクセスして動かすものはみなWebアプリケーションだ

492 :nobodyさん:2010/03/30(火) 23:43:46 ID:PJO3T1x9
なるほど、つまり僕が言う物は2つとも同じ種類なわけですね。
ありがとうございます。

これですっきりしたんでwordpressのテーマ作成の本でも探してみます。

493 :nobodyさん:2010/03/30(火) 23:53:27 ID:???
「めんどくさい、使いにくい」と思いながらもWindows使うよりLinux使う比率が圧倒的に高い俺はもはや変態なんだろうな・・・


494 :nobodyさん:2010/03/31(水) 00:09:51 ID:???
if や while が複数の判別式をもっているとき、左から順番に判別されていって false が一つでも返ってきた
段階でそれより右側の判別式の判別は中止されるとおもってよろしいですか?

たとえば

if ( 5 < 0 && 2 < 5)

という判別式の場合、最初の 5 < 0 でfalseが返ってきた時点で残りの 2 < 5 の評価は放棄されると
思ってよろしいですか?

495 :nobodyさん:2010/03/31(水) 02:01:29 ID:???
ホントくだらない質問で申し訳ないのですが
WEB上にあるPHPはダウンロードすることは可能ですか?
とあるスレで外人が親切にfixedしてくれて、ほれこれで動くぞ持ってけ
いわれてるけど名前をつけてリンク先を保存にしてもドキメントしか落とせなくて困ってます。

http://www.arrastheme.com/forums/post5050.html#p5050

wordpressのプラグインget-the-image.phpです

496 :nobodyさん:2010/03/31(水) 02:16:32 ID:???
鯖側のエラーっぽいけど

497 :nobodyさん:2010/03/31(水) 05:34:24 ID:1040mT1O
テスト環境のfedora7では問題なかったのですが
本番サーバのCentOS5/64bitで、escapeshellcmdを通すと日本語(たとえば「てすと」)が
消失する現象が出ています
文字コードはUTF-8です
どうしたものでしょうか

498 :nobodyさん:2010/03/31(水) 05:44:45 ID:???
文字コードをもう一度確認

499 :nobodyさん:2010/03/31(水) 08:26:19 ID:???
文字コード確認してもUTF-8だし
cliだと問題ないなど謎ですが
strtrで自前エスケープするようにしました・・
ちなみに5.2.13です
64bitだからかなぁ・・

500 :nobodyさん:2010/03/31(水) 09:09:20 ID:???
setlocale(LC_ALL, ja_JP.UTF-8); でどうでしょうか。

501 :nobodyさん:2010/03/31(水) 09:19:16 ID:???
いけました!
こんな関数はじめてみました
ありがとうございました

502 :477:2010/03/31(水) 15:20:08 ID:???
バイト行ってました・・・
みなさん遅れてすみませんありがとうございました!
テクニックがあるんですね知りませんでした。
理解できました!

503 :nobodyさん:2010/03/31(水) 16:03:31 ID:qgSssQGe
全変数を初期化してもPHP Notice: Undefined offsetが出ることがあるので
error_reporting(1)を最初に追記しました。
PHP Notice: Undefined offsetはでなくなりましたが、error_reporting(1)は
追記したファイルにのみ有効という解釈でいいんでしょうか?
test1.phpとtest2.phpでエラーで発生していて、test1.phpにだけerror_reporting(1)を追記した場合
test1.phpはエラーは出なくなりtest2.phpではエラーは出るという事で大丈夫でしょうか。

504 :nobodyさん:2010/03/31(水) 16:20:45 ID:???
test1.php内で以下のように書けば当然test2.phpでも有効さ
<?php
error_reporting(1);
include './test2.php';

505 :nobodyさん:2010/03/31(水) 16:49:51 ID:???
記号のフォントをGDで使用する方法はありますか?
そもそも、どうやって指示すれば良いのかもわかりません。
hoge.ttfと0×0050とかで指示できたりしますか?

506 :nobodyさん:2010/03/31(水) 19:21:18 ID:???
>>505
記号のフォントってのがいまいちだけど、文字コードと出力される字形は別モンなので単純に
chr(0x50)
でいいんじゃ?

507 :nobodyさん:2010/03/31(水) 22:34:38 ID:5rD6sntL
SimpleXMLElement::xpath->SimpleXMLElement:: addChild($name.$value)みたいには書けないの?

508 :nobodyさん:2010/03/31(水) 22:42:26 ID:F5ZddSdm
PHPで、特定のオブジェクトに対する処理(メソッド実行やプロパティへの代入など)を
一括して行う方法というのは無いでしょうか(オブジェクトの表記を省略したい)。
(VBScriptのWithステートメントのようなモノを考えています)

$object->method1();
$object->method2();
$object->method3();
   これを
With($object){
 ->method1();
 ->method2();
 ->method3();
}
こういう風に省略できたら見た目にもすっきりしていいなーと思うのですが。
また、無いとしたら何か他に何か、良い短縮方法というのはありますか?

因みに間違えてプログラム板でこの質問をしてしまったんですが
「短縮は可読性を下げる」と言われてしまいました。
やはり短縮しないで書いた方がいいんでしょうか。

509 :nobodyさん:2010/03/31(水) 22:49:36 ID:???
残念ながら!

510 :nobodyさん:2010/03/31(水) 23:07:36 ID:???
>>508
return $this;

511 :497:2010/04/01(木) 02:38:01 ID:H0tjueQL
調べたところ、ロケールLC_ALLが"C"=7ビット文字列になっていることが原因のようでした
動作は教えていただいた方法で解決できたのですが、
「PHPで使われるロケール設定」はどこで設定したものが使われているのでしょうか?
テスト・本番の両環境で、
/etc/sysconfig/i18n
にてja_JP.UTF-8をロケールに設定しており、
シェル上のlocaleコマンドでも確認できますが、
それはPHP内では使われていないようです。
まともに動いていたテスト環境でも、
LC_CTYPE=en_US.UTF-8;等と設定されており、
これもどこに由来するのか分かりません。
「偶然うまく動いていた」に過ぎないようです・・

512 :nobodyさん:2010/04/01(木) 02:53:56 ID:???
>>511
php.iniのマルチバイト関連と
Webサーバの実行ユーザの環境変数かな

513 :nobodyさん:2010/04/01(木) 03:12:48 ID:???
php.iniは同じものを使っているので
apacheユーザの環境変数っぽいですね
デーモンの環境変数なんて考えたことなかったなぁ・・

514 :nobodyさん:2010/04/01(木) 10:33:51 ID:???
foo: bar
baz
bna
test: hoge
hage: new
hoge

これらの文字を
foo: barbazbna
test: hoge
hage: newhoge
に置換したいのですが何か良い方法はないでしょうか?

515 :nobodyさん:2010/04/01(木) 10:34:49 ID:???
もとの文字列はこうです

foo: bar
 baz
 bna
test: hoge
hage: new
 hoge

516 :nobodyさん:2010/04/01(木) 10:58:43 ID:???
>>514
質問はIDを出しましょう
それとその問題が解けないなら、そもそもプログラミングをする意味が無いと思うよ
まず日本語で処理内容を書き出してみてからPHPに変換してみたら?

517 :nobodyさん:2010/04/01(木) 20:31:38 ID:8+z5A+wF
require_onceで呼び出す際にget形式でパラメーターを渡すことは出来ますか?

518 :nobodyさん:2010/04/01(木) 20:37:49 ID:???
http使って読み込むんなら出来る
でもなんかパラメータ渡したいだけなら、requireの前に変数を定義すればそのまま使えるよ

519 :nobodyさん:2010/04/01(木) 20:52:22 ID:8+z5A+wF
でけた
ありがおう!

520 :nobodyさん:2010/04/01(木) 22:05:34 ID:X1UHe/PE
XML/RSSを使ってRSS受信してサイトに表示するPHPを作ったのですが
ものすごく重いです。自作だとそんなものですか?

無料サービスのはサクサク動くのに、すごく微妙です。

521 :nobodyさん:2010/04/01(木) 22:18:00 ID:???
>>520
自作したの?それとも有り物を設置しただけ?
自作ならソースみないとなんとも言えん
http://ideone.com/

522 :nobodyさん:2010/04/01(木) 22:28:41 ID:X1UHe/PE
>>521
拾ってきたソースを加工したものです。
http://ideone.com/GyBDpmCC

523 :nobodyさん:2010/04/01(木) 22:46:20 ID:???
>>516
うるせーよクズ
解決したわ

524 :nobodyさん:2010/04/01(木) 22:46:44 ID:???
>>520
13個もURLを読み込んでるの?
だとするとページを13個開くのと一緒だから重くなるで

対策としては、一度ダウンロードしたRSSをキャッシュすればいいんだけど、
XML_RSSにキャッシュ機能はなさそうだから

$r =& new XML_RSS($rssurl);
の前に、自前でRSSのキャッシュチェックして、キャッシュがなければダウンロード、あればそのままキャッシュをfopen

まとめると

//URLに対して固有のキャッシュパスを設定
$cache_path = 'cache/' + md5($rssurl);
if (!file_exists($cache_path) || filemtime($cache_path) < time() - (60 * 60 * 6)) {
//キャッシュファイルが存在しない、もしくは6時間以上経過
$f = $fopen($rssurl);
}
else {
//キャッシュを使う
$f = fopen($cache_path);
}

$r =& new XML_RSS($f);

つかれた

525 :nobodyさん:2010/04/01(木) 22:50:18 ID:???
これは一個ずつリクエストと取得を繰り返してるから重いんじゃねーの
マルチスレッド化した方が早くなる

526 :nobodyさん:2010/04/01(木) 23:00:45 ID:???
DBのカラム名について聞きたいのですが、
cakephpに習って管理用カラムをidのauto_incrementとし、
英字のカテゴリ名と日本語のカテゴリ名を設定したいです。
以下のような感じにしようと思いましたが、keyが予約語なので、嫌な感じがします。
一般的に英字と日本語をひとつのテーブルに設定する場合、このようなカラム名にするといいよ
というのが、ありましたら教えて欲しいです。

create table category(
id int not null auto_increment primary key,
key varchar(10),
name varchar(20)
)

527 :nobodyさん:2010/04/01(木) 23:12:48 ID:???
>>526
決まりはないし、PHPの質問でもないし、IDも出してないし

528 :nobodyさん:2010/04/01(木) 23:23:50 ID:???
eng と jp


529 :nobodyさん:2010/04/01(木) 23:24:15 ID:X1UHe/PE
>>524
(´;ω;`)$fopenのところだけ@にしましたが、動きません。

>>525
マルチスレッドですか。ぐぐって見ましたが、概要だけしかわかりませんでした。
ソースが置いてある所があればありがたいです。

530 :nobodyさん:2010/04/01(木) 23:34:18 ID:???
>>529
泣きたいのはこっちだわw

531 :nobodyさん:2010/04/01(木) 23:38:44 ID:X1UHe/PE
>>530
ありがとうございます。以下に変更しましたが、
$cache_path = 'cache/' + md5($rssurl);
の部分のキャッシュを作れていないようで、動作はしますが重いままです。

foreach ($rdf as $k=>$rssurl) {
//URLに対して固有のキャッシュパスを設定
$cache_path = 'cache/' + md5($rssurl);
if (!file_exists($cache_path) || filemtime($cache_path) < time() - (60 * 60 * 6)) {
//キャッシュファイルが存在しない、もしくは6時間以上経過
$r =& new XML_RSS($rssurl);
}
else {
//キャッシュを使う
$r =& new XML_RSS($cache_path);
}
if (PEAR::isError($r)) continue;
$r->parse();
if ($r->getChannelInfo()) $ch[$k] = $r->getChannelInfo();
$ch[$k]['items'] = $r->getItems();
}
usort($ch, "cmp");

532 :nobodyさん:2010/04/01(木) 23:45:14 ID:???
そもそも設計が腐ってる

・キャッシュ表示とキャッシュ作成を別にする
・・キャッシュ作成は定時処理にする

・個々を取得するphpを作成する
・・ajaxで読み込むurlをリクエストし、表示する。


533 :nobodyさん:2010/04/01(木) 23:45:55 ID:???
存在すればそのまま読み書きモードでファイルオープン、
存在しなければ新規作成したうえで読み書きモードでファイルオープンさせたいと思っています。

出来る限りスマートに記述するとしたらどういう方法をとるべきですか?

534 :nobodyさん:2010/04/01(木) 23:48:57 ID:???
fopen($path,"w+")

535 :nobodyさん:2010/04/02(金) 00:09:05 ID:cOHYaj0g
>>532
はい、初めて作るのでその通りです。
1から書くのは不可能なので、なんとか今の技術で作りたいです。

536 :nobodyさん:2010/04/02(金) 00:11:59 ID:???
>>531
大丈夫かよ
cacheフォルダ作って、書き込み権限与えるだけだから


537 :nobodyさん:2010/04/02(金) 00:50:45 ID:cOHYaj0g
>>536
はい、cacheフォルダ作りました。ローカルapacheでエラーになります。
Warning: fopen() expects at least 2 parameters, 1 given in

538 :526:2010/04/02(金) 00:53:20 ID:dljz4vKA
すいません。スレ間違えました

539 :nobodyさん:2010/04/02(金) 01:35:29 ID:???
>>537
>>534


540 :nobodyさん:2010/04/02(金) 01:59:28 ID:???
>>523
おめでとう。やればできるじゃない

541 :nobodyさん:2010/04/02(金) 02:10:49 ID:cOHYaj0g
>>539
はい、w+モードにしました。
$f = fopen($cache_path,"w+"); を
$f = fopen($rssurl); の上に持ってきたりとか、いろいろしてみましたが
キャッシュを読み込まないです。

なぜかキャッシュフォルダじゃなく同じフォルダにキャシュらしきものが出来たので
無理矢理それをフォルダに詰めても動かないままです。

542 :nobodyさん:2010/04/02(金) 02:14:57 ID:???
>>541
それキャッシュ読み込むところだから
w+の意味調べた?
>>524をそのまま使わないで参考程度にしなよ

543 :nobodyさん:2010/04/02(金) 03:08:21 ID:???
エラーの意味すら知ろうとしないで答えを知りたがる
ダメだろこいつ

544 :nobodyさん:2010/04/02(金) 03:42:47 ID:???
レンタルサーバーでPHPを使ってログファイルを作成してるんだが
そうやって生成したファイルは所有者が"99"とか"nobody"となっていて
パーミションが rw-r--r-- となっている。

まあこの状態でPHPから追記なり上書きなり自由に書き込めるわけだが
レンタルサーバーのコントロールパネル上から
「全ファイルの所有者をユーザーに変更する」
を実行すると所有者は確かに俺のアカウントになるんだがパーミションが
rw-r--r-- のままだから今度はPHPからそのファイルに書き込みができなく
なるんだよ。再度書き込みがしたければログファイルのパーミションを片っ端から
rw-r--rw- に変更していかなければならない。それも手動で(´・ω・`)

手動だから当然変更し忘れてしまうログファイルだって出てくるしそうなると
PHPスクリプトの動作に支障を来してしまう。

PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを
生成できれば悩まずに済むんだけどそういう方法って無い?
みんなはこの問題に対してどう折り合いを付けている?

545 :nobodyさん:2010/04/02(金) 03:48:26 ID:???
ログファイルの所有者変更なんてやらなきゃいいだろw

546 :nobodyさん:2010/04/02(金) 03:52:43 ID:???
>>545
確かにログファイルの所有者変更なんてやる必要もないが、他のファイルの所有者変更をしたくなったとき
ログファイルも含めた全てのファイルが道連れに所有者変更されてしまうんだよ。
特定のファイルだけ選んで所有者変更できればこんな質問してない。

547 :nobodyさん:2010/04/02(金) 04:02:30 ID:???
>>544
ttp://jp2.php.net/chmod

548 :nobodyさん:2010/04/02(金) 04:08:48 ID:???
所有者の変更はchownな

549 :541:2010/04/02(金) 06:21:13 ID:cOHYaj0g
キャッシュファイルを作成できるようになりました!が、ファイルの中身が空になってしまいます。
そこで以下に変更したらエラーが出てしまいました。syntax error, unexpected T_ELSE
$rはRSSの中身だと思って、それを書き込むために$rをfopenの前に持ってこないと
ダメだと思ってif文の中に2つ$rを定義する文を入れたのですが・・・考え方として間違っていますか?

foreach ($rdf as $k=>$rssurl) {
//URLに対して固有のキャッシュパスを設定
$cache_path = 'cache/'.md5($rssurl);
if (!file_exists($cache_path) || filemtime($cache_path) < time() - (60 * 60 * 6)) {
//キャッシュファイルが存在しない、もしくは6時間以上経過
$f = fopen($rssurl);
$r =& new XML_RSS($f);
if (PEAR::isError($r)) continue;
$r->parse();
if ($r->getChannelInfo()) $ch[$k] = $r->getChannelInfo();
$ch[$k]['items'] = $r->getItems();
}
$f2 = fopen($cache_path,"w+");
fputs($f, $r);
fclose($f);
}
else {
//キャッシュを使う
$f = fopen($cache_path);
$r =& new XML_RSS($f);
if (PEAR::isError($r)) continue;
$r->parse();
if ($r->getChannelInfo()) $ch[$k] = $r->getChannelInfo();
$ch[$k]['items'] = $r->getItems();
}
usort($ch, "cmp");
}

550 :nobodyさん:2010/04/02(金) 09:18:47 ID:BmqWcFAu
学校の休講情報メール通知プログラムを作っています。

1時間ごとにcronで休講情報発表サイトを巡回し、条件にマッチした場合指定のアドレスに休講お知らせメールを送ります。
この時、一度お知らせメールを送った後は、24時間たたないと同じ条件がマッチしてもメールを送らないようにしたいのです。

このような場合、PHP,mySQL,Cronの設定、どの部分でどのように制御すればよいのでしょうか?
ヒントだけでも教えてもらえればありがたいです。

キーワードをサイト情報とマッチさせてメールを送るスクリプトは下記です。
http://www.imagecheese.com/gallery/jpg.jpg

環境:
さくらレンタルサーバ:スタンダード PHP 5.2.12
Cronの設定期間は1時間ごと:
サーバはmySQL
CakePHPで開発です。

551 :nobodyさん:2010/04/02(金) 10:09:56 ID:???
cakeはこっちで
http://pc11.2ch.net/test/read.cgi/php/1268874059/

メールを送った相手と、送る条件と、送信時刻
この3つが鍵なわけだからそれを管理すればいいのでは?

552 :nobodyさん:2010/04/02(金) 10:16:53 ID:???
>>550
メール送付した時にDBに送付日時を入れておいて
次のメール送付時に前回メールの送付日時を確認して24時間たってなければ送付しなければいい

余談だは24時間という計算はDBにやらせたほうが楽
(now() - INTERVAL 1 DAY とか)

553 :550:2010/04/02(金) 10:41:15 ID:BmqWcFAu
>>551

Cakeのスレの話題かちょっと悩みました。。

>>552

ありがとうございます。 
現在は

【usersテーブル】 id, address, hash
【keywordsテーブル】 id,name,user_id

といったデータベース構成なので、keywordsテーブルに mail_sent_date というフィールドを
追加するといった形で試してみようかと思います。


554 :nobodyさん:2010/04/02(金) 12:46:44 ID:???
>>547-548
ダメだorz・・・
chownもchmodも効かない・・・

最初にchownでファイル所有者を自分に変更して、そのあとにchmodで0646に変えてやろうと思ったんだが・・・

たぶんレンタルサーバーの管理人以外はchownできないような仕組みになってるんじゃないかな?
そしてchownできない限りchmodも無力化されてしまうと・・・

555 :nobodyさん:2010/04/02(金) 12:51:24 ID:???
レンタルサーバー屋に聞くべき。
超能力者なら分かるかもしれないけど。

556 :nobodyさん:2010/04/02(金) 12:57:28 ID:???
いい加減ID出せやクズが

557 :nobodyさん:2010/04/02(金) 13:01:17 ID:???
こないだもこのネタあったな

558 :nobodyさん:2010/04/02(金) 13:18:04 ID:H+Jv7Iis
【OS名】win
【PHPのバージョン】php5.26

全文の中から、最初の一致分「あいうえお」だけ削除したいのです。

$hoge = "あいうえお、かきくけこ、さしすせそ、たちつてと、あいうえお、かきくけこ";
$aiueo = "あいうえお";
$date = str_replace($aiueo,"",$hoge);

これだと、全ての「あいうえお」が消えてしまいますので、

$aiueo = "あいうえお";
$sakujo = "^.*?$aiueo";

このような最短マッチみたいなのを使って削除したらいんだと思いますが、
どうやればいいのか分かりません。教えて下さい。お願い致します。

559 :nobodyさん:2010/04/02(金) 13:24:43 ID:???
preg_replaceを使うか、preg_matchでマッチした場合のみ文字数分を先頭から切ればよろし

560 :nobodyさん:2010/04/02(金) 13:27:11 ID:???
preg_replace("/$aiueo/","",$hoge,1);

561 :nobodyさん:2010/04/02(金) 13:51:33 ID:???
>>558
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26
【PHPのバージョン】php5.26

562 :nobodyさん:2010/04/02(金) 15:39:52 ID:H+Jv7Iis
すみません。上の例だとうまくいくのですが、
僕がやりたいパターンの場合だとうまくいきません。

$hoge = "あいうえお---かきくけこ---さしすせそ---あいうえお---かきくけこ---さしすせそ"

みたいなランダムな文章になってて、

$pattern = "^.*?---";
mb_ereg($pattern,$hoge,$honbun);

を使って、最初の「---」までを抽出しています。
この抜き出した文章を使って

$hoge = preg_replace("/$honbun[0]/","",$hoge,1);

というプロセスを経ると、全く抜けなくなります。
forの中で実行してるので、無限ループに陥って困ってます(汗)
原因を教えて頂けませんでしょうか。

563 :nobodyさん:2010/04/02(金) 15:43:09 ID:???
for文が終了してないからじゃないの?

564 :nobodyさん:2010/04/02(金) 15:48:48 ID:H+Jv7Iis
すみません。forじゃなくて、whileでした。
吐き出すものがずっと同じものなので、抜けないのです。

例を上げますと

hoge ="あえ@えれ---れれあえ@れ---あえ@えれ---あえい@れえれ---えあら@れえ"

のようになってて、@マークがなくなるとwhileを抜けるようにしてるのですが、
最初の「---」までが抜けていないので、@マークが減らずに無限ループに陥るのです。

上の例の$honbun[0]は確実に、抜き出したい文章を抜き出しているのですが、
教えて頂いた構文に入れると、その該当する文章が抜けないのです。

565 :nobodyさん:2010/04/02(金) 16:07:46 ID:???
whileの条件はなんなの?
テストしてるソース張り付けられない?

566 :nobodyさん:2010/04/02(金) 16:31:04 ID:H+Jv7Iis
}while(false!== mb_ereg("@",$honbun));

こんな感じです。

メールアドレスを「---」で区切って格納しているものがあって、
それを上から1つずつ抜き取りたいのだけれども、全部の羅列の中に
同じアドレスが2つ以上あった場合でも、上から1つずつ抜き取りたいのです。

で、一番上のメールアドレスを「---」までで抜き取ったやつを、
$hoge = preg_replace("/$honbun[0]/","",$hoge,1);

教えて頂いた↑で抜き取ると、抜き出せないのです。

ちなみに最初は
$hoge = str_replace($honbun[0],"",$hoge);

これでうまくいっていたのですが、複数ある場合に
全部が抜き出されてしまって、困ってしまって、質問させて頂いたわけです。



567 :nobodyさん:2010/04/02(金) 16:35:17 ID:???
正規表現に引っかかる文字入ってるとか。

568 :nobodyさん:2010/04/02(金) 16:40:04 ID:???
$honbun[0]にpreg_quoteかけるとか。

というか文字列を --- で区切ればいいんじゃないの?
explode使って。


569 :nobodyさん:2010/04/02(金) 16:41:37 ID:???
---で区切っちゃダメだった・・・忘れて。

570 :nobodyさん:2010/04/02(金) 16:48:58 ID:H+Jv7Iis
$honbun[0] = preg_quote($honbun[0], '/');

とりあえずこれを入れると、簡単なソースでは成功しました。
ありがとうございました。

これから実際に使ってるプログラムの方に導入してみて、
ちゃんと動くか実験してみます。ありがとうございました。

571 :nobodyさん:2010/04/02(金) 17:07:28 ID:???
>>544
> PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを
> 生成できれば悩まずに済むんだけどそういう方法って無い?
umask
でも大抵はchmod。

572 :nobodyさん:2010/04/02(金) 17:11:15 ID:???
>>570
そもそもの処理でメールアドレスに ---含む場合を想定してないので、もし出来るなら気にしてね。


573 :nobodyさん:2010/04/02(金) 20:09:21 ID:???
>>571
> umask
> でも大抵はchmod。

ありがとう、できたわ(゚∀゚)

http://www.phppro.jp/phpmanual/php/function.umask.html
↑のサイトを参考にして

 $old = umask(0);
 chmod("file.log", 0646);
 umask($old);

でできたわ。所有者が99だったりnobadyであってもumaskつかえばchmod出来ちゃうんだね。
強力なコマンドなぶん、使い方誤るとセキュリティ的にやばそう・・・

ところで冒頭の umask(0) の引数"0"って何を意味してるんだろう?

574 :nobodyさん:2010/04/02(金) 20:58:12 ID:peh3ZVn3
phpスクリプトから同じサーバ内のデータファイルを読み込むとして
phpスクリプト以外からアクセスすると(正確にはサーバ外のファイルから)
アクセスが弾かれるようにするにはどうすればいいんでしょうか?

575 :nobodyさん:2010/04/03(土) 00:10:03 ID:???
>>574
ファイルへのURLを直接入れたら表示したくないってことかな?

権限を上手いこと設定するか、.htaccessあるいはapacheの設定ファイルで
その特定ファイルへのアクセスを禁止する

詳しくは「htaccess アクセス制御」等で検索するかApacheスレへ

576 :nobodyさん:2010/04/03(土) 10:14:00 ID:dm+pMn6c
function returnstr($array) {
..
...
....
return $str;
}

この戻り値を

print <<<HTML
hogehoge{returnstr($a['test'])}hogehoge
hogehoge

HTML;

のように出力の中に書きたいのですがどのように書くのが正しいのでしょうか?

577 :nobodyさん:2010/04/03(土) 10:17:07 ID:???
出来ない

578 :nobodyさん:2010/04/03(土) 10:18:58 ID:dm+pMn6c
$hoge = returnstr($a['test']);
としてそれを入れるしかないってことですね。
ありがとうございます。

579 :533:2010/04/03(土) 12:20:56 ID:???
>>534
w+だともしファイルが存在していたとするとそのファイルサイズが0に強制上書きされてしまいませんか?

580 :nobodyさん:2010/04/03(土) 13:31:38 ID:???
質問しようと思って問題部分を見直してたら自己解決した。
($hoge == "foo") で $hoge に 0 が入って true になってた。
比較演算子の問題はちゃんと把握してるつもりだったけど
やっぱりよく注意してコーディングしてないとハマるね

581 :nobodyさん:2010/04/03(土) 13:50:07 ID:???
>>580
なんでtrueになるんですか?

582 :nobodyさん:2010/04/03(土) 16:17:13 ID:???
真実を述べてるから

583 :nobodyさん:2010/04/03(土) 18:45:24 ID:???
>>581
"hoge" は数字にすると0(数値に相当するものが入ってない)だから。
$hogeに数字が入ってると、自動的に数値で比較してくれる便利機能がついてる。

警告の一つも出してくれりゃいいのになぁ。

584 :nobodyさん:2010/04/03(土) 22:10:28 ID:???
<img src="(画像ファイルへのパス)">

のように画像を開くときは画像ファイルへのパスを指定する必要があるわけですが
絶対パス(realpath()で得られるパス)は受け付けてくれません。

代わりにドキュメントルートからのパス(多くの場合はpublic_htmlから)を指定する必要があるわけですが

 /zettai/path/public_html/pic/1.gif

のように絶対パスで与えられているファイル名をドキュメントルートからのファイル名

 /pic/1.gif

に変えるにはどういう方法を使えばいいでしょうか?


585 :nobodyさん:2010/04/03(土) 23:17:14 ID:???
文字列からドキュメントルートからのパスを切り取るというのはどうか

586 :nobodyさん:2010/04/04(日) 01:01:02 ID:???
相対パス求めるアルゴリズム作ってたらなぜか絶対パス求めるアルゴリズム考えてたわw
しかも>>55でもうやってるしwせっかく作ったんだし公開しておこう
http://ideone.com/QMVoQhKL


587 :nobodyさん:2010/04/04(日) 11:32:33 ID:VKZUtm2V
【OS名】FreeBSD 7.1-RELEASE-p10 i386
【PHPのバージョン】PHP 5.2.12
【連携ソフトウェア】
【質問内容】
(sakuraレン鯖使用です)

ttp://www.abe-tatsuya.com/web_prog/php/mail2php.phpのサイトを参考にして
メールを受信してtwitterに投稿するPHPを作っています。

受信したものをそのまま投稿するのは上手くいくのですが、
アドレスに応じて名前を追加しようとするとうまくいきません。
(というより別関数で本文に内容を付加するのがうまくいかないです。)

原因は何でしょうか?
(使用しているファイルを次に投稿します)

588 :nobodyさん:2010/04/04(日) 11:40:00 ID:VKZUtm2V
>>587の続きです
[.mailfilter]
to "| /usr/local/bin/php -q /home/user/www/tweet/mail.php"

[mail.php]
<?php
#-- PEAR の Mail/mimeDecode.php を読み込む
require_once '../../pear/php/Mail/mimeDecode.php';
require_once("post.php");
require_once("xml.php");

#-- メールデータ取得
省略:参考サイト通りstdinで取得
#-- From フィールドの取得
$from = $mail_data->headers['from'];
#-- To フィールドの取得
$ToAddress = $mail_data->headers['to'];
#-- Subject フィールドの取得
$Subject = $mail_data->headers['subject'];
$Subject = mb_convert_encoding($Subject,"UTF-8","JIS");
#-- 本文の取得
$MailBody = $mail_data->body;
$MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
//アドレス処理はあとでやる
$fff = "mail";
$aaa = add_name($fff,$MailBody);

$MailBody = $MailBody.$aaa;
//twitter投稿
Post($MailBody);

?>

589 :nobodyさん:2010/04/04(日) 11:44:58 ID:VKZUtm2V
さらに>>588の続きです。
連投スミマセン;;
改行が多すぎるって怒られました><

[xml.php]
<?php
function add_name($from,$body){
$xml = simplexml_load_file('document.xml');
foreach($xml->person as $person){
if($person->mail == $from ){
$body = $person->name . $body;
return $body;
}
}
}
?>

[document.xml]
<?xml version='1.0'?>
<data>
<person>
<mail>mail</mail>
<name>たろう</name>
</person>
</data>

590 :nobodyさん:2010/04/04(日) 18:50:22 ID:z61eZwKM
add_name()の返り値は確認したのか?

591 :nobodyさん:2010/04/04(日) 19:51:07 ID:???
戻り値?返り血?

592 :nobodyさん:2010/04/04(日) 20:06:00 ID:???
いきなりmb_convert_encodingしてるが、
本当に JIS なのか?
mb_language('uni'); // unicode
とかになってないかい?
ちなみに、mb_detect_encoding では正しく JIS が判断できないよ。
バグじゃないけどね。

593 :587:2010/04/04(日) 21:40:37 ID:VKZUtm2V
お返事ありがとうございます

>>590
質問内容が悪かったですね(汗
メール送信したときに、add_name()など関数を使うと値が返ってきません。
mail.phpをブラウザで叩いたときは値が返ってきます(echoで確認しました)

>>592
文字コードはとりあえず文字化けしなかったのであんまり気にしていませんでした><
コンバートしなくても良いといいことですか??




594 :nobodyさん:2010/04/05(月) 06:07:53 ID:uTolPHHQ
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

a.htmlからa.phpを呼び出しています。
a.htmlには、
<input type="checkbox" name="cb_op3" value="1">
とデフォルトでチェックがされていません。
a.phpでは、
$cb_op3 = $_POST['cb_op3'];
の様に参照しています。

チェックボックスがチェックされていない場合、
PHP Notice: Undefined index: cb_op3 in D:\htdocs\a.php on line XX
のようにPHP Noticeが出力されます。

これが出ないようにするには、どうすれば良いですか?
よろしくお願い致します。

595 :nobodyさん:2010/04/05(月) 06:53:11 ID:???
>>594

$cb_op3 = (isset($_POST['cb_op3'])) ? $_POST['cb_op3'] : "";

596 :nobodyさん:2010/04/05(月) 06:58:11 ID:uTolPHHQ
>>595
ご回答、ありがとうございます。
$cb_op3 = htmlspecialchars(@$_POST['cb_op3']);
とすることで、自己解決しました。

597 :nobodyさん:2010/04/05(月) 07:06:44 ID:uTolPHHQ
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

phpのエラーをapacheのエラーログに出力したいのですが、
出来ません。
php.iniのerror_logには何も指定していません。
phpinfo()で確認すると、C:\WINDOWS\temp\php-errors.logとなっています。
試しに、
error_log = "L:\logs\php.log"
error_log = "L:\\logs\\php.log"
等を指定しても、
phpinfo()で確認すると、C:\WINDOWS\temp\php-errors.logと変わりません。

知っている方、よろしくお願い致します。

598 :nobodyさん:2010/04/05(月) 07:37:57 ID:???
>>597
phpinfo() の Loaded Configuration File と別の php.ini を書き換えたりしてない?

599 :nobodyさん:2010/04/05(月) 07:51:41 ID:uTolPHHQ
php.iniをよく見たら、

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;
の項に
error_log="C:\WINDOWS\temp\php-errors.log"
の記述が。。。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
の項の
error_log = filename
ばかり変更していました。


でも、紛らわしいよ。。。



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

600 :nobodyさん:2010/04/05(月) 22:18:52 ID:afFcX18l
【OS名】FreeBSD
【PHPのバージョン】php5.10
【連携ソフトウェア】なし
【質問内容】
csvでやっていた処理を、拡張性を見据えてxmlにしようと思って実験中ですが、疑問ができたので質問させて頂きます。
SimpleXMLElementを使っているのですが、
これは読み出し及び項目追加には便利だとは思います。
しかし、<data></data><data></data>などの配列化した項目を消したりしようとすると途端に不便になりました。
こういうものなのでしょうか?
popやshiftに相当するものを使用し、最後にasXMLで書き出せるというのが理想なのですが、
一度全部読み出し、もう一つオブジェクトを生成し、そちらにプロパティを移して新しいオブジェクトから書き出す
というのはどうも違和感があります。


601 :nobodyさん:2010/04/05(月) 22:23:23 ID:???
$xml = simplexml_load_file($filepath);
foreach($xml->hoge as $foo){
 if ($foo->updatedate+(24*60*60) < time()){
  $foo = null;
 }
}
$xml->asXML($filepath);
例えばこういった組み方をすると、空のゴミタグが残ってしまいますが、ゴミタグも消したいのです。
何か代換手段は無いものでしょうか

602 :nobodyさん:2010/04/05(月) 22:29:17 ID:afFcX18l
すいません。>601age忘れました

現在はこうやっていますが、最初のnewxmlの定義が面倒です

$xml = simplexml_load_file($filepath);
$newxml = new SimpleXMLElement("<?xml version='1.0' ?>\n<root></root>");
$newxml->addChild("bar1",$xml->bar1);
$newxml->addChild("bar2",$xml->bar2);
$newxml->addChild("bar3",$xml->bar3);

foreach($xml->hoge as $foo){
 if ($foo->updatedate+(24*60*60) >= time()){
  $newxml->addChild("hoge",$foo);
 }
}
$newxml->asXML($filepath);


603 :nobodyさん:2010/04/05(月) 22:30:47 ID:afFcX18l
実際にはhogeの部分も階層化させるため、もっと複雑な処理になります。

604 :nobodyさん:2010/04/05(月) 22:36:54 ID:???
【OS名】何でも
【PHPのバージョン】php5.3
【連携ソフトウェア】sqlite3
PHP5に標準搭載されているSQLite3 拡張モジュールで質問です。
close()は必須なのでしょうか? たとえば
$db = new SQLite3("hoge.sqlite");
try {
 $result = $db->query("select ...");
 $row = $result->fetchArray();
 return $row["hoge"];
} catch (Exception $e){
 die();
}
$db->close();
なんていうサンプルを時々見かけますが、これって僕のPHP文法の
理解が正しければclose();は通りませんよね?また
$db = new SQLite3("hoge.sqlite");
try {
 $result = $db->query("select ...");
 $row = $result->fetchArray();
 $hoge = $row["hoge"];
 $db->close();
 return $hoge;
} catch (Exception $e){
 die();
}
だったとしても例外時にはclose()されませんよね? これは
} catch (Exception $e){
 $db->close();
 die();
}
とかいちいちやるものなんでしょうか?

605 :nobodyさん:2010/04/05(月) 22:58:06 ID:???
デストラクタと言うものがあってだな
不要になったときに自動で解放される


606 :nobodyさん:2010/04/05(月) 23:08:13 ID:???
>>605
ということは明示的にcloseしたい理由がなければ放置でもOKってことですか?
上記の例では1番は論外としても2番か、それか記述せずでもOKと?

607 :nobodyさん:2010/04/06(火) 00:32:21 ID:???
実行が終わる直前や

$db = new SQLite3("hoge.sqlite");
たとえばこの変数に
$db = null; とか
$db = array(); とか
$db = new SQLite3("hoge.sqlite"); とか
のように上書きしてしまってもう使えなくなってもデストラクタが動く

608 :nobodyさん:2010/04/06(火) 00:34:24 ID:???
なるほど。じゃあ実質不要ですね。気にしないことにします。
サンクス。

609 :nobodyさん:2010/04/07(水) 02:22:36 ID:DRQlFq+M
フォームからの情報を受け取りたいのですが
urldecodeは必要ですか?
$_GET[] の時点で既にurldecodeされてるのでしょうか?

610 :nobodyさん:2010/04/07(水) 02:59:21 ID:???
<?php
echo print_r($GET);
?>
してみなよ

611 :nobodyさん:2010/04/07(水) 03:12:56 ID:???
やってみます

612 :nobodyさん:2010/04/07(水) 06:13:24 ID:dfs6oC5W
function checkCookie(){
if($_COOKIE['checkCookie']){return 1;}
else{
$expire = time() + 86400*14;
if(setcookie("checkCookie",time(),$expire)){return 1;}
else{return 0;}
}
}

このような関数を作ってクッキーが有効かチェックしたいのですが、オフにしても0が帰ってこないようです。
原因わかりますか?

613 :nobodyさん:2010/04/07(水) 06:17:39 ID:???
>>612
if(setcookie("checkCookie",time(),$expire)){return 1;}
ブラウザの設定でOFFにしてもサーバから送信は可能だから
ここがとりあえず成功しちゃうんだと思われる



614 :nobodyさん:2010/04/07(水) 06:27:00 ID:dfs6oC5W
>>613
ありがとうございます。
ということは、
セットする→セットしたクッキーが存在するか否か
という処理だと行けるってことですよね?

615 :nobodyさん:2010/04/07(水) 06:32:37 ID:???
>>614
一度の処理中での確認はできない
一回送信して次回のリクエストで帰ってくるかどうかでのチェックが必要。

俺がたまにやるのは、ページでセットして、JSでチェックする

index.php
<?php
setcookie("checkCookie",time(),$expire);
?>
<html>
<head>
<script type="text/javascript" src="check_cookie.php"></script>
</head>
</html>

check_cookie.php
<?php
if (!isset($_COOKIE['checkCookie'])) print "alert('no cookie!')";
?>

616 :nobodyさん:2010/04/07(水) 06:39:12 ID:dfs6oC5W
>>615
わかりました。
さんくすです

617 :nobodyさん:2010/04/07(水) 07:56:30 ID:3KWYoUnh
【OS名】WindowsXP SP3
【PHPのバージョン】php5.2.13
【連携ソフトウェア】Apache2.2.15
【質問内容】

php5.2.13に対応しているeAcceleratorのバイナリを配布しているサイトはありますか?

618 :nobodyさん:2010/04/07(水) 08:03:06 ID:???
試してないけど
http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds
「eAccelerator 0953 for PHP 5.2.10」とかでいいんじゃないかな

619 :nobodyさん:2010/04/07(水) 12:05:21 ID:qoBEK7gJ
指定したURLに何秒後かに飛ばすことは出来ますか?

620 :nobodyさん:2010/04/07(水) 12:12:46 ID:???
>>619
5秒後にnext.htmlへ飛ばす
header( 'refresh: 5; url=next.html' );

ちなみにHTMLのタグでも可能
<head>
<meta http-equiv="refresh" content="5;URL=next.html">
</head>

621 :nobodyさん:2010/04/07(水) 12:28:57 ID:???
headerはブラウザの設定により飛ばないからmetaの方が良いかも

622 :nobodyさん:2010/04/07(水) 12:37:23 ID:qoBEK7gJ
ありがとうございます。metaでやってみます

623 :nobodyさん:2010/04/07(水) 13:29:34 ID:3KWYoUnh
>>618
5.2.13に対応していますか?

624 :nobodyさん:2010/04/07(水) 13:45:29 ID:???
>>623
わからないから>>618は無視してくれ、すまんな

625 :nobodyさん:2010/04/07(水) 14:33:07 ID:W7cZb24v
掲示板の書き込み確認画面で書き込み内容を表示するときは改行文字を<br>にして表示します。
同意して書き込む際に、hiddenで送る内容ですが、仕様上<br>などのタグをhiddenに含めるとエラーに成ります。
なので、hiddenには<br>などで置換していない状態の書き込みを入れたいのですが、この場合、改行文字がhtmlソースで働いてhtmlソースが乱れてしまいます。
何かで改行文字を置換したいのですが何がいいでしょうか?2chの場合「?」で置換されているようです。

626 :nobodyさん:2010/04/07(水) 14:47:15 ID:???
<input type="hidden" value="aaa

bbb">
みたいな感じでそのままでもいいと思うけど、どうしても変えるなら

<input type="hidden" value="aaa\n\nbbb">
とかかな


627 :nobodyさん:2010/04/07(水) 14:50:15 ID:W7cZb24v
>>626
2chの改行文字の&#10;は全角のはてな。
全角のはてなだったら問題ないですね!
これでいきます。

628 :nobodyさん:2010/04/07(水) 14:52:19 ID:???
全角のはてなの入った文はどうするの?

629 :nobodyさん:2010/04/07(水) 15:06:59 ID:W7cZb24v
改行文字を&#10;で置換して、それをhiddenに入れる。

&#10;を<br>に置換する。

全角のはてなを「&#10;」の実体表記で書かれる、それは&amp;#10になるはず・・・

630 :nobodyさん:2010/04/07(水) 15:45:55 ID:OLVUqXLt
header("Location: ./test.php");
で飛ばす時に一緒にPOSTで値などを渡したりする方法はありますか?

631 :nobodyさん:2010/04/07(水) 15:46:59 ID:???
セッション使えセッション

632 :630:2010/04/07(水) 16:04:23 ID:OLVUqXLt
>>631
ありがとうございます。
携帯でもセッション使えるかどうか試してみます。

633 :630:2010/04/07(水) 17:11:09 ID:OLVUqXLt
先ほど質問したばかりなんですがすんません。
#index.php
session_start();
$_SESSION['riremito']='ばしるーら';
header("Location: ./test.php");

#test.php
session_start();
echo $_SESSION['riremito'];
としているのに表示されないのですが、書き方間違ってますでしょうか?

634 :nobodyさん:2010/04/07(水) 17:16:17 ID:3KWYoUnh
>>624
いいえ、ありがとうございます。

635 :nobodyさん:2010/04/07(水) 17:22:16 ID:???
>>633
携帯ならsession.use_trans_sidで検索

636 :nobodyさん:2010/04/07(水) 17:33:46 ID:3GsFBU25
mb_regex_encoding("UTF-8");
if(mb_ereg( "[a-z]*",$string))
てすると全部TRUE返ってくるんですが
アルファベットのみの文だけ拾いたいのです
NoEditorというエディタだと拾ってるんですが
どういう事なんでしょうか?

637 :nobodyさん:2010/04/07(水) 17:41:14 ID:???
>>636
0文字の[a-z]にマッチする

638 :nobodyさん:2010/04/07(水) 18:01:53 ID:???
ありがとう*

639 :nobodyさん:2010/04/08(木) 01:08:32 ID:bQ9+sypi
みなさんこんばんは

外部サイトの画像をリサイズしてキャッシュして表示する
スクリプトかAPIのようなものを探してるんですが、
探してる途中にgoogle app engineで作ったと思われる
以下のようなもの(image-resize.appspot.com)を発見いたしました。
ttp://groups.google.co.jp/group/google-appengine/browse_thread/thread/56ba9c4e8fa23d4a

これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
ちなみに当方英語は読めません

640 :sage:2010/04/08(木) 09:23:03 ID:???
せめて翻訳サイトで見てみるくらいしてみろよ

641 :625:2010/04/08(木) 09:41:24 ID:L4uu4ArY
昨日、掲示板の改行文字の件で質問したものですが&#10;ではうまくいきませんでした。
なにか他の考え方がある方はいますでしょうか?

642 :nobodyさん:2010/04/08(木) 09:51:26 ID:???
>>641
改行文字を変換する理由はなに?

643 :nobodyさん:2010/04/08(木) 09:59:22 ID:L4uu4ArY
>>641
調べてみたら「&#10;」って改行文字だったんですね。
2chに書くと全角のはてなになったので勘違いしてました。

2chのように、
フォームから入力してPOSTで送信

確認画面

書き込み

という仕組みなんですが、確認画面で表示するのは改行文字を<br>に置換しますが、書き込み用にhiddenに入れるのを
<br>で置換するとサーバー側の仕様(タグの受信がNGなのです)でエラーを吐いてしまいます。

644 :nobodyさん:2010/04/08(木) 10:06:18 ID:???
>>643
だからhiddenに入れるのをなんで<br>に置き換える必要があるの?

645 :nobodyさん:2010/04/08(木) 10:08:00 ID:???
釣りじゃないの?

646 :nobodyさん:2010/04/08(木) 10:09:44 ID:L4uu4ArY
>>643
hiddenにいれるのが\nのままだとhtmlソースに変な改行が入ってしまうのが気になってるからです。

647 :nobodyさん:2010/04/08(木) 10:13:24 ID:???
つ php エスケープ

648 :nobodyさん:2010/04/08(木) 10:59:42 ID:???
>>646
試してないけど\nを\\nに置き換えればいけるかも

//変換
$text = strtr($text, array("\\" => "\\\\", "\n" => "\\n"));
print $text;

//復元
$text = strtr($text, array("\\\\" => "\\", "\\n" => "\n"));
print $text;

ただ置き換えたい理由を未だ理解できない・・

649 :nobodyさん:2010/04/08(木) 11:30:09 ID:???
<br>にしたままでいいから、 hiddenのとこに書き出すのは  htmlspecialchar かけて。



650 :nobodyさん:2010/04/08(木) 12:07:50 ID:???
それだと2重になるからだめじゃない?

651 :nobodyさん:2010/04/08(木) 12:12:27 ID:bQ9+sypi
>>640
翻訳ぐらいしてるわボケ
お前はコードまで一緒に訳される機械翻訳で意味分かったのか?

652 :nobodyさん:2010/04/08(木) 12:22:38 ID:???
>>646
htmlに余計な改行が入ってソースが気になるなら、そもそもがhiddenなんかに持たせずにphpのsessionに保存すれば?
どうせ、確認画面で表示だけだと値をpost出来ないからhiddenに持たせようとかそんな程度の話でしょう?(勝手な妄想だから、違っても気にするな)
textareaタグを使って、見た目をただの表示っぽく調整するとか、方法はいろいろあると思うけどね。

やりたい事の実現方法案を自分で決めてしまって、その案に対しての技術的な質問をしてもなかなか解決しない場合があるよ。
何のためにhiddenで値を保持しようとしているのか、まずはそこから話さないとアドバイスしにくいんじゃね?


653 :nobodyさん:2010/04/08(木) 12:25:35 ID:???
そういうのにSIDを使いまわすのが理想的なのかは個人による。
たぶんやりたいのは投稿内容の確認画面ではないかとエスパー。

654 :nobodyさん:2010/04/08(木) 12:27:24 ID:???
>>651
640じゃないが、機械翻訳したうえで、オリジナルサイトと両方見ながら読む努力しろよ。
コンピュータ用語なんてまともに翻訳できなくて当たり前なんだから。

そもそも、コードが翻訳された部分なんて、
>これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
こんなことを知るうえでは無関係な場所だから読む必要ないだろ。


655 :nobodyさん:2010/04/08(木) 12:59:45 ID:bQ9+sypi
>>654
要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?
プログラミングのプロのみなさんのコンプライアンス・ガバナンスの見地に基づいた意見を求めております

656 :nobodyさん:2010/04/08(木) 13:01:53 ID:???
654を

>要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?

こう解釈する奴では、何を教えて貰っても無駄だろ。

657 :nobodyさん:2010/04/08(木) 13:06:01 ID:???
最近の開発者はコピペしまくりだものw

658 :nobodyさん:2010/04/08(木) 13:06:24 ID:bQ9+sypi
雑魚の意見は求めてません

659 :nobodyさん:2010/04/08(木) 13:08:27 ID:???
>>658
あ、わるい。
ずぼしだったんだねW。

660 :nobodyさん:2010/04/08(木) 13:09:35 ID:bQ9+sypi
お前ら、聖人気取りで上から目線だけど
これは良いサイト教えてもらったわ
俺も使っちゃおうとか思ってないか?
とんでもない奴らだな・・・

661 :nobodyさん:2010/04/08(木) 13:17:38 ID:???
>>660
他サイトキャプチャなんて過去スレで既出

本当に翻訳してるのか?
ライセンスにはGPLって書いてあるだろ

662 :654:2010/04/08(木) 13:17:40 ID:???
>>656
すげーガッカリです。
> コンプライアンス・ガバナンス
こんな言葉を使ってるくせに、ソースに使用条件が書かれてると思ってるやつの相手をした自分が馬鹿だったね。

>>657
それは開発とは言わん・・・けど
昔後輩として入ってきたやつもそんなことやってたな・・・・
で、一つの関数内で、一つの値を異なった変数名で扱って、まともな動作をしなかったり・・・・
プログラムに向いてない頭としか思わなかったけど。



663 :nobodyさん:2010/04/08(木) 13:23:27 ID:fqmdAirf
質問です。

とあるPHPファイルをincludeして、その中で停止してあるクラスのインスタンスを取得したいとします。
(それを、2〜3回行います)

$name = 'hoge';
require_once($name . ".php");
$c = new $name; // ファイル名と、そのファイルで定義されているクラス名が同じというルールとします。

ただ、こうするとファイル名がかぶった時(別フォルダに、同じ名前のPHPファイルがある)に、クラス名が二重定義になってしまいます。
そこで次は、パスも含めるとします。

$name = 'hoge/are';
require_once($name . ".php");
$c = new str_replace('/', '_', $name); // スラッシュをアンダーバーに置換したものを、クラス名とします。

ただ、これをするとPHPファイルの配置場所が変わった時に、クラス名も変更する必要があり面倒です。
また、そもそもクラス名をいちいちルールにのっとって書かせるのも面倒くさがられるでしょう。

・無名クラスはつくれないのでしょうか?(調べた限り発見できず)
-------$name .php の中身---------
return class{
function hoge(){}
};
---こんな感じでインスタンスを返す---

・一度定義したクラスを、無効にすることはできないでしょうか?
クラス名を全て統一し、2度目、3度目のrequireの前に以前のクラス定義を無効化する

・クラス名を、ファイルパスなどから自動的に生成することはできないでしょうか?
class str_replace('/', '_', __FILE__){} のようなことはできませんでした


664 :nobodyさん:2010/04/08(木) 13:24:07 ID:bQ9+sypi
>>661
>他サイトキャプチャなんて過去スレで既出
外部画像リサイズです。全然違います。

>ライセンスにはGPLって書いてあるだろ
それはコードのライセンスでしょ。

665 :nobodyさん:2010/04/08(木) 13:25:27 ID:fqmdAirf
while('' != $name)
{
require($name . ".php");
$c = new $name;
$name = $c->run(); // 正常終了したら "" を返す。他のクラスに処理をおまかせしたかったら、そのクラス名を返す
}

こんな感じで使うことを想定しています。

666 :nobodyさん:2010/04/08(木) 13:26:04 ID:???
>>660
お前の知識が乏しすぎるだけ。
そもそも、誰も上から目線じゃねーだろ。
お前が努力していないのを指摘してるだけ。

普通にそういうの理解してる連中は、読む努力、理解する努力をしてるの。
お前みたいに「英語嫁ねー」「機械翻訳よみずれー」なんて程度で「教えて」って騒ぐやつに細かく答えてたらきりがないんだよ。


667 :nobodyさん:2010/04/08(木) 13:28:43 ID:bQ9+sypi
>>662
リソースとソースを勘違いしてないか?
俺が言ったのは「グーグルのリソース」でソースコードの事じゃないよ

668 :nobodyさん:2010/04/08(木) 13:29:06 ID:???
ここはそういう奴もOKなスレではあるはずだけど

>・ 質問者として、態度をわきまえること。
これが読めない奴は消えろ

669 :nobodyさん:2010/04/08(木) 13:36:41 ID:???
みんな熱くなって気づいてないけど
そもそもがPHPの質問でもない


670 :nobodyさん:2010/04/08(木) 13:37:48 ID:bQ9+sypi
663さんが可愛そうなのでまた夜にでも来ます^^
663さんを一致団結して支えてください
それまでに俺の答えを用意しとくように

671 :661:2010/04/08(木) 13:42:48 ID:???
>>664
>>670
コード読んで無かった、すまんね。

http://image-resize.appspot.com/?url=http://image.gsfc.nasa.gov/image/image_launch_a5.jpg&width=200&height=200
このurl=の部分を変えてimage-resize.appspot.com上で動かすって意味か

そのURLはあくまでもサンプルで、それ用のAPIを公開しているわけではないから一般的にNG。
使い続けても平気かもしれないけど、そもそもそのサイトが存続する保証はないからやめとけ

他サイトの画像を取得してリサイズなんてphpで簡単にできる。
file_get_contentsで画像とってきてGDかimagemagickでリサイズかければいい
リサイズ部分は「class.image.php」とか使うとさらに楽

672 :nobodyさん:2010/04/08(木) 13:56:29 ID:???
こんな奴に丁寧に答えること無いのに

673 :nobodyさん:2010/04/08(木) 16:15:03 ID:???
お前ら煽りには全力で釣られるのに、真面目な質問は全スルーなのなwwww

674 :nobodyさん:2010/04/08(木) 16:38:25 ID:???
>>663
クラスの名前とクラスのファイル名を結ぶところと
実際のクラスのインクルードしてインスタンスを返すクラスを作ったらどうですか。
あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。

675 :nobodyさん:2010/04/08(木) 17:18:57 ID:fqmdAirf
>>674
レスありがとうございます。
ちょっとおっしゃっていることが理解できないのですが…。推測で。

ファクトリークラスを作ればよい。ということでしょうか。
それでも結局クラス名をユニークにする必要がありませんか?
どんな階層(includeした中でincludeされたファイルとか)でクラスが定義されても、結局グローバル空間で定義したのと同じ扱いになってしまうようなので。


>あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
a/b_c.php
a_b/c.php

が同じになってしまうので、厳密には解決しませんね。
(ということですよね?)

676 :nobodyさん:2010/04/08(木) 17:21:47 ID:???
モジュール処理などでループさせる時にそういう処理を考えるわ。
そういや、return new require class();でnew require($path);とか出来ないのだろうか、
あとで試してみよっと。

677 :nobodyさん:2010/04/08(木) 19:19:04 ID:QzEBA4At
php+mysqlでの質問です。

mysql関数を使用し、使いやすく穴もないライブラリを作成したとします。

この状態でpdo_mysqlを使用する利点はありますでしょうか?

DBはpgsqlなどに変更せず、mysql一択とします。

678 :nobodyさん:2010/04/08(木) 19:34:57 ID:???
>>677
PDOだとプリペアドステートメントによる2回目以降のキャッシュが期待できるくらいかな

679 :nobodyさん:2010/04/08(木) 21:36:49 ID:i++uHGbD
exit()について質問させてください。
登録用フォームを作っていて、入力欄が空の時に入力を促すために
if文の中でexit("〜を入力して下さい。<a href=hoge.php<戻る</a>";としています。
ブラウザでは特別問題なく表示されていますが、ソースを見ると、当然exitのところで終了しているので、
ヘッダ部分</body></html>などはごっそり抜けてしまいます。
対象が携帯向けなのですが、exitを使用した場合なにか支障が起きますでしょうか?

680 :nobodyさん:2010/04/08(木) 23:29:39 ID:Ypj7nZm8
こんばんわ、セッションの勉強をしてます
ためしに作った以下のカウントスクリプトが動きません。何ででしょうか?

<?php
session_start();
if(!isset($count)) $count=0;
session_register("count");
$count++;
?>

<html>
<body>
セッション名は<?php echo session_name() ?> です。<br>
セッションIDは<?php echo session_id() ?> です。<br>
あなたは <?php echo $count ?> 回目の訪問です。
<a href="<?php echo $PHP_SELF ."?PHPSESSID=".$PHPSESSID ?>">カウントを増やす</a>
</body>
</html>

681 :nobodyさん:2010/04/08(木) 23:57:17 ID:???
register_globalsがoffだから動かないだけ。
ただしsession_registerが先々使えなくなるので使わないのが吉。

検索してマニュアルに目を通せば1分で解決する。

682 :nobodyさん:2010/04/09(金) 00:19:32 ID:???
>>679
不安なら
ob_start('footer');
function footer(){
 echo '</body></html>';
}


683 :677:2010/04/09(金) 00:54:25 ID:2yEYSOQo
>>678
プリペアド・ステートメントのキャッシュは盲点でした。
が、1コネクション毎のようなので、今のところ使う機会がほとんどなさそうです…

あえてpdo_mysqlを使う必要はないということですね。
ありがとうございました。

684 :nobodyさん:2010/04/09(金) 01:18:50 ID:???
>>679
まぁHTMLなんて閉じタグなくても滅多に問題おきないから
気にするとしたら自分の満足感くらいだと思う

685 :l:2010/04/09(金) 02:43:58 ID:CD4rw/LK
テキストを1行づつ
$code = mb_detect_encoding($str);
$str_out = mb_convert_encoding($str,"UTF-8",$code);
とすると「m」「l」があるところで
Warning: mb_convert_encoding() [function.mb-convert-encoding]: Illegal character encoding specified in
となります。見た目同じなんですがコピペ検索すると互いに一方はヒットしないです。
FireFoxのアドレスバーにコピペすると□になります。
何なん?なぁ何なん?もう分からへんわ
です。教えてください。

686 :nobodyさん:2010/04/09(金) 05:43:46 ID:???
PearのHTTP_Request2を使ってるんですが、
リクエストで複数行のcookieを送ることはできないんでしょうか?
会員サイトで一度ログインしたセッションを使って再度内容を取得したいのですが、
レスポンスはcookieが2行で返ってくるのにリクエストでは1行しか送れないようでセッションが継続できず困っています。

687 :nobodyさん:2010/04/09(金) 05:44:38 ID:q/M4MThC
PearのHTTP_Request2を使ってるんですが、
リクエストで複数行のcookieを送ることはできないんでしょうか?
会員サイトで一度ログインしたセッションを使って再度内容を取得したいのですが、
レスポンスはcookieが2行で返ってくるのにリクエストでは1行しか送れないようでセッションが継続できず困っています。

age忘れたのでageます

688 :nobodyさん:2010/04/09(金) 06:26:28 ID:???
>>685
エラーはエンコーディングの検出に失敗してるせい
毎行 mb_detect_encoding() をする意味が分からないが…

>>686
HTTP_Request2#addCookie() を2回呼ぶだけで良さそうよ
http://pear.php.net/package/HTTP_Request2/docs/0.5.1/__filesource/fsource_HTTP_Request2__HTTP_Request2-0.5.1Request2.php.html#a505

689 :nobodyさん:2010/04/09(金) 06:36:59 ID:q/M4MThC
>>688
言葉足りず申し訳ないんですがそれだと
set-cookie: name=value; name=value
になってしまうんです

690 :nobodyさん:2010/04/09(金) 06:50:36 ID:???
>>689
なぜHTTPリクエストに Set-Cookie が出てくる
Cookie: name1=value; name2=value なら仕様通りの動きだが

691 :nobodyさん:2010/04/09(金) 06:54:45 ID:q/M4MThC
Set-CookieじゃなくてCookie:でした

692 :nobodyさん:2010/04/09(金) 08:12:43 ID:???
domainやpathが同じだけどもnameとvalueが異なるクッキーを2行送ってくるので
リクエストの際も2行で送りたいのです
現状のaddCookieに2行分を詰め込む方法などはあるのでしょうか?

693 :nobodyさん:2010/04/09(金) 08:54:04 ID:???
cookienameを変えたら?
nameがcookienameの話ならならname=valueを独自変換して取り扱えばいい

694 :nobodyさん:2010/04/09(金) 10:20:04 ID:???
質問が抽象的で何がしたいのかさっぱりわからないんだけど、よく回答できるな

695 :680:2010/04/09(金) 11:11:26 ID:1iWtWM0x
>>681
エスパー先生有難うございます。
3分かかっちゃいましたけど解決しました〜;;

696 :nobodyさん:2010/04/09(金) 13:40:02 ID:???
>>688
ファイルを丸ごとエンコードする方法があるのですか?

697 :nobodyさん:2010/04/09(金) 13:48:56 ID:???
逆にmb_convert_encodingに一行しか入れてはならないと誰が決めたのか聞きたい

698 :nobodyさん:2010/04/09(金) 14:13:35 ID:???
誰も決めてなかったらしくエラー吐かなくなった
えらいぞ俺

699 :nobodyさん:2010/04/09(金) 15:29:21 ID:Mp0D6Mth
POSTで送信されたか調べる時、REQUEST_METHODを付けて

if($_SERVER['REQUEST_METHOD'] == "POST" && $_POST["text"] != "")

みたいな方法を知り合いから「するべき」と言われたのですが、
これって別にREQUEST_METHODを付けなくても良いのではないでしょうか?
if($_POST["text"] != "")
だけあれば、十分「POST[text]に値が存在するか)を調べられると思うのですが・・・

なにか理由があってREQUEST_METHODを付ける場合は、その理由を教えてください。

700 :nobodyさん:2010/04/09(金) 18:35:51 ID:???
POSTされていないときに、 $_POST["text"] != "" が null で通るからかな。

701 :nobodyさん:2010/04/09(金) 18:40:19 ID:???
未定義と空の文字列を1つの式で検出するテクニック
if( isset($_POST['example'][1]) ){

}


702 :nobodyさん:2010/04/09(金) 19:33:09 ID:???
>>701
それだと$_POST['example']がない場合にエラーでない?

703 :nobodyさん:2010/04/09(金) 19:35:30 ID:???
へぇ、出なかった!
ほんと自由な言語だわ

704 :699:2010/04/09(金) 20:04:18 ID:Mp0D6Mth
みなさんありがとうございます。
少し疑問に思ったのですが、>>700のってどういう場合に起こりえるのでしょうか?
外部フォームからPOSTされたとしても通らないと思うし。
「POSTされてないとき」の場面が想像できません。


705 :nobodyさん:2010/04/09(金) 20:15:57 ID:???
どんまい

706 :nobodyさん:2010/04/09(金) 20:22:33 ID:???
>>704
クライアントからどういうデータがくるかなんてわからない
メソッドなんて自由に変えられるし、
HTML改ざんして$_POST["text"]に該当するフォームを消すこともできる



707 :nobodyさん:2010/04/09(金) 20:33:09 ID:???
ポストされたけど値が無いのと、ポストされてないけど(とうぜん)値が無いときと分ける必要がなければそうだね。


708 :nobodyさん:2010/04/10(土) 09:26:10 ID:3YvP476N
if文での and と ネスト で質問があります。

and でつなげられる場合、出来る限りネストを使わないほうが
処理は速くなるのでしょうか?

709 :nobodyさん:2010/04/10(土) 10:14:52 ID:???
別に同じ

710 :nobodyさん:2010/04/10(土) 14:30:13 ID:???
1994年生まれの人集まれ!★3
http://gimpo.2ch.net/test/read.cgi/nendai/1269784099/

711 :nobodyさん:2010/04/10(土) 14:54:51 ID:3YvP476N
>>709

ありがとうございます。
同じだったとは。。

ループは重くなりやすいけど、ifのネストは関係ないのですね。

712 :nobodyさん:2010/04/10(土) 15:02:37 ID:3YvP476N
たびたび申し訳ありません。

mb_strpos($allInfo, $key) !== FALSE
mb_strpos($allInfo, $key) == TRUE

上と下は同じと考えてよいでしょうか?

可視性から下にしたいのですが、サンプルコードが上のやり方で
書いてあることがよくあるのです。

713 :nobodyさん:2010/04/10(土) 15:09:07 ID:???
全然違う

714 :nobodyさん:2010/04/10(土) 15:14:07 ID:???
>>712
関数の戻り値を調べれば何故そう書いているのかわかると思うんだがな

TRUEと同等値が戻ってきた時とFALSE以外が戻ってきた時

715 :nobodyさん:2010/04/10(土) 15:32:22 ID:3YvP476N
>>713 >>714

ありがとうございます。

mb_strpos
文字列 haystack の中で needle が最初に現れる位置を数字で返します。 needle が見付からなかった場合、FALSE を返します。

と書いてあるので、trueを返すのはでく、数字で返すからこのような書き方じゃないといけないわけですね。
勉強になりました。

716 :nobodyさん:2010/04/10(土) 16:58:06 ID:+kV5bvKp
配列の値を含む文字列を判定するこんな感じの関数ってありますでしょうか?
無いならこのまま使うんですが元々あるならそっち使いたいと思いまして。

function test($arr,$str){
foreach ($arr as $a){
if( strpos($str,$a) !== FALSE )
return TRUE;
}
return FALSE;
}


717 :nobodyさん:2010/04/10(土) 17:20:07 ID:Q/DxsTmS
phpでエラーが発生すると
Warning: 〜 in /home/aaaa/aaaa.php on line 337
みたいにエラーが表示されますが、これを隠すことは出来ますか?
例えば、「エラーが発生しております」のような別の文言にカエルのでもOKです。

718 :nobodyさん:2010/04/10(土) 17:29:37 ID:???
>>716
strpos(implode($arr), $a)
でいいんじゃない?
>>717
エラー制御演算子
error_reporting
display_errors
trigger_error
とか

719 :nobodyさん:2010/04/10(土) 17:31:25 ID:???
ごめん最後はerror_handlerだった

720 :nobodyさん:2010/04/10(土) 17:41:00 ID:Q/DxsTmS
>>718
エラー制御演算子初めて知りました
ありがとうございます

721 :nobodyさん:2010/04/10(土) 19:18:53 ID:+kV5bvKp
>>718
それは結果が違ってくると思います。
おそらく preg_match('/'.implode('|',$arr).'/',$str) > 0 もできないことはないですが
正規表現使わず配列で解釈させたいので>>716のような関数がないのならあのまま使うことにします。

722 :nobodyさん:2010/04/11(日) 00:06:02 ID:???
>>721
結果が違うってなんで?

723 :nobodyさん:2010/04/11(日) 02:16:00 ID:???
>>722
function test($arr,$str){
foreach ($arr as $a){
if( strpos(implode($arr),$a) !== FALSE )
return TRUE;
}
return FALSE;
}
じゃわけわからんし

function test($arr,$str){
if( strpos(implode($arr), $str) !== FALSE )
return TRUE;
return FALSE;
}
のつもりだったとしてもおかしいだろう


724 :nobodyさん:2010/04/11(日) 02:28:18 ID:???
>>723
おかしいってなんで?

725 :nobodyさん:2010/04/11(日) 02:29:55 ID:???
実際走らせてみればいいじゃん。

726 :nobodyさん:2010/04/11(日) 02:37:29 ID:???
>>723が何をいいたいのかはよく分からないけど、

$arr[0] = 'ab'
$arr[1] = 'bc'
で、abを検索するとマッチしちゃうようになると思うよ。

727 :nobodyさん:2010/04/11(日) 02:38:25 ID:???
じゃないや、bbです。
>>723の後者はこれを言ってんのかな

728 :nobodyさん:2010/04/11(日) 02:49:16 ID:???
$str = 'ABC';
$arr = array('AA','AB','AC');
var_dump(
    // AA,AB,ACのどれかが ABC内にあれば真→○
    test($arr, $str),

    // AAABAC が ABC内にあれば真→×
    strpos(implode('',$arr),$str)!==FALSE
);
function test($arr,$str){
    foreach ($arr as $a){
        if( strpos($str,$a) !== FALSE )
            return TRUE;
    }
    return FALSE;
}
求めてるのは上の機能であって下のではないんでないの。
配列の値から文字列探索すんなら in_array array_search 使えばいいだけだし。

729 :nobodyさん:2010/04/11(日) 03:45:47 ID:???
implode使うって話はstrpos($str, implode('', $arr))なんだとおもうよ。
配列の中身を全部連結したものに対して検索すればいいんでない?っていう。

730 :nobodyさん:2010/04/11(日) 07:03:55 ID:???
>>729
パラメータが逆だし
strpos(implode($arr), $str)だと境界がなくなるので結果が変わるっていうことでしょ
絶対に使いそうもない文字をはさんで文字列を作ればOK
strposはバイナリデータOKなので例えば
strpos(implode(0x00,$arr), $str)


731 :nobodyさん:2010/04/11(日) 08:06:03 ID:???
>730
注意: implode()は、歴史的な理由により、引数をどちら の順番でも受けつけることが可能です。

732 :nobodyさん:2010/04/11(日) 10:01:49 ID:3X2bc6FO
配布されてるスクリプトを見ると、
いちいち設定ファイル以外のメインスクリプトでdefinedで定数をチェックして、
なかったら定義したりしてますが、
あれはユーザーが定数を設定するとき削除したりコメントアウトしたり、
予期せぬことをしたときの対策にやっているのでしょうか?
もしそうなら個人的にはそんな勝手にいじるなら動かなくて当たり前ですよ的なスタンスでいいと思うのですが、
何か他に意味はあるのでしょうか?

733 :nobodyさん:2010/04/11(日) 10:25:51 ID:???
>>732
予想外のスクリプトを叩かれた場合の誤動作の穴が生じるのを防ぐため

734 :nobodyさん:2010/04/11(日) 10:39:38 ID:???
いままでMYSQLを必要な分だけぐぐって使ってたのですが、DBサイト作るにあたって真面目に
DB基礎本読んで正規化を学んだんですが、
PHPのサイトや最近流行のPHP+MYSQL本を読んでも、外部キーや参照の話って全くありません。
重複した値があるフィールドは別テーブルにするとか、正規化しても
外部キーとかつかった実例が紹介されてないので、実装していいものか悩みます。
PHP+MYSQLで外部キーや参照を使わない理由ってあるのでしょうか?

735 :nobodyさん:2010/04/11(日) 10:40:06 ID:xQs0jEVq
すいません上げ忘れました

736 :nobodyさん:2010/04/11(日) 11:25:37 ID:???
DBとアプリケーションの関係わかっとるかな?

737 :nobodyさん:2010/04/11(日) 11:49:58 ID:xQs0jEVq
すいません、もうちょっと具体的にお願いします。
たぶんわかってません。

738 :nobodyさん:2010/04/11(日) 12:36:15 ID:???
学ぶよりまず先に手を動かせ

739 :nobodyさん:2010/04/11(日) 12:58:23 ID:???
>>734
MySQLのデフォルトストレージエンジンMyISAMが外部キー制約をサポートしなかったり、
制約自体がデータの不整合を減らすための仕組みなだけなので
面倒くさがりな入門書なら省いちゃうかもね
パフォーマンスのためにあえて使わないケースもあるけど
よく分からないから使わない、はNGだねぇ

740 :nobodyさん:2010/04/11(日) 13:11:36 ID:???
postgresql使え

741 :nobodyさん:2010/04/11(日) 14:11:50 ID:8e9aaJ3F
VBのinstr()関数のような、何文字目に目的の文字列があるか調べ、マッチする文字列があった場合は先頭から何文字目にあるかを返す関数はありませんか?


742 :nobodyさん:2010/04/11(日) 14:12:44 ID:???
あるよ

743 :nobodyさん:2010/04/11(日) 14:13:09 ID:???
なんだっけ・・・

744 :nobodyさん:2010/04/11(日) 14:20:27 ID:???
ねーよ

745 :nobodyさん:2010/04/11(日) 14:33:37 ID:xQs0jEVq
>>738
10年手ばっかり動かして学んでこなかった結果、場当たり的なプログラミングしかできない奴に育ってしまったので
基礎学んでます。
>>739
RDBなのに全然リレーショナルしない話ばっかで、なんか使わない理由あるのかな?ってすごい不思議です。
DB本だとかならず正規化するといいよ!って話がでるのに。
入門書だけでなく、本屋にあるPHP本全部みても話題にでてないし、ぐぐっても解説してるところがほとんどないもので・・・
参照してるやつは消せないとか、具体的な実装例とかそういうのみたかったのですが、自分で試すしかない感じです。

>>741
strposとかpreg_matchとか

746 :nobodyさん:2010/04/11(日) 14:43:20 ID:???
基礎を学びたいと言っておいて結局コピペできるサンプルを欲しがってるだけじゃないの?

DB本で正規化のこと学んで、PHP本でAPIの使い方学べば、あとは自分で正規形のDBを操作するPHPアプリ作れるだろ

747 :nobodyさん:2010/04/11(日) 14:47:32 ID:xQs0jEVq
そうですね。自分で解決することにします。お騒がせしました。

748 :nobodyさん:2010/04/11(日) 14:51:14 ID:???
>>747
ここの連中はバカとはさみは使いようって感じで情報聞き出せればおk程度に思っといたらいいよ
丁寧に聞いてるとなかなか言わないからな、天邪鬼だから。

例えば間違いをわざと誇張するとかオススメ。
自信満々なアホが釣られて正しく答えてくれる。

749 :nobodyさん:2010/04/11(日) 14:53:59 ID:???
そこまでしないと情報を獲得できないなんて情弱は哀れだな

750 :nobodyさん:2010/04/11(日) 14:57:52 ID:???
基本的にすぐ煽るやつは質問者よりも技術的にレベル低い事多いから、
自分で調べた方が速いよ。
>>746とかいい例。
質問の意味を理解してない。

751 :nobodyさん:2010/04/11(日) 15:01:52 ID:???
情弱ほど情弱という言葉使いたがる不思議

752 :nobodyさん:2010/04/11(日) 16:00:17 ID:???
>>748
おまえ、質問したけど態度が悪すぎて答えてもらえなかったから恨んでるんだなw

753 :nobodyさん:2010/04/11(日) 16:11:17 ID:???
>>750
え?普通に合ってると思うが。

754 :nobodyさん:2010/04/11(日) 16:16:31 ID:???
>>739
>よく分からないから使わない、はNGだねぇ
仕事では、「よく分からないものは使わない」が正解だと思うけど


755 :nobodyさん:2010/04/11(日) 16:17:08 ID:???
それが使うべきものかもしれないじゃないか

756 :nobodyさん:2010/04/11(日) 16:21:46 ID:???
だったら、よく分かるまで勉強しろ

757 :nobodyさん:2010/04/11(日) 16:24:07 ID:???
739はそれを言ってるんだろw

758 :nobodyさん:2010/04/11(日) 16:34:59 ID:???
>>752
お前よく釣られるタイプだろw

759 :nobodyさん:2010/04/11(日) 18:01:14 ID:xnCsJMSA
昨日からPHPの勉強はじめたんだがなんでXAMPPじゃ駄目って言う人多いの?
なんかセキュリティがどうとか、本番では使わないとかいってるんだが

760 :nobodyさん:2010/04/11(日) 18:03:41 ID:???
>>759
気にするな

761 :nobodyさん:2010/04/11(日) 18:10:02 ID:???
うむ気にするな 自己責任だ

762 :nobodyさん:2010/04/11(日) 18:12:05 ID:???
>>759
> 昨日からPHPの勉強はじめたんだがなんでXAMPPじゃ駄目って言う人多いの?

俺もそこらへん知りたい。

EclipseでPHPを実装しようと思ってるんだけど
実行環境やデバッグ環境はどれを選んだらいいんだろう?

XAMPPでPHP・Apache・MySQLを一式インストールして実行・デバッグ環境を構築するのが今のトレンド?

763 :nobodyさん:2010/04/11(日) 18:18:17 ID:???
>>762
勉強で使うなら好きにすればいいと思うけど
そもそもなんでDBがMySQLって固定されてるんだ?
俺はPostgreSQL派なのでw

自分用のカラオケ(リクエスト番号)リストのwebアプリを作ったときは、
普通のエディタでつくったけどね
テストは、外部に出てるサーバにあげて、そのまま本番運用w
自分用だしね

764 :nobodyさん:2010/04/11(日) 18:38:02 ID:xnCsJMSA
勉強用で使うなら、って事は将来的には変える事になるってこと?

765 :nobodyさん:2010/04/11(日) 18:42:10 ID:???
XAMPPは開発が楽なように各種設定がセキュリティ的にゆるく
なってるんだよ。
それだけだから気にするな

766 :nobodyさん:2010/04/11(日) 18:44:10 ID:???
>>764
仕事で使うときは必ずしも自分が好きな環境が使えるわけじゃないよ
IDEごときに振り回されるようじゃやってられません

767 :nobodyさん:2010/04/11(日) 18:55:49 ID:???
ニートの俺は勝ち組ってことか

768 :nobodyさん:2010/04/11(日) 20:15:20 ID:???
tet

769 :nobodyさん:2010/04/11(日) 20:37:42 ID:???
仮想環境にLINUXをインストール、LAMPを構築してsambaとかじゃねーか将来のためにヴァージョン管理も入れておけ

770 :nobodyさん:2010/04/11(日) 22:35:31 ID:???
別にXAMPPを使っているからといって大して問題にもならないし
後で困ったらその時また勉強出来ていいじゃまいか

771 :nobodyさん:2010/04/11(日) 23:28:59 ID:???
好きな環境使えばいいよ。
それでやった考え方は言語や環境変わっても役には立つ。

772 :nobodyさん:2010/04/11(日) 23:36:45 ID:???
しかし、apache、php、mysqlをインスコするのが面倒といわれたのには驚いた

773 :nobodyさん:2010/04/11(日) 23:49:11 ID:???
面倒っつ〜かセキュリティ的にね・・・

774 :nobodyさん:2010/04/11(日) 23:53:42 ID:???
http://builder.japan.zdnet.com/news/story/0,3800079086,20384129,00.htm
ここの通りインスコした場合セキュリティ的にはどう?

775 :nobodyさん:2010/04/11(日) 23:56:59 ID:???
>>773
>>765と言ってることが違ってますなあ

776 :nobodyさん:2010/04/11(日) 23:58:09 ID:???
>>772
いや、それは慣れててスムーズに出来ても面倒なことに変りないだろ。
「俺は面倒じゃないぜ!」なんてかっこつけにもなっとらんぞ。
手間かけなくて良いときはかけないほうが賢い。

777 :nobodyさん:2010/04/12(月) 00:02:10 ID:???
はいはいXAMPP使ってる人は賢い賢い

778 :nobodyさん:2010/04/12(月) 00:04:20 ID:???
だからさ、何度も言ってるけどXAMPPは個別に入れてもXAMPP使っても全く同じことができる人のための物で
決して知識の無い初心者でも手軽に鯖環境を構築できるための物じゃないんだよ

779 :nobodyさん:2010/04/12(月) 00:06:13 ID:???
XAMPPはNGってことで

780 :nobodyさん:2010/04/12(月) 00:16:27 ID:???
どうしてもダメだってことにしたい必死な人がいるんだよね。このスレに。

781 :nobodyさん:2010/04/12(月) 00:18:34 ID:???
信者が必死ですね

782 :nobodyさん:2010/04/12(月) 00:19:31 ID:???
XAMPPを入れて完璧に使いこなせてる奴以外は使うな

783 :nobodyさん:2010/04/12(月) 01:12:05 ID:???
>>730
> strpos(implode(0x00,$arr), $str)
この例は動くのか?

784 :nobodyさん:2010/04/12(月) 01:26:18 ID:???
動くが0x00ってつまり0だから意味ない。
意味のあるデリミタにするなら"\x0"かchr(0)じゃないと。

しかしどっちにしろ>>716の関数だと探索するのは$arrのどれか1つであって
$strじゃなくね?

785 :nobodyさん:2010/04/12(月) 02:08:32 ID:???
意味がないというか、意味が変わっちゃうよね。
要素またいでいても引っかかっちゃう。

786 :nobodyさん:2010/04/12(月) 02:10:30 ID:???
え? XAMPPってローカル開発環境でしょ?
いくらなんでもあれそのままグローバルに公開する人いないでしょ。

787 :nobodyさん:2010/04/12(月) 02:12:51 ID:???
いざグローバルになると困るんだとさ。意味がさっぱり分からんけど。
与えられた特定の環境でしか使えない人間が言いそうだよね。

788 :nobodyさん:2010/04/12(月) 02:18:52 ID:???
ああ、XAMPPで入門すると本番環境構築できないよ、ってこと?
そんなのプログラムの勉強とサーバの勉強切り分けりゃいいんじゃねーの?

Linuxメインで開発してる身からするとWindowsは開発環境構築めんどくせーなと
思ってたからXAMPP出たときは便利になったなーと思ったけどな。


789 :nobodyさん:2010/04/12(月) 02:55:47 ID:???
XAMPP使って鯖の質問してくる奴にそう言え

790 :nobodyさん:2010/04/12(月) 03:58:34 ID:???
実際の鯖をインストール&稼働するのではなく仮想的な環境を構築してその中で実行できないものかね?

791 :nobodyさん:2010/04/12(月) 06:45:02 ID:???
すればいいじゃん
楽になる面も多々あるよ

792 :nobodyさん:2010/04/12(月) 07:22:04 ID:???
技術的なことになると簡単なことでもわざわざ難しく書くキチガイが多くて初心者が戸惑いやすいっていう現象が起こっている気がする
本でもネットでも掲示板でもそう

793 :nobodyさん:2010/04/12(月) 07:47:23 ID:???
例えばどういうの?

794 :nobodyさん:2010/04/12(月) 08:09:50 ID:???
ただ単に知識がないから難しく聞こえるだけだろw

795 :nobodyさん:2010/04/12(月) 08:43:40 ID:???
さすができるプログラマさんパネェっす

796 :nobodyさん:2010/04/12(月) 09:03:59 ID:???
XAMPP禁止でいいだろ
信者がうぜえし

797 :nobodyさん:2010/04/12(月) 09:06:43 ID:???
信者よりもアンチのほうが鬱陶しい
好きなもん使えばいいだろ

798 :nobodyさん:2010/04/12(月) 10:02:04 ID:???
Q.xamppを入れるとサーバウェアが入るので外からアクセスうけませんか?
A.LANからはアクセスできますがポートが開いてないとWANからはアクセスできないので平気です
Q.xamppの利点を教えてください
A.設定ほぼ不要ですぐに使えるphpの開発環境が整えれます
Q.このスレではxamppが嫌われてるようですが?
A.そんなことはありません
Q.肯定派と否定派は存在しますよね?
A.そのようですね
Q.肯定派の意見を聞かせてください
A.我々はプログラムをしてるのであってサーバの構築をしているのではないといったところでしょうか
Q.否定派の意見を聞かせてください
A.各個設定できないと問題に対処しきれないといったところでしょうか
Q.具体的にはどういうことでしょうか?
A.開発環境と本番環境では必ずしも環境が同じではないので動く保証がないということです
Q.もう少し具体的に教えてください
A.OSやPHPのバージョンによっては使えなかったり動作が異なる関数があります
バージョン条件は満たしていてもモジュールがインストールされてなかったり無効になっていて使えない関数もあります
直接関係ありませんがDBやhtaccessを絡める場合それらのバージョンにも留意する必要があります
Q.本番環境でつまづかないためにはどうしたらいいですか?
A.本番環境にあわせた開発を心がけましょう
モジュールがインストールされていてかつ有効にされていないと使えない関数はphpinfoを見て使えるか調べましょう
OS・バージョンを確認してPHPマニュアルで使いたい関数がそのバージョンで使えるか確かめます
直接は関係ないですがDBを使う場合やhtaccessを内包する場合等それらのバージョンも関係してきます
Q.結局xamppは使うべきですか?
A.本番環境にあわせた開発を心がけるべきですがそれら環境を整えるのは限界があります
PHPをやるために慣れないOSをいじって挫折したら本末転倒です
なので自信のない人はxamppでもいいと思います
困るケースとしては本番環境で使いたいモジュールが開発環境(xampp)で使えない場合ぐらいです
xampp該当モジュールを有効にするだけでいい場合は調べればすぐに解決できるでしょう
解決に至らない場合でもモジュールに頼らない書き方があればそれを採用すればよいでしょう
xamppユーザは柔軟に対応しましょう

799 :nobodyさん:2010/04/12(月) 10:04:28 ID:???
>直接は関係ないですがDBを使う場合やhtaccessを内包する場合等それらのバージョンも関係してきます
消したつもりだったのにッ
大事なことなので2回言いましたってことで許してね(はぁと

800 :修正:2010/04/12(月) 10:09:25 ID:???
Q.xamppを入れるとサーバウェアが入るので外からアクセスうけませんか?
A.LANからはアクセスできますがポートが開いてないとWANからはアクセスできないので平気です
Q.xamppの利点を教えてください
A.設定ほぼ不要ですぐに使えるphpの開発環境が整えれます
Q.このスレではxamppが嫌われてるようですが?
A.そんなことはありません
Q.肯定派と否定派は存在しますよね?
A.そのようですね
Q.肯定派の意見を聞かせてください
A.我々はプログラムをしてるのであってサーバの構築をしているのではないといったところでしょうか
Q.否定派の意見を聞かせてください
A.各個設定できないと問題に対処しきれないといったところでしょうか
Q.具体的にはどういうことでしょうか?
A.開発環境と本番環境では必ずしも環境が同じではないので動く保証がないということです
Q.もう少し具体的に教えてください
A.OSやPHPのバージョンによっては使えなかったり動作が異なる関数があります
バージョン条件は満たしていてもモジュールがインストールされてなかったり無効になっていて使えない関数もあります
直接関係ありませんがDBやhtaccessを絡める場合それらのバージョンにも留意する必要があります
Q.本番環境でつまづかないためにはどうしたらいいですか?
A.本番環境にあわせた開発を心がけましょう
モジュールがインストールされていてかつ有効にされていないと使えない関数はphpinfoを見て使えるか調べましょう
OS・バージョンを確認してPHPマニュアルで使いたい関数がそのバージョンで使えるか確かめましょう
Q.結局xamppは使うべきですか?
A.本番環境にあわせた開発を心がけるべきですがそれら環境を整えるのは限界があります
PHPをやるために慣れないOSをいじって挫折したら本末転倒です
なので自信のない人はxamppでもいいと思います
xamppで困るケースとしては本番環境で使いたいモジュールが開発環境で使えない場合ぐらいです
開発環境で該当モジュールを有効にするだけでいい場合は調べればすぐに解決できるでしょう
解決に至らない場合でもモジュールに頼らない書き方があればそれを採用すればよいでしょう
xamppユーザは柔軟に対応しましょう

801 :sage:2010/04/12(月) 10:41:30 ID:???
WindowsにXAMPP入れて使ってると構築したりする時間を省けてラクではあるけど
Windowsでは使えない関数があったり、セキュリティとかエラー関係がゆるく設定されていることがあるから
いざ本番のLinux環境で使うと、動かなかったりエラーを吐いたりするってだけ。
最初から本番に近い環境でやってればそういう心配が減るってだけだと思う。


802 :nobodyさん:2010/04/12(月) 10:44:07 ID:???
>>792
簡単なことでも注意すべき点が多いってことじゃないかなぁ
デフォでセキュアにしたらSELinuxとかVistaのUACとかで初心者が参っちゃったじゃん。
なれてればどちらも有効にしておくのが楽になるけども。

803 :nobodyさん:2010/04/12(月) 11:04:25 ID:???
XAMPPの良し悪しが分からないような人に本番なんてないだろ

804 :nobodyさん:2010/04/12(月) 11:07:36 ID:???
>>797
おまえがいちばんうっとうしい

805 :nobodyさん:2010/04/12(月) 11:27:57 ID:???
>>804
一番最後に煽ってないと気が済まないこういうのがいる限りこのスレは伸びる

806 :nobodyさん:2010/04/12(月) 11:37:23 ID:???
>>805
じゃあ、おれも

807 :nobodyさん:2010/04/12(月) 11:44:39 ID:???
>>805自身がそうであることに気づいてないところが笑いどころかw

808 :nobodyさん:2010/04/12(月) 11:46:29 ID:???
>>807
おまえもな

809 :nobodyさん:2010/04/12(月) 11:48:00 ID:???
>>808
おまえもな


810 :nobodyさん:2010/04/12(月) 11:49:05 ID:???
>>809
おまえもだろks

811 :nobodyさん:2010/04/12(月) 11:49:29 ID:???
XAMPPの話はスレ違いだから、二度と話題に出さなければいいだけ

812 :nobodyさん:2010/04/12(月) 11:50:16 ID:???
XAMPPって結局どうなの?
使わない方がいいの?

813 :nobodyさん:2010/04/12(月) 11:56:05 ID:???
振り出しに戻ると

814 :sage:2010/04/12(月) 11:59:43 ID:???
本番と同じ環境が用意できるならそれ使うにこしたこた〜ない
つ〜か>>800で答え出てるんじゃね?

815 :nobodyさん:2010/04/12(月) 12:05:25 ID:???
>>812
自分で鯖構築できる奴だけが使っていいモノ。
鯖構築出来ない奴にWebProgramを弄る資格は無い。

816 :nobodyさん:2010/04/12(月) 12:21:12 ID:???
>>805
嫌われるプログラマの体質でもあるな

817 :nobodyさん:2010/04/12(月) 12:22:08 ID:???
>>815
おまえは何様?

818 :nobodyさん:2010/04/12(月) 12:23:07 ID:???
馬鹿ばっか

819 :nobodyさん:2010/04/12(月) 12:24:18 ID:???
>>817
君と違って鯖構築出来るプログラマ様ですが?

820 :nobodyさん:2010/04/12(月) 12:32:39 ID:???
鯖って・・・恥ずかしく無いですか?

821 :nobodyさん:2010/04/12(月) 12:39:25 ID:???
普通vmware+ubuntuで開発するよねー

822 :nobodyさん:2010/04/12(月) 12:42:32 ID:???
素人はだまってろ
プロはxubuntu一択

823 :nobodyさん:2010/04/12(月) 12:54:35 ID:???
ぼくちゃんこの環境じゃないとつくれーないってか。

どこがプロだw

824 :nobodyさん:2010/04/12(月) 12:55:41 ID:???
>>821
ごめん、VirtualboxとDebianだわ。

825 :sage:2010/04/12(月) 13:07:38 ID:???
おれはVirtualBox + CentOSだな
会社がRedhat使ってるってのも理由だけど。

826 :nobodyさん:2010/04/12(月) 13:11:29 ID:???
俺ぐらいになればどの環境で開発しても本番でも動くから問題ないけどな
そういう心配するやつはフレームワークで開発すればいいよ
共通化しまくってるからあえて環境選ぶ書き方しない限り問題ないだろう

827 :nobodyさん:2010/04/12(月) 13:12:28 ID:???
>>821
>>824
作業用マシンの事を言ってるの?サーバの事をいってるの?

作業用マシンの事なら、仮想環境上でわざわざ作業するの?
サーバの事なら、debian系って珍しいね、CentOS使わないの?

828 :nobodyさん:2010/04/12(月) 13:13:45 ID:???
開発をあえてlinuxでやるのが理解できない
windows持ってない人なのかな?w

829 :sage:2010/04/12(月) 13:25:15 ID:???
本番環境がWindowsって事が今までなかったな。
俺だけかもしれんが。

830 :nobodyさん:2010/04/12(月) 13:32:31 ID:???
>>828
ゲームとかグラフィックス系の事やらないならwindowsより使いやすいと思ってる
開発はNetbeans使ってるからOS差はそんなに関係ないし
やっぱシェルが大きい、細かい事をコマンドでさくさくできるのがいい
あとはサーバと作業用PCのOSが統一できるのも良い

もっともwindowsもPowerShell使いこなしていれば良いのかもしれないが。

831 :nobodyさん:2010/04/12(月) 13:46:21 ID:???
>>829
Windows鯖を提供しててあえてWAMP構成にするようなとこはないよ
WIMA(Windows+IIS+MSSQL+ASP(.NET))が一般的かと
企業のアプリケーション鯖はほとんどそんな感じだが

832 :nobodyさん:2010/04/12(月) 14:28:00 ID:???
脱線しすぎだろw
スレタイみて書き込めよ

833 :sage:2010/04/12(月) 14:30:43 ID:???
pearって時代遅れなの?
pearで不便を感じたことないからそのまま使ってるんだけどzendとかcakeとかの方がメリットあるかね?

834 :nobodyさん:2010/04/12(月) 15:37:25 ID:pqNtwkfV
質問させてください。
同じプログラムを同時に実行しないように出来ませんか?
例えばteratermで人が"hoge.php"を実行しているときは、他の人が"hoge.php"を実行しようとしてもすぐ処理を中止するようにしたいです。

835 :nobodyさん:2010/04/12(月) 15:47:19 ID:???
>>834
古典的だけど、実行時にファイル作って終了時にファイル消すって作りにしたら?

apacheとかにあろうhttpd.pidみたいにプロセスID入れたファイルとかを作り、
「もしそのファイルがあるなら実行しない」をスクリプトの最初に書いておけば良いと思う

836 :nobodyさん:2010/04/12(月) 15:47:58 ID:???
mutex

837 :nobodyさん:2010/04/12(月) 15:52:05 ID:???
とおもったらmutex用意されてなかった。
ファイルロックかなぁ。

838 :nobodyさん:2010/04/12(月) 16:26:33 ID:???
>>833
もう少し勉強しろ

839 :質問:2010/04/12(月) 16:32:44 ID:???
質問させてください。
あるページをFILE関数でHTMLファイルにしたいのですが、
そのページがPOSTされた値を反映するページだと上手くいきません。
例えば
<?php
print'あなたの名前は$_POST['name']です';
?>
を表示しても
「あなたの名前はです」
になってしまいます。
なにか良い方法はありますか?

840 :nobodyさん:2010/04/12(月) 16:48:38 ID:???
>>839
シングルクオート中は変数として評価されないから$_POST['name']という文字列で評価されるはず
あとエスケープしてないので文字列['name']の最初のシングルクオートのところで終了と判断されて
パースエラーになるはずだが
確認してないから断言はできないが
>「あなたの名前はです」
こういう結果はでないんじゃね

↑でいったことを直すには
print 'あなたの名前は' . $_POST['name'] . 'です';
もしくは
print "あなたの名前は{$_POST['name']}です";
といったかんじにする

んでスレタイ読んでね
質問はエスパーすぎてよくわかりません・・・

841 :nobodyさん:2010/04/12(月) 16:55:39 ID:???
>>839
phpのスクリプトはダウンロードできないよ
良い方法もないです

842 :nobodyさん:2010/04/12(月) 17:05:39 ID:???
>>839
エスパーすると

curlでPOSTしてあげて結果のHTMLを受け取ればOK
「php curl post」で検索するといっぱいでてくる。

843 :839:2010/04/12(月) 17:32:32 ID:???
>>840-842
返答ありがとうございます。
言葉足らずで申し訳ないです。
前述の条件でPHP実行後のHTMLソースを抜き出したかったのです。
なので、まだググッてはないですが842さんが1番望む答えに近いかも。
またわからなかったらテンプレ読んだうえで再度質問させていただきます。
ありがとうございました

844 :nobodyさん:2010/04/12(月) 17:36:40 ID:???
エスパー力が足りなかった。精進する

845 :839:2010/04/12(月) 17:49:02 ID:???
>>844
いやいやいやいや、そんなことないです。
私の質問の仕方が悪すぎました。
本当にすいませんでした。
どうかお気になさいませぬように

846 :nobodyさん:2010/04/12(月) 17:56:22 ID:???
まずはテンプレ読んでIDだそうな

847 :nobodyさん:2010/04/12(月) 18:06:13 ID:???
ID無しにしれっと答えるやつもいるからもう成り立たんぜよ

848 :nobodyさん:2010/04/12(月) 18:14:44 ID:???
テンプレ守ってる奴みたこと無いからな

849 :nobodyさん:2010/04/12(月) 18:21:49 ID:???
点プレとかいらねーし

850 :nobodyさん:2010/04/12(月) 18:22:01 ID:???
perlでの暗号化について質問です。
暗号化により作られた暗号文を毎回同じ結果として出力したいのですが、
何か便利なものはありますでしょうか

Blowfishを使ってみましたが毎回暗号化結果が違います。
use strict;
use Crypt::CBC;

my $key = 'testkey';
my $strings = "test";
my $cbc = Crypt::CBC->new({
key => "$key",
cipher => 'Blowfish',
padding => 'null'
});
my $crypted = $cbc->encrypt_hex($strings);

print $crypted, "\n";

blowfishで不可能であれば何か別の手段を教えていただけると幸いです。

851 :nobodyさん:2010/04/12(月) 18:28:14 ID:???
スレ間違えちゃったんだね

852 :nobodyさん:2010/04/12(月) 20:22:50 ID:???
別の手段にphpが含まれているといってみる

853 :nobodyさん:2010/04/12(月) 21:34:39 ID:???
>何か便利なものはありますでしょうか
PHP

854 :nobodyさん:2010/04/12(月) 22:30:56 ID:???
タイミング的に釣りだろw

855 :nobodyさん:2010/04/12(月) 23:05:56 ID:xbOcApfN
PHPで公開鍵暗号方式を使う方法ってありますか

856 :nobodyさん:2010/04/12(月) 23:10:08 ID:xbOcApfN
http://jp.php.net/manual/ja/function.openssl-public-encrypt.php
あったわ

857 :nobodyさん:2010/04/12(月) 23:25:38 ID:???
go-pear.phpでpearインストールした後に、誤って管理ページのphp消しちゃった…。
どこかででダウンロードできない?

858 :nobodyさん:2010/04/12(月) 23:28:04 ID:???
go-pear.php

859 :nobodyさん:2010/04/12(月) 23:35:25 ID:???
http://go-pear.php/

860 :nobodyさん:2010/04/13(火) 20:16:02 ID:+9H6Il1u
【OS名】CentOS 5
【PHPのバージョン】php5.2.13
【連携ソフトウェア】mysql
【質問内容】
データベースはMySQLで、
15分間隔でやや多めのデータをマルチプルINSERTしているのですが、
この場合は、PDOとMySQLiとでどちらのほうが速いのでしょうか?

マルチプルで一括INSERTしたら終了するPHPを、
cronで15分間隔に動かしています。

PDOのプリペアードステートメントというのは
似たSQLで1行ずつ繰り返しINSERTするような場合に有効なのですか?

861 :nobodyさん:2010/04/13(火) 20:40:29 ID:???
そうです
insert selectのような、一回で複数行挿入するような場合にはさして効果は見込めません

862 :nobodyさん:2010/04/13(火) 20:43:36 ID:ETgmCczc
掲示板のプログラムなんですが、
http://www.1kara.net/php/practice/bbs/source.php
/*----- ※7 -----*/
//最終書き込み番号(logの最初の数字)を取得し、今回の書き込みNoを生成
$lastNo = ereg_replace("^([0-9]+),.+$","\\1",$data[1]);
$putNo = ++$lastNo;

ここがよくわかりません・・・ereg_replace("^([0-9]+),.+$","\\1",$data[1]);
このカッコの中身が・・・これはどう処理されてるんでしょうか?

863 :nobodyさん:2010/04/13(火) 21:08:36 ID:+9H6Il1u
>>861
ありがとうございました。

864 :nobodyさん:2010/04/13(火) 22:06:37 ID:Pebc2mYy
mysqlでinsertしてデータに連番で番号を付けています。
insert完了後にそれが何番であったか知りたいのですが、selectするしかないのでしょうか?
insertの処理で返って来るようにはできますか?

865 :nobodyさん:2010/04/13(火) 22:09:30 ID:???
>>864
AUTO_INCREMENT だよな?
INSERTクリークを発行したあとに
mysql_insert_id()

http://jp2.php.net/manual/ja/function.mysql-insert-id.php


866 :nobodyさん:2010/04/13(火) 22:13:33 ID:???
酔ってて間違えた^^;
×クリーク
○クエリー

867 :nobodyさん:2010/04/13(火) 22:14:21 ID:Pebc2mYy
>>864
ありがとうございます!

868 :nobodyさん:2010/04/13(火) 22:21:21 ID:???
>>862

正規表現を使わない場合はちょっと違う動作にはなるけどこんな感じ

list($lastNo, $tmp) = explode(",", $data[1], 2);

要するにカンマで区切られた文字列から一つ目のカンマの前にある数字を$lastNoに入れるってことかな



869 :nobodyさん:2010/04/14(水) 16:36:12 ID:???
function hoge($arg, $arg1 = 1, $arg2 = 2, $arg3 = 3)

という関数があって
第1引数と第3引数のみ指定して呼び出したい場合は
どうやって記述するのでしょうか?

無理なのかな?

870 :nobodyさん:2010/04/14(水) 16:41:30 ID:???
パラメータをハッシュにしたら

871 :nobodyさん:2010/04/14(水) 16:54:47 ID:???
第2をnullにする
ついでにスレタイ嫁

872 :nobodyさん:2010/04/14(水) 16:59:27 ID:???
nullが入るだけじゃん

873 :nobodyさん:2010/04/14(水) 17:00:20 ID:???
null入れたらだめでしょw

874 :nobodyさん:2010/04/14(水) 17:07:54 ID:???
nullでいいと思うよ
関数hogeの中身をいじれないなら駄目だけど。

875 :nobodyさん:2010/04/14(水) 17:12:43 ID:oynBSGJd
関数hogeはライブラリのため修正できません

null指定したら、nullになりませんか?

876 :nobodyさん:2010/04/14(水) 17:15:05 ID:???
nullになるよ


877 :nobodyさん:2010/04/14(水) 17:22:04 ID:???
一般的なライブラリでそのような事態になるのは、使い方が特殊すぎる、または使い方が悪い
そうではないライブラリなら、ライブラリが悪い可能性がある

878 :nobodyさん:2010/04/14(水) 17:33:36 ID:???
function hogehoge($arg,$arg1=1,$arg3=3,$arg2=2)
{
hoge($arg,$arg1,$agr2,$arg3);
}

879 :nobodyさん:2010/04/14(水) 18:25:12 ID:oynBSGJd
無理ということが分かったので、きっぱり諦めます

ありがとうございました

880 :nobodyさん:2010/04/14(水) 18:38:28 ID:???
はい

881 :nobodyさん:2010/04/14(水) 18:39:51 ID:???
超初心者ですいません。
imgタグを複数取得したいんですが、
preg_match_all('/<img(.*?)>/',$URL,$AAA);
として、

echo $AAA[0];
echo $AAA[1];

とすると、2つめの$AAA[1]はタグ内のsrc以下が表示されてしまいます。
次のimgを出力するにはどうすればいいですか?
基本的すぎると思いますがよろしくお願いします。

882 :nobodyさん:2010/04/14(水) 18:52:47 ID:???
preg_match_all('/<img(?:.*?)>/',$URL,$AAA);

超初心者とか基本的すぎるとかくだらない修飾はいりません。
基本的すぎると卑下するぐらいならマニュアルでも読んでください。

883 :nobodyさん:2010/04/14(水) 18:58:14 ID:???
>>881
var_dump($AAA);
echo $AAA[0][0];
echo $AAA[0][1];

884 :nobodyさん:2010/04/14(水) 19:42:07 ID:???
卑下してることに突っ込むより、スレタイ読んでないことに突っ込め

885 :nobodyさん:2010/04/14(水) 19:56:19 ID:???
>>881
http://php.net/manual/ja/function.preg-match-all.php

ID無しには、それ指摘しないでスルーしとけ書いておくか?
それも読まれずに、ID出せって書き込みが出るんだろ。
それか、質問と回答以外の書き込み禁止にでもするか?



886 :nobodyさん:2010/04/14(水) 19:58:54 ID:???
なんて?

887 :nobodyさん:2010/04/14(水) 20:08:33 ID:???
なにしてもIDなしの質問はなくならないよ

888 :nobodyさん:2010/04/14(水) 20:28:27 ID:???
検索語のリストファイルと辞書ファイルを用意して
for(検索語)の中にfor(辞書)を入れて総当たりで調べるより
効率的な方法ってありますか?

889 :nobodyさん:2010/04/14(水) 20:29:28 ID:???
ありません

890 :nobodyさん:2010/04/14(水) 20:29:46 ID:???
どちらかを連想配列に

891 :nobodyさん:2010/04/14(水) 20:31:33 ID:???
>>887-888
いい流れだ

892 :nobodyさん:2010/04/14(水) 20:37:07 ID:K3XQO6To
>889-891
ありがとうございましたm(_ _)m

893 :nobodyさん:2010/04/15(木) 12:08:02 ID:???
置換で、この文字列次の行の頭に指定した文字列がくるようにできますか?

894 :nobodyさん:2010/04/15(木) 12:10:37 ID:???
>>1

895 :nobodyさん:2010/04/15(木) 13:55:01 ID:???
次スレからは「下らねぇ質問はID出しても出さなくてもいいから書き込みやがれ」だな

896 :nobodyさん:2010/04/15(木) 14:15:28 ID:???
>>895
お前はプログラムをやめろ
冗長的な思考の持ち主には向いてない

897 :nobodyさん:2010/04/15(木) 14:39:59 ID:???
>>896
下らねぇレスですね

898 :nobodyさん:2010/04/15(木) 15:40:10 ID:???
このスレを存続させたいなら従来のようにID無し質問が来たら即
解決しましたのレスを付ける地味な手法を粛々と

899 :nobodyさん:2010/04/15(木) 16:12:13 ID:???
最近じゃ出さないほうが珍しかったのに
ここ連続できてるの見ると同一人物か
前後の流れ見て意図的にやってるとしか思えない
スルーしとけばいいこと

900 :nobodyさん:2010/04/15(木) 16:14:35 ID:???
スレ番70台辺りから>>898みたいなクズが居座りだしたので
ID出すようになったんだよな
いっそIDが出る板に移動した方がいいぐらいだ

901 :900:2010/04/15(木) 18:30:27 ID:???
自己解決しました

902 :901:2010/04/15(木) 18:41:05 ID:???
と思ったら夢でした。

903 : ◆7700dtA.zw :2010/04/15(木) 19:15:11 ID:???
こまけーこと気にしてバカじゃねぇの???
気に食わなければ答えなきゃいいし気にしないなら答えてあげればいい。
マジでぐちぐちバカじゃねぇの???
バカじゃねぇの???
ねぇ死ぬの???

904 :nobodyさん:2010/04/15(木) 19:33:36 ID:???
それを言ったら2ちゃんのレス8割は無くなるしひきニートも9.9割死ぬ

905 :nobodyさん:2010/04/15(木) 19:47:51 ID:???
>>903
気にしてるのは自分でしょうにw

906 :nobodyさん:2010/04/15(木) 21:26:11 ID:???
>>903
どしたの?

907 :nobodyさん:2010/04/16(金) 00:23:43 ID:m1X69OPF
$pattern = "(http://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$replacement = "<a href=\"\\1\">\\1</a>";
$description2 = preg_replace($pattern, $replacement, $description);
echo "<p>". $description2. "</p>";

正規表現置換の後方参照がうまくいきません
\\1がおかしいのか、どこが悪いのかわかりません
お願いします

908 :nobodyさん:2010/04/16(金) 01:23:13 ID:???
\\は\なのだから、\\1は \\\\1だろ
次はIDだしてね

909 :nobodyさん:2010/04/16(金) 02:08:18 ID:???
Windowsです。インストーラー版を使ってC:\PHPにインストールしました。
5.3.1はC:\PHP\php.iniを見に行ってたのですが,
5.3.2はC:\PHP\php.iniを見てくれません。
5.2.12はC:\PHP\php.iniを見に行ってたのですが,
5.2.9はC:\PHP\php.iniを見てくれません。
こんなものなのでしょうか?
あるいはバージョンに関係なく,当方は意図していませんが,
インストールの仕方によって変化するものなのでしょうか?


910 :nobodyさん:2010/04/16(金) 04:43:23 ID:???
>>907
試してないから経験的にいうとデリミタが設定されてないせい
$patternの中身の最初と最後に適当なデリミタを入れてみて
あとエスケープするべき記号が適切にエスケープされていないからそのせいだと思う
後方参照方法は問題ない$nか\\nでOK

911 :nobodyさん:2010/04/16(金) 07:22:16 ID:m1X69OPF
>>910
その二点を修正したら上手くいきました。
本当に助かります。どうもありがとうございました。

912 :nobodyさん:2010/04/16(金) 19:18:03 ID:???
>>909
見てくれないと判断した理由は?
phpinfo()で、どう見える?

913 :nobodyさん:2010/04/16(金) 22:28:09 ID:???
>>912
phpinfo()で,バージョンによって,
C:\PHP
であったり,
C:\Windpws
であったりします。


914 :nobodyさん:2010/04/16(金) 23:05:13 ID:???
レジストリは?
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\バージョン
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\バージョン
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\バージョン
の IniFilePath

915 :nobodyさん:2010/04/17(土) 00:32:52 ID:???
>>914
HKEY_LOCAL_MACHINE\SOFTWARE\PHPには
InstallDir
Version
WebServerType
この3つしかありませんでした。


916 :nobodyさん:2010/04/17(土) 01:48:47 ID:???
>>914
IniFilePathを加えて,C:\PHPを指定して,IISも再起動させてみましたが,infoの表示はC:\Windowsになります。


917 :nobodyさん:2010/04/17(土) 02:00:08 ID:???
ていうか、なんでC:\PHP\php.iniを見てるのかを調べたほうが。
それが標準外の動作でしょ

918 :nobodyさん:2010/04/17(土) 03:00:09 ID:941jDBNR
XAMPPでもいれましょうか。


919 :nobodyさん:2010/04/17(土) 03:48:21 ID:???
>>917
おっしゃる通りです。
どうして,バージョンによっては,C:\PHPにあるphp.iniを見に行くことがあったのか,
よくわからなかったので,質問させていただきました。
お騒がせしてしまして申し訳ありません。


920 :nobodyさん:2010/04/17(土) 07:08:34 ID:???
C:\PHP\php.iniが標準じゃないの?

921 :nobodyさん:2010/04/17(土) 07:51:39 ID:???
Windowsでは正直にIIS使いなさい
Linuxだとapt-get install php5ってコンソールに入力するだけでapecheも一緒にインストールできるからw

922 :nobodyさん:2010/04/17(土) 13:40:34 ID:EvekmtW4
amazonでPHPの本探してたら
「PHP5徹底攻略 エキスパート編」っていう本が中古で8千〜1万円ぐらいで売られてるんですが
この本はそんなに良い本なのですか?

923 :nobodyさん:2010/04/17(土) 14:16:39 ID:???
そうでもない

924 :nobodyさん:2010/04/17(土) 14:24:54 ID:???
良い って言われても基準がわからんだろ。
初心者が買っても意味ないのは間違いない

925 :nobodyさん:2010/04/17(土) 15:44:08 ID:???
>>923
そうですか。。。
ありがとうございます。

>>924
言葉って難しいですね。
ちなみに初心者には意味がないという基準はなんでしょうか?

926 :924ではないが:2010/04/17(土) 16:20:50 ID:???
>ちなみに初心者には意味がないという基準はなんでしょうか?

そういう評をされているものと言えば、初心者向けの解説から始まっていない含まれていない、
これを読んでいる人はそういう部分は習得済みという前提で書かれているものと解するかな、俺は。

927 :nobodyさん:2010/04/17(土) 16:38:08 ID:???
リファレンス読んで理解して実装できる人くらいの意味じゃね

928 :nobodyさん:2010/04/17(土) 17:07:52 ID:???
高いからいい本っていったらそれは違うんじゃね
無駄にページ数が多いだけかもしれないし
共同著書だったり利権者が多すぎて分配を多くするために高く設定してたり
絶版になってプレミア価格がついてたりと
そんなに本が読みたければGoogle BooksでPHPの本探せばいいんじゃないかね
全部は読めないけど読める部分はいっぱいあるし

929 :nobodyさん:2010/04/17(土) 17:31:53 ID:???
googleでPHP 入門でぐぐればいいんじゃね

930 :nobodyさん:2010/04/17(土) 17:45:05 ID:???
phpで正規表現の勉強をしています。色々なサイトを巡回して勉強していたところ
次の携帯の種類を判定する正規表現を見つけました。

if (preg_match("/^SoftBank/i", $ua))
{
 //SoftBank
}

ここで質問なのですが、

@末尾にある「 /i 」 とは何を意味するのでしょか?
A先頭にある「 / 」は何を意味するのでしょうか?

B入力された文字列が "ABC" から始まっているかどうかを
判定する正規表現はどうかけばよいでしょか?
※"ABC"の後はどんな文字列が続いても構いません。

宜しくお願いします。

931 :930:2010/04/17(土) 18:12:24 ID:???
自己解決しました

932 :nobodyさん:2010/04/17(土) 18:14:53 ID:???
>>930
マッチ演算子でggr
正規表現でggr


933 :nobodyさん:2010/04/17(土) 18:22:52 ID:???
これはむごい

934 :nobodyさん:2010/04/17(土) 18:29:13 ID:???
>>931
こいつは偽者です。

>>932
燐寸でぐぐったんですがライターが出てきました。

935 :nobodyさん:2010/04/17(土) 18:29:48 ID:TQJa7Fx/
質問させてください。
PHPでブログを作成しています。
SQLiteを使って記事のインデックスを管理しようとしているのですが、データベースで文章はどの程度管理していいものでしょうか?
記事は先頭部分1000文字程度と"続きを読む"で3000文字程度です。
先頭部分だけデータベースに入れてしまうと速度的に遅くなってしまうでしょうか?

936 :nobodyさん:2010/04/17(土) 18:30:45 ID:???
↓このサイトを参考にしているのですがどうしても
末尾の「 /i 」が何を意味するのか書かれていません。


http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm


どなたか優秀な頭脳をお持ちの方お教えください。


937 :nobodyさん:2010/04/17(土) 18:34:43 ID:???
>>935
いくらでもok

938 :nobodyさん:2010/04/17(土) 18:35:21 ID:astqohQF
>>936
どんな文字列にマッチさせたいの?
そっから考えた方がいいんじゃない?

939 :nobodyさん:2010/04/17(土) 18:36:28 ID:???
>>936
だから、ageてIDだせよって。
スレタイを嫁。

940 :nobodyさん:2010/04/17(土) 18:36:32 ID:astqohQF
>>935
mysqlだけど
http://itpro.nikkeibp.co.jp/members/SI/oss/20031007/1/

941 :935:2010/04/17(土) 18:38:01 ID:TQJa7Fx/
>>937
え、本当ですか?
別ファイルに保存しようと思っていたのですが、無駄ですか?
数千文字の記事を数千件も入れてしまってパフォーマンスは問題ないのでしょうか?
そのあたりの参考になる本やウェブサイトなどご存知ありませんか?

942 :nobodyさん:2010/04/17(土) 18:52:06 ID:???
>>941
まずは検索しようよ

943 :nobodyさん:2010/04/17(土) 18:56:14 ID:???
え、sqliteってたった数千件で悲鳴上げんの?
そんなもん誰が使うんだよ

944 :935:2010/04/17(土) 18:58:30 ID:TQJa7Fx/
みなさまありがとうございます。
とても勉強になりました。
もう少し色々なサイトを見て勉強してきます。

945 :nobodyさん:2010/04/17(土) 20:16:11 ID:???
>>943
誰が悲鳴上げるって?

946 :nobodyさん:2010/04/17(土) 21:03:29 ID:???
SQLiteちゃんが悲鳴あげてる!

947 :nobodyさん:2010/04/17(土) 21:30:18 ID:???
と思ったら余裕すぎて泣いていただけでござる

948 :nobodyさん:2010/04/17(土) 23:40:18 ID:???
FORMからPOSTされたデータでなぜか'が\'に"が"\に変換されてしまいます。
もとにもどそうと思い、mb_ereg_replaceを使用しているのですが、うまく変換できません。
知恵を貸していただけないでしょうか?
$pattern = '\"';
$replace = '"';
$string2 = mb_ereg_replace($pattern,$replace,$string);
他にも色々試したのですが、全部だめでした。
念のために、以下も事前にコールしています。
mb_internal_encoding("EUC-JP");
mb_regex_encoding("EUC-JP");

949 :nobodyさん:2010/04/17(土) 23:43:01 ID:astqohQF
$patternを ' じゃなくて " でかこってみて
似たような事になってそれで解決した記憶がある

950 :948:2010/04/17(土) 23:50:22 ID:???
>>949
変換したいものが"なんです
$pattern = "\"";
$replace = '"';
でやってみてもだめでした。

951 :nobodyさん:2010/04/17(土) 23:59:58 ID:???
そもそもなぜ変換されてるの?

952 :948:2010/04/18(日) 00:08:36 ID:???
>>951
なぜなんでしょうか・・・

953 :nobodyさん:2010/04/18(日) 00:17:35 ID:???
フィルター?

954 :nobodyさん:2010/04/18(日) 00:18:43 ID:???
magic_quoteじゃないかな

955 :nobodyさん:2010/04/18(日) 00:25:11 ID:???
ああ、レスしてしまった。すまん。

956 :948:2010/04/18(日) 00:33:34 ID:???
>>954
これみたいです!
phpinfo()で確認してみたら、magic_quotes_gpcがONになってました。
ずっと悩んでいたので理由がわかってよかったです。
レンタルサーバなのでphp.iniはいじれませんが、.htaccessでOFF設定できるみたいなので、ちょっとがんばってみます。
ありがとうございました。

957 :948:2010/04/18(日) 00:45:49 ID:???
みなさまありがとうございました。
レンタルサーバの設定で.htaccessのPHP_flagsも禁止されていましたが、実行時に無効にするという方法で無事に変換されないようになりました。

958 :nobodyさん:2010/04/18(日) 00:48:15 ID:kFnU9JMb
PHP触ったことが無いのですが、仕事で8人月ほどの少し凝ったサイトのPHP案件を請け負うことになりました。
フレームワークを探してみると色々あるようですが、最近の流行はcake phpでしょうか?
個人的にsmartyというテンプレートエンジンにすごく惹かれたのですが、これは現状ではどの程度使われてますか?
あるいは他にオススメがありましたら教えていただけますでしょうか。
宜しくお願いします。

959 :nobodyさん:2010/04/18(日) 00:48:22 ID:???
めでたし。めでたし

960 :nobodyさん:2010/04/18(日) 02:05:07 ID:???
>>956
どういたしまして。
次はIDだそう。

>>958
cakeよく知らないけど cake + smarty でいいんじゃないのかな。

961 :nobodyさん:2010/04/18(日) 09:08:22 ID:???
magic_quoteをプログラムでオフにする方法教えてくれ

962 :nobodyさん:2010/04/18(日) 09:14:37 ID:???
set_magic_quotes_runtime(false);
これか


963 :948:2010/04/18(日) 10:04:59 ID:???
>>962
今、外出先で携帯から

magic_quotesでググって出てくるPHPマニュアルのページに書かれてましたよ。
20stepくらいのコードでした。

964 :nobodyさん:2010/04/18(日) 13:00:40 ID:???
1人で開発する場合はsmartyって逆に効率下がりそうだね

965 :nobodyさん:2010/04/18(日) 13:07:45 ID:???
独り言はチラシの裏で

966 :nobodyさん:2010/04/18(日) 16:01:10 ID:MhBI/ZWI
掲示板を作っているのですが、POSTされる文字列が改行なしで横に長いときに、
強制的に改行を入れて整形したいです。
どんな方法がありますか?

967 :nobodyさん:2010/04/18(日) 16:32:18 ID:???
>>966
http://jp.php.net/manual/ja/function.wordwrap.php

968 :nobodyさん:2010/04/18(日) 16:34:21 ID:MhBI/ZWI
>>967
ありがとうございます

969 :nobodyさん:2010/04/18(日) 23:17:17 ID:czBW3Szo
5.3からget_class_varsがprotectedまで返すようになってるようなんですが、
これは外部からアクセスできるメンバだけ返すようにはなりませんか?


970 :nobodyさん:2010/04/18(日) 23:42:24 ID:???
>>969
User Contributed Notesの一番上

971 :nobodyさん:2010/04/18(日) 23:43:35 ID:???
ごめん嘘だった

972 :nobodyさん:2010/04/19(月) 00:10:49 ID:???
>>969
$c = new ReflectionClass('Klass');
foreach ($c->getProperties() as $p) {
  if ($p->isPublic()) {
    echo $p->name, PHP_EOL;
  }
}

973 :nobodyさん:2010/04/19(月) 00:12:28 ID:???
docomo ID を取得するにあたり、
URLに guid=ON がついていない状態でアクセスがあった場合でも

$getValue = $_SERVER['HTTP_X_DCMGUID'];

として、 docomo ID を取得したいのですがどうすれば良いでしょうか?

具体的には、本来は@のURLでアクセスされる事を想定しているのですが、
Aでアクセスがあったとしても docomo ID を取得したいです。

@http://test_domain/get_docomo_id.php?guid=ON
Ahttp://test_domain/get_docomo_id.php



974 :nobodyさん:2010/04/19(月) 00:15:03 ID:???
スレタイ

975 :nobodyさん:2010/04/19(月) 00:18:52 ID:???
>>974
IDの出し方がわかりません。
jane Style を使って書き込みしてますので。

976 :nobodyさん:2010/04/19(月) 00:22:15 ID:???
>>975
スレ違い

977 :nobodyさん:2010/04/19(月) 00:37:00 ID:axuSXXV9
教えてください。
会社のPCに全文検索システムを作りたいと思っています。
Wikipediaで「全文検索」まではたどり着いたのですが、そこから何を選べばいいか迷ってしまいました。

現在はPostgreSQLのtsvecterを使っているのですが、サーバー用ではなく通常のWinXPを使っているのでメモリが1GBしかなく
仕事が山場なこともあって更新が20分ほどかかり、その間サーバーがかつかつになってしまいます。
過去にnamazuを趣味で使ったことがあるのですが、セキュリティ
上の都合でLANが外に繋がっていないので
namazuのインストール手順を見るとPPMファイル(?)のダウンロードが必要とのことでこれも難しいです。
プログラムはMicroSDで持っていこうと思います。
プログラムも趣味程度には書けます。データは5KB×10万件です。
今月末には部署を移るのでその前に良いものを残したいと思っています。
よろしくおねがいします。

【OS名】WinXP メモリ1GB
【PHPのバージョン】5.2.6
【連携ソフトウェア】mysql postgresql perl apache mecabはインストール済み


978 :nobodyさん:2010/04/19(月) 00:38:30 ID:???
>>977
スレ違い

979 :nobodyさん:2010/04/19(月) 00:41:54 ID:???
luceneがいいよ

980 :nobodyさん:2010/04/19(月) 00:58:21 ID:???
docomo 携帯のユーザエージェントを見ると次の表記があるのですが、

TB;W30H19

TB
W*
H*

というのは何を意味しているのでしょうか?



981 :nobodyさん:2010/04/19(月) 01:10:38 ID:axuSXXV9
>>979さん
ありがとうございます。Javaですね…
そういえば得意分野じゃなかったのでわすれてましたがtomcatもeclipiceも入ってたんでした。
プロジェクトに突っ込めば動くかな?明日やってみます。

>>980さん
↓これなんかどうでしょう(特にページ一番下のリンク)
http://www.nttdocomo.co.jp/service/imode/make/content/spec/useragent/index.html
ドコモの技術情報はトップ>サービス・機能>作ろうiモードコンテンツ、です。(偶然にも関係者なもので)

982 :nobodyさん:2010/04/19(月) 08:57:58 ID:???
携帯電話でWEBサイトにログインした場合の
判定処理をどうしようか迷っています。


携帯電話の場合、セッション管理は意味を成さないので
固体識別番号を何かのアクション(ページ遷移、ボタン押下)時に
常にDBと称号する方が無難なのでしょうか?

983 :nobodyさん:2010/04/19(月) 09:04:19 ID:???
セッション管理は意味を成さないというのは
どういう意味でしょう?

984 :nobodyさん:2010/04/19(月) 09:05:48 ID:???
>携帯電話の場合、セッション管理は意味を成さないので
ひろみちゅのHP見て勉強してから出直してきてね

985 :nobodyさん:2010/04/19(月) 09:07:48 ID:???
ひさびさに見たがまさにタイムリーな話でわろた

986 :nobodyさん:2010/04/19(月) 09:21:00 ID:???
宣言忘れたが次スレたてといた
http://pc11.2ch.net/test/read.cgi/php/1271636105/

987 :nobodyさん:2010/04/19(月) 15:03:10 ID:315TL3PF
質問です

class Hoge
{
var $test = new Test;
}
これがエラーになってしまうのですが、メンバー変数の定義時にインスタンスをセットするにはどうしたらよいでしょうか?
書き方が間違っているのでしょうか?

988 :nobodyさん:2010/04/19(月) 15:27:21 ID:???
>>987
phpの仕様です
メンバ変数定義にメンバ変数に関数や演算子は使えません
コンストラクタでやるしかないですね

989 :nobodyさん:2010/04/19(月) 15:52:56 ID:315TL3PF
あちゃー残念
ありがとうございました

990 :nobodyさん:2010/04/20(火) 20:58:38 ID:???
携帯向けのログイン機能を作成しようと思っているのですが、
AU / DOCOMO / SoftBank の場合には、
取得した固体識別番号だけで登録した名前・メールアドレスを管理するのは危険でしょうか?

つまり、
固体識別番号 + パスワード
の設定も必須にした方が良いのでしょか?

また、携帯からWEBサイトにアクセスする場合に、
特定の固体識別番号になりすまし偽装をする事は可能なのでしょうか?

991 :nobodyさん:2010/04/20(火) 21:04:47 ID:???
固体識別番号 危険
あたりでググればいくらでも出てくる
大手商用サイトでもザルだったりするけどね

992 :nobodyさん:2010/04/20(火) 22:03:23 ID:???
>>991
危険に関する認識が俺と違うっぽいなぁ。
大手商用サイトがザルというのはどういうことを指しているのか書いてみて

993 :nobodyさん:2010/04/20(火) 22:14:10 ID:???
ケータイ脳が大手SI屋にまで侵蝕、SI屋のセキュリティ部隊は自社の統率を
http://takagi-hiromitsu.jp/diary/20100417.html
ユニークIDがあれば認証ができるという幻想
http://takagi-hiromitsu.jp/diary/20100411.html
ウィルコムから回答「契約者固有IDは弊社にとって個人情報」
http://takagi-hiromitsu.jp/diary/20100403.html

高木さんは良い記事書いてる
最近は個人情報を取得しているという認識が欠けてるケータイ脳PGが多いな

994 :nobodyさん:2010/04/20(火) 22:18:42 ID:???
携帯の固体識別番号なんてちょっとPerlやPHP分かれば誰でも取れるいわば”IPアドレス”と同じようなもの
そんなザルなもので認証が出来るなんて考え自体が危険

995 :991:2010/04/20(火) 23:57:56 ID:???
>992
自分自身がケータイのヘビーユーザーではないのであまり実例は出せないんだけど
クレカ番号を覚えてるようなサービスでかんたんログインとか、正直怖いと思った

996 :nobodyさん:2010/04/21(水) 01:40:13 ID:???
これ、ただのバナーに見えるけどこれ実は裏で携帯固有ID取ってるんだぜ・・と言うことがよくある

997 :nobodyさん:2010/04/21(水) 02:25:49 ID:???
固体識別番号を送らないように設定すればいいじゃん。デフォでONになってるのは良い面もあり、悪い面もあり。

勝手サイトだからそういう危険をはらんでるのであって、固体識別番号での認識がすべて悪だという風潮は良くない

998 :nobodyさん:2010/04/21(水) 07:43:28 ID:???
悪でしかないでしょ・・Cookie使えれば全てが解決する
そんな考えだからガラケーなんて言われるんだ

999 :nobodyさん:2010/04/21(水) 10:47:51 ID:???
> そんな考えだからガラケーなんて言われるんだ
名言だな

1000 :nobodyさん:2010/04/21(水) 13:20:16 ID:???
このスレは1000の風になりました

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

255 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)