【PHP】下らねぇ質問はID出して書き込みやがれ 94
質問者はまず
>>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等)・フレームワークは各該当スレへ
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
■□■□■□■□テンプレここまで■□■□■□■□
でかした
乙 ↑これは乙
9 :
nobodyさん :2010/03/18(木) 01:11:53 ID:BU8CJWOl
関数の中でグーロバル変数を参照するには global $test と $GLOBALS['test'] 以外に方法ってないですか?
引数で参照渡し
>>9 グローバル変数を返す関数を書けば、間接的にアクセスはできる
function getGlobalVar() {
global $test;
return $test;
}
そのグローバル変数が何らかのクラスのインスタンスなら、クラス変数にする。
文字列、数値なら、$GLOBALSで十分かと。
URLから値の受け渡しをしています。 hoge.php?moji=test#hoge のような場合、#を受け取るためにはどうすればいいですか? $_GET['moji'];の返り値はtestです。 test#hogeを受け取ることは可能でしょうか。
13 :
12 :2010/03/18(木) 10:00:22 ID:3nNsoQtD
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の対策についてはワンタイムトークンがいいとか、だめだとか諸説あるようですが 結局どれがいいのでしょうか?
気になるなら複数の予防線をはるしかない 絶対にGETは使わない 前画面からセッションの発行 書き込み動作確認画面用のトークンの発行 Cookieにトークンを埋める 送信されたアクションに対して、それらを照合するロジックをつける 他にも書き込み時に、認証コードを手作業で入力させる等の手もあるが、 利用者の手間になるような方法は嫌われるので選びたくないな Captcha画像でクリックさせるのが関の山か
18 :
nobodyさん :2010/03/18(木) 14:34:05 ID:TIxzPczz
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ファイルで済ませる様な書き方だと どうしてもソースが乱雑になってしまいますよね。
最近、アンケートのフォーム作ったけど、そのときは 同じURLに集約して、メインのスクリプト内でフォーム の状況を判別して、画面ごとのテンプレートをその後 で読み込むようにしていたよ。Cookieとかリファラとか で、正しくその画面にちゃんとブラウザから辿りついた のかをチェックする処理も共通化できる。
21 :
9 :2010/03/18(木) 18:23:59 ID:???
いろいろありがとうございます!
22 :
nobodyさん :2010/03/18(木) 18:56:20 ID:Pe46n0U8
入力されたページあるいはファイルは存在しませんでした。
GD使って数式を画像として表示しようとしているんですが、「・」ができません。 その他日本語がダメです。 print"日本語"はできます。 GDをコメントすると Warning: imagettftext() [function.imagettftext]: any2eucjp(): だそうです。 mb_convert_encoding($str,"UTF-8","EUC-JP") としてもだめでした。 何か思い当たる事があれば教えてください。 お願いします。
「・」に該当するフォントがない 自分のパソコンにインストールされている物が、必ず相手の環境にあると思ったらそれは間違いだ 開発する側は、自分の常識は他人の非常識で動こうぜ
関数の使い方をマニュアル等で確認
連想配列で重複チェックをしようとしているのですがまったく分かりません・・・。 $keyがユーザー名、$valがパスワードでユーザー名の重複チェックをして重複したらエラーを出すようにしたいのです。 どうしたらいいのでしょう・・・。
>>27 $id = 'user';
$pass = 'pass';
foreach ($IDとパスの配列 as $key => $val) {
if ($key == $id && $val == $pass) {
die("重複しています");
}
}
それとIDな。
>>24 そもそも数式に「・」なんて使うのか?
どうしてもってなら、LineToとかドットを書く関数使って
□□□□
□■■□
□■■□
□□□□
みたいな点を書けばいい。めんどくさいけどな。
>>27 ユーザ確認
if (isset($arr[$id])) {
echo "重複";
}
パス合致確認
if (isset($arr[$id]) && $arr[$id] == $pass) {
echo "パス合致";
}
>>30 ありがとうございます。
issetでいけたのですねw
あとdieでエラーさせる時にフォーム画面が消えずにそのまま下に出てしまう・・・。
なぜですかorz
perlはこんなんじゃなかった気がするのに・・・。
どちらも効率悪い認証方法だな
mb_send_mailで""などの特殊な文字をメール送信すると受信時"?"に文字化けしてしまいます スクリプトの文字コードはUTF-8、受信されたメールはcharset=ISO-2022-JP、 確認画面上では正常に表示されているのですが対処法はないものでしょうか PHP5
mb_send_mailは使うな氏ねカス mailを使え
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.
今回のうpは重要だから今PHP5.3.0〜1を使ってる人はPHP5.3.2にうpしたほうがいいよ
レン鯖借りてるけど古いままなんだよな 安いから仕方ないがセキュリティに真剣じゃない鯖会社って
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を返しているのも確認済みです。 ご教示よろしくお願いいたします。
だからバージョンぐらい書いてくれない? 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ファイルはきちんと実行出来ています。 原因はどんなことが考えられるでしょうか?
ワロス
var_dump($_REQUEST); var_dump($_SERVER); これを付け加えて >ちゃんと表示されているのですが、それがきちんと表示されなく 日本語覚えなおして、1読んで出直してきな
>>46 >ソースを見るとちゃんと表示されているのですが、それがきちんと表示されなく、
考えられる原因は、視力が悪いんだと思います
50 :
44 :2010/03/20(土) 00:37:59 ID:7GREwXAK
自己解決しました。お手数おかけして申し訳ないです。 ifやelseのカッコの対応があってなかったようです。
httpなどのパスを一意化する方法ありますか?
>>51 そのままでも一意だと思うけどファイル名として使いたいとか?
あと質問はID出してくださいな
53 :
nobodyさん :2010/03/20(土) 05:44:54 ID:W6ikhWcl
環境変数に入ってるんじゃね?って思ってやってみたら、そもそも././が省かれていて話にならなかった
57 :
53 :2010/03/20(土) 12:09:51 ID:W6ikhWcl
thx! よさげ
58 :
53 :2010/03/20(土) 12:10:35 ID:W6ikhWcl
55=56ですか。駄目なんですか?
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付きとしていいのでは
>>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
65 :
55 :2010/03/20(土) 17:37:01 ID:???
>>64 codepadより見た目いいな
ありがとう
つまらない質問で申し訳ありません よくプログラムで見る$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でダブルクォート表示するのってどうやるんだっけ?
>>66 クラスのメソッドへのアクセス
class Test
{
public function method() {
print 1;
}
}
t = new Test();
t->method();
>>68 print '"';
か
print "\"";
違う。クラスじゃなくてオブジェクトだからな
>>67 試してないけど
try {
$value2 = $root_node->getElementsByTagName('value2');
}
catch (Exception $e) {
$value2 = FALSE;
}
if ($value2) {
//続き
}
もしくはtryの中で続きを書いちゃってもいいし
>>71 そうだね、すまん
>>66 正確には
class Test
{
static function classFunc(){}
public function objectFunc() {}
}
$t = new Test();//インスタンス(オブジェクト)生成
$t->objectFunc();//オブジェクトのメソッド
Test::classFunc();//こっちがクラスのメソッド
かな
クラスとオブジェクトは並列する概念じゃねぇよ クラスをインスタンス化したのがオブジェクト
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
お騒がせして誠に申し訳ございませんでした。
みんな綺麗なコードかけるようになるまで何年かかった?
15年だけどまだだなぁ
ネットに公開してる人のソースコードってみんな綺麗だよね、鬱になりそう
綺麗なコード書けるようになった と思った瞬間に止まる
>>68 // ヒアドキュメント
echo <<<EOF
"
EOF;
// NowDoc (PHP5.3以降)
echo <<<'EOF'
"
EOF;
printでっつてんだろカス
echo を printに置き換えられることも知らないのかカスは
じゃあprintで書けよw
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でした。なぜ?
HTTPヘッダー確認できる?
87 :
nobodyさん :2010/03/21(日) 02:25:16 ID:5ebOvBjC
getallheaders()でヘッダ確認しましたが、IEのみReferer;が格納されないようです。 特にリファラ偽装などは設定していないのですが。
ありがとうございます、やってみます。
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()); ?>
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の違いって何でしょうか
文字の長さ
クラスってのは3年B組 関数ってのは用務員 クラス内の関数(メソッド)は給食係とか保健係
>>96 クラスっていうのは板の名前(Webプログラミング)
関数っていうのはスレの名前(【PHP】下らねぇ質問はID出して書き込みやがれ 94)
大喜利スレになってもうた・・
$obj = new Webプログラミング; echo $obj->【PHP】下らねぇ質問はID出して書き込みやがれ 94;
102 :
nobodyさん :2010/03/21(日) 12:28:59 ID:Pf4rphJX
ファイルの管理ってどうしてますか? 例えば完成したシステムAがあるとして、 そこから一部分だけ追加・変更したいとします。 しかし、Aはそれだけで完成しているから、 余計な機能を付けてバグが出た時に困る。 かといってAをコピーしてA"にして変更していくのも非効率な気がして・・・
・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復元すればいい。
出ないようにちゃんと設計やればいいんじゃね
>>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;} } } このような関数でクッキーが有効かチェックしているのですが、機能してないようです。 もちろんブラウザの設定でクッキーを無効にしてテストしてます。 問題点はどこでしょうか?
>>108 このclassファイルだけ修正したい。
ってときに便利なのがsvnですよ。
111 :
nobodyさん :2010/03/21(日) 17:11:19 ID:G7Ek1+IS
svnの導入の仕方を教えてください windowsです
なるほど継承してアップデートってのもありか… そんなうまいこと設計できないけど
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が返って来るのでしょうか?
>>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;}
}
}
こうすればよいですね!ありがとうございます。
おいこらさっさと質問ぶつけてこいや〜〜〜〜〜〜〜!
OCN vs イーモバイル!
WiMAXの方がよくね?
あえてうぃるこぬ
>>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
しかもシステムが破損すると取り出せない。自分で壊すこともある。消しても問題とか思って。
自動バックアップで壊れて全部消えたとかそういうのもあるな。 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
デザインパターンってどうやって学ばれました? ネット上にあまりないのですが
>>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
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 さん 上手くいきそうです。 ありがとうございます!
すみません 最近のyoutubeのAPIに対応したソースがあるサイトってありませんか? どれも動かないんです
どれも動かないんならどれもだめだろう
諦めます
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:???
自己解決しました
>>140 ごめん、142は読み間違えた・・。
ini_setじゃなくて、php.iniに直接書けば?
あと、さくらの場合、smtp_portを587にしないと駄目だよ。
radishおすすめ
radishは古いxmailにしとけ
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
正規表現を練習できるサイトとかないかな
>>148 RewriteLog 取ってみるといいよ。
151 :
nobodyさん :2010/03/22(月) 21:09:38 ID:r5y42//h
154 :
127 :2010/03/22(月) 21:30:08 ID:???
155 :
nobodyさん :2010/03/23(火) 00:51:02 ID:unctT7f6
質問です。 UTF-8の環境でmb_strcut("あいうえお",0,7)とした時、"あい"と表示された後次の文字が文字化けしてしまいます。 原因は"う"の1バイト目までしか出力されないからのようですが、このように余った時"あい"までの出力で止めるようにすることはできるのでしょうか? 試した環境、win32 PHP 5.3.0
自己解決しました。 >encoding パラメータには文字エンコーディングを指定します。省略した場合は、内部文字エンコーディングを使用します。 とマニュアルに書いてあったので文字コードの指定を省略したのが原因でした。
内部文字エンコーディングを適切に設定してないのが根本原因じゃないの?
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">
のように特におかしいような気もしませんでした
リクエストされたページが見つからないそうです
パーミッションだったりして。
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 のようになっております
/var/www/html/test/(スラッシュあり)は?
165 :
163 :2010/03/23(火) 16:49:36 ID:???
>>165 いまちょっとググってみたんだけど
もしかして/etc/httpd/conf.d/welcome.confとか読み込まれてない?
>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から読み込みは出来ます。(ちなみに) パーミッションの設定はいじってみましたが、解決しません。 その問題ではないようです。 どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。
できるわけねえだろks
173 :
nobodyさん :2010/03/23(火) 18:25:49 ID:/hsQzdjS
PHPを起動しろ そしたらアクセス出来る
174 :
nobodyさん :2010/03/23(火) 18:38:27 ID:a2W0beeP
なんでこんなとこで宣伝するんだろ
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
他にどの部分を書けばいいのかよければ教えて下さい。
初心者ですみません。
同じユーザで管理してたら普通にできると思うが
自前のサイトからCIAのサイトを書き換えようみたいなこと考えてるなら
>>172
もっとPHPらしく殺伐としろやks
>Phar アーカイブは PHP V5.3 に追加されたかなり便利な機能です。 ファイルI/Oは減少しそうだけど、便利ですか?
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
キャッシュしろよ
185 :
nobodyさん :2010/03/23(火) 23:22:15 ID:/hsQzdjS
ファイル位置=カレントの違いだろ
<? 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 (このようなサイトです)
>>188 サーバ・クライアント方式
とでも言えばいいのか
>>187 HTTPリクエスト投げてレスポンスコードを見る
とでも言えばいいのか
各店が出勤情報を提供してるんじゃないの
ナニコレ新手の宣伝?
193 :
nobodyさん :2010/03/24(水) 02:46:17 ID:Kwea1nv5
194 :
nobodyさん :2010/03/24(水) 06:13:51 ID:X47Xx9mp
>>188 です。
お答え頂いた方々、どうもありがとうございました。
各お店の専用ページのようなものがあり、そこからお店側が更新して、
サーバに反映されてるんですね!!・・・?
これってRSSなんかじゃできないですよね・・・
勉強が必要ですね・・・
ありがとうございました。
>>194 イメージ的にはそれで正解だと思います。
ただRSSに拘る必要はない仕組みです。
196 :
nobodyさん :2010/03/24(水) 11:03:40 ID:WEWtuFeV
171です。
>>178 さん
同じユーザで管理しています、もちろん。
ですが、ドメインが変わると書き込みが出来ないんです。(呼び出しは出来ます)
書き込み用のファイルの設定を変えなければならないのでしょうか?
>>196 だからドメイン関係ないって
www.omae.comからwww.google.comにおいてあるファイルを書き換える事できないだろ?
フォームにPOSTして書き込むかローカルで書き込むファイルのパス指定しないと。
どういう関数使おうとしてるとかもっと詳しく書かないとこれ以上わからんよ。
198 :
nobodyさん :2010/03/24(水) 12:25:32 ID:WEWtuFeV
171です。 FORM METHOD="POST" action=" action=" ↑の続きに別のドメインを書けば書き込めるということでしょうか?
同じ鯖ならさー システムコールで弄ればいいじゃない
まずサーバーサイドスクリプトが何なのか調べた方がいいかも
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鯖に書き込んで表示できる。 こんな感じか?
攻撃されたらひとたまりもなさそうだな
203 :
nobodyさん :2010/03/24(水) 14:49:46 ID:WEWtuFeV
171です。
>>201 さん
ありがとうございます。
できました。
204 :
nobodyさん :2010/03/24(水) 14:52:04 ID:JopdS9PV
205 :
204 :2010/03/24(水) 14:54:44 ID:JopdS9PV
>>203 途中送信すまん。
function h($str){
return htmlspecialchars($str);
}
で
h($_GET['add'])とした方が良い。
あと、CSRF的に危ないかも。。
>>205 >h($_GET['add'])とした方が良い。
なんで?
207 :
nobodyさん :2010/03/24(水) 15:05:05 ID:JopdS9PV
>>207 >>201 はサンプル程度のつもりだろうからセキュリティ対策がどうとかは別として
そこを関数にしたところで変数の中身は変わらないとおもうんだが。。
209 :
nobodyさん :2010/03/24(水) 15:25:39 ID:JopdS9PV
1回くらいだったら関数にしなくてもいいけど、何回もhtmlspecialchars()よりはh()の方が楽かと
ENT_QUOTESやらんのかい!
htmlspecialcharsだけがサニタイズだと思ってる奴は素人 XSSでも喰らってろ
動く動かないはともかくきめえ
素人丸出しワロタ
はいはい。叩くの楽しいよねー。
htmlspecialcharsのラッパなんていまさらだな CakePHPにもh()あるしな
批判だけなら誰でもできる
217 :
nobodyさん :2010/03/24(水) 16:47:12 ID:9W7AG8ph
少々質問させてください。 現在作成中のWebサイト上で、ユーザー登録をするページを作成中なのですが、 登録ページ内で入力されたユーザーIDが既に登録されている物と重複しないかの確認をさせたいと思っています。 この場合、どのようにすればよいのでしょうか? データベースにはMySQLを使用しています。
>>217 DBに既にあるか無いかを調べればいいよね
検索すればええんちゃうの
220 :
nobodyさん :2010/03/24(水) 17:57:11 ID:JL5BpxOE
>>220 公式じゃないところを持ってくるのは宣伝したかったから?
>>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ならわかるのですが、この[]の意味はなんなんでしょう?
よろしくお願いします。
>>220涙目wwwwwwwwwwwwwwwwwwwwwwww
ナカシマ マサアキ君 ピーンチ
>>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も
どうせ関数にするんだから短くする必要ないやん
また正規表現君か
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に登録していない独自の拡張モジュールを使いたいのですが
>>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も
>>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
>>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しなくていいから便利かなと思ったのですが、、、 よろしくご教示お願いします。 インスタンスメソッドとクラスメソッドの使い分けの考えかたも教えていただければと存じます。
>>237 「入力が同じであれば、出力も同じとなる」の様な場合は、クラスメソッドを使う。
内部の状態(インスタンスフィールドの値)に応じて、「入力が同じでも、出力が異なる」ような場合、
または、メソッド実行した結果、内部の状態が変化する場合はインスタンスメソッドを使う。
これを踏まえて、
> phpで、繰り返し出てくるチェック処理を、staticメソッド(いわゆるクラスメソッド)で実装しようと思うのですが、
> こういう使い方は間違ってますか?
内部の状態に依存しないのであれば、クラスメソッドで問題なし。依存するならインスタヌメソッドとなる。
>>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も同じだろ
何も考えずにutf8で書いとけば大丈夫
243 :
147 :2010/03/25(木) 04:26:53 ID:???
>>242 合州国?
反日サヨクか?
合衆国をわざわざ合州国なんて書くのはサヨクだけだぞ。
「合衆国」は“United States”の対訳語ではなく、「共和制」(Republic=君主のいない、民衆から元首を選ぶ制度。合衆国の保守本流)
ないしは「民主主義」(democratic 合衆国左派) の古い訳語であり、「合衆制度により治められる国」という意味だぞ。
本当に日本で教育受けてんのか?
日教組の左翼教師に捏造史の教科書丸暗記させられただけだろお前の地域は。
英語の"state"は日本語の「州」とは全く異なる概念であり、“United States”の訳語であるならば「連邦」と書くのが正しい。
サヨク同士でやり取りする辞書とネット工作に使う辞書は分けとかないとこういう所で簡単にボロが出るんだよ。
一瞬考えちまったじゃねーか
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
まず、そのURLを出してきている時点でマニュアルを読んでないだろ
249 :
nobodyさん :2010/03/25(木) 11:18:58 ID:3VlbO4al
>>249 classの使い方をわかってないと厳しいと思うよ
「php XMLWriter」で検索してでてくるサイトのサンプルを見たほうが良い
最近のPHPの本って完全Windows対応の物しか出てないね・・・ Linuxのリの字も消えてるというか・・・ 後Xammp
インストール以外に機種依存はほぼない。 持っているやつが多い方むきになるだろ
IISでPHPが安定して動くようになってきたのもありますね
初心者向けが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という風に書くことはできないのでしょうか?
質問です。 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
XAMPPを使ってるようじゃLinuxに移行したらパニくるだろうね WAMPで導入しなされどうせ一回インストールすればいいんだから
質問部分ガン無視レスワロタw
>>258 どうパニくるの?
例えばcentOSであれば標準で入っているものをyumすればいいだけだけど、個別に入れる時とか、
>>256 のようにパス設定等の問題でって事かな?
それともパーミッションだとか文字コードって事かな?
>>256 (Eclipse上で、デバッグ起動しました)
同じXAMPPのPHP5.2.6で
include_pathを空にして試してみたら普通にエラー吐くよ
linux使ってるのにソースコードからコンパイルできない奴ってまだいたの?
で,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にすると普通に見えるんです・・・。 他に修正すべきところってあるんでしょうか?
OS使ってる時点でダサい
えっ
>>262 空っぽはともかく、
ini_set('include_path', ini_get('include_path'));
これでも動かなくなりましたね。
XAMPPが裏でこっそり。なのでしょうか・・?
270 :
nobodyさん :2010/03/25(木) 13:06:49 ID:Irf8TYh6
>>269 です。
失礼しました。269の奴は私の勘違いでした。(コマンドライン実行してました)
>>256 の件は相変わらず起こる状態です。
おれはxampplite使ってるけどPEARパス始めから通ってるぞ phpinfo()で読み込んでる設定ファイル確認してみ
__autoload()なんてことじゃないよな
もうphpも終焉気味だな
CGIでは一番敷居が低いであろう言語だからね
Python流行らねーかな
pythonは文字コードがイミフで諦めた
何が終焉なのかわからないが革新的な代替技術はでてきてないでしょ ほとんどの鯖に入ってて覚えやすいものといったらPHPかPerlしかないし モバイル分野が活発でSNSアプリが流行っててクライアントサイドが熱いといっても サーバ処理部分は結局PHPとか使わざるをえないわけであって スレの活気が昔よりないのは初心者が減ってるのと運営が暴走して最近アク禁しまくってるせい ブログやSNSがなかった時代はHTML覚えて自分でいろいろ作りたいなんてのもあったが 今は用意されてるのが多いしそういう意欲をもつやつが昔ほど少ない
マジレス(;゚Ж゚;)ブホォ
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の鯖つかってます。
アップロードしたPHPファイルが削除できないの? それともPHPで作成したファイルが削除できないの? 後者ならPHPのchmod関数で権限を変えてから消すか、直接PHPで消せると思うよ
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
あ、インデント無効でズレました; とにかくいっぱい消せないってことです…
消したいファイルとフォルダ全てに対して <?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しないといけませんか? 聞きっぱなしですみません。
消すのはunlinkな
290 :
280 :2010/03/26(金) 09:27:23 ID:dSbdTEMe
>>289 chmodでパーミッションを変更するんですよね?
そしたらFTPから削除出来るのではなく、unlinkでまた削除しないといけないのでしょうか・・・
パーミッション777に変更したら手動でもスクリプトでも消せる
292 :
280 :2010/03/26(金) 09:37:04 ID:dSbdTEMe
>>291 ありがとうございます。
<?php
chmod('消えないファイル名', 0777);
?>
のソース実行してもパーミッション644のままです…
パスはちゃんととおってる? フルパスで指定してみ
294 :
280 :2010/03/26(金) 09:41:10 ID:dSbdTEMe
>>293 消したいファイルがあるディレクトリにソース置いて実行しました。
フルパスとはURLのことですか?
それともFTPから見たフォルダ/フォルダ/消したいファイルということですか?
298 :
280 :2010/03/26(金) 09:50:09 ID:dSbdTEMe
>>298 Windowsしか知らない世代だからね
WindowsでのDocuments and Settingsだよ
echo realpath(dirname(__FILE__));
301 :
280 :2010/03/26(金) 10:22:35 ID:dSbdTEMe
>>299 Documents〜って言ったらHDD内のデータの事ですよね?
鯖に置いてるファイルが消したいのですが、連携?してるのでしょうか…
>>300 さんは私へのレスでしょうか…日本語で…お願いします><
FFFTP(笑)
というかファイル削除なんてPHPよりCGIでやったほうが良いんじゃないの?
305 :
280 :2010/03/26(金) 10:45:54 ID:dSbdTEMe
>>302 ありがとうございます、でもNextFTP使ってます…
>>304 cgi使いましたが、無理でした。
なぞです…
【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); こんな感じでやってみたのですが、赤単色にしかなりません。 どうすればいいですか?
>>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"と書く
実行するときはバックアップを取ってからね
>280のはSAFEモードかつaaaaの作成者がphpともFTPとも違うんじゃねーの
310 :
nobodyさん :2010/03/26(金) 14:05:06 ID:hlkI0cqo
set_time_limit(600)にして、10分間PHP処理を継続して それ以上かかる処理についてはスルーする方法ってないでしょうか? 今作っているプログラムは、forでデータをチェックして 問題なければ書き込み用の配列に代入し、 forが完了したらfopenでデータを書き込んでいます。
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; } } こんな感じですね。勉強になりました。
もう鯖管に頼んじゃったほうが早いんじゃね…
レン鯖変えたほうがいいよ ロリポ最高だよ
>>317 ロリポもセーフモードじゃん
ああ、ネタで言ってるのか
>>318 気づいたんなら前半消せばいいじゃん
ああ、ネタで言ってるのか
320 :
280 :2010/03/26(金) 14:54:01 ID:dSbdTEMe
鯖が原因ってのは考えてなかったです。 PHPの練習に使ってるだけなので、有料じゃなければいいのですが… とりあえず鯖管に連絡してみます。 みなさんご親切にありがとうございました!
練習で人様の鯖使うとかナメてんな 何でlocalhost使わないんだろう
↓XAMPPがどうのこうの
他人の物は俺の物、俺の物は俺の物。 今の子に共有という言葉はありません。
今のガキが大人になったら犯罪が今以上に増えて恐ろしい世の中になりそう しかも事件のきっかけがしょうもないきっかけとかなw
え?練習でレン鯖使うとかふざけてんの? ゆとるのもいい加減にしろよ
>>318 今のロリポはphp.ini書き換えてセーフモード解除できる
>きっかけがしょうもないきっかけ
ロリポはどうでもいいしスレち
自動生成したページにコメントを付けられるようにするにはどうしたらよいですか?
330 :
nobodyさん :2010/03/26(金) 17:06:55 ID:edKl/0SZ
age忘れ
エスパーかもーん
コメントにページ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; ということをやりたいのですができません 文字列を定数で評価できればいいのですが 何か方法はないでしょうか? よろしくお願いします
echo constant("HOGE_" . $test);
$hoge = {A=>1,B=>2,C=>3} echo $hoge($test); これでいいんじゃね
()じゃなくて[]だった
338 :
nobodyさん :2010/03/26(金) 20:21:49 ID:DpRkdepW
>>335 どうもありがとうございます!
マニュアルに書いてないと思って見なかったのですがdefineの関連に思いっきり書いてましたね
反省してきます
>>336 さんもレスありがとうございます
今回は定数項目なのでハッシュは見送りたいと思います
チッウッセーナ
340 :
nobodyさん :2010/03/26(金) 22:24:01 ID:VBrvLXHV
phpで既存のexcel(officeは2003)のファイルを読み込んで データを加工して出力させたいと思っていて調べた所 php reviserかphp excelreaderが良さそうと思ったのですが どちらがオススメでしょうか? また良い解説サイトはあるでしょうか?
phpでやる必要もないが はじめからデータ場所わかっていれば 例 googleキャッシュ
POIがいい
343 :
nobodyさん :2010/03/26(金) 23:59:44 ID:nTGjIJ+3
動くツールでHTML生成しておけ
オンラインゲーム作りたいんですが PHPはその用途に向いてるでしょうか? それともC++が良いでしょうか?
C++とDirect3DかOpenGLが最良です
オンラインゲームって幅広すぎだろw
ウェブゲーならPHPでもいいだろ
基本登録制のウェブゲームで職業とか選んで他のプレイヤーと戦闘したり交流したりってイメージです。 昔やってたDragon of Floorのイメージです。知ってる人いるかな?
MMORPGみたいにリアルタイムに動かすならFlashかAjaxらへんが必要
一番向いてると思われるのはサーブレット Cでトムキャットを超えるものをゴリゴリ書くのもあり しかしそんな質問するようならPHPで済ませた方が無難だろう
通信技術よりゲームが出来ない意味ないがな。 一台のPCで出来るゲーム。 構想としてネットワーク考えるのは良いけど。
ゲームが出来ないと意味ないがな。 キーボードの「と」が押しにくい。初期不良か。
Penguin Chatをちょっといじった程度ならなんとかなるが 本格的にやるとまずインフラが無理 安いレン鯖じゃまず許可されない
Barギコオンラインを思い出したw
とりあえずTCP/IPとJavaをマスターしとけ。話はそれからだ
出来もしねーやつに言われても
360 :
nobodyさん :2010/03/27(土) 11:35:40 ID:mKFS7c+R
Apacheのログを取得してアクセス解析みたいな表示をさせたいと思います。 Apacheのログを取得するのって、fopenを使うのでしょうか? ググっても、PHPからApacheのログに任意の文字列を追加することしか 紹介しているサイトが無くて、どうすればいいか悩んでいます。
362 :
nobodyさん :2010/03/27(土) 12:29:55 ID:badDEIlD
SVNを導入してPHPスクリプトを書いた場合 テキストエディタで上書き更新するたびにバックアップみたいなのが増えていくのでしょうか?
コミットしなければいいのでは
365 :
nobodyさん :2010/03/27(土) 13:34:19 ID:w96ELak8
ここが一番勢いあるからここで質問するけど 今2chを騒がせてるスクリプト荒らしの対策スレッドや それに準ずる避難場所しらんかね?
騒がせてると言われても見たことないけど
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 , シャワートイレ・トイレ
ここはプログラム組む人が集まる板だからそもそも板違い セキュ板あたりにでもいけばいいんじゃね
スクリプト荒らしってどんな事するの? ウイルスコードを書き込むとか?
知らん なぜか質問者は該当スレ貼ってくれないし
>>370 <?php
echo "どうだまいったかカスども!";
?>
>>345 俺はブラウザゲームに需要があると予測してるから
いろいろゲームやって勉強してるよ
ドラゴンクルセイドとか三国志とか英雄の城とかな
俺がやってるのは英雄の城だ
有料●ってしたらばには使えないよね?
376 :
need :2010/03/27(土) 16:30:14 ID:BLNff2FT
オリジナルの表紙的なのにパスワード付けて 掲示板みたいなのやチャットやらメルマガやらの機能ってつけれますか?
理解できる文章で
378 :
need :2010/03/27(土) 16:37:21 ID:BLNff2FT
会員制サイトって言えばいいですかね?
>>378 そういうことでしたらできます
頑張ってください
380 :
need :2010/03/27(土) 16:41:56 ID:BLNff2FT
5人くらいで共同してやろうとしてるんですけど 僕もですけどみんなそういうの詳しくなくて・・・ ヒント的なのくださいw
まず貴様の文章を脳内変換するかしないか考えるから年齢教えろ
スルー決定
383 :
need :2010/03/27(土) 16:47:00 ID:BLNff2FT
18歳です
美少女なら考える
386 :
need :2010/03/27(土) 16:55:09 ID:BLNff2FT
ヒントありがとうございました またみんなと相談してみますでわでわノシ
$sql = "SELECT * FROM test WHERE id = '***'"; //実際はもっと複雑 $result = mysql_query($sql); mysql_queryのレスポンスでn秒以上かかったら、強制的に中断したいのですが どうすれば出来ますか?
388 :
nobodyさん :2010/03/27(土) 18:12:47 ID:hCQYGWPc
あげ忘れた。。
シグナルアラーム
391 :
nobodyさん :2010/03/27(土) 20:16:16 ID:fkziy9mv
htmlspecialchars()の抜け穴を教えてください
392 :
nobodyさん :2010/03/27(土) 20:31:37 ID:h7pdGwVR
ログファイルは拡張子を .cgi にすれば他人から覗かれる心配はなくなるとよく言われているけど これ本当に覗かれる心配はないって断言できるの? あと拡張子を .cgi ではなく .php にした場合はどう? これでもログを覗かれずに済む?
サーバの設定次第 ご自身の環境でお試しあれ
>>392 .cgiにしたらサーバの設定次第だけど
とにかく実行とか、怖い設定になっていたら
うまくすればログのフリして実行できるんじゃないかな。
あと、phpにしていたら上の問題プラス、
下手い設定でも筒抜けになるな。こえぇーーー
質問 バーミッションって意味あんの? 書き換え不可にしたって 同じサーバーの奴から参照されてる時点で バーミッションも変えられてしまうのでは?
397 :
nobodyさん :2010/03/27(土) 21:01:35 ID:h7pdGwVR
>>394 > とにかく実行とか、怖い設定になっていたら
> うまくすればログのフリして実行できるんじゃないかな。
だよね(´・ω・`)
ログのフリしてコード実行とか考えるだけで末恐ろしい・・・
やっぱログは .log ファイルに格納して .htaccess でそのファイルに
アクセスできないようにした方がいいよね( ´・ω・)
398 :
nobodyさん :2010/03/27(土) 21:56:20 ID:m9Aaq+Yx
お勧めのテンプレートエンジン教えてください
>>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にしました 皆さんありがとうございました
いや待て *.log がCGIとして動作するように設定されてるとも(ry
402 :
2ヶ月 :2010/03/28(日) 01:43:36 ID:/hrsIc1c
複数サイトのRSSを読み込んで新規順に並べるスクリプトをXML/RSSを使って作っています。 各サイトに画像を割り当てて表示したいと思っています。 RSSは時間順に表示されるのですが、画像の順番が固定されています。 画像には時間情報がないので、画像とサイトを関連付ければ表示できる ようになると思いますが、その部分が作れません。 よろしくお願いします。
RSSのURLをmd5でハッシュ化 ハッシュ.jpgでサイト画像を用意 それか重複するドメインがなければ ドメイン名.jpgとかでもいいんじゃない?
404 :
2ヶ月 :2010/03/28(日) 03:38:35 ID:/hrsIc1c
>>403 ドメイン名.jpgでhttpやら抜いてできました!
ありがとうございます。
はじめましてphp入門者です IPアドレスで初回訪問時、2回目以降の訪問のページをわけたいのですがPHPで実現できますでしょうか? 出来るのなら参考に出来るサイトなど教えていただければ幸いです よろしくお願いします
406 :
405 :2010/03/28(日) 10:25:52 ID:???
407 :
405 :2010/03/28(日) 10:26:34 ID:afRJ3+O7
何度もすいません・・・
PHPに関わらずクッキー食わせて処理してください
409 :
405 :2010/03/28(日) 10:44:47 ID:afRJ3+O7
クッキーではやりたいことが実現できなくて・・・ 初回訪問時にIPアドレス、名前を登録して次回以降 こんにちは 名前 さん のような感じで表示したいんです・・・
IPアドレスは毎回変わるからなぁ・・・ドメイン名にしたって レベル3以降はころころ変わるからその方法は厳しいん じゃないの
>>405 初回訪問フォームでnameを入力させてsubmit
↓
クッキーにname,IP,訪問時間,訪問回数なんかセット
クッキーにこれらの情報が登録されていたら、変更すべき項目をクッキーにセットしつつnameを表示
なんでクッキーでできない?
>>410 クッキーがあれば前回訪問していることがわかるのでIPは関係ない
というかIPを記録する意味がわからないから何とも言えないが
気が向いたら何時もキャッシュとクッキーを削除している俺のような奴もいる。 そこまで気にするならnameとpasswordで取り扱うしかないかと。
>>411 410は408に対する409について書いたの
クッキー→クライアント側でコントロールできてしまう、よって× IP→固定IPでない限り常に流動的、よって× 同一人物特定可能な機器の固有情報→ないわけではないが機器がない人もいるしセキュリティ的にもやってはいけない、よって× IDとパスを登録してもらって鯖側で管理する→会員制サイト向け、もっとも現実・実用的 ログイン後にユーザ別に操作する情報があるなら話は別だが「こんにちは名前さん」のためだけにログインさせるのはアフォ 結論、動的ページに感動して初心者にはありがちな行為だがやめたほうがいい。 俺も最初はうれしくてついついサイトのトップにJavaScriptで時計表示したり、 むやみに訪問者のIP出してみたりしたっけなぁ。 今思えば痛々しい。
IDとパスものクッキー使うが yahooとか
そりゃそうだ毎回のログインが大変だからな。
>>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認証を破る方法を教えてください
ベリサインの手続き踏んで高い金払ってるサイトだから信頼が得られるのに 金払わずに取り繕うなんて馬鹿じゃないの
420 :
nobodyさん :2010/03/28(日) 19:00:28 ID:I5spPOJr
>>419 おっしゃることはごもっともです。
ただ、利用者がセキュリティを気にする層と気にしない層がいて、
古い機種を所有している人に特に気にしない層が当てはまるんです。
なので、古い機種を使用しているあまりセキュリティを気にしない人は非SSLで運用を考えているんです。
セキュリティを気にするのはサイト管理者だろうが 自分がケチなのを利用者のせいにするな
>>421 営利目的でない為、運用の都合上、コストがそのまま利用者にかかるんですよ・・・。
コストが上がっても、私の腹は痛みません・・・。
扱う情報がメールアドレスと氏名くらいなので、できればSSLを使わずにしたいのですが、
SSLじゃないと嫌だという利用者もいるので、上記のような方法を考えているんです。
言ってることがよく分からない。 SSL要らないからコスト上げるな、って顧客と コストかかってもいいからSSLを入れろ、って顧客がいて どっちにも対応できる道を探してるということ?
利用者がいるんでしょ
単純に機種別にSSLかけるかかけないかしたいって読めばいいんじゃねーの
SSL通信はするけど認証機関はとおさなければ良いんでは 無料
無料の認証機関ってなかったっけ?
要するに証明書が対応、非対応の判別処理がphpでできるか?って事じゃね SSL、非SSLのリンク並べた方が楽じゃね 使いたい奴は使えと、使いたいけど非対応の端末は買い換えろと
その方法は単純にSSLに対応したサイトだわな
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は通信できなかったように思います。
実機がないのでわからないのですが、そういった記事を目にしたことがあるので。
434 :
nobodyさん :2010/03/28(日) 23:01:51 ID:rVlISy+X
435 :
nobodyさん :2010/03/29(月) 09:47:34 ID:4cY5kwZW
ちなみに公開ディレクトリはapacheの初期設定のまま?
>>436 ハイそうです
centOS、Apacheの初期設定のままです
特にphp.iniとかは何もいじっておりません
438 :
nobodyさん :2010/03/29(月) 11:37:55 ID:FXTZBx7Y
ローカルでメール送信プログラムのテストをしたいです。 さくらのメールボックスなどのメールアカウントを持っていますが、 POP before SMTPなどややこしい機能があるみたいです。 この場合、ローカルにメールサーバを立てるのが一番手軽でしょうか?
うん
お手軽 「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の本を教えていただけませんでしょうか。
>>442 今までにCとかC++とかPerlとかJavaとか、まあそのあたりの言語でのプログラミングを
してたなら、「PHP 入門」とかでぐぐって出てくる適当なサイトで十分いけるよ。
それでどういうものなのか、とりあえずどう使うのかを掴んだら、後は
>>443 を随時参照でおk。
知るかバカ
447 :
nobodyさん :2010/03/29(月) 17:20:21 ID:1Ehd5H1b
throwの挙動なんですが、returnと同じでthrowしたらその関数はそこで終了するということでよろしいですか?
せやで!
449 :
447 :2010/03/29(月) 17:44:03 ID:???
ありがとうー
throw new Exception(); return; と書いてた俺に一言
(;゚Ж゚;)ブホォ
読みやすくていいと思います・・
いまどきのまともなコンパイル型の処理系なら、 こんとろーるふろーがそこまで行かないぞって警告くらい出してくれたろうけどなぁ。
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フォルダの下にはフォルダは一切作らないでおきたいと 思っています。またメンテナンス性を高めるためログファイルの名前はランダムな文字列ではなく どのページに関するものか人目で判別できるようなものにしたいと思っています。
お前の都合に合わせろよ
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%の割合で表示させたいです。 どのように書けばそのように設定できるのでしょうか?
>>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
>>457 えっ11%で表示したくなったらどうすんの?100個の要素作るの?w
>>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];
}
..
?>
>>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];
}
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)に)どう記述すれば実現できますか?
オブジェクト生成では返り値指定できないでしょ
465 :
nobodyさん :2010/03/30(火) 02:21:32 ID:vJQ1xggI
返り値は指定できませんか・・・ 代わりに「条件を満たさないときはオブジェクトを生成しない(=newに失敗する)」ようにはできないでしょうか?
466 :
nobodyさん :2010/03/30(火) 02:26:05 ID:wKtmg6ou
ですのでで来ません
>>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' という文字列はどこから来てるの?
非国民端末iPhoneだけを観覧禁止にすることは可能ですか?
pandaなんちゃらを弾けばいいんじゃね?ワイファイは知らんが
>>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
475 :
473 :2010/03/30(火) 18:00:50 ID:dG8PavZ2
>>474 こんな関数あるの知りませんでした。
ありがとうございます。
新アルゴリズム 納豆ソート
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の場合?
>>477 ★1つ目:fopenに成功した時
★2つ目:flockでの書き込み禁止ロックが成功した時
★3つ目:flockでのロックを開放する
>>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){
と同じ
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:???
あれ?禁止ロックは条件指定で、実際はしてないのかな?混乱してきた・・・・
//カウンター数が書かれてるファイル $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);
どうでもいいがlenghtじゃなくてlengthな
恥ずかしいけど間違いじゃないからどーでもいい
490 :
nobodyさん :2010/03/30(火) 23:11:49 ID:PJO3T1x9
最近wordpressを使いだしてPHPに興味が出てきたんですが、 wordpressテーマみたいに、PHPでソースを吐き出させるPHPと アプリを作ったりするPHPは別物なんでしょうか? まずはブログのテーマを作って、その後は検索システムとか掲示板とか作りたいなって 思ってるんですが、書籍を見てても、ブログ系はブログ。アプリはアプリみたいにわかれてるんで、 同じものなのか自信がなくなってしまいました。
PHPで作れるアプリケーションは大きく分けて3つ Webアプリケーション デスクトップアプリケーション(ただし向いてはいない) コンソールアプリケーション(コマンドラインから使うやつ) んでブログやらブラウザでサーバにアクセスして動かすものはみなWebアプリケーションだ
492 :
nobodyさん :2010/03/30(火) 23:43:46 ID:PJO3T1x9
なるほど、つまり僕が言う物は2つとも同じ種類なわけですね。 ありがとうございます。 これですっきりしたんでwordpressのテーマ作成の本でも探してみます。
「めんどくさい、使いにくい」と思いながらもWindows使うよりLinux使う比率が圧倒的に高い俺はもはや変態なんだろうな・・・
if や while が複数の判別式をもっているとき、左から順番に判別されていって false が一つでも返ってきた 段階でそれより右側の判別式の判別は中止されるとおもってよろしいですか? たとえば if ( 5 < 0 && 2 < 5) という判別式の場合、最初の 5 < 0 でfalseが返ってきた時点で残りの 2 < 5 の評価は放棄されると 思ってよろしいですか?
鯖側のエラーっぽいけど
497 :
nobodyさん :2010/03/31(水) 05:34:24 ID:1040mT1O
テスト環境のfedora7では問題なかったのですが 本番サーバのCentOS5/64bitで、escapeshellcmdを通すと日本語(たとえば「てすと」)が 消失する現象が出ています 文字コードはUTF-8です どうしたものでしょうか
文字コードをもう一度確認
文字コード確認してもUTF-8だし cliだと問題ないなど謎ですが strtrで自前エスケープするようにしました・・ ちなみに5.2.13です 64bitだからかなぁ・・
setlocale(LC_ALL, ja_JP.UTF-8); でどうでしょうか。
いけました! こんな関数はじめてみました ありがとうございました
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ではエラーは出るという事で大丈夫でしょうか。
test1.php内で以下のように書けば当然test2.phpでも有効さ <?php error_reporting(1); include './test2.php';
記号のフォントをGDで使用する方法はありますか? そもそも、どうやって指示すれば良いのかもわかりません。 hoge.ttfと0×0050とかで指示できたりしますか?
>>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(); } こういう風に省略できたら見た目にもすっきりしていいなーと思うのですが。 また、無いとしたら何か他に何か、良い短縮方法というのはありますか? 因みに間違えてプログラム板でこの質問をしてしまったんですが 「短縮は可読性を下げる」と言われてしまいました。 やはり短縮しないで書いた方がいいんでしょうか。
残念ながら!
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;等と設定されており、 これもどこに由来するのか分かりません。 「偶然うまく動いていた」に過ぎないようです・・
>>511 php.iniのマルチバイト関連と
Webサーバの実行ユーザの環境変数かな
php.iniは同じものを使っているので apacheユーザの環境変数っぽいですね デーモンの環境変数なんて考えたことなかったなぁ・・
foo: bar baz bna test: hoge hage: new hoge これらの文字を foo: barbazbna test: hoge hage: newhoge に置換したいのですが何か良い方法はないでしょうか?
もとの文字列はこうです foo: bar baz bna test: hoge hage: new hoge
>>514 質問はIDを出しましょう
それとその問題が解けないなら、そもそもプログラミングをする意味が無いと思うよ
まず日本語で処理内容を書き出してみてからPHPに変換してみたら?
517 :
nobodyさん :2010/04/01(木) 20:31:38 ID:8+z5A+wF
require_onceで呼び出す際にget形式でパラメーターを渡すことは出来ますか?
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を作ったのですが ものすごく重いです。自作だとそんなものですか? 無料サービスのはサクサク動くのに、すごく微妙です。
522 :
nobodyさん :2010/04/01(木) 22:28:41 ID:X1UHe/PE
>>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);
つかれた
これは一個ずつリクエストと取得を繰り返してるから重いんじゃねーの マルチスレッド化した方が早くなる
DBのカラム名について聞きたいのですが、 cakephpに習って管理用カラムをidのauto_incrementとし、 英字のカテゴリ名と日本語のカテゴリ名を設定したいです。 以下のような感じにしようと思いましたが、keyが予約語なので、嫌な感じがします。 一般的に英字と日本語をひとつのテーブルに設定する場合、このようなカラム名にするといいよ というのが、ありましたら教えて欲しいです。 create table category( id int not null auto_increment primary key, key varchar(10), name varchar(20) )
>>526 決まりはないし、PHPの質問でもないし、IDも出してないし
eng と jp で
529 :
nobodyさん :2010/04/01(木) 23:24:15 ID:X1UHe/PE
>>524 (´;ω;`)$fopenのところだけ@にしましたが、動きません。
>>525 マルチスレッドですか。ぐぐって見ましたが、概要だけしかわかりませんでした。
ソースが置いてある所があればありがたいです。
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");
そもそも設計が腐ってる ・キャッシュ表示とキャッシュ作成を別にする ・・キャッシュ作成は定時処理にする ・個々を取得するphpを作成する ・・ajaxで読み込むurlをリクエストし、表示する。
存在すればそのまま読み書きモードでファイルオープン、 存在しなければ新規作成したうえで読み書きモードでファイルオープンさせたいと思っています。 出来る限りスマートに記述するとしたらどういう方法をとるべきですか?
fopen($path,"w+")
535 :
nobodyさん :2010/04/02(金) 00:09:05 ID:cOHYaj0g
>>532 はい、初めて作るのでその通りです。
1から書くのは不可能なので、なんとか今の技術で作りたいです。
>>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
すいません。スレ間違えました
541 :
nobodyさん :2010/04/02(金) 02:10:49 ID:cOHYaj0g
>>539 はい、w+モードにしました。
$f = fopen($cache_path,"w+"); を
$f = fopen($rssurl); の上に持ってきたりとか、いろいろしてみましたが
キャッシュを読み込まないです。
なぜかキャッシュフォルダじゃなく同じフォルダにキャシュらしきものが出来たので
無理矢理それをフォルダに詰めても動かないままです。
>>541 それキャッシュ読み込むところだから
w+の意味調べた?
>>524 をそのまま使わないで参考程度にしなよ
エラーの意味すら知ろうとしないで答えを知りたがる ダメだろこいつ
レンタルサーバーでPHPを使ってログファイルを作成してるんだが そうやって生成したファイルは所有者が"99"とか"nobody"となっていて パーミションが rw-r--r-- となっている。 まあこの状態でPHPから追記なり上書きなり自由に書き込めるわけだが レンタルサーバーのコントロールパネル上から 「全ファイルの所有者をユーザーに変更する」 を実行すると所有者は確かに俺のアカウントになるんだがパーミションが rw-r--r-- のままだから今度はPHPからそのファイルに書き込みができなく なるんだよ。再度書き込みがしたければログファイルのパーミションを片っ端から rw-r--rw- に変更していかなければならない。それも手動で(´・ω・`) 手動だから当然変更し忘れてしまうログファイルだって出てくるしそうなると PHPスクリプトの動作に支障を来してしまう。 PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを 生成できれば悩まずに済むんだけどそういう方法って無い? みんなはこの問題に対してどう折り合いを付けている?
ログファイルの所有者変更なんてやらなきゃいいだろw
>>545 確かにログファイルの所有者変更なんてやる必要もないが、他のファイルの所有者変更をしたくなったとき
ログファイルも含めた全てのファイルが道連れに所有者変更されてしまうんだよ。
特定のファイルだけ選んで所有者変更できればこんな質問してない。
所有者の変更は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で開発です。
>>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 というフィールドを
追加するといった形で試してみようかと思います。
>>547-548 ダメだorz・・・
chownもchmodも効かない・・・
最初にchownでファイル所有者を自分に変更して、そのあとにchmodで0646に変えてやろうと思ったんだが・・・
たぶんレンタルサーバーの管理人以外はchownできないような仕組みになってるんじゃないかな?
そしてchownできない限りchmodも無力化されてしまうと・・・
レンタルサーバー屋に聞くべき。 超能力者なら分かるかもしれないけど。
いい加減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"; このような最短マッチみたいなのを使って削除したらいんだと思いますが、 どうやればいいのか分かりません。教えて下さい。お願い致します。
preg_replaceを使うか、preg_matchでマッチした場合のみ文字数分を先頭から切ればよろし
preg_replace("/$aiueo/","",$hoge,1);
>>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の中で実行してるので、無限ループに陥って困ってます(汗) 原因を教えて頂けませんでしょうか。
for文が終了してないからじゃないの?
564 :
nobodyさん :2010/04/02(金) 15:48:48 ID:H+Jv7Iis
すみません。forじゃなくて、whileでした。 吐き出すものがずっと同じものなので、抜けないのです。 例を上げますと hoge ="あえ@えれ---れれあえ@れ---あえ@えれ---あえい@れえれ---えあら@れえ" のようになってて、@マークがなくなるとwhileを抜けるようにしてるのですが、 最初の「---」までが抜けていないので、@マークが減らずに無限ループに陥るのです。 上の例の$honbun[0]は確実に、抜き出したい文章を抜き出しているのですが、 教えて頂いた構文に入れると、その該当する文章が抜けないのです。
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); これでうまくいっていたのですが、複数ある場合に 全部が抜き出されてしまって、困ってしまって、質問させて頂いたわけです。
正規表現に引っかかる文字入ってるとか。
$honbun[0]にpreg_quoteかけるとか。 というか文字列を --- で区切ればいいんじゃないの? explode使って。
---で区切っちゃダメだった・・・忘れて。
570 :
nobodyさん :2010/04/02(金) 16:48:58 ID:H+Jv7Iis
$honbun[0] = preg_quote($honbun[0], '/'); とりあえずこれを入れると、簡単なソースでは成功しました。 ありがとうございました。 これから実際に使ってるプログラムの方に導入してみて、 ちゃんと動くか実験してみます。ありがとうございました。
>>544 > PHPでファイル生成時に最初から rw-r--rw- というパーミションのファイルを
> 生成できれば悩まずに済むんだけどそういう方法って無い?
umask
でも大抵はchmod。
>>570 そもそもの処理でメールアドレスに ---含む場合を想定してないので、もし出来るなら気にしてね。
574 :
nobodyさん :2010/04/02(金) 20:58:12 ID:peh3ZVn3
phpスクリプトから同じサーバ内のデータファイルを読み込むとして phpスクリプト以外からアクセスすると(正確にはサーバ外のファイルから) アクセスが弾かれるようにするにはどうすればいいんでしょうか?
>>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; のように出力の中に書きたいのですがどのように書くのが正しいのでしょうか?
出来ない
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に強制上書きされてしまいませんか?
質問しようと思って問題部分を見直してたら自己解決した。 ($hoge == "foo") で $hoge に 0 が入って true になってた。 比較演算子の問題はちゃんと把握してるつもりだったけど やっぱりよく注意してコーディングしてないとハマるね
真実を述べてるから
>>581 "hoge" は数字にすると0(数値に相当するものが入ってない)だから。
$hogeに数字が入ってると、自動的に数値で比較してくれる便利機能がついてる。
警告の一つも出してくれりゃいいのになぁ。
<img src="(画像ファイルへのパス)"> のように画像を開くときは画像ファイルへのパスを指定する必要があるわけですが 絶対パス(realpath()で得られるパス)は受け付けてくれません。 代わりにドキュメントルートからのパス(多くの場合はpublic_htmlから)を指定する必要があるわけですが /zettai/path/public_html/pic/1.gif のように絶対パスで与えられているファイル名をドキュメントルートからのファイル名 /pic/1.gif に変えるにはどういう方法を使えばいいでしょうか?
文字列からドキュメントルートからのパスを切り取るというのはどうか
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()の返り値は確認したのか?
戻り値?返り血?
いきなり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が出力されます。 これが出ないようにするには、どうすれば良いですか? よろしくお願い致します。
>>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と変わりません。 知っている方、よろしくお願い致します。
>>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で書き出せるというのが理想なのですが、 一度全部読み出し、もう一つオブジェクトを生成し、そちらにプロパティを移して新しいオブジェクトから書き出す というのはどうも違和感があります。
$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の部分も階層化させるため、もっと複雑な処理になります。
【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 ということは明示的にcloseしたい理由がなければ放置でもOKってことですか?
上記の例では1番は論外としても2番か、それか記述せずでもOKと?
実行が終わる直前や $db = new SQLite3("hoge.sqlite"); たとえばこの変数に $db = null; とか $db = array(); とか $db = new SQLite3("hoge.sqlite"); とか のように上書きしてしまってもう使えなくなってもデストラクタが動く
なるほど。じゃあ実質不要ですね。気にしないことにします。 サンクス。
609 :
nobodyさん :2010/04/07(水) 02:22:36 ID:DRQlFq+M
フォームからの情報を受け取りたいのですが urldecodeは必要ですか? $_GET[] の時点で既にurldecodeされてるのでしょうか?
<?php echo print_r($GET); ?> してみなよ
やってみます
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が帰ってこないようです。 原因わかりますか?
>>612 if(setcookie("checkCookie",time(),$expire)){return 1;}
ブラウザの設定でOFFにしてもサーバから送信は可能だから
ここがとりあえず成功しちゃうんだと思われる
614 :
nobodyさん :2010/04/07(水) 06:27:00 ID:dfs6oC5W
>>613 ありがとうございます。
ということは、
セットする→セットしたクッキーが存在するか否か
という処理だと行けるってことですよね?
>>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
617 :
nobodyさん :2010/04/07(水) 07:56:30 ID:3KWYoUnh
【OS名】WindowsXP SP3 【PHPのバージョン】php5.2.13 【連携ソフトウェア】Apache2.2.15 【質問内容】 php5.2.13に対応しているeAcceleratorのバイナリを配布しているサイトはありますか?
619 :
nobodyさん :2010/04/07(水) 12:05:21 ID:qoBEK7gJ
指定したURLに何秒後かに飛ばすことは出来ますか?
>>619 5秒後にnext.htmlへ飛ばす
header( 'refresh: 5; url=next.html' );
ちなみにHTMLのタグでも可能
<head>
<meta http-equiv="refresh" content="5;URL=next.html">
</head>
headerはブラウザの設定により飛ばないからmetaの方が良いかも
622 :
nobodyさん :2010/04/07(水) 12:37:23 ID:qoBEK7gJ
ありがとうございます。metaでやってみます
623 :
nobodyさん :2010/04/07(水) 13:29:34 ID:3KWYoUnh
625 :
nobodyさん :2010/04/07(水) 14:33:07 ID:W7cZb24v
掲示板の書き込み確認画面で書き込み内容を表示するときは改行文字を<br>にして表示します。 同意して書き込む際に、hiddenで送る内容ですが、仕様上<br>などのタグをhiddenに含めるとエラーに成ります。 なので、hiddenには<br>などで置換していない状態の書き込みを入れたいのですが、この場合、改行文字がhtmlソースで働いてhtmlソースが乱れてしまいます。 何かで改行文字を置換したいのですが何がいいでしょうか?2chの場合「?」で置換されているようです。
<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;は全角のはてな。
全角のはてなだったら問題ないですね!
これでいきます。
全角のはてなの入った文はどうするの?
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で値などを渡したりする方法はありますか?
セッション使えセッション
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
>>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というエディタだと拾ってるんですが どういう事なんでしょうか?
ありがとう*
639 :
nobodyさん :2010/04/08(木) 01:08:32 ID:bQ9+sypi
640 :
sage :2010/04/08(木) 09:23:03 ID:???
せめて翻訳サイトで見てみるくらいしてみろよ
641 :
625 :2010/04/08(木) 09:41:24 ID:L4uu4ArY
昨日、掲示板の改行文字の件で質問したものですが&#10;ではうまくいきませんでした。 なにか他の考え方がある方はいますでしょうか?
643 :
nobodyさん :2010/04/08(木) 09:59:22 ID:L4uu4ArY
>>641 調べてみたら「&#10;」って改行文字だったんですね。
2chに書くと全角のはてなになったので勘違いしてました。
2chのように、
フォームから入力してPOSTで送信
↓
確認画面
↓
書き込み
という仕組みなんですが、確認画面で表示するのは改行文字を<br>に置換しますが、書き込み用にhiddenに入れるのを
<br>で置換するとサーバー側の仕様(タグの受信がNGなのです)でエラーを吐いてしまいます。
>>643 だからhiddenに入れるのをなんで<br>に置き換える必要があるの?
釣りじゃないの?
646 :
nobodyさん :2010/04/08(木) 10:09:44 ID:L4uu4ArY
>>643 hiddenにいれるのが\nのままだとhtmlソースに変な改行が入ってしまうのが気になってるからです。
つ php エスケープ
>>646 試してないけど\nを\\nに置き換えればいけるかも
//変換
$text = strtr($text, array("\\" => "\\\\", "\n" => "\\n"));
print $text;
//復元
$text = strtr($text, array("\\\\" => "\\", "\\n" => "\n"));
print $text;
ただ置き換えたい理由を未だ理解できない・・
<br>にしたままでいいから、 hiddenのとこに書き出すのは htmlspecialchar かけて。
それだと2重になるからだめじゃない?
651 :
nobodyさん :2010/04/08(木) 12:12:27 ID:bQ9+sypi
>>640 翻訳ぐらいしてるわボケ
お前はコードまで一緒に訳される機械翻訳で意味分かったのか?
>>646 htmlに余計な改行が入ってソースが気になるなら、そもそもがhiddenなんかに持たせずにphpのsessionに保存すれば?
どうせ、確認画面で表示だけだと値をpost出来ないからhiddenに持たせようとかそんな程度の話でしょう?(勝手な妄想だから、違っても気にするな)
textareaタグを使って、見た目をただの表示っぽく調整するとか、方法はいろいろあると思うけどね。
やりたい事の実現方法案を自分で決めてしまって、その案に対しての技術的な質問をしてもなかなか解決しない場合があるよ。
何のためにhiddenで値を保持しようとしているのか、まずはそこから話さないとアドバイスしにくいんじゃね?
そういうのにSIDを使いまわすのが理想的なのかは個人による。 たぶんやりたいのは投稿内容の確認画面ではないかとエスパー。
>>651 640じゃないが、機械翻訳したうえで、オリジナルサイトと両方見ながら読む努力しろよ。
コンピュータ用語なんてまともに翻訳できなくて当たり前なんだから。
そもそも、コードが翻訳された部分なんて、
>これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
こんなことを知るうえでは無関係な場所だから読む必要ないだろ。
655 :
nobodyさん :2010/04/08(木) 12:59:45 ID:bQ9+sypi
>>654 要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?
プログラミングのプロのみなさんのコンプライアンス・ガバナンスの見地に基づいた意見を求めております
654を >要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか? こう解釈する奴では、何を教えて貰っても無駄だろ。
最近の開発者はコピペしまくりだものw
658 :
nobodyさん :2010/04/08(木) 13:06:24 ID:bQ9+sypi
雑魚の意見は求めてません
660 :
nobodyさん :2010/04/08(木) 13:09:35 ID:bQ9+sypi
お前ら、聖人気取りで上から目線だけど これは良いサイト教えてもらったわ 俺も使っちゃおうとか思ってないか? とんでもない奴らだな・・・
>>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(); // 正常終了したら "" を返す。他のクラスに処理をおまかせしたかったら、そのクラス名を返す } こんな感じで使うことを想定しています。
>>660 お前の知識が乏しすぎるだけ。
そもそも、誰も上から目線じゃねーだろ。
お前が努力していないのを指摘してるだけ。
普通にそういうの理解してる連中は、読む努力、理解する努力をしてるの。
お前みたいに「英語嫁ねー」「機械翻訳よみずれー」なんて程度で「教えて」って騒ぐやつに細かく答えてたらきりがないんだよ。
667 :
nobodyさん :2010/04/08(木) 13:28:43 ID:bQ9+sypi
>>662 リソースとソースを勘違いしてないか?
俺が言ったのは「グーグルのリソース」でソースコードの事じゃないよ
ここはそういう奴もOKなスレではあるはずだけど >・ 質問者として、態度をわきまえること。 これが読めない奴は消えろ
みんな熱くなって気づいてないけど そもそもがPHPの質問でもない
670 :
nobodyさん :2010/04/08(木) 13:37:48 ID:bQ9+sypi
663さんが可愛そうなのでまた夜にでも来ます^^ 663さんを一致団結して支えてください それまでに俺の答えを用意しとくように
671 :
661 :2010/04/08(木) 13:42:48 ID:???
こんな奴に丁寧に答えること無いのに
お前ら煽りには全力で釣られるのに、真面目な質問は全スルーなのなwwww
>>663 クラスの名前とクラスのファイル名を結ぶところと
実際のクラスのインクルードしてインスタンスを返すクラスを作ったらどうですか。
あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
675 :
nobodyさん :2010/04/08(木) 17:18:57 ID:fqmdAirf
>>674 レスありがとうございます。
ちょっとおっしゃっていることが理解できないのですが…。推測で。
ファクトリークラスを作ればよい。ということでしょうか。
それでも結局クラス名をユニークにする必要がありませんか?
どんな階層(includeした中でincludeされたファイルとか)でクラスが定義されても、結局グローバル空間で定義したのと同じ扱いになってしまうようなので。
>あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
a/b_c.php
a_b/c.php
が同じになってしまうので、厳密には解決しませんね。
(ということですよね?)
モジュール処理などでループさせる時にそういう処理を考えるわ。 そういや、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一択とします。
>>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>
register_globalsがoffだから動かないだけ。 ただしsession_registerが先々使えなくなるので使わないのが吉。 検索してマニュアルに目を通せば1分で解決する。
>>679 不安なら
ob_start('footer');
function footer(){
echo '</body></html>';
}
683 :
677 :2010/04/09(金) 00:54:25 ID:2yEYSOQo
>>678 プリペアド・ステートメントのキャッシュは盲点でした。
が、1コネクション毎のようなので、今のところ使う機会がほとんどなさそうです…
あえてpdo_mysqlを使う必要はないということですね。
ありがとうございました。
>>679 まぁHTMLなんて閉じタグなくても滅多に問題おきないから
気にするとしたら自分の満足感くらいだと思う
685 :
:2010/04/09(金) 02:43:58 ID:CD4rw/LK
テキストを1行づつ $code = mb_detect_encoding($str); $str_out = mb_convert_encoding($str,"UTF-8",$code); とすると「」「」があるところで Warning: mb_convert_encoding() [function.mb-convert-encoding]: Illegal character encoding specified in となります。見た目同じなんですがコピペ検索すると互いに一方はヒットしないです。 FireFoxのアドレスバーにコピペすると□になります。 何なん?なぁ何なん?もう分からへんわ です。教えてください。
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ます
689 :
nobodyさん :2010/04/09(金) 06:36:59 ID:q/M4MThC
>>688 言葉足りず申し訳ないんですがそれだと
set-cookie: name=value; name=value
になってしまうんです
>>689 なぜHTTPリクエストに Set-Cookie が出てくる
Cookie: name1=value; name2=value なら仕様通りの動きだが
691 :
nobodyさん :2010/04/09(金) 06:54:45 ID:q/M4MThC
Set-CookieじゃなくてCookie:でした
domainやpathが同じだけどもnameとvalueが異なるクッキーを2行送ってくるので リクエストの際も2行で送りたいのです 現状のaddCookieに2行分を詰め込む方法などはあるのでしょうか?
cookienameを変えたら? nameがcookienameの話ならならname=valueを独自変換して取り扱えばいい
質問が抽象的で何がしたいのかさっぱりわからないんだけど、よく回答できるな
695 :
680 :2010/04/09(金) 11:11:26 ID:1iWtWM0x
>>681 エスパー先生有難うございます。
3分かかっちゃいましたけど解決しました〜;;
>>688 ファイルを丸ごとエンコードする方法があるのですか?
逆にmb_convert_encodingに一行しか入れてはならないと誰が決めたのか聞きたい
誰も決めてなかったらしくエラー吐かなくなった えらいぞ俺
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を付ける場合は、その理由を教えてください。
POSTされていないときに、 $_POST["text"] != "" が null で通るからかな。
未定義と空の文字列を1つの式で検出するテクニック if( isset($_POST['example'][1]) ){ }
>>701 それだと$_POST['example']がない場合にエラーでない?
へぇ、出なかった! ほんと自由な言語だわ
704 :
699 :2010/04/09(金) 20:04:18 ID:Mp0D6Mth
みなさんありがとうございます。
少し疑問に思ったのですが、
>>700 のってどういう場合に起こりえるのでしょうか?
外部フォームからPOSTされたとしても通らないと思うし。
「POSTされてないとき」の場面が想像できません。
どんまい
>>704 クライアントからどういうデータがくるかなんてわからない
メソッドなんて自由に変えられるし、
HTML改ざんして$_POST["text"]に該当するフォームを消すこともできる
ポストされたけど値が無いのと、ポストされてないけど(とうぜん)値が無いときと分ける必要がなければそうだね。
708 :
nobodyさん :2010/04/10(土) 09:26:10 ID:3YvP476N
if文での and と ネスト で質問があります。 and でつなげられる場合、出来る限りネストを使わないほうが 処理は速くなるのでしょうか?
別に同じ
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 上と下は同じと考えてよいでしょうか? 可視性から下にしたいのですが、サンプルコードが上のやり方で 書いてあることがよくあるのです。
全然違う
>>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です。
>>716 strpos(implode($arr), $a)
でいいんじゃない?
>>717 エラー制御演算子
error_reporting
display_errors
trigger_error
とか
ごめん最後は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 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;
}
のつもりだったとしてもおかしいだろう
実際走らせてみればいいじゃん。
>>723 が何をいいたいのかはよく分からないけど、
$arr[0] = 'ab'
$arr[1] = 'bc'
で、abを検索するとマッチしちゃうようになると思うよ。
じゃないや、bbです。
>>723 の後者はこれを言ってんのかな
$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 使えばいいだけだし。
implode使うって話はstrpos($str, implode('', $arr))なんだとおもうよ。 配列の中身を全部連結したものに対して検索すればいいんでない?っていう。
>>729 パラメータが逆だし
strpos(implode($arr), $str)だと境界がなくなるので結果が変わるっていうことでしょ
絶対に使いそうもない文字をはさんで文字列を作ればOK
strposはバイナリデータOKなので例えば
strpos(implode(0x00,$arr), $str)
>730 注意: implode()は、歴史的な理由により、引数をどちら の順番でも受けつけることが可能です。
732 :
nobodyさん :2010/04/11(日) 10:01:49 ID:3X2bc6FO
配布されてるスクリプトを見ると、 いちいち設定ファイル以外のメインスクリプトでdefinedで定数をチェックして、 なかったら定義したりしてますが、 あれはユーザーが定数を設定するとき削除したりコメントアウトしたり、 予期せぬことをしたときの対策にやっているのでしょうか? もしそうなら個人的にはそんな勝手にいじるなら動かなくて当たり前ですよ的なスタンスでいいと思うのですが、 何か他に意味はあるのでしょうか?
>>732 予想外のスクリプトを叩かれた場合の誤動作の穴が生じるのを防ぐため
いままでMYSQLを必要な分だけぐぐって使ってたのですが、DBサイト作るにあたって真面目に DB基礎本読んで正規化を学んだんですが、 PHPのサイトや最近流行のPHP+MYSQL本を読んでも、外部キーや参照の話って全くありません。 重複した値があるフィールドは別テーブルにするとか、正規化しても 外部キーとかつかった実例が紹介されてないので、実装していいものか悩みます。 PHP+MYSQLで外部キーや参照を使わない理由ってあるのでしょうか?
735 :
nobodyさん :2010/04/11(日) 10:40:06 ID:xQs0jEVq
すいません上げ忘れました
DBとアプリケーションの関係わかっとるかな?
737 :
nobodyさん :2010/04/11(日) 11:49:58 ID:xQs0jEVq
すいません、もうちょっと具体的にお願いします。 たぶんわかってません。
学ぶよりまず先に手を動かせ
>>734 MySQLのデフォルトストレージエンジンMyISAMが外部キー制約をサポートしなかったり、
制約自体がデータの不整合を減らすための仕組みなだけなので
面倒くさがりな入門書なら省いちゃうかもね
パフォーマンスのためにあえて使わないケースもあるけど
よく分からないから使わない、はNGだねぇ
postgresql使え
741 :
nobodyさん :2010/04/11(日) 14:11:50 ID:8e9aaJ3F
VBのinstr()関数のような、何文字目に目的の文字列があるか調べ、マッチする文字列があった場合は先頭から何文字目にあるかを返す関数はありませんか?
あるよ
なんだっけ・・・
ねーよ
745 :
nobodyさん :2010/04/11(日) 14:33:37 ID:xQs0jEVq
>>738 10年手ばっかり動かして学んでこなかった結果、場当たり的なプログラミングしかできない奴に育ってしまったので
基礎学んでます。
>>739 RDBなのに全然リレーショナルしない話ばっかで、なんか使わない理由あるのかな?ってすごい不思議です。
DB本だとかならず正規化するといいよ!って話がでるのに。
入門書だけでなく、本屋にあるPHP本全部みても話題にでてないし、ぐぐっても解説してるところがほとんどないもので・・・
参照してるやつは消せないとか、具体的な実装例とかそういうのみたかったのですが、自分で試すしかない感じです。
>>741 strposとかpreg_matchとか
基礎を学びたいと言っておいて結局コピペできるサンプルを欲しがってるだけじゃないの? DB本で正規化のこと学んで、PHP本でAPIの使い方学べば、あとは自分で正規形のDBを操作するPHPアプリ作れるだろ
747 :
nobodyさん :2010/04/11(日) 14:47:32 ID:xQs0jEVq
そうですね。自分で解決することにします。お騒がせしました。
>>747 ここの連中はバカとはさみは使いようって感じで情報聞き出せればおk程度に思っといたらいいよ
丁寧に聞いてるとなかなか言わないからな、天邪鬼だから。
例えば間違いをわざと誇張するとかオススメ。
自信満々なアホが釣られて正しく答えてくれる。
そこまでしないと情報を獲得できないなんて情弱は哀れだな
基本的にすぐ煽るやつは質問者よりも技術的にレベル低い事多いから、
自分で調べた方が速いよ。
>>746 とかいい例。
質問の意味を理解してない。
情弱ほど情弱という言葉使いたがる不思議
>>748 おまえ、質問したけど態度が悪すぎて答えてもらえなかったから恨んでるんだなw
>>739 >よく分からないから使わない、はNGだねぇ
仕事では、「よく分からないものは使わない」が正解だと思うけど
それが使うべきものかもしれないじゃないか
だったら、よく分かるまで勉強しろ
739はそれを言ってるんだろw
759 :
nobodyさん :2010/04/11(日) 18:01:14 ID:xnCsJMSA
昨日からPHPの勉強はじめたんだがなんでXAMPPじゃ駄目って言う人多いの? なんかセキュリティがどうとか、本番では使わないとかいってるんだが
うむ気にするな 自己責任だ
>>759 > 昨日からPHPの勉強はじめたんだがなんでXAMPPじゃ駄目って言う人多いの?
俺もそこらへん知りたい。
EclipseでPHPを実装しようと思ってるんだけど
実行環境やデバッグ環境はどれを選んだらいいんだろう?
XAMPPでPHP・Apache・MySQLを一式インストールして実行・デバッグ環境を構築するのが今のトレンド?
>>762 勉強で使うなら好きにすればいいと思うけど
そもそもなんでDBがMySQLって固定されてるんだ?
俺はPostgreSQL派なのでw
自分用のカラオケ(リクエスト番号)リストのwebアプリを作ったときは、
普通のエディタでつくったけどね
テストは、外部に出てるサーバにあげて、そのまま本番運用w
自分用だしね
764 :
nobodyさん :2010/04/11(日) 18:38:02 ID:xnCsJMSA
勉強用で使うなら、って事は将来的には変える事になるってこと?
XAMPPは開発が楽なように各種設定がセキュリティ的にゆるく なってるんだよ。 それだけだから気にするな
>>764 仕事で使うときは必ずしも自分が好きな環境が使えるわけじゃないよ
IDEごときに振り回されるようじゃやってられません
ニートの俺は勝ち組ってことか
tet
仮想環境にLINUXをインストール、LAMPを構築してsambaとかじゃねーか将来のためにヴァージョン管理も入れておけ
別にXAMPPを使っているからといって大して問題にもならないし 後で困ったらその時また勉強出来ていいじゃまいか
好きな環境使えばいいよ。 それでやった考え方は言語や環境変わっても役には立つ。
しかし、apache、php、mysqlをインスコするのが面倒といわれたのには驚いた
面倒っつ〜かセキュリティ的にね・・・
>>772 いや、それは慣れててスムーズに出来ても面倒なことに変りないだろ。
「俺は面倒じゃないぜ!」なんてかっこつけにもなっとらんぞ。
手間かけなくて良いときはかけないほうが賢い。
はいはいXAMPP使ってる人は賢い賢い
だからさ、何度も言ってるけどXAMPPは個別に入れてもXAMPP使っても全く同じことができる人のための物で 決して知識の無い初心者でも手軽に鯖環境を構築できるための物じゃないんだよ
XAMPPはNGってことで
どうしてもダメだってことにしたい必死な人がいるんだよね。このスレに。
信者が必死ですね
XAMPPを入れて完璧に使いこなせてる奴以外は使うな
>>730 > strpos(implode(0x00,$arr), $str)
この例は動くのか?
動くが0x00ってつまり0だから意味ない。
意味のあるデリミタにするなら"\x0"かchr(0)じゃないと。
しかしどっちにしろ
>>716 の関数だと探索するのは$arrのどれか1つであって
$strじゃなくね?
意味がないというか、意味が変わっちゃうよね。 要素またいでいても引っかかっちゃう。
え? XAMPPってローカル開発環境でしょ? いくらなんでもあれそのままグローバルに公開する人いないでしょ。
いざグローバルになると困るんだとさ。意味がさっぱり分からんけど。 与えられた特定の環境でしか使えない人間が言いそうだよね。
ああ、XAMPPで入門すると本番環境構築できないよ、ってこと? そんなのプログラムの勉強とサーバの勉強切り分けりゃいいんじゃねーの? Linuxメインで開発してる身からするとWindowsは開発環境構築めんどくせーなと 思ってたからXAMPP出たときは便利になったなーと思ったけどな。
XAMPP使って鯖の質問してくる奴にそう言え
実際の鯖をインストール&稼働するのではなく仮想的な環境を構築してその中で実行できないものかね?
すればいいじゃん 楽になる面も多々あるよ
技術的なことになると簡単なことでもわざわざ難しく書くキチガイが多くて初心者が戸惑いやすいっていう現象が起こっている気がする 本でもネットでも掲示板でもそう
例えばどういうの?
ただ単に知識がないから難しく聞こえるだけだろw
さすができるプログラマさんパネェっす
XAMPP禁止でいいだろ 信者がうぜえし
信者よりもアンチのほうが鬱陶しい 好きなもん使えばいいだろ
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ユーザは柔軟に対応しましょう
>直接は関係ないですが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環境で使うと、動かなかったりエラーを吐いたりするってだけ。 最初から本番に近い環境でやってればそういう心配が減るってだけだと思う。
>>792 簡単なことでも注意すべき点が多いってことじゃないかなぁ
デフォでセキュアにしたらSELinuxとかVistaのUACとかで初心者が参っちゃったじゃん。
なれてればどちらも有効にしておくのが楽になるけども。
XAMPPの良し悪しが分からないような人に本番なんてないだろ
>>804 一番最後に煽ってないと気が済まないこういうのがいる限りこのスレは伸びる
>>805 自身がそうであることに気づいてないところが笑いどころかw
XAMPPの話はスレ違いだから、二度と話題に出さなければいいだけ
XAMPPって結局どうなの? 使わない方がいいの?
振り出しに戻ると
814 :
sage :2010/04/12(月) 11:59:43 ID:???
本番と同じ環境が用意できるならそれ使うにこしたこた〜ない
つ〜か
>>800 で答え出てるんじゃね?
>>812 自分で鯖構築できる奴だけが使っていいモノ。
鯖構築出来ない奴にWebProgramを弄る資格は無い。
馬鹿ばっか
>>817 君と違って鯖構築出来るプログラマ様ですが?
鯖って・・・恥ずかしく無いですか?
普通vmware+ubuntuで開発するよねー
素人はだまってろ プロはxubuntu一択
ぼくちゃんこの環境じゃないとつくれーないってか。 どこがプロだw
>>821 ごめん、VirtualboxとDebianだわ。
825 :
sage :2010/04/12(月) 13:07:38 ID:???
おれはVirtualBox + CentOSだな 会社がRedhat使ってるってのも理由だけど。
俺ぐらいになればどの環境で開発しても本番でも動くから問題ないけどな そういう心配するやつはフレームワークで開発すればいいよ 共通化しまくってるからあえて環境選ぶ書き方しない限り問題ないだろう
>>821 >>824 作業用マシンの事を言ってるの?サーバの事をいってるの?
作業用マシンの事なら、仮想環境上でわざわざ作業するの?
サーバの事なら、debian系って珍しいね、CentOS使わないの?
開発をあえてlinuxでやるのが理解できない windows持ってない人なのかな?w
829 :
sage :2010/04/12(月) 13:25:15 ID:???
本番環境がWindowsって事が今までなかったな。 俺だけかもしれんが。
>>828 ゲームとかグラフィックス系の事やらないならwindowsより使いやすいと思ってる
開発はNetbeans使ってるからOS差はそんなに関係ないし
やっぱシェルが大きい、細かい事をコマンドでさくさくできるのがいい
あとはサーバと作業用PCのOSが統一できるのも良い
もっともwindowsもPowerShell使いこなしていれば良いのかもしれないが。
>>829 Windows鯖を提供しててあえてWAMP構成にするようなとこはないよ
WIMA(Windows+IIS+MSSQL+ASP(.NET))が一般的かと
企業のアプリケーション鯖はほとんどそんな感じだが
脱線しすぎだろ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"を実行しようとしてもすぐ処理を中止するようにしたいです。
>>834 古典的だけど、実行時にファイル作って終了時にファイル消すって作りにしたら?
apacheとかにあろうhttpd.pidみたいにプロセスID入れたファイルとかを作り、
「もしそのファイルがあるなら実行しない」をスクリプトの最初に書いておけば良いと思う
mutex
とおもったらmutex用意されてなかった。 ファイルロックかなぁ。
839 :
質問 :2010/04/12(月) 16:32:44 ID:???
質問させてください。 あるページをFILE関数でHTMLファイルにしたいのですが、 そのページがPOSTされた値を反映するページだと上手くいきません。 例えば <?php print'あなたの名前は$_POST['name']です'; ?> を表示しても 「あなたの名前はです」 になってしまいます。 なにか良い方法はありますか?
>>839 シングルクオート中は変数として評価されないから$_POST['name']という文字列で評価されるはず
あとエスケープしてないので文字列['name']の最初のシングルクオートのところで終了と判断されて
パースエラーになるはずだが
確認してないから断言はできないが
>「あなたの名前はです」
こういう結果はでないんじゃね
↑でいったことを直すには
print 'あなたの名前は' . $_POST['name'] . 'です';
もしくは
print "あなたの名前は{$_POST['name']}です";
といったかんじにする
んでスレタイ読んでね
質問はエスパーすぎてよくわかりません・・・
>>839 phpのスクリプトはダウンロードできないよ
良い方法もないです
>>839 エスパーすると
curlでPOSTしてあげて結果のHTMLを受け取ればOK
「php curl post」で検索するといっぱいでてくる。
843 :
839 :2010/04/12(月) 17:32:32 ID:???
>>840-842 返答ありがとうございます。
言葉足らずで申し訳ないです。
前述の条件でPHP実行後のHTMLソースを抜き出したかったのです。
なので、まだググッてはないですが842さんが1番望む答えに近いかも。
またわからなかったらテンプレ読んだうえで再度質問させていただきます。
ありがとうございました
エスパー力が足りなかった。精進する
845 :
839 :2010/04/12(月) 17:49:02 ID:???
>>844 いやいやいやいや、そんなことないです。
私の質問の仕方が悪すぎました。
本当にすいませんでした。
どうかお気になさいませぬように
まずはテンプレ読んでIDだそうな
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で不可能であれば何か別の手段を教えていただけると幸いです。
スレ間違えちゃったんだね
別の手段にphpが含まれているといってみる
>何か便利なものはありますでしょうか PHP
タイミング的に釣りだろw
855 :
nobodyさん :2010/04/12(月) 23:05:56 ID:xbOcApfN
PHPで公開鍵暗号方式を使う方法ってありますか
856 :
nobodyさん :2010/04/12(月) 23:10:08 ID:xbOcApfN
go-pear.phpでpearインストールした後に、誤って管理ページのphp消しちゃった…。 どこかででダウンロードできない?
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するような場合に有効なのですか?
そうです 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
864 :
nobodyさん :2010/04/13(火) 22:06:37 ID:Pebc2mYy
mysqlでinsertしてデータに連番で番号を付けています。 insert完了後にそれが何番であったか知りたいのですが、selectするしかないのでしょうか? insertの処理で返って来るようにはできますか?
酔ってて間違えた^^; ×クリーク ○クエリー
867 :
nobodyさん :2010/04/13(火) 22:14:21 ID:Pebc2mYy
>>862 正規表現を使わない場合はちょっと違う動作にはなるけどこんな感じ
list($lastNo, $tmp) = explode(",", $data[1], 2);
要するにカンマで区切られた文字列から一つ目のカンマの前にある数字を$lastNoに入れるってことかな
function hoge($arg, $arg1 = 1, $arg2 = 2, $arg3 = 3) という関数があって 第1引数と第3引数のみ指定して呼び出したい場合は どうやって記述するのでしょうか? 無理なのかな?
パラメータをハッシュにしたら
第2をnullにする ついでにスレタイ嫁
nullが入るだけじゃん
null入れたらだめでしょw
nullでいいと思うよ 関数hogeの中身をいじれないなら駄目だけど。
875 :
nobodyさん :2010/04/14(水) 17:12:43 ID:oynBSGJd
関数hogeはライブラリのため修正できません null指定したら、nullになりませんか?
nullになるよ
一般的なライブラリでそのような事態になるのは、使い方が特殊すぎる、または使い方が悪い そうではないライブラリなら、ライブラリが悪い可能性がある
function hogehoge($arg,$arg1=1,$arg3=3,$arg2=2) { hoge($arg,$arg1,$agr2,$arg3); }
879 :
nobodyさん :2010/04/14(水) 18:25:12 ID:oynBSGJd
無理ということが分かったので、きっぱり諦めます ありがとうございました
はい
超初心者ですいません。 imgタグを複数取得したいんですが、 preg_match_all('/<img(.*?)>/',$URL,$AAA); として、 echo $AAA[0]; echo $AAA[1]; とすると、2つめの$AAA[1]はタグ内のsrc以下が表示されてしまいます。 次のimgを出力するにはどうすればいいですか? 基本的すぎると思いますがよろしくお願いします。
preg_match_all('/<img(?:.*?)>/',$URL,$AAA); 超初心者とか基本的すぎるとかくだらない修飾はいりません。 基本的すぎると卑下するぐらいならマニュアルでも読んでください。
>>881 var_dump($AAA);
echo $AAA[0][0];
echo $AAA[0][1];
卑下してることに突っ込むより、スレタイ読んでないことに突っ込め
なんて?
なにしてもIDなしの質問はなくならないよ
検索語のリストファイルと辞書ファイルを用意して for(検索語)の中にfor(辞書)を入れて総当たりで調べるより 効率的な方法ってありますか?
ありません
どちらかを連想配列に
892 :
nobodyさん :2010/04/14(水) 20:37:07 ID:K3XQO6To
>889-891 ありがとうございましたm(_ _)m
置換で、この文字列次の行の頭に指定した文字列がくるようにできますか?
次スレからは「下らねぇ質問はID出しても出さなくてもいいから書き込みやがれ」だな
>>895 お前はプログラムをやめろ
冗長的な思考の持ち主には向いてない
このスレを存続させたいなら従来のようにID無し質問が来たら即 解決しましたのレスを付ける地味な手法を粛々と
最近じゃ出さないほうが珍しかったのに ここ連続できてるの見ると同一人物か 前後の流れ見て意図的にやってるとしか思えない スルーしとけばいいこと
スレ番70台辺りから
>>898 みたいなクズが居座りだしたので
ID出すようになったんだよな
いっそIDが出る板に移動した方がいいぐらいだ
901 :
900 :2010/04/15(木) 18:30:27 ID:???
自己解決しました
902 :
901 :2010/04/15(木) 18:41:05 ID:???
と思ったら夢でした。
こまけーこと気にしてバカじゃねぇの??? 気に食わなければ答えなきゃいいし気にしないなら答えてあげればいい。 マジでぐちぐちバカじゃねぇの??? バカじゃねぇの??? ねぇ死ぬの???
それを言ったら2ちゃんのレス8割は無くなるしひきニートも9.9割死ぬ
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がおかしいのか、どこが悪いのかわかりません
お願いします
\\は\なのだから、\\1は \\\\1だろ 次は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を見てくれません。 こんなものなのでしょうか? あるいはバージョンに関係なく,当方は意図していませんが, インストールの仕方によって変化するものなのでしょうか?
>>907 試してないから経験的にいうとデリミタが設定されてないせい
$patternの中身の最初と最後に適当なデリミタを入れてみて
あとエスケープするべき記号が適切にエスケープされていないからそのせいだと思う
後方参照方法は問題ない$nか\\nでOK
911 :
nobodyさん :2010/04/16(金) 07:22:16 ID:m1X69OPF
>>910 その二点を修正したら上手くいきました。
本当に助かります。どうもありがとうございました。
>>909 見てくれないと判断した理由は?
phpinfo()で、どう見える?
>>912 phpinfo()で,バージョンによって,
C:\PHP
であったり,
C:\Windpws
であったりします。
レジストリは? HKEY_LOCAL_MACHINE\SOFTWARE\PHP\バージョン HKEY_LOCAL_MACHINE\SOFTWARE\PHP\バージョン HKEY_LOCAL_MACHINE\SOFTWARE\PHP\バージョン の IniFilePath
>>914 HKEY_LOCAL_MACHINE\SOFTWARE\PHPには
InstallDir
Version
WebServerType
この3つしかありませんでした。
>>914 IniFilePathを加えて,C:\PHPを指定して,IISも再起動させてみましたが,infoの表示はC:\Windowsになります。
ていうか、なんでC:\PHP\php.iniを見てるのかを調べたほうが。 それが標準外の動作でしょ
918 :
nobodyさん :2010/04/17(土) 03:00:09 ID:941jDBNR
XAMPPでもいれましょうか。
>>917 おっしゃる通りです。
どうして,バージョンによっては,C:\PHPにあるphp.iniを見に行くことがあったのか,
よくわからなかったので,質問させていただきました。
お騒がせしてしまして申し訳ありません。
C:\PHP\php.iniが標準じゃないの?
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 そうですか。。。
ありがとうございます。
>>924 言葉って難しいですね。
ちなみに初心者には意味がないという基準はなんでしょうか?
>ちなみに初心者には意味がないという基準はなんでしょうか? そういう評をされているものと言えば、初心者向けの解説から始まっていない含まれていない、 これを読んでいる人はそういう部分は習得済みという前提で書かれているものと解するかな、俺は。
リファレンス読んで理解して実装できる人くらいの意味じゃね
高いからいい本っていったらそれは違うんじゃね 無駄にページ数が多いだけかもしれないし 共同著書だったり利権者が多すぎて分配を多くするために高く設定してたり 絶版になってプレミア価格がついてたりと そんなに本が読みたければGoogle BooksでPHPの本探せばいいんじゃないかね 全部は読めないけど読める部分はいっぱいあるし
googleでPHP 入門でぐぐればいいんじゃね
phpで正規表現の勉強をしています。色々なサイトを巡回して勉強していたところ 次の携帯の種類を判定する正規表現を見つけました。 if (preg_match("/^SoftBank/i", $ua)) { //SoftBank } ここで質問なのですが、 @末尾にある「 /i 」 とは何を意味するのでしょか? A先頭にある「 / 」は何を意味するのでしょうか? B入力された文字列が "ABC" から始まっているかどうかを 判定する正規表現はどうかけばよいでしょか? ※"ABC"の後はどんな文字列が続いても構いません。 宜しくお願いします。
931 :
930 :2010/04/17(土) 18:12:24 ID:???
自己解決しました
>>930 マッチ演算子でggr
正規表現でggr
これはむごい
935 :
nobodyさん :2010/04/17(土) 18:29:48 ID:TQJa7Fx/
質問させてください。 PHPでブログを作成しています。 SQLiteを使って記事のインデックスを管理しようとしているのですが、データベースで文章はどの程度管理していいものでしょうか? 記事は先頭部分1000文字程度と"続きを読む"で3000文字程度です。 先頭部分だけデータベースに入れてしまうと速度的に遅くなってしまうでしょうか?
938 :
nobodyさん :2010/04/17(土) 18:35:21 ID:astqohQF
>>936 どんな文字列にマッチさせたいの?
そっから考えた方がいいんじゃない?
>>936 だから、ageてIDだせよって。
スレタイを嫁。
940 :
nobodyさん :2010/04/17(土) 18:36:32 ID:astqohQF
941 :
935 :2010/04/17(土) 18:38:01 ID:TQJa7Fx/
>>937 え、本当ですか?
別ファイルに保存しようと思っていたのですが、無駄ですか?
数千文字の記事を数千件も入れてしまってパフォーマンスは問題ないのでしょうか?
そのあたりの参考になる本やウェブサイトなどご存知ありませんか?
え、sqliteってたった数千件で悲鳴上げんの? そんなもん誰が使うんだよ
944 :
935 :2010/04/17(土) 18:58:30 ID:TQJa7Fx/
みなさまありがとうございます。 とても勉強になりました。 もう少し色々なサイトを見て勉強してきます。
SQLiteちゃんが悲鳴あげてる!
と思ったら余裕すぎて泣いていただけでござる
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 = '"';
でやってみてもだめでした。
そもそもなぜ変換されてるの?
952 :
948 :2010/04/18(日) 00:08:36 ID:???
フィルター?
magic_quoteじゃないかな
ああ、レスしてしまった。すまん。
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というテンプレートエンジンにすごく惹かれたのですが、これは現状ではどの程度使われてますか? あるいは他にオススメがありましたら教えていただけますでしょうか。 宜しくお願いします。
めでたし。めでたし
>>956 どういたしまして。
次はIDだそう。
>>958 cakeよく知らないけど cake + smarty でいいんじゃないのかな。
magic_quoteをプログラムでオフにする方法教えてくれ
set_magic_quotes_runtime(false); これか
963 :
948 :2010/04/18(日) 10:04:59 ID:???
>>962 今、外出先で携帯から
magic_quotesでググって出てくるPHPマニュアルのページに書かれてましたよ。
20stepくらいのコードでした。
1人で開発する場合はsmartyって逆に効率下がりそうだね
独り言はチラシの裏で
966 :
nobodyさん :2010/04/18(日) 16:01:10 ID:MhBI/ZWI
掲示板を作っているのですが、POSTされる文字列が改行なしで横に長いときに、 強制的に改行を入れて整形したいです。 どんな方法がありますか?
968 :
nobodyさん :2010/04/18(日) 16:34:21 ID:MhBI/ZWI
969 :
nobodyさん :2010/04/18(日) 23:17:17 ID:czBW3Szo
5.3からget_class_varsがprotectedまで返すようになってるようなんですが、 これは外部からアクセスできるメンバだけ返すようにはなりませんか?
>>969 User Contributed Notesの一番上
ごめん嘘だった
>>969 $c = new ReflectionClass('Klass');
foreach ($c->getProperties() as $p) {
if ($p->isPublic()) {
echo $p->name, PHP_EOL;
}
}
スレタイ
>>974 IDの出し方がわかりません。
jane Style を使って書き込みしてますので。
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はインストール済み
luceneがいいよ
docomo 携帯のユーザエージェントを見ると次の表記があるのですが、 TB;W30H19 TB W* H* というのは何を意味しているのでしょうか?
981 :
nobodyさん :2010/04/19(月) 01:10:38 ID:axuSXXV9
携帯電話でWEBサイトにログインした場合の 判定処理をどうしようか迷っています。 携帯電話の場合、セッション管理は意味を成さないので 固体識別番号を何かのアクション(ページ遷移、ボタン押下)時に 常にDBと称号する方が無難なのでしょうか?
セッション管理は意味を成さないというのは どういう意味でしょう?
>携帯電話の場合、セッション管理は意味を成さないので ひろみちゅのHP見て勉強してから出直してきてね
ひさびさに見たがまさにタイムリーな話でわろた
987 :
nobodyさん :2010/04/19(月) 15:03:10 ID:315TL3PF
質問です class Hoge { var $test = new Test; } これがエラーになってしまうのですが、メンバー変数の定義時にインスタンスをセットするにはどうしたらよいでしょうか? 書き方が間違っているのでしょうか?
>>987 phpの仕様です
メンバ変数定義にメンバ変数に関数や演算子は使えません
コンストラクタでやるしかないですね
989 :
nobodyさん :2010/04/19(月) 15:52:56 ID:315TL3PF
あちゃー残念 ありがとうございました
携帯向けのログイン機能を作成しようと思っているのですが、 AU / DOCOMO / SoftBank の場合には、 取得した固体識別番号だけで登録した名前・メールアドレスを管理するのは危険でしょうか? つまり、 固体識別番号 + パスワード の設定も必須にした方が良いのでしょか? また、携帯からWEBサイトにアクセスする場合に、 特定の固体識別番号になりすまし偽装をする事は可能なのでしょうか?
固体識別番号 危険 あたりでググればいくらでも出てくる 大手商用サイトでもザルだったりするけどね
>>991 危険に関する認識が俺と違うっぽいなぁ。
大手商用サイトがザルというのはどういうことを指しているのか書いてみて
携帯の固体識別番号なんてちょっとPerlやPHP分かれば誰でも取れるいわば”IPアドレス”と同じようなもの そんなザルなもので認証が出来るなんて考え自体が危険
995 :
991 :2010/04/20(火) 23:57:56 ID:???
>992 自分自身がケータイのヘビーユーザーではないのであまり実例は出せないんだけど クレカ番号を覚えてるようなサービスでかんたんログインとか、正直怖いと思った
これ、ただのバナーに見えるけどこれ実は裏で携帯固有ID取ってるんだぜ・・と言うことがよくある
固体識別番号を送らないように設定すればいいじゃん。デフォでONになってるのは良い面もあり、悪い面もあり。 勝手サイトだからそういう危険をはらんでるのであって、固体識別番号での認識がすべて悪だという風潮は良くない
悪でしかないでしょ・・Cookie使えれば全てが解決する そんな考えだからガラケーなんて言われるんだ
> そんな考えだからガラケーなんて言われるんだ 名言だな
このスレは1000の風になりました
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。