【PHP】下らねぇ質問はID出して書き込みやがれ 93
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2010/02/15(月) 19:23:06ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 92
http://pc11.2ch.net/test/read.cgi/php/1263035502/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2010/02/15(月) 19:23:49ID:???【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
【PHP】下らねぇ質問はID出して書き込みやがれ 86
http://pc11.2ch.net/test/read.cgi/php/1249042741/
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
0003nobodyさん
2010/02/15(月) 19:24:31ID:???■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル http://framework.zend.com/manual/ja/
■Smartyマニュアル http://www.smarty.net/manual/ja/
(以下英語)
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smarty http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん
2010/02/15(月) 19:25:17ID:???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プログラムとして実行された結果になる。
0005nobodyさん
2010/02/15(月) 19:26:38ID:???→ 確認すべきは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に保存?
→ 好きにしてください
0006862
2010/02/15(月) 20:10:24ID:tuS5GRdx解決したのであとはこのブログは放置に入ります
もう既にgoogleで検索ヒットするみたいですが更新は終わります
http://hellosekaisan.blog97.fc2.com/
0007nobodyさん
2010/02/15(月) 23:44:26ID:???0008nobodyさん
2010/02/16(火) 06:25:59ID:iRRBilsAecho "mail>". mail('toTest@toTest.com', 'My Subject', 'hohoho subject');
としたところ 「mail>1」と出力されたんですが、メールは送られてきません
どこを修正したら良いんでしょうか? phpというよりOS周りの問題になるかもしれませんが
よろしくお願いします。
centOS5.3 php5 サーバーは自宅サーバです。
ためしにコマンドラインで
% sendmail foo@example.com
From: my@mail.address (あなたのメールアドレス)
To: foo@example.com
Subject: This is test mail.
(ここに空行を入れる。ここまでがヘッダ。ここから先がボディ)
メールの内容
.(ドットのみの行を入力すると終了)
を実行してもメールは送られてきませんでした
(x68000.q-e-d.net/~68user/unix/pickup?sendmail このページを参考にしました)
アドバイスよろしくお願いします
0009nobodyさん
2010/02/16(火) 07:19:59ID:???xxxxx.php をLinuxサーバ上でデザインを弄くったりしてちょっと確認するためにバックアップを例えば
xxxxx.php.20100216.0717 とするとしますね。
ところがこれはhttp://xxx/xxx/xxxxx.php.20100216.0717 としてPHPが動作してしまいます。
PHPとして動作させないための設定ってありませんか?
0010nobodyさん
2010/02/16(火) 08:22:35ID:???少し趣旨が変わっちゃいますが、ウチはSubversionとかで管理してみては?
そんなに大きなプロジェクトじゃないなら大げさすぎますが。
0011nobodyさん
2010/02/16(火) 11:19:49ID:???phpはデフォルトだと拡張子がphpであるときのみしか動作しない
これはApache側の設定で行われている
なのでそれで動くはずはない
アクセスできたとしてもただのPHPのソースが表示されるだけだと思われ
headerでtext/plainと明示しない限りtext/htmlで出力されると思うので
<? ?>がxml宣言と解釈され何も表示されてないのをphpが実行されたと勘違いしてると思われ
htmlのソース見ればphpのソースが丸ごとでてくるなんてことはないか?
0012EM114-48-82-214.pool.e-mobile.ne.jp
2010/02/16(火) 13:35:10ID:???俺のことか996=OCNよ
俺はいま規制中だから書けねえよ
http://sports2.2ch.net/test/read.cgi/operatex/1266231624/53
勝手に人様を俺と勘違いするな
996 名前:nobodyさん[sage] 投稿日:2010/02/16(火) 09:39:35 ID:???
俺様をチンピラ呼ばわりか、日本人はksだな
俺様を馬鹿にするならPHP使うなよ。
0013nobodyさん
2010/02/16(火) 13:38:22ID:???0014nobodyさん
2010/02/16(火) 14:14:18ID:???0015nobodyさん
2010/02/16(火) 14:25:19ID:PEPOZ1Ssexec.php
exec("/var/www/html/test.php");
test.php
echo "test";
function test1(){
echo "test1";
}
これだとtestと表示はされますがtest1とは表示されません。
関数を指定出来る方法があればおしえてください。
0016nobodyさん
2010/02/16(火) 14:26:48ID:???CentOSのコマンドラインから送信できないのであればCentOS側の設定の問題
SELinuxの設定
今ならOP25B対策の設定をしていないとか
その次はiptablesの設定
Linuxのコマンドラインから送信出来るようになった後にPHPから送信できなければPHPの
設定ファイルの確認
0017nobodyさん
2010/02/16(火) 14:47:13ID:???includeなりrequireじゃダメなの?
require_once "/var/www/html/test.php";
test1();
001815
2010/02/16(火) 14:54:27ID:PEPOZ1Ss別の人間が作ってて、何やら変数名やら色々な部分が被っているようで
includeしたらえらいことになってしまいました。
なので出来ればexecあたりで別物として扱えればいいなと。
変数名を統一した方がいいのはわかってるんですが、なにぶんあっちのコード書いた
人間がもう不在なので出来るだけ変更はくわえたくないな〜というのが・・・。
過去ログみてたらexecで引数をいくつか渡せるみたいなので
exec.php
exec("/var/www/html/test.php" test1);
test.php
echo "test";
if(argv[1] == "test1"){
$argv[1]();
function test1(){
echo "test1";
}
}
みたいな感じにしてみようかと思います。
もしかしたたらもっとスマートなやり方あるのかもしれませんが・・・
0019nobodyさん
2010/02/16(火) 15:00:39ID:???それだとtest.phpに思いっきり変更加えているように見えるけど・・・
functionだけの問題なら、test.phpからfunctionだけコピーそて
別ファイルにしたほうがいいんじゃないか?
002015
2010/02/16(火) 15:03:07ID:PEPOZ1Ssこれくらいの変更が限界かな〜と・・・
このfunctionだけコピーしても色々と参照してるみたいでうまく機能しないという・・・
とても汎用性のないコードを書いてくれたもんで困ってました。
さすがに書き直す時間はないしこの変が妥協点かなと・・・
0021nobodyさん
2010/02/16(火) 16:08:01ID:???だと思ってんのか
0022nobodyさん
2010/02/16(火) 16:53:56ID:???汎用性のないコードを書いたやつとレベルが同じということにはならないのだろうか
00248
2010/02/16(火) 18:36:18ID:iRRBilsAありがとうございます、OSの設定から見直してみます。
phpから離れた話題で申し訳ないのですが、
最近よく言われるsendmailよりpostfix,qmailの方が良いというのは
こういう送信失敗トラブルもそちらのほうが解決しやすいということが
あるのでしょうか?
0025nobodyさん
2010/02/16(火) 18:54:25ID:???0026nobodyさん
2010/02/16(火) 19:06:12ID:???0027nobodyさん
2010/02/16(火) 21:38:36ID:???ありがとう。Apacheの設定も気になりますけど、中身が見えてもダメなんで、結局別ディレクトリにmvしますかね・・。
>>9でやった変更は自サイトのCSSを変えてサーバでチェックとかそんなんですのでここでSVNはちょっとw
0028nobodyさん
2010/02/16(火) 21:56:03ID:???そういうときは拡張子を統一して.htaccess(Apacheの設定)で
外からのアクセスを受けないようにすればいい
例えばxxxxx.php.20100216.0717の後に.backupってつけて
xxxxx.php.20100216.0717.backupっていうファイルにして
<FilesMatch "\.backup$">
Order allow,deny
Deny from all
</FilesMatch>
スレ違いだけどこんな感じか
0029nobodyさん
2010/02/16(火) 22:09:01ID:???【PHPのバージョン】php5
【連携ソフトウェア】mysql
【質問内容】
自分のレンタル鯖に指定したURLのファイルをPHPを使ってダウンロードさせて保存させるのは可能でしょうか?
0030nobodyさん
2010/02/16(火) 22:21:28ID:???0031nobodyさん
2010/02/16(火) 23:16:48ID:???ちゃんと対応しといたほうがいいと思うぞ
0032nobodyさん
2010/02/16(火) 23:59:48ID:???httpd.confの
AddHandler php5-script .php
がおかしいみたいです。これを消して再起動するとxxx.phpもxxx.php.20100216も実行できずソースのテキストそのものが出てきます。
でも>>28さんの方法で解決したのでここはまあいいじゃないですかw
いろいろありがとうございました。
0033nobodyさん
2010/02/17(水) 02:33:27ID:???【PHPのバージョン】php5.26
【質問内容】
class foo {
static $cash=array();
function foo($id){
if (self::$cash[$id]) return self::$cash[$id];
SQLとかごにょごにょ;
self::$cash[$id] = $this;
}
}
という風にキャッシュを行おうとしていますが、2回目以降の生成で空のプロパティを持ったオブジェクトが帰ってきてうまくできません。
これは言語仕様としてうまくいかないものでしょうか?
それとも、他の部分(とくにごにょごにょの部分)に原因があると見るべきでしょうか?
0034nobodyさん
2010/02/17(水) 02:35:47ID:???003533
2010/02/17(水) 02:38:09ID:9AFUUUC4専ブラでいつもsageっぱなしの癖が出てしまいました
申し訳ありません。
0036nobodyさん
2010/02/17(水) 02:51:32ID:???あと$cashじゃなくて$cacheじゃね?
0037nobodyさん
2010/02/17(水) 02:53:05ID:???まぁそれは冗談だけど以下参考までに
<?php
class Test{
public static $my_static = 0;
public function addN($n) {
self::$my_static += $n;
}
}
$a = new Test();
$a->addN(1);
var_dump($a::$my_static);
$b = new Test();
$b->addN(1);
var_dump($b::$my_static);
結果:
int(1)
int(2)
0038nobodyさん
2010/02/17(水) 03:19:21ID:9AFUUUC4確かにそうですね・・・cashでは現金の方になりますね
指摘ありがとうございます。
javaをやっていたせいだと思うのですが、
関数の中に入れると気分的になんか嫌なんです・・・
入れないとデメリットが生じるものなのですか?
>>37
やっぱり残るものですよね
static function getInstanceとかやるべきなんでしょうか
他のソースに手を入れる事になるので、コンストラクタの中でやってみようと思ったのですけど
0039nobodyさん
2010/02/17(水) 04:01:56ID:???file_get_contents で取得して、
head の css のリンク部分だけ変えてるのですが、
もっとスマートな方法ってありますか?
0040nobodyさん
2010/02/17(水) 05:18:08ID:???0041nobodyさん
2010/02/17(水) 08:54:37ID:???コンストラクタでキャッシュを返してるつもりだけど
コンストラクタはインスタンス生成後に自動的に呼ばれるただのメソッド
なのでそのコードだと毎回新しいオブジェクトを作成して
キャッシュがあれば初期化しない、になってしまってる
やるなら言う通りstaticなファクトリメソッドか、別にキャッシュを返すクラスを実装するべきだね
0042nobodyさん
2010/02/17(水) 14:46:58ID:9AFUUUC4生成されたインスタンスがどこにいくのだろうと思って調べてみたところ、
コンストラクタでの返り値は無視されるというのが見つかりました
キャッシュを返せないわけですね
素直にgetInstanceを実装してきます。
返答してくださった方々、ありがとうございました
0043nobodyさん
2010/02/17(水) 18:31:30ID:???これってUTF-8で取り出せないかな?
文字化けしちゃうんだよね
アクセスが糞っていうのは承知でお願いします。
0044nobodyさん
2010/02/17(水) 18:44:15ID:???文字化けの原因を調べて対処すればいいだけじゃないの?
004543
2010/02/17(水) 18:48:40ID:???自分が糞でした
0046nobodyさん
2010/02/17(水) 20:03:24ID:???糞でも。
0047nobodyさん
2010/02/17(水) 20:20:47ID:???004843
2010/02/17(水) 20:24:31ID:???ODBCドライバ事態がSJISでやりとりしてるぽくて、
取り出した時点で一部の文字が?になってる。
だから文字コードを変換しても意味が無いみたい。
ちなみに外国語なんだけど、mdb上ではちゃんと格納されてるです。
mdbのデータ型はメモ型です。
>>45
自分が糞ならがんばって肥料くらいまでにはなりたい
>>46
肥やしになれたら報告します
0049nobodyさん
2010/02/17(水) 23:02:50ID:lyRzhjAYfile_get_contentsの引数なのですが下記Basic認証file_get_contentsするソースで
Warning: file_get_contents() expects at most 2 parameters, 3 given in /path/to/hoge.php on line 23
とエラーが表示されます。
http://jp.php.net/manual/ja/function.file-get-contents.php
を見ると4と5でストリームコンテキスト?の可否があるようなのですが、4.4上で下記の代替え方法はありますでしょうか?
$params = "status=". rawurlencode($message);
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
)
0050nobodyさん
2010/02/17(水) 23:47:15ID:???0051nobodyさん
2010/02/18(木) 00:00:12ID:???0052nobodyさん
2010/02/18(木) 00:22:59ID:???古いPEARのほうがライブラリは多い(=できることが多い)ので完全に代替には至ってない
ていうかスレタイ嫁
0053nobodyさん
2010/02/18(木) 00:23:39ID:???$ch = curl_init();
$post = array(
//POSTするデータ
'status' => rawurlencode($message),
);
$option = array(
CURLOPT_URL => "http://example.com/", //URL
CURLOPT_RETURNTRANSFER => true,
CURLOPT_BINARYTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST", //POSTメソッド
CURLOPT_POSTFIELDS => $post, //POSTで送られるデータ
CURLOPT_HTTPAUTH => CURLAUTH_BASIC, //認証方法
CURLOPT_USERPWD => "example:password", //パスワードとユーザー名を"[username]:[password]" 形式で指定
);
curl_setopt_array($ch,$option);
echo curl_exec($ch);//結果を出力
cURLならこんな感じ、実際に動かしてないからミスがあるかもしれない
0054nobodyさん
2010/02/18(木) 00:29:45ID:???0055nobodyさん
2010/02/18(木) 00:39:31ID:???0056nobodyさん
2010/02/18(木) 00:49:13ID:???005749
2010/02/18(木) 03:10:20ID:+u9lCEUSだいたい方法ありがとうございました
いただいたコードでcurl_setopt_arrayがバージョン5.xが必要でしたが関数名でぐぐったところ
http://php.plus-server.net/function.curl-setopt-array.html
見事に下位互換するコードがありました。助かりました!一応転載しておきます
ーーーー以下転載ーーーーーーーーーー
PHP 5.1.4 より前のバージョンでこの関数と同等の操作をするには、次のようにします。
例2 curl_setopt_array() の独自実装
<?php
if (!function_exists('curl_setopt_array')) {
function curl_setopt_array(&$ch, $curl_options)
{
foreach ($curl_options as $option => $value) {
if (!curl_setopt($ch, $option, $value)) {
return false;
}
}
return true;
}
}
?>
0058nobodyさん
2010/02/18(木) 03:55:17ID:???えーと、
phpのDOMで、
$sl->setAttribute( 's', $name );
みたいに使いたいんですが、
$nameに日本語入れると、受け手で文字記号になってしまいます><
どうすればいいのでしょうか?!
0062nobodyさん
2010/02/18(木) 13:11:37ID:???0063EM114-48-53-20.pool.e-mobile.ne.jp
2010/02/18(木) 13:33:22ID:JDgmKlSP0064nobodyさん
2010/02/18(木) 18:20:59ID:XBktE18DHTMLページで<img scr="<URL>">を埋め込んだところ、imgタグを貼ったURLが取得されてしまい、
そのページのリファラが取得できません。
うまく取得する方法があったら教えてください
0065nobodyさん
2010/02/18(木) 18:22:01ID:???0066nobodyさん
2010/02/18(木) 18:23:49ID:XBktE18D0067nobodyさん
2010/02/18(木) 18:24:43ID:XBktE18Dありがとうございました
0068nobodyさん
2010/02/18(木) 18:26:28ID:NVBHLzZ00069EM114-48-61-7.pool.e-mobile.ne.jp
2010/02/18(木) 18:28:36ID:1SIrdwKU今時のレンタルサーバならPHPぐらい使えるだろzk
そんなPERL時代の名残みたいな事しないでPHPの$_SERVERでとりゃあいいだろクズ
0070nobodyさん
2010/02/18(木) 18:43:05ID:???phpからfirefoxやIEなどを起動しキャプチャを撮ってる。
ここらへんが参考になるかな
http://www.phppro.jp/news/367
http://zapanet.info/blog/item/955
0071nobodyさん
2010/02/18(木) 20:19:52ID:???中卒は帰れ^^;
0072EM114-48-61-7.pool.e-mobile.ne.jp
2010/02/18(木) 20:20:46ID:???0074nobodyさん
2010/02/18(木) 21:24:15ID:???JavaScriptで取得したリファラを、JavaScript上に記述したimgタグに埋め込んだPHPのURLに渡す。
0075nobodyさん
2010/02/18(木) 21:26:31ID:???0077nobodyさん
2010/02/19(金) 02:32:41ID:???0078nobodyさん
2010/02/19(金) 02:45:59ID:rkYeDCsTsession_start()というメソッドがありますが、これをベタに使うことはあまりないのかな?
セッション管理関連のモジュールがあれば教えていただけないでしょうか
0080nobodyさん
2010/02/19(金) 10:58:51ID:???標準で用意されているセッション関数を利用してください
自前で用意するとセキュリティ上の問題が起こるかもしれません
008178
2010/02/19(金) 12:04:46ID:rkYeDCsT>>80
丁寧にありがとうございます。
フレームワークは使う予定が無いので、組み込みのセッション関数とPEAR:Authを検証して決めたいと思います。
0082nobodyさん
2010/02/19(金) 12:35:00ID:???0083nobodyさん
2010/02/19(金) 12:39:38ID:???0084nobodyさん
2010/02/19(金) 13:05:03ID:???pearに限らず外部のライブラリはPHPで書かれたスクリプト。
圧倒的にバイナリのほうが高速に動くので標準関数だけでは出来ないことがある場合のみライブラリを使う方が良い
0085nobodyさん
2010/02/19(金) 13:07:32ID:???0086nobodyさん
2010/02/19(金) 13:11:25ID:???結局同じようなモノを作る羽目になると思うけど
あとPECLはCだよね。
0087nobodyさん
2010/02/19(金) 13:23:28ID:???勉強目的以外で車輪の再発明は無駄
>>84の所は毎回標準関数だけで開発してるのか?
違うだろ?フレームワークとか自社のライブラリ的なモノ使ってるだろ?
0088nobodyさん
2010/02/19(金) 13:25:17ID:???例えば?
0094nobodyさん
2010/02/19(金) 13:44:31ID:???0095nobodyさん
2010/02/19(金) 14:11:28ID:???会社的にそれ持ったら殺されるわ。
0096nobodyさん
2010/02/19(金) 14:37:26ID:???教授や講師に言われたけど、PHPってそんなにお笑い言語なの?
PHPはweb入門の登竜門として考え慣れたら他の言語に移れと言われたけど
PHPはGREEとかでも使われてるし謎です
0097nobodyさん
2010/02/19(金) 14:39:08ID:???ID出すわけにいかないので>>96は無視して下さい
他のところさがして聞いてきます
0098nobodyさん
2010/02/19(金) 14:42:49ID:???0099nobodyさん
2010/02/19(金) 14:56:56ID:???webアプリ経験:4年以上
PHP経験:2年以上
携帯開発経験
●単価
MAX40万[150-210h]
0100nobodyさん
2010/02/19(金) 15:34:35ID:ImlyfveR【PHPのバージョン】5.2.9
【質問内容】
スレチだったら申し訳ないのですが・・・
isleのサーバーに移転することになったので、isleのコントロールパネルにて旧サーバーからディレクトリコピーツールを使用しました。
移転先プレビューサーバにて確認してみたところphpが表示されず500エラーが発生しました。
info.phpでテストしてみたところ
・ホームディレクトリ直下のphpファイルは正常動作する
・ホームディレクトリに作成したフォルダ内のphpファイルは動作しない (ex.http://〜〜〜/test/info.php が動作しない)
・動作しないphpについてはソースの中身は関係ない模様(htmlのファイルの拡張子をphpに変えただけでも動作しなくなる)
・php以外のファイル(html,csv)はディレクトリがどこでも正常に動作した
・問い合わせたところ、phpのバージョンが4になっているので動作しないとのこと
・旧サーバーはPHP4 新サーバーはphp5 に対応
ホームディレクトリ以外のphpファイルは動作しない設定になっていると思うのですが、どう設定すればいいのでしょうか?
0101nobodyさん
2010/02/19(金) 15:44:30ID:???この動作しないというのはどういう状態?エラーかなんかが出てる?
0102100
2010/02/19(金) 15:46:24ID:ImlyfveR500エラーが発生します。
0103nobodyさん
2010/02/19(金) 16:20:24ID:???そういう偏見をもつ人間が先生なのか、かわいそうだね
PHPは道具にすぎないのだから別にお笑い言語でもなんでもないよ
使い手が生かせるか生かせないかだろ
0105nobodyさん
2010/02/19(金) 16:33:11ID:???変な .htaccess を置くと500エラーが出るよ。
<FilesMatch "\.php$">〜</FilesMatch> とか
AddType, AddHandler 辺りがどうなってるか確認。
0106100
2010/02/19(金) 17:15:21ID:ImlyfveR>>105
ご指摘の通り 旧サーバーから移行されていた .htaccess が原因だったようです。
修正をかけて正常に動作するようになりました。
ありがとうございました。
0107nobodyさん
2010/02/19(金) 18:03:27ID:???どうしたら解決できますか?
0108nobodyさん
2010/02/19(金) 18:37:35ID:???0109nobodyさん
2010/02/19(金) 18:45:00ID:???こっちの方が回答得られると思います
http://pc11.2ch.net/pcqa/
0110nobodyさん
2010/02/19(金) 23:39:21ID:???絶対に許さない
0111nobodyさん
2010/02/19(金) 23:51:39ID:???こちらでどうぞ
http://science6.2ch.net/test/read.cgi/infosys/1263288522/
0112nobodyさん
2010/02/19(金) 23:53:10ID:???0113nobodyさん
2010/02/20(土) 14:48:35ID:???正規表現クン
OCN
k.k.projects
チンピラ
0114nobodyさん
2010/02/20(土) 14:50:17ID:???http://www.padmacolors.org/archives/2006/11/07_062638.php
0115PHP3週間目
2010/02/20(土) 15:18:10ID:???改行コードのバイト数を「 strlen(PHP_EOL) 」で判定する
参考URL
http://blog.fukaoi.org/2010/01/04/php_eol
また日本語名を含むファイルをアップロードした際に日本語が化ける問題はどう対処すればいいのでしょうか?
アップロードしたファイルのファイル名を動作しているOSに合わせて変換はできますか?
参考URL
http://itpro.nikkeibp.co.jp/article/COLUMN/20080515/301933/?ST=oss&P=3
mb_internal_encodingはPHPの設定ですが、OSの設定を知る事はできないのでしょうか?
教えて!エロイお姉さん!
0116nobodyさん
2010/02/20(土) 15:21:08ID:21d3TBtu何か良い案ありますか?
呼び出し側は、
executeQuery($db, $sql, "ss", array($id1, $id2), array("", "", ""));
みたいな感じにしたいです。
今は、引数の数ごとにswitchで分岐して、bind_param()とbind_result()を処理してます。
0119116
2010/02/20(土) 15:58:33ID:21d3TBtu例えば引数が3つあった場合、
$stmt->bind_param("sss", $value1, $value2, $value3);
みたいな感じに書く必要があるので、
ループで処理できないんです。
「$value1, $value2, $value3」の部分を配列から作ることができれば良いのですが。
なので今は、下のようにしようかどうか。。
$count = count($param);
switch ($count) {
case 0: break;
case 1: $stmt->bind_param($paramType, $param[0]); break;
case 2: $stmt->bind_param($paramType, $param[0], $param[1]); break;
case 3: $stmt->bind_param($paramType, $param[0], $param[1], $param[2]); break;
:
0121116
2010/02/20(土) 17:03:43ID:21d3TBtuおおー、ありがとうございます!
call_user_func_array(array($stmt, 'bind_param'), $paramList);
で、うまく行きました。
ただ、結果取得の方はできないです。。。
call_user_func_array(array($stmt, 'bind_result'), $outputList);
これはDBじゃなくて、
どちらかと言うと call_user_func_array() の使い方の問題ですね。
0122nobodyさん
2010/02/20(土) 17:16:00ID:???0123116
2010/02/20(土) 17:21:04ID:21d3TBtu0124nobodyさん
2010/02/20(土) 17:26:44ID:hFwUs/sv【PHPのバージョン】php5.30
【質問内容】
for ($i=1; $i <=3; ++$i) {
$変数 = $i
}
といった具合にスクリプトを書いて、$a1=1,$a2=2,$a3=3のようにしたいのですが、$変数の部分はどのように指定する倍医のでしょうか?
0125nobodyさん
2010/02/20(土) 17:30:22ID:???$変数.$i = $i
}
0126nobodyさん
2010/02/20(土) 17:42:43ID:???0127nobodyさん
2010/02/20(土) 17:47:40ID:hFwUs/sv$a.$i = $i;
}
echo $a1;
とやってみたのですが、$aが定義されていないと3回出て、そのあと$a1が定義されていないと出てしまいます。
0128nobodyさん
2010/02/20(土) 17:52:35ID:???$’a’.$i
$”a$i”
${’a’.$i}
${”a$i”}
お好きなのをどうぞ
0130nobodyさん
2010/02/20(土) 18:28:29ID:???0131nobodyさん
2010/02/20(土) 18:46:18ID:???0132nobodyさん
2010/02/20(土) 19:16:44ID:???0133nobodyさん
2010/02/20(土) 20:31:01ID:???これはクロージャで実装されてるのでしょうか?
グローバル変数と違って名前空間を占有しないのにどこかに静的に保存されている、というのが
気持ち悪いのですが実際はどうやって保存されてるのですか?
0134nobodyさん
2010/02/20(土) 20:35:05ID:bS4gzLF5【PHPのバージョン】PHP 5.1.4
【連携ソフトウェア】Apache 2.2.2、MySQL 5.0.21
【質問内容】
rarファイルやzipファイルの中の先頭の1ファイルを抜き出して、サムネイル表示するスクリプトを作成したいと思っています。
そこで現在、PECL::zipやPECL::rarを用いて圧縮ファイルを解凍した後、先頭の1ファイルを取得して、
phpThumbnailerなどのクラスを使ってサムネイルを作成し、解凍したファイルを削除する、という方法を考えています。
しかし、圧縮ファイルを全て解凍すると、時間がかかりすぎてしまします。
解凍せずに、先頭の1ファイルを取得して、そのサムネイルを作る方法はないでしょうか。
過去スレは81〜93(現行スレ)まで"サムネ"で調べました。
該当件数は11件で、同じような質問が過去スレ91の892番にありましたが、解答はありませんでした。
よろしくお願いいたします。
0135nobodyさん
2010/02/20(土) 21:19:29ID:???pecl::zipってZipArchiveでいいんだよね?
前提の質問だけどextractToで特定のファイルを指定して解凍した時でも全てのファイルが解凍されるの?
0136nobodyさん
2010/02/21(日) 03:33:43ID:???0137nobodyさん
2010/02/21(日) 07:09:02ID:???0138nobodyさん
2010/02/21(日) 12:00:00ID:???import_request_variables は想定外の変数が作られてしまいますし
今のところ
$input = $_POST + $_GET;
のように取得してます。(GETの重複キーが無視されるのは想定内)
我流なので少々自信ないのですがこれで特に問題ないでしょうか。
もっと適当なやり方があったら教えてもらえませんか。
0139138
2010/02/21(日) 12:00:41ID:ek+ZaY/s0140nobodyさん
2010/02/21(日) 13:33:50ID:j6dUsmZ9phpさわってみたいんですけど、まず何を作ってみればいいんでしょー?
0141nobodyさん
2010/02/21(日) 13:39:01ID:???0142nobodyさん
2010/02/21(日) 13:42:28ID:j6dUsmZ90143nobodyさん
2010/02/21(日) 13:51:49ID:???0144nobodyさん
2010/02/21(日) 14:23:38ID:???【PHPのバージョン】5.2.6
CGIとしてインストールされているPHPでリクエストヘッダを取得するにはどうしたら良いですか
0145nobodyさん
2010/02/21(日) 14:23:56ID:xi+RS687【PHPのバージョン】5.2.6
CGIとしてインストールされているPHPでリクエストヘッダを取得するにはどうしたら良いですか
0147nobodyさん
2010/02/21(日) 15:29:51ID:xi+RS687それだとDigest認証のヘッダが取れないのよ
0148nobodyさん
2010/02/21(日) 15:59:05ID:???http://jp.php.net/manual/ja/features.http-auth.php
CGI版で認証ヘッダは読めない。
0149nobodyさん
2010/02/22(月) 01:38:09ID:???【PHPのバージョン】php5.30
【質問内容】
<?php
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = "info@mizukai-portfolio.net";
$from = $_POST[$mailaddress];
$name = $_POST["name"];
$subject = $_POST["subject"];
$body = $_POST["message"];
$header="From:" .mb_encode_mimeheader($name) ."<".$from .">";
if (!mb_send_mail ($to , $subject , $body , $header)) {
exit ("メールの送信に失敗しました。");
}
?>
上記のものを記入項目のチェックして、メール送信するようにしたいです。
現在は、全未記入でもボタンを押せば送信出来てしまいます。
しかも、メールアドレスを記入しても、受信メールの差出人には送信者メールアドレスが表示されなく、
名前だけが表示されてる状態です。
0150nobodyさん
2010/02/22(月) 01:54:05ID:???0151nobodyさん
2010/02/22(月) 01:54:53ID:???Javascript使えばいいんじゃないかな
0152nobodyさん
2010/02/22(月) 02:35:06ID:XuPCMsF+http://gichioka.web.fc2.com/form.rar
これ見ればどうすればいいかわかると思うよ。
0153nobodyさん
2010/02/22(月) 16:01:26ID:0poMcZJIpearのQuickForm使うしかない?
0154nobodyさん
2010/02/22(月) 16:08:04ID:WTPjegwI【PHPのバージョン】php5.2.6
【質問内容】
PHPで送信するメールにデジタル署名を付加したいのですが可能ですか?
証明書は既に持っています
0155nobodyさん
2010/02/22(月) 17:19:15ID:???0156nobodyさん
2010/02/22(月) 17:54:18ID:???+ だとうまくいかないんですが。
0157nobodyさん
2010/02/22(月) 17:59:55ID:???http://www.php.net/manual/ja/language.operators.string.php
結合演算子 . だけ
次からIDよろ
0158nobodyさん
2010/02/22(月) 18:02:28ID:???0159nobodyさん
2010/02/22(月) 19:26:01ID:???ページ内容自体はきちんと表示されているのですが、
そのまま進めてしまってもいいのでしょうか。
Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\wordpress\wp-config.php:1) in C:\xampplite\htdocs\wordpress\wp-admin\install.php on line 36
0160nobodyさん
2010/02/22(月) 19:26:44ID:1u7xPt7x0161nobodyさん
2010/02/22(月) 19:53:52ID:1u7xPt7xどうもお騒がせしました
0162nobodyさん
2010/02/22(月) 23:32:40ID:710QNmvk<?php
$A[0] = 1; $A[1] = 2;
$B = &$A[1];
$C = $A;
$C[0] = 3; $C[1] = 4;
print_r($A); //←この出力は?
?>
0163nobodyさん
2010/02/22(月) 23:34:46ID:710QNmvk<?php
$A[0] = 1; $A[1] = 2;
//$B = &$A[1];
$C = $A;
$C[0] = 3; $C[1] = 4;
print_r($A); //←この出力は?
?>
0164nobodyさん
2010/02/22(月) 23:35:10ID:???0165nobodyさん
2010/02/22(月) 23:38:39ID:710QNmvkいったんリファレンスされた場所は、無条件でリファレンスされるようですね。
0166nobodyさん
2010/02/22(月) 23:41:30ID:???関数で1回でも参照渡ししたら、気づかないうちに、コピーしたつもりがリファレンスだったりするんですか。
0167nobodyさん
2010/02/23(火) 00:45:20ID:???副作用のある代入なんて聞いたことないし
バグレポート出して回答貰ったほうがいいかと
0168nobodyさん
2010/02/23(火) 01:55:55ID:???ソースコードは付いてるんですが。
http://itpro.nikkeibp.co.jp/article/COLUMN/20070507/270089/
0169nobodyさん
2010/02/23(火) 04:17:08ID:???0170nobodyさん
2010/02/23(火) 04:30:18ID:???4までしかない
0171nobodyさん
2010/02/23(火) 04:53:04ID:???0172nobodyさん
2010/02/23(火) 05:04:53ID:???0173nobodyさん
2010/02/23(火) 05:50:45ID:???詳細は後に
Roadsend PHP
0174nobodyさん
2010/02/23(火) 05:58:35ID:???我々はPHPのソースコードを直接C++に変換した後にネイティブのマシンコードに変換することを考えました。
PHPをコンパイルする事も新しいアイデアではありません。RoadsendとphcはPHPをCにコンパイルし、 QuercusはPHPをJavaにコンパイルし、 Phalanger はPHPを.Netにコンパイルします。
http://blog.candycane.jp/archives/275
0175nobodyさん
2010/02/23(火) 10:14:47ID:???0176nobodyさん
2010/02/23(火) 10:18:51ID:???0177nobodyさん
2010/02/23(火) 12:12:46ID:???そうすると、PHPの経験が豊富になり、web開発の期間も減らせる。
0178nobodyさん
2010/02/23(火) 12:22:19ID:???0179nobodyさん
2010/02/23(火) 12:27:09ID:???基本的な関数のほぼ全てはC言語でコンパイルされている拡張モジュール。
0180nobodyさん
2010/02/23(火) 19:26:15ID:???【server】:xampp apache
【PHPのバージョン】php5.26
「http://localhost/naotan」 と 入力したら
「C:/xx/yy/naotan/index.html」 を表示、且つ下位フォルダも表示したかったので
apacheのconfファイルに下記のように記述しました。
AliasMatch ^/naotan(.*) "C:/xx/yy/naotan$1"
<Directory "C:/xx/yy/naotan*">
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
「http://localhost/naotan」でindex.htmlは表示されるのですが、
「C:/xx/yy/naotan/index.html」 の中で 「C:/xx/yy/naotan/famifami」フォルダにある
iframe.phpをiframeで呼び出せなくて困っています。
タグ:<iframe src="./famifami/iframe.php"></iframe>
エラーの内容な下記の通りです。
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
Fatal error: Unknown: Failed opening required 'C:/hogehoge/xx/yy/index.html' (include_path='.;C:\xampp\php\pear\') in Unknown on line 0
下記サイトなどを参考にやっているのですが、いまいち分かりません。
http://pub.ne.jp/tokuhama/?entry_id=1537812
apacheの設定と言うより php.ini の問題でしょうか?
php pear でググってみましたがわかりませんでした。
助けてください。お願いします。
0182nobodyさん
2010/02/23(火) 19:29:44ID:AlbSZOXaincludeは読み込み量とか指定できないけど
0184nobodyさん
2010/02/23(火) 19:39:41ID:AlbSZOXa速度的にちがいはあるのかなと。
0185nobodyさん
2010/02/23(火) 19:47:50ID:???0186nobodyさん
2010/02/23(火) 19:48:42ID:???まぁそんなこと自分で試してみればいいんじゃね。
0187nobodyさん
2010/02/23(火) 19:48:44ID:AlbSZOXa0188nobodyさん
2010/02/23(火) 20:59:54ID:???0189nobodyさん
2010/02/23(火) 21:20:26ID:???0190nobodyさん
2010/02/23(火) 21:36:28ID:???boostのように目玉ライブラリもない気がする。
一度、整理してセットにしてリリースしたらいいと思う。
0191nobodyさん
2010/02/23(火) 21:42:31ID:???0192nobodyさん
2010/02/23(火) 22:00:32ID:???ザンプはインストールしましたが、そのあと何やっていいかわかりません!!!
とりあえず、人のPHPのソースでも見て覚えようと思ったのですが、
なにかPHPスクリプト(言い方あってる??)がたくさん置いてあるサイトとかあったら教えてください!!
0193nobodyさん
2010/02/23(火) 22:01:34ID:???http://www.php.net/manual/ja/
0194nobodyさん
2010/02/23(火) 22:02:34ID:???そういうサイト見ることよりずっと必要なスキルだと思うよ。
0195nobodyさん
2010/02/23(火) 22:28:46ID:???0196テキサゴン
2010/02/23(火) 22:29:03ID:???とあるレンタルサーバ(xrea)で
入力フォーム→メール及びデータベース
みたいなアプリケーションを実装してるんですがメール送信が不安定で
使い物になりません。信頼性をあげるにはどのようにすればよろしいでしょうか?
いまは mb_send_mail(~);
だけでメールを送信しています。チェック機能とかつければいいんですかね?
0197テキサゴン
2010/02/23(火) 22:30:14ID:???【OS名】レンタルサーバのxrea
【PHPのバージョン】php5
【連携ソフトウェア】mysql
【質問内容】
こんにちは
とあるレンタルサーバ(xrea)で
入力フォーム→メール及びデータベース
みたいなアプリケーションを実装してるんですがメール送信が不安定で
使い物になりません。信頼性をあげるにはどのようにすればよろしいでしょうか?
いまは mb_send_mail(~);
だけでメールを送信しています。チェック機能とかつければいいんですかね?
0198nobodyさん
2010/02/23(火) 22:30:55ID:J7ajNcTG【PHPのバージョン】5.2.5 - SafeMode
【連携ソフトウェア】SQlite
【質問内容】
<?php
$link = sqlite_open('sample.db', 0444,$sqliteerror);
if(!$link){
die('接続失敗'.$sqliteerror);
}
$x = mt_rand(1,3);
$sql = "select * from gyosegaku where rowid = {$x}";
$result = sqlite_query($link, $sql, SQLITE_ASSOC, $sqliteerror);
if(!$result){
die('クエリ失敗'.$sqliteerror);
}
$rows = sqlite_fetch_array($rsult, SQLITE_ASSOC);
…
というプログラムで
Warning: sqlite_fetch_array() expects parameter 1 to be resource
という警告が発生してしまいました。
何が原因なのでしょうか?
C言語は学習経験ありますが、php,DBともに初めて数日目なもので見当違いな質問をしていたらすいません
0201nobodyさん
2010/02/24(水) 05:33:37ID:???0203nobodyさん
2010/02/24(水) 09:33:43ID:???0204nobodyさん
2010/02/24(水) 09:37:15ID:???Mail_Mime::addAttachment()
で添付するけど
添付ファイルが複数ある場合、
addAttachment(file1, fil2, ,,,)
て添付しますよね
添付ファイル名を配列で持ってる場合
どうやってaddAttachment()に渡してやればいいですか?
0205nobodyさん
2010/02/24(水) 09:42:03ID:???0206nobodyさん
2010/02/24(水) 09:44:45ID:???$objMime->addAttachment( $file );
}
ってことですかね?
でもなんかこれだと添付できないんですよね
0207nobodyさん
2010/02/24(水) 11:07:11ID:bkeQjCgvHTMLタグを使いたい場合はどうすればいいんでしょうか
0208nobodyさん
2010/02/24(水) 11:18:47ID:???0209nobodyさん
2010/02/24(水) 12:16:00ID:QiKWkWLOLinux + Apache 2.0系 + PHP4 の環境ですが、
flock関数による排他制御は安全ですか?
0210nobodyさん
2010/02/24(水) 12:25:59ID:???0211nobodyさん
2010/02/24(水) 12:36:52ID:QiKWkWLOApache 2.0 の worker の状況によって変わるということはありますか?
※ PHPのマニュアルにはマルチスレッド云々の記述があり心配です。
http://jp.php.net/manual/ja/function.flock.php
>いくつかのオーペレーティングシステムでflock() はプロセスレベルで実装
>されています。ISAPIのようなマルチスレッド 型のサーバーAPIを使用
>している場合、同じサーバーインスタンスの並列スレッドで実行されている
>他のPHPスクリプトに対してファイルを保護する際に flock()を使用することはできません!
0212nobodyさん
2010/02/24(水) 12:42:35ID:???http://www.programming-magic.com/20080211020413/
0213nobodyさん
2010/02/24(水) 13:20:12ID:QiKWkWLOそのページですが、自分も既に読んでいたのですが、
結局のところ、Linux + Apache 2.0 で flock が使えるのか、言及していませんでした。
詳しい方、ご教示ください。
すみません。
0214nobodyさん
2010/02/24(水) 13:29:16ID:???そちらの環境のことはわかりかねる
0215nobodyさん
2010/02/24(水) 13:48:42ID:???0216nobodyさん
2010/02/24(水) 14:52:49ID:TKFttfs60217nobodyさん
2010/02/24(水) 15:05:36ID:???PHPはフリーの環境であるPC-Unix+Apacheで発展してきたもの
基本的にそれに一番最適化されてると思えばいい
Windowsについての注意書きはよくみるように
特にApacheやLinuxなど明記されてない場合問題なく使えると思っておk
0218nobodyさん
2010/02/24(水) 15:19:55ID:???最新版に対応するactive perl active rubyみたいのないの。
スクリプトうめこみでもいいんで、windowsのexeが作りたい。
バイトコード生成が標準装備のようだが、phpが動かせなければ意味ない。
0219nobodyさん
2010/02/24(水) 15:25:20ID:???windowsバイナリが作れて、鯖でも同じコードが動くっていうのがよいのに。
開発効率的に。
0220nobodyさん
2010/02/24(水) 15:26:19ID:???0221nobodyさん
2010/02/24(水) 15:33:36ID:Cen8GI8a自分の使うサーバ仕様にあわせて書けばよかったのですが、
色々なサーバでも使える他人に公開するような(実際にはしませんが)スクリプトを書いてみたいと思ってます。
サポートの終わったPHP4は除外して、PHP5以上を対象とした書き方にするとして、
ネイティブ関数で組むよりさらに高速(な場合があり)で便利なエクステンション(PECL)がいくつかあると思うのですが、
これらがサーバに入ってるかどうかでネイティブ関数での実装と分けるような書き方がいいのでしょうか?
例えばPDOがインストールされているサーバならPDOを使い、
されていないならネイティブ関数で組んだものを使うといった感じです。
もし分ける書き方いいとしたら、実装方法として、
try {
PDOインスタンス
処理〜
} catch (Exception e) {
try {
ネイティブ関数接続
処理〜
} catch (Exception e) [
die();
}
}
とするか、あらかじめインストール時にサーバ構成(PDOの有無)を調べたものを記憶しておいて、
同じフィールド、メソッドが書かれて似た働きをする2種類以上のクラス(PDO用とMySQLやPgSQLのネイティブ関数を使ったもの)
を用意してそれをサーバ構成によってincludeを変えるという手法にするかで迷っています。
どちらがいいのでしょうか?またもっとベターなやり方があったらアドバイスお願いします。
0222221
2010/02/24(水) 15:37:43ID:Cen8GI8aよくよく考えたらPDOが使えないところでPDOインスタンスしたら、
Exception行かないでそんなクラスねーよで終わっちゃいますね。
上のソースコードは忘れてください。
0223nobodyさん
2010/02/24(水) 15:40:26ID:QiKWkWLONFSではないです。
>>217
flockの話ですか?
だとすれば使えるものと捉えてよろしそうですね。
0224nobodyさん
2010/02/24(水) 15:46:00ID:???中身のアルゴリズムが違えば速度差は出る。
たとえば効率的なソート関数など。
PECLが良いとは限らない。作者の腕次第。
0225nobodyさん
2010/02/24(水) 15:47:07ID:???直接の回答ではないけど、汎用性を考えるなら、PEAR/PECLに依存しない書き方をする
PEAR不要のフレームワークが参考になるかも。
>>222
PHP: class_exists - Manual
http://jp.php.net/manual/ja/function.class-exists.php
0226219
2010/02/24(水) 15:56:05ID:???mingw cygwinで動作可能 or ビルド済みパックあったら教えてくれ
http://blog.candycane.jp/archives/275
0227221
2010/02/24(水) 16:04:06ID:Cen8GI8aありがとうございます。
フレームワークのソースを読む自信がないですが、
頑張って読んで見たいと思います。
0228nobodyさん
2010/02/24(水) 16:35:56ID:???0229nobodyさん
2010/02/24(水) 16:36:42ID:???0230nobodyさん
2010/02/24(水) 16:37:52ID:???0231nobodyさん
2010/02/24(水) 16:53:48ID:???0232nobodyさん
2010/02/24(水) 16:56:46ID:???0233221
2010/02/24(水) 17:10:48ID:???app/config/database.php.default
で定義したデータソースを、
cake/libs/model/connection_manager.php
で何かやってるのまで突き止めました。
でも正直見慣れない書き方が多くて何がなんだか・・・
フレームワーク使って作れば多くの環境に対応できそうだから、
自分で組むよりは使い方を覚えたほうがいいのかもしれないですね。
でも勉強も目的なのでもう少し頑張ってみます。
チラ裏気味ですみません。
0234nobodyさん
2010/02/24(水) 17:18:30ID:???0235nobodyさん
2010/02/24(水) 17:24:52ID:???マニュアル見てもそんな関数はないし
functionでテキスト内検索してもそんな関数定義はないし
となるとどこかでincludeかrequireしてるのかとテキスト内検索してもしてないし
謎は深まるばかりである
0236nobodyさん
2010/02/24(水) 17:27:57ID:???まずpure phpとは限らない。動作環境が少ない。
PEAR入っていないとしても、実行コードと同ディレクトリに
予備で必要コード持ってれば動く。
0238nobodyさん
2010/02/24(水) 17:29:28ID:???0239nobodyさん
2010/02/24(水) 17:32:28ID:???0240nobodyさん
2010/02/24(水) 17:34:41ID:???0241nobodyさん
2010/02/24(水) 17:34:53ID:???function a() {
echo "morning\n";
}
b.php
function b() {
echo "evening\n";
}
c.php
function c() {
a();
echo "hello\n";
b();
}
index.php
include("a.php");
include("b.php");
include("c.php");
c();
こうじゃね
0242nobodyさん
2010/02/24(水) 17:43:01ID:???突拍子もなく出てくる関数ってグループ規模の開発だろうし
そんなの読み進めたこともないからわからないけど
そんなわかりづらいこと普通するか?
俺ならcでaとbをincludeして
indexでcだけincludeするけどな
0243nobodyさん
2010/02/24(水) 17:48:38ID:???そんな感じならgrepですぐに見つかりそうだけどな
PHPエディタですらプロジェクト全体検索あるから
見つからないというのはもっと別の考えもしない理由がありそうだ
0244nobodyさん
2010/02/24(水) 17:53:31ID:???自作の組み込み関数つくっちゃいました系
0245nobodyさん
2010/02/24(水) 17:57:08ID:???というよりしても動かない罠
0246nobodyさん
2010/02/24(水) 18:00:42ID:???明示的にファイル名を書かないから出ないんじゃないだろうか
0247nobodyさん
2010/02/24(水) 18:06:04ID:???よって検索の仕方が悪いでAF
0248nobodyさん
2010/02/24(水) 18:08:55ID:???0249nobodyさん
2010/02/24(水) 18:09:39ID:???0250nobodyさん
2010/02/24(水) 18:17:46ID:???Linuxならこんなんとか。
0251nobodyさん
2010/02/24(水) 18:18:22ID:???どうなってるの
最後にjavaにこんぱいるするやつやってみるか
0252nobodyさん
2010/02/24(水) 18:22:03ID:???hiphop使うのにlinux入れるくらいならアパッチで動かせればいい。
0253nobodyさん
2010/02/24(水) 18:27:23ID:???特定のソフトウェアの話はスレ違い
0254nobodyさん
2010/02/24(水) 18:30:10ID:???0255nobodyさん
2010/02/24(水) 18:40:52ID:???javaスレでも池
0257nobodyさん
2010/02/24(水) 18:42:28ID:bh88JagV使い心地を知りたいです
また、皆さん使われていますか?
0258nobodyさん
2010/02/24(水) 18:43:25ID:???0260nobodyさん
2010/02/24(水) 18:55:51ID:???0261nobodyさん
2010/02/24(水) 19:07:26ID:5FK8q+s6出力させたいんですがどうやっても出来ません・・・。
何がいけないんですかね?
0262nobodyさん
2010/02/24(水) 19:08:00ID:???0263nobodyさん
2010/02/24(水) 19:51:17ID:QiKWkWLO以下の記事の信頼性はいかがばかりでしょうか?
http://www.res-system.com/weblog/item/359
Linux + Apache(prefork) + PHP4 な環境で上記記事のスクリプトは利用可能ですか?
すみませんが、ご教示ください。
0264nobodyさん
2010/02/24(水) 20:14:17ID:QiKWkWLO安全でしょうか?
----------
$retry = 0;
$fp = fopen(CSV_FILE,'a');
stream_set_write_buffer($fp, 0);
while(!flock($fp, LOCK_EX)){
$retry++;
if ($retry > 5) {
return FALSE;
}
usleep(100000); // 0.1秒待つ
}
fwrite($fp, $line);
@flock($fp, LOCK_UN);
@fclose($fp);
0266nobodyさん
2010/02/24(水) 20:33:04ID:QiKWkWLO入力:
CSV_FILE → 対象となるCSVファイル
$line → 追記したい行
戻り値:
CSV追記成功時は TRUE、失敗時は FALSE。
// CSV追記処理
function csv_write($line){
$retry = 0;
$fp = fopen(CSV_FILE,'a');
stream_set_write_buffer($fp, 0);
while(!flock($fp, LOCK_EX)){
$retry++;
if ($retry > 5) {
@fclose($fp);
return FALSE;
}
usleep(100000); // 0.1秒待つ
}
fwrite($fp, $line);
@flock($fp, LOCK_UN);
@fclose($fp);
return TRUE;
}
0267nobodyさん
2010/02/24(水) 20:54:36ID:???1回目で書き込みが成功しない場合retryしても書き込みが成功するとは思えない
file_existsで書き込み対象があるか確認
is_writableで書き込み対象が書き込み可能か確認
0268nobodyさん
2010/02/24(水) 21:12:31ID:???まあ、いいこと無いわな。
flock使わない方法使った方がいいよ。占有権とってからファイルオープンね。
0269nobodyさん
2010/02/24(水) 21:17:40ID:???マルチスレッドやる方法教えてくれよ
0270nobodyさん
2010/02/24(水) 21:19:33ID:???元々phpはマルチスレッドに対応しとらん
cURL使った擬似的なものを紹介してるとこもあるが
そのモジュールすらはいってないなら手の施しようがない
ご臨終です
0271nobodyさん
2010/02/24(水) 21:20:10ID:???0272nobodyさん
2010/02/24(水) 21:23:52ID:???ありがとうございます
0273nobodyさん
2010/02/24(水) 22:15:50ID:5FK8q+s6$u = $_POST['username'];
$p = $_POST['password'];
if ($u != '' && $p != '') {
if ($p == $users[$u]) $_SESSION['username'] = $u;
else unset($_SESSION['username']);
}
この連想配列を外部ファイルから出力させたいのですがさっぱりわかりませんorz
0276nobodyさん
2010/02/24(水) 22:39:19ID:???説明がへたくそすぎるwwwww
ようするに中身が
hoge<>geho
guest<>guest
って書いてある外部ファイルを読み込んで
↓↓↓↓↓
$users = array('hoge' => 'geho', 'guest' => 'guest');
というように連想配列に格納したいってことだろ?
本質とは違うその下の部分に突っ込みたくなるじゃないか・・・
0277nobodyさん
2010/02/24(水) 22:43:22ID:5FK8q+s6ふむふむ。
参考になります。
>>276
あ、その通りです。
スクリプトを拾って自分なりに書き換えて遊んでるのですがうまくいかなくて・・・。
0278nobodyさん
2010/02/24(水) 22:53:52ID:???$users = array();
foreach ($data as $row) {
$tmp = explode("<>", $row);
$users[$tmp[0]] = $tmp[1];
}
print_r($users);
動作は確認してないがこんな感じじゃないっすかね
0279nobodyさん
2010/02/24(水) 22:58:45ID:???0281nobodyさん
2010/02/24(水) 23:12:02ID:eGz4iYXY$obj &= new ○○();
この&=はどういう意味があるんでしょうか?
0282nobodyさん
2010/02/24(水) 23:12:49ID:???なんか超初心者っぽいな
エラーでてるならエラー書かないとエスパーは今不在だ
0284nobodyさん
2010/02/24(水) 23:17:04ID:eGz4iYXY0285nobodyさん
2010/02/24(水) 23:19:20ID:5FK8q+s6認識って違いましたねw
一行目のhoge<>gehoだけうまく読み込んでくれてないっぽいです。
エラーは出ていませんが・・・。
0287nobodyさん
2010/02/24(水) 23:22:58ID:???0288nobodyさん
2010/02/24(水) 23:23:17ID:HQ6IjQWg【OS名】Windows XP
【PHPのバージョン】PHP5.2.10 CLI
test.php
<?php
system("時間が掛かるプログラム.exe");
?>
test.phpを終了させた時、時間が掛かるプログラム.exeも終了して欲しいのですが
終了してくれません。何か終了させる方法はありますか?
0289nobodyさん
2010/02/24(水) 23:26:53ID:5FK8q+s6$users[$tmp[0]] = $tmp[1];
この辺?w
>>287
BOMってググってみたけど空白?
0291nobodyさん
2010/02/24(水) 23:54:55ID:dcz7C6Quapacheの公開用ディレクトリにphpファイルを置いてそれを直接編集しながら開発していくのが普通でしょうか?
あるいは、Java開発みたいに別の場所で編集して実行時にデプロイ、みたいなことをやるのですか?
現場でLAMP開発をされてる方はどのような流れで開発してるのでしょうか?教えてください。
0292nobodyさん
2010/02/25(木) 00:04:07ID:5FK8q+s6おお、そういう事でしたか。
んー確認してみましたが特に問題なかったですorz
0293nobodyさん
2010/02/25(木) 00:04:20ID:???終了させたときってどのタイミング?
phpが全て表示されたタイミングか
ブラウザを閉じた(他へ移動した)タイミングか
まぁたぶん後者なんだろうけど
両者に共通する点としてsystem関数使えるならプロセスをkillすればいいと思う
XP Proならtaskkillってコマンドがあるが
Homeだとないのでどっかから似たようなプログラムを探して持ってこればいいと思う
軽く探したがこんなのとか
ttp://www.vector.co.jp/soft/winnt/util/se401845.htm
後者のタイミングの場合普通ではこの処理を挟むことも不可能なので
JavaScriptのonBeforeUnloadイベントで終了時(移動時)に
ajaxかなんかで終了させてやるしかないかと思われ
0294293
2010/02/25(木) 00:06:50ID:???拡張子のとこhtmじゃなくてhtmlにすれば見れる
0296293
2010/02/25(木) 00:28:21ID:???全部忘れてちょうだい
ていうか普通にバッチ処理でいいんじゃ
0297nobodyさん
2010/02/25(木) 01:23:21ID:oCMgk6uhwhile(!mb_send_mail(/*メール*/))
ってやるのって有効ですか?
0298nobodyさん
2010/02/25(木) 01:24:46ID:???一生終わらない可能性
0299nobodyさん
2010/02/25(木) 01:47:39ID:???char c;
int n = (int)c;
というキャストは出来ますか。
文字型を-128 〜 127に変換するってことです。
0301nobodyさん
2010/02/25(木) 01:54:40ID:???http://php.net/manual/ja/language.types.type-juggling.php
0302nobodyさん
2010/02/25(木) 02:13:12ID:???0303nobodyさん
2010/02/25(木) 02:24:52ID:???0304nobodyさん
2010/02/25(木) 02:59:45ID:QIQePhl3$users = array();
foreach ($data as $row) {
$tmp = explode("<>", $row);
$users[$tmp[0]] = $tmp[1];
}
$tmp[0] = $_POST['username'];
$tmp[1] = $_POST['password'];
if ($tmp[0] != '' && $tmp[1] != '') {
if ($tmp[1] == $users[$tmp[0]]) $_SESSION['username'] = $tmp[0];
else unset($_SESSION['username']);
}
hoge<>geho
aaaa<>bbbb
1111<>2222
なぜか1111<>2222しかログインできない・・・。
何がいかないんでしょうか?
0306nobodyさん
2010/02/25(木) 03:37:54ID:???本来、区切れない部分を置換してしまうことがあります。
対処法はありますか。
ユニコード文字列みたいなのが出来ればいいですが。
一語が一つの配列入りしてれば
0307nobodyさん
2010/02/25(木) 04:29:25ID:???なんでforeachのブロックが終わったのに$tmp使ってるの?
その$tmpはforeach内のみで使うローカル変数でしょ
何やってるか理解できてないでしょ?
答え書いても分かるとは思えないけど
$data = file("ttttt.txt");
$users = array();
foreach ($data as $row) {
$tmp = explode("<>", $row);
$users[$tmp[0]] = $tmp[1];
}
この処理が終わった時点で
$usersは
$users['hoge'] = "geho";
$users['aaaa'] = "bbbb';
$users["1111"] = "2222";
こうなってるでしょ
セッション処理してるけど理解してないだろうしそこは省いて簡素化して続き書くと
if (isset($_POST['username']) && isset($_POST['password'])) {
if ($users[$_POST['username']] == $_POST['password']) {
echo "認証成功";
} else {
echo "認証失敗";
}
}
0308307
2010/02/25(木) 04:41:19ID:???ちょっと手直しする
0309nobodyさん
2010/02/25(木) 05:13:07ID:???<form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
N<input type="text" name="username" value="">
P<input type="text" name="password" value="">
<input type="submit">
</form>
<?php
$data = file("ttttttxt");
$users = array();
foreach ($data as $row) {
$tmp = explode("<>", rtrim($row));
$users[$tmp[0]] = $tmp[1];
}
if (isset($_POST['username']) && isset($_POST['password'])) {
if ($users[$_POST['username']] == $_POST['password']) {
echo "認証成功";
} else {
echo "認証失敗";
}
}
?>
array_key_existsとか使ったほうがいいかもしれないがとりあえず簡素化したものなのでこれで
あと本番ではエスケープ忘れずに
0310309
2010/02/25(木) 05:20:07ID:???何も入れなくても認証されてしまう
isset使ってるのが原因でもあるがやっぱarray_key_exists使って
if (isset($_POST['username']) && isset($_POST['password'])) {
if (array_key_exists($_POST['username'], $users)) {
if ($users[$_POST['username']] == $_POST['password']) {
echo "認証成功";
} else {
echo "認証失敗";
}
} else {
echo "認証失敗";
}
}
まぁ書き方は色々あるのでとごまかしつつ寝ます・・・
0311nobodyさん
2010/02/25(木) 10:58:05ID:???0312288
2010/02/25(木) 13:22:24ID:???答えてくれてありがとう。
普通ならバッチ処理でいいのですが、今回はGUIを作っていまして。。
いろいろ試した結果
proc_open()で時間が掛かるプログラムを起動
proc_open()のオプションでbypass_shellをtrueにする
終了時にproc_terminate()
こんな感じでできました。
0313nobodyさん
2010/02/25(木) 14:13:12ID:???0314nobodyさん
2010/02/25(木) 14:13:44ID:5niKfpQR0316nobodyさん
2010/02/25(木) 14:32:59ID:4W7DKvAcMYSQLと接続をしようとしたところ、
Call to undefined function mysql_connect
と出て先に一向に進みません。
PHP5とMYSQLの相性の問題かと思ったのですが、
バージョン的にも問題がないようです。
他に原因として何が考えられますか?
0317nobodyさん
2010/02/25(木) 14:35:00ID:4W7DKvAcとりあえず、サーバーを再起動して見てみます。
0318nobodyさん
2010/02/25(木) 14:40:41ID:???0319nobodyさん
2010/02/25(木) 14:42:16ID:4W7DKvAcMYSQL単体だとログインが出来て、テーブルも作れます。
PHP5もphpinfo()で動作は確認しています。
やっぱり、接続中に何らかしらのトラブルが発生しているようです。
ネットワーク周りとかで、疑った方がいい設定値などありますか?
0320nobodyさん
2010/02/25(木) 14:44:51ID:4W7DKvAcmysqlが原因ですか・・・
DBサーバー関係が疎いので、色々やっているうちに、どこかの設定を間違っていじっていたかもしれません。
今から、再インストールしてみます。
ありがとうございます。
0321nobodyさん
2010/02/25(木) 14:50:22ID:???mysqlではなくphpのmysql用のモジュールが読み込めてないだけ
phpinfo()にMySQLの項目がでてこないと使えない
0322nobodyさん
2010/02/25(木) 15:12:09ID:???PHP5(2系3系)とMySQL5.xはdllの相性が悪い
5.2なら「php mysql 修正版 dll」でググレ
王道的な解決策は>>6のブログに書いてある
0323nobodyさん
2010/02/25(木) 16:07:01ID:???【PHPのバージョン】php5
環境は特に限定せず、普通のレンタル鯖等での動作を想定。
数値での++的な事をアルファベットでやりたいです。
a,b,c....と事前に配列で定義することなく、プログラム的にa,b,c....をループの中などで出力する方法はないでしょうか?
0325nobodyさん
2010/02/25(木) 16:36:52ID:???PHPからウィンドウズのアプリ(.exe)を起動するにはどんな関数を使えばいいのですか?
アプリはPHPソースと同じ場所にあります。
0327nobodyさん
2010/02/25(木) 16:39:28ID:gV6UoPDqWindowsXPにPHPを入れてるのですが
PHPからウィンドウズのアプリ(.exe)を起動するにはどんな関数を使えばいいのですか?
アプリはPHPソースと同じ場所にあります。
0328nobodyさん
2010/02/25(木) 16:39:52ID:???0329nobodyさん
2010/02/25(木) 16:51:08ID:gV6UoPDqいやそうやって書いてたんですがエラーでて(´・ω・`)
っておもってたんですがスペルマミスでしたwwwwwwwwwwwwwwwwwサーセンwwww
そして直して再度やってみたら、なんかブラウザが読み込み中のままで
サーバー側でアプリが起動してないんですが
他に何か気をつける点があったら教えてください
0330nobodyさん
2010/02/25(木) 17:02:02ID:???0331nobodyさん
2010/02/25(木) 17:02:30ID:???0332nobodyさん
2010/02/25(木) 17:10:15ID:gV6UoPDqえっと普通のWinアプリなのでGUI的な感じですが・・・
>>331
ログどこにありますかログ。みてみます
0333nobodyさん
2010/02/25(木) 17:24:18ID:???`〜` は文字出力して戻ってくるのが前提のコマンドだ。
もしサーバー側で実行が成功してるなら
そのphp、つまりhttpdの実行ユーザーで実行されている
デスクトップがそのユーザーのものじゃないからそのままじゃ出ないだろう
サービスの設定でデスクトップとの対話を許可するとかやれば出るかもしれない
実行してphpkら切り離すのは、、、&使えたっけ?forkしてexecとかか
0334nobodyさん
2010/02/25(木) 17:31:33ID:gV6UoPDqすごいありがとうございます。
確かに画面には出ていませんでした。。。
んでタスクマネージャみてみたらボタン押した回数分起動してましたww
すみません、サービスの設定はどうやってやるのですか?><
んで、サイトに書いてるようにexecやったらphpが抜けてこないっぽいので
切り離すやりかたを><
0335nobodyさん
2010/02/25(木) 17:34:16ID:???Apacheのプロパティ出してログオンのとこにあるデスクトップ〜をチェック
0336nobodyさん
2010/02/25(木) 17:56:54ID:gV6UoPDqできました!!!
タスクトレイのアイコン右クリのサービスでもOKでした。
おかげでアプリは見事に表示されました!!
で、これやっぱりアプリ終了させるまでexecで止まってるみたいですね。
アプリは起動されたら一連の動作を終えたら終了するようにするので
これはこれでOKかなとおもいました。
いろいろありがとうございました。
ほんと助かりました。。。
0337nobodyさん
2010/02/25(木) 19:13:45ID:???htmlspecialcharsは表示のタイミングで使うものなので
受け取った値をどう使うかによる
表示するのなら(そのタイミングで)使うべき
内部で処理するために使うだけならいらない
0338nobodyさん
2010/02/26(金) 00:44:43ID:???0339nobodyさん
2010/02/26(金) 01:11:20ID:???0340nobodyさん
2010/02/26(金) 02:35:11ID:L4Bq0Atmrtrimを使わないといけないのは分かりましたが理解が出来ない・・・。
>>307
なんとなくでしか分かってないですorz
issetで書いた方がいいのでしょうか・・・?
>>310
一つ一つ理解して頑張っていきたいと思います・・・。
これで動きました。
ありがとうございます。
0341nobodyさん
2010/02/26(金) 03:25:21ID:???0342nobodyさん
2010/02/26(金) 07:56:53ID:???http://jp.php.net/manual/ja/function.file.php
注意: FILE_IGNORE_NEW_LINES を指定しない限り、 配列に取り込まれた各行は行末文字も含みます。
行末文字を取り除きたい場合には rtrim() を使用する必要があります。
fileで配列に入った1行ずつの最後には改行が入ってるよってこと。
だからexplodeした最後の配列の中は
"geho[行末文字]"になっていて比較する"geho"とは違う文字列となってしまう。
こういうときは自分なら
hoge<>geho<>
aaaa<>bbbb<>
1111<>2222<>
と余分に<>を付けとく
0343nobodyさん
2010/02/26(金) 11:11:53ID:AdOXrMqO昨日execがどーのとかって騒いでた基地外ですがまた質問させてください。
昨日の件はうまくいって感謝しています。んで、それの続きなんですが
echo "処理中";
exec('hoge.exe')
echo "<img src='hoge.jpg'>";
てな具合でボタンを押したらhoge.exeを起動してhoge.exeがhoge.jpgを作成して
作成したらhoge.exeは終了するのでhoge.jpgを表示するってストーリーなのですが
hoge.exeはjpgを作成するまでやや時間がかかるので、
ボタンを押したら"処理中"の文字を表示してからhoge.exeを起動したいのですが
何故か、hoge.exeが終了してから"処理中"が表示されてしまいます・・・
これどうしたら、先に処理中って文字を表示させることができますか?
0344nobodyさん
2010/02/26(金) 11:14:02ID:???0345nobodyさん
2010/02/26(金) 11:31:14ID:AdOXrMqOでけましたありがとう。
ob_flush( );
flush( );
と両方しないとダメなんですね。
0346nobodyさん
2010/02/26(金) 12:23:06ID:OgECULN1動画アップローダを作成しています。
動画・タイトルどちらが欠けてもエラーが出る様にしています。
しかしタイトルを未入力で、動画だけをアップした時、
何故かエラーが出ずphpがそのまま実行されて確認画面まで来てしまいます。
(動画も結局アップされていません)
これはphp.iniで設定された容量制限である100MBをオーバーしてしている場合のみで、
軽い動画ならうまく動作する様ですが…。
■up.html
<form action="up.php" method="POST" enctype="multipart/form-data">
動画 <input name="video" type="file"><br>
タイトル <input name="videotitle" type="text" size="30" value=""><br>
<input type="submit" name="up" value="アップする"></form>
■up.php
<?php
if (isset($_POST["up"])) {
$path = "./"
$video = $_FILES["video"]["name"];
$videotitle = $_POST["videotitle"];
if (!isset($videotitle)) {
error;//エラー処理(元のアップローダ画面に飛ばす)
exit();}
if (move_uploaded_file($_FILES['video']['tmp_name'],$path.$video) == false) {
error;//エラー処理(元のアップローダ画面に飛ばす)
exit();}
//確認画面処理〜
}?>
php.iniのファイルサイズ制限が効いていないのかと思い
直接ファイルサイズ if ($_FILES["video"]["size"] > 1000000) {〜} 等でチェックしましたが、
やはり大きい動画をアップするとこのエラーはスルーされてそのまま確認画面まで来てしまいます。
どこが間違っているのでしょうか?
0347nobodyさん
2010/02/26(金) 12:35:10ID:???if ($videotitle == "") {
0348nobodyさん
2010/02/26(金) 12:35:36ID:L4Bq0Atmふむふむ。
file関数をバカにしてました・・・。
勉強になります。
0349346
2010/02/26(金) 13:40:42ID:OgECULN1やってみましたが、やはり動画のアップがされた後確認画面が出ます。
仮に値を入れても、動画ファイルの容量が大きいと空の状態の確認画面が出て来てしまいます。
0350nobodyさん
2010/02/26(金) 13:51:38ID:???他にpostサイズの制限とかメモリ制限の設定があるから確認してみたら
$_FILES["video"]["error"]もご確認くださいませ
0351nobodyさん
2010/02/26(金) 13:55:57ID:???そうすると、いきなり確認画面になるね。
0352346
2010/02/26(金) 14:04:45ID:OgECULN1$_FILES["video"]["error"]確認しましたが空でした。
>>351
ネットで検索した所
「php.iniで設定したpost_max_sizeの値を超えると、該当の変数の値が消えてしまう」
というのがあったので、
「post_max_sizeを超える=動画をアップしていない状態」になるという事は何となく分かりました。
となると動画の容量がデカイ状態と動画ファイルを指定していない状態を同一の処理にするしか
無いという事でしょうか。
0353nobodyさん
2010/02/26(金) 14:05:06ID:???0355346
2010/02/26(金) 14:15:28ID:???post_max_sizeあるいはupload_max_sizeを超えなければいける様です。
色々探してて次の様な記述見つけたのでとりあえずの対応策打っておきます。
>・php.ini で post_max_size > upload_max_size にしておかないと、
>スクリプト自体が強制終了して、$_FILES[...]['error'] を見てエラーメッセージを出せないので注意。
>・アップロード form において、hidden input の MAX_FILE_SIZE は
>type="file" な input より手前に書かないと適用されないので注意。
ありがとうございました。お騒がせしました。
0356nobodyさん
2010/02/26(金) 17:13:48ID:pmFXcZ0U単にmagicfileで検索しても名探偵コナンばっか出てくるし(苦笑)、それを検索から除去しても良く分かりませんでした
0357nobodyさん
2010/02/26(金) 17:23:35ID:???0359nobodyさん
2010/02/27(土) 14:37:21ID:96it23LZといわれるゆえんは何?
クラスも持ってるしクラスオブジェクトもつくれるしオブジェクト指向言語と呼ばれる資格は
十二分に兼ね備えていると思うんだが(´・ω・`)
0360nobodyさん
2010/02/27(土) 14:52:54ID:???普通CといったらC++はささないけど
PHPといったらPHP3もPHP5もさすし名称的な問題もあるのかなぁと
今の状態はまだまだなんちゃってオブジェクト指向
オブジェクト指向としての機能が弱かったり足りなかったり
0361nobodyさん
2010/02/27(土) 14:59:17ID:???でも相対的な程度の違いであって
オブジェクト指向かそうでないかと言われれば「YES」になる
0362nobodyさん
2010/02/27(土) 15:25:22ID:???0363nobodyさん
2010/02/27(土) 15:35:27ID:???0364nobodyさん
2010/02/27(土) 17:10:35ID:???if ((>>360 == >>363 || >>361 == >>363)
echo ">>363=チンピラ乙";
}
?>
0366nobodyさん
2010/02/27(土) 17:23:24ID:???0367nobodyさん
2010/02/27(土) 17:36:39ID:???0368nobodyさん
2010/02/27(土) 17:56:19ID:AeZrDmue【PHPのバージョン】php5.26
【連携ソフトウェア】apach2.2
【質問内容】
これまで相対パスしか使ったこと無くてドキュメントルートから上にファイル置いたとき、
どんな風に指定すればいいのかわからないよっ
誰かおしえて
0369nobodyさん
2010/02/27(土) 17:59:24ID:???0370nobodyさん
2010/02/27(土) 18:01:01ID:???0373nobodyさん
2010/02/27(土) 18:43:19ID:???0374nobodyさん
2010/02/27(土) 19:04:06ID:???あと例外投げないのが嫌ならエラーハンドリングすればいいのでは?
0375nobodyさん
2010/02/27(土) 20:03:19ID:???正しくアクセスできないわけだけど、 $this-> をつけなくてもエラーが返されないって点はこわくね?
うっかり $this-> を付け忘れるとそのメソッド内限定の変数として扱われ、クラスプロパティの値は
全く変えられなくなる。それでいてエラーとかは表示されないわけだからバグ混入の原因にもなる。
以前クラスを作った際にクラスプロパティの値が何やっても変更されなくて数時間の格闘の末
プロパティに$this->を付け忘れただけということが判明した。本当に恐ろしい体験だったぜ・・・
0376nobodyさん
2010/02/27(土) 20:03:56ID:???チンピラだから仕方がない
>>374
>あと例外投げないのが嫌ならエラーハンドリングすればいいのでは?
本人でないがそれじゃ意味ない罠
わざわざそういうことをしないために元々サポートされるものなんだから
0378nobodyさん
2010/02/27(土) 20:18:20ID:???しなくてもいいししてもいい
例外投げてくれたほうがいいと思うならすればいいじゃない
言語に使われるんじゃなくて言語を使わなくちゃだめだよ
0379nobodyさん
2010/02/27(土) 20:36:48ID:???0380nobodyさん
2010/02/27(土) 21:13:23ID:???デストラクタでファイルをクローズするのはお行儀のいいプログラムだと思う?
デストラクタを使えば確実にファイルをクローズすることができるし
0381nobodyさん
2010/02/27(土) 21:21:12ID:???0382nobodyさん
2010/02/27(土) 21:28:15ID:???0383nobodyさん
2010/02/27(土) 21:30:36ID:???0384nobodyさん
2010/02/27(土) 22:07:39ID:???サンクス、この調子でいってみるノシ
ところで"rb+"オプション(読み書きモード)付きでファイルをオープンしたあとflock()で排他ロック。
ファイルを読み込んで処理を施したあと再度上書き保存して排他ロックを解除、
というシナリオを考えているんだけど最後にファイルを上書き保存する際に
一度ファイルをまっさらにする方法って無い?
"rb+"モードだとポインタを先頭に戻して書き込んでも以前のファイルの内容が残ってしまうんだよね。
たとえば"rb+"モードで長文開いたあと短文を保存すると短文のあとに以前の長文の残骸が残って
しまう。
書き込み前に一瞬だけ排他ロックを外して"w"オプションでファイルに書き込めばこの問題は
解決できるんだけど一瞬排他ロックを外した瞬間にそのファイルがいじられてしまう可能性だって
ゼロではない。
う〜ん・・・、どうすればいいんだろう・・・
0385nobodyさん
2010/02/27(土) 22:14:17ID:???0387nobodyさん
2010/02/27(土) 23:17:37ID:???【PHPのバージョン】5.2.5 - SafeMode
【質問内容】
phpで送信されてきたidとpasswordをListファイルにあるidとpasswordで照合させたいのですが
外からListファイルを読めないようにするにはどうしたら良いのでしょうか。
0389388
2010/02/27(土) 23:21:14ID:???0390nobodyさん
2010/02/27(土) 23:42:50ID:wtKSisfTatpagesを使用してるのですが、ドキュメントルートより上におくって無理っぽい><
0392nobodyさん
2010/02/28(日) 04:50:09ID:???atpagesならDB使えるしそっちでも
0394nobodyさん
2010/02/28(日) 10:54:11ID:???【PHPのバージョン】5.2.5
【質問内容】
借りているサバでcronが使えないのでローカルの
タスクスケジューラーを利用してhttp経由で定期的に処理させたい
タスクがあります。
<?php
$URL="http://xxx.com/index.php"
file_get_contents($URL);
?>
上のようなコードでレンタサーバ上のPHPファイルは
実行されるでしょうか?
もし駄目ならフォームを作っておいて
フォームの変数に実行の権限を与えて
JSでdocument.form.fname.onsbmit();
してやればいいのかなと考えているのですが
判然としません。
0395nobodyさん
2010/02/28(日) 11:06:27ID:???0396nobodyさん
2010/02/28(日) 13:06:03ID:???0397nobodyさん
2010/02/28(日) 13:22:02ID:LiqVmvoYその配列を値のファイルの更新時間が新しい順にソートしたいのですが全く考えが浮かびません。
何か方法がありましたらお答え頂けると嬉しいです。
0398nobodyさん
2010/02/28(日) 13:24:39ID:???0399nobodyさん
2010/02/28(日) 13:24:42ID:???0400nobodyさん
2010/02/28(日) 13:28:01ID:LiqVmvoYありがとうございました。やってみます。
0401nobodyさん
2010/02/28(日) 13:33:10ID:???0402nobodyさん
2010/02/28(日) 13:34:15ID:???しかし、同じのを複数回呼び出すので効率悪い。
確定した値つかうのを推奨。
0403nobodyさん
2010/02/28(日) 13:36:13ID:???0404nobodyさん
2010/02/28(日) 13:38:36ID:???晒せや
0405nobodyさん
2010/02/28(日) 14:16:58ID:LiqVmvoY0406nobodyさん
2010/02/28(日) 15:01:13ID:???でビジターのIPアドレスを取得できると思いますが
たとえばノートンとか入れていてIPアドレスが表示
されないようにした人がアクセスしてきた場合は
$ipにはどんな値が代入されますか?
0408nobodyさん
2010/02/28(日) 15:15:57ID:???0409nobodyさん
2010/02/28(日) 15:17:23ID:VtmQa4kubase64とかナスリエンコードとか。
0410nobodyさん
2010/02/28(日) 15:18:32ID:VtmQa4kuナスリ=URL
バイナリの長文をソースコードに埋め込みたいのですが
0411nobodyさん
2010/02/28(日) 15:22:28ID:???0412nobodyさん
2010/02/28(日) 15:34:02ID:VtmQa4kubase64にしときます。asciiで使える文字はもっとありそうですが実績と手間削減から。
0413nobodyさん
2010/02/28(日) 15:41:30ID:???0414nobodyさん
2010/02/28(日) 16:22:48ID:???0415nobodyさん
2010/02/28(日) 16:24:31ID:???たぶんオプジェクトのオの字も知らない人が書いたと思われる。
こういうのを改修する場合って既存の書き方に習った方がいいのだろうか?
あるいはリスク覚悟で書き直した方がいいのかな?
お客さんは任せるって言ってるんだけど。
0416nobodyさん
2010/02/28(日) 16:28:26ID:???0417nobodyさん
2010/02/28(日) 16:34:01ID:???しかし酷いソースに合わせて機能拡張するって本当に苦痛だ
0418409
2010/02/28(日) 16:45:39ID:VtmQa4ku実行ファイルでサイズが半分くらいになりなかなか効率良いですよ。
<?php
function bin2ascii( $bin ) { return base64_encode( gzcompress( $bin, 9) ); }
function ascii2bin( $asc ) { return gzuncompress (base64_decode( $asc) ); }
function bin2ascii_file( $infile, $outfile ){
$fp = fopen( $infile, 'rb');
$data=fread( $fp, 10*1024*1024);
fclose($fp);
$data=bin2ascii($data);
$fp = fopen( $outfile, 'wb');
fwrite( $fp, $data);
fclose($fp); }
function ascii2bin_file( $infile, $outfile ){
$fp = fopen( $infile, 'rb');
$data=fread( $fp, 10*1024*1024);
fclose($fp);
$data=ascii2bin($data);
$fp = fopen( $outfile, 'wb');
fwrite( $fp, $data);
fclose($fp); }
bin2ascii_file("exploler.exe", "000");
ascii2bin_file( "000", "exploler.ex_");
?>
0419nobodyさん
2010/02/28(日) 16:54:11ID:???0420nobodyさん
2010/02/28(日) 16:54:22ID:???0421nobodyさん
2010/02/28(日) 16:55:14ID:VtmQa4kuBASE64はデータ量は4/3になります。
BASE93だとデータ量は5/4になります。
元が120Kだと、160Kと150Kの差になります。93文字でもあまり減らせません。
0422nobodyさん
2010/02/28(日) 16:58:21ID:???0423nobodyさん
2010/02/28(日) 17:00:23ID:???0424nobodyさん
2010/02/28(日) 17:13:20ID:U94IcC740425nobodyさん
2010/02/28(日) 17:27:22ID:???γ⌒´ ヽ,
// ""⌒⌒\ ) PHPか・・ 懐かしいな
i / ⌒ ⌒ ヽ )
!゙ (・ )` ´( ・) i/
| (__人_) |⌒ヽ/⌒\
(''ヽ `ー' / 〉 〉 ,、 )
/ / (__ノ └‐ー<.
〈_/\_________ノ
0426nobodyさん
2010/02/28(日) 17:44:22ID:???XDebug
詳細は公式サイトを見てくだされ
ttp://www.xdebug.org/
この辺にやり方が書いてある
ttp://www.xdebug.org/docs/remote
0428nobodyさん
2010/02/28(日) 19:11:37ID:VtmQa4ku速くなると思うが、PHPでそういうツールあったりしますか。
0429nobodyさん
2010/02/28(日) 19:14:31ID:VtmQa4ku無料の所だとサイズ300K以下とか制限もあり、細かく分ける必要あります。
0430nobodyさん
2010/02/28(日) 23:37:24ID:6S1D3k9mfopen($fp, "r+");
flock($fp, LOCK_EX);
というアクセスをしてきたとき、どのように振る舞いますか?
fopenの段階で一時停止して先にかけられた排他的ロックが解除されるまで
待ってから再開するんでしょうか?もし待つとしたら何秒くらい待ってくれますか?
0431nobodyさん
2010/02/28(日) 23:39:23ID:???0432nobodyさん
2010/02/28(日) 23:45:38ID:???mysqlは導入がいるが。
sqliteが動かない所は入れるべき
0433nobodyさん
2010/02/28(日) 23:52:51ID:???俺はCakeで使ってるけど
0434nobodyさん
2010/03/01(月) 00:10:02ID:???0436nobodyさん
2010/03/01(月) 08:12:56ID:???4社ぐらいで共同作業?してるらしい所に何故か自分が1人で行くことになった
毎朝ミーティングがあるのだが何言ってるのかさっぱり分からん
見とけとだけ言われて渡された資料が膨大で何がなにやら。
0437nobodyさん
2010/03/01(月) 08:38:07ID:???デスマの根源になって空気が重くなる
そのうち鬱病になるよ
0439nobodyさん
2010/03/01(月) 15:33:32ID:H5wSRALnarray(
array(
'col1' => 1,
'col2' => 1,
'col4' => 1
),
array(
'col1' => 1,
'col2' => 1,
'col4' => 2
),
array(
'col1' => 1,
'col2' => 2,
'col4' => 1
),
array(
'col1' => 1,
'col2' => 2,
'col4' => 2
)
)
みたいになっているやつを、縦方向に串刺しして出力したいのですが
ループで回していくしかないでしょうか?
イメージで言うと
$test[]['col1']
みたいな感じで、縦方向で配列として出力したのですが。
0440nobodyさん
2010/03/01(月) 15:53:39ID:z47ZxXxQデータベースでファイルロック?!
あの・・・、どうゆうことでしょうか?
0441nobodyさん
2010/03/01(月) 16:08:28ID:???0442nobodyさん
2010/03/01(月) 16:40:59ID:???0444nobodyさん
2010/03/01(月) 17:56:41ID:???使うとfatal errorってなってphp固まっちゃうけど、なんで?
0445nobodyさん
2010/03/01(月) 17:58:17ID:???0446nobodyさん
2010/03/02(火) 22:13:52ID:???PHPつこてないから2chは落ちたんや!
0447nobodyさん
2010/03/02(火) 22:40:55ID:???0448nobodyさん
2010/03/02(火) 23:08:02ID:???0449nobodyさん
2010/03/02(火) 23:11:02ID:???どんどん書き込んでや
0450nobodyさん
2010/03/02(火) 23:55:52ID:???0451nobodyさん
2010/03/03(水) 00:13:49ID:???0452nobodyさん
2010/03/03(水) 01:49:31ID:OC7p3okf0453nobodyさん
2010/03/03(水) 01:53:24ID:???何をどうやっても変な改行が含まれてデザインがガタガタになってた。
締め切りは迫るし分からなくてもう血の気が引いてた。
そこでなんとなくバイナリを使ったら
単にテキストにbomが入ってたせいでした。
これは初歩的な事だったのだろうか。こんなの聞いた事無いよ・・
0454nobodyさん
2010/03/03(水) 02:07:51ID:???ソースコード専用のアップローダーを考えていて
ハイライトさせたいのですが、アクセス毎にハイライトさせると負荷やばいですか?
0457nobodyさん
2010/03/03(水) 09:47:11ID:qB0rz8y7今こんな感じになってます
foreach($open as $read) {
$element = split(",", $read);
echo "ここに連番";
echo $element[0] ." " .$element[1] ."<br>";
}
0459nobodyさん
2010/03/03(水) 10:32:05ID:???$element = explode(',', $read);
echo $i .'<br />';
echo $element[0] .' '. $element[1] .'<br />';
}
0460nobodyさん
2010/03/03(水) 10:32:56ID:???0461nobodyさん
2010/03/03(水) 10:42:22ID:???foreach($open as $read) {
$element = split(",", $read);
echo $renban;
echo $element[0] ." " .$element[1] ."<br>";
$renban++;
}
だせぇw
0462nobodyさん
2010/03/03(水) 11:10:31ID:???0464nobodyさん
2010/03/03(水) 14:12:42ID:0y5py4rssubmitボタンを押した後、サーバの読み込み中にF5を押したり、
別のページを見ようとするとファイルの内容が壊れてしまう事があります。
fwriteの前にflockを指定してもそうなるのですが、
読み込み中で他の処理をした場合、こうなるのは仕方ないのでしょうか?
0465nobodyさん
2010/03/03(水) 14:16:51ID:???0466nobodyさん
2010/03/03(水) 14:37:46ID:???0467nobodyさん
2010/03/03(水) 14:42:55ID:tlrE5Eoo【PHPのバージョン】php5.3.1
【質問内容】
expression web3を使用してサイトを作っております。
画像をランダムに数枚表示し、その表示された画像にリンクとaltが付くようにするにはどうしたら良いでしょうか。
下のサイトのようにしたいのですが、全然分かりません。。
ttp://www.zakkaz.com/archives/002702.php
どう書けばこんなふうになるのですか。
調べてみて以下のサイトのやり方が良いのか?と思い試しましたがエラー表示。
何が何だかパニックです。どなたかお願いします(土下座)
0468467
2010/03/03(水) 14:44:13ID:tlrE5Eoottp://kome-suki.net/archives/2628
0469nobodyさん
2010/03/03(水) 14:58:17ID:???0470素人
2010/03/03(水) 15:03:42ID:???何か初心者向けの本なるものを購入しようかと考えているんですが、みなさんが初心者だった頃
どの本を読まれてましたでしょうか?オススメがあれば教えて頂きたい。
初心者用でなくてもオススメの本があれば教えてほしいです。
0471nobodyさん
2010/03/03(水) 15:05:08ID:???お薦め
0472nobodyさん
2010/03/03(水) 15:11:53ID:???0473nobodyさん
2010/03/03(水) 15:18:23ID:uqAdaiUcecho "<html>";
echo "hoge";
echo "</html>";
と、既に書いてる状態で
また最初から書き直したい場合はどうしたらいいですか?
echo "<html>";
echo "hogehogehoge";
echo "</html>";
0474nobodyさん
2010/03/03(水) 15:20:51ID:???ignore_user_abort(1);
は駄目かな
ttp://php.plus-server.net/function.ignore-user-abort.html
0476nobodyさん
2010/03/03(水) 15:28:11ID:???http://jp2.php.net/manual/ja/ref.outcontrol.php
ここらへん見てみ
0477nobodyさん
2010/03/03(水) 15:29:30ID:???0478nobodyさん
2010/03/03(水) 15:41:35ID:???echoを1カ所にまとめたらいい
<?php
$echo = "";
$echo = "<html>";
$echo .= "hoge";
$echo .= "</html>";
$echo = "";
$echo .= "<html>";
$echo .= "hogehogehoge";
$echo .= "</html>";
echo $echo;
?>
0479nobodyさん
2010/03/03(水) 15:47:35ID:uqAdaiUcひょっとして、
$echo ="";
で、既にブラウザに表示されてるhtmlはクリアされて
$echo ="";からまた書き直せば以前のブラウザにかかれてたhtmlはあれして
最初からっぽいですかねこれ
ためしてみますありがちゅー
0480nobodyさん
2010/03/03(水) 15:50:47ID:???既に送信されたデータを消すなんて出来るわけがない
>>478は変数に保存しておいて最後に一度に出力するようになってるだけ
0481nobodyさん
2010/03/03(水) 15:57:22ID:uqAdaiUcとりあえずさっきのとは意味合いが違うですが今んとこ、
echo "<meta http-equiv='Refresh' content='0;url=hoge.php'>";
これでまた最初からやり直してるあれです
ブラウザに書いたあれをリフレッシュしつつ
コードは途中からとかってそんな馬鹿な話はないってことでFAですかね?
0482nobodyさん
2010/03/03(水) 16:00:44ID:???それだとhoge.phpが実行されて、すぐにリロードが発生してまたhoge.phpが実行される。
途中からとかは無理
0483nobodyさん
2010/03/03(水) 16:02:19ID:???0484nobodyさん
2010/03/03(水) 16:02:30ID:???0486nobodyさん
2010/03/03(水) 16:06:41ID:uqAdaiUcとりあえずどしろうとなので何ができて何ができないのかがわからなかったのでしつしねもんしてみました
他の方法とかも考えて勉強したいとおもいます。
0487nobodyさん
2010/03/03(水) 18:02:39ID:GWDWl4Kw【PHPのバージョン】Apache/1.3.41 (Unix) PHP/5.2.11 mod_layout/3.4
【連携ソフトウェア】mysql
【質問内容】
MYSQLのバックアップとミラーへの反映を、異なるレンタルサーバ間でやろうと思っています。
dumpを作成し、ミラー側のphpへhttpアクセスし、ミラー側のphpからdumpを取得するのはセキュリティ的によろしくないっぽいので、
dumpをミラー側へMULTIPART/FORM-DATAでPOSTするのが安全かなと思うのですが、これってソケットからコーディングしなければいけなかった気がします。
もっとスマートな方法があれば、教えてもらえないでしょうか
0488464
2010/03/03(水) 18:05:45ID:0y5py4rsこういう関数があったんですね。参考になります。
とりあえず、464の内容ならファイルが壊れる可能性があるという事で理解します。
0489nobodyさん
2010/03/03(水) 18:11:39ID:???マルチパートで送るにしても結局平文だし
0490nobodyさん
2010/03/03(水) 20:27:25ID:p43dWZoRデータをデータベースにアップロードするさい、たとえば
猫 100円
犬 50円
鳩 20億円
・・・・
みたいなCSVファイルを手元に用意してそれを一気にデータベースにアップロードすることはできますか?
それともアップロードもPHPで一つ一つ行う必要がありますか?
加えてアップロード後にやっぱり
犬 200円
に変更したくなったとき、手元のCSVファイルを編集してそれをもとにデータベースの方にも反映させる
ことは不可能でしょうか?
0491nobodyさん
2010/03/03(水) 20:35:44ID:???クエリ発行しろクエリ
0492nobodyさん
2010/03/03(水) 21:04:41ID:???0493nobodyさん
2010/03/03(水) 21:31:33ID:???「手元」ってのは、DB動かしてるのとは別のマシンってことかいな?
なんにせよ、CSVを読んでその内容をDBに登録するPHPスクリプトを書くのは当然可能。
変更させるのも可能。
0494nobodyさん
2010/03/03(水) 22:42:50ID:p43dWZoRはいそうです。手元のマシンからレンタルサーバー上のデータベースにデータをアップデートしたり
随時変更したりできないものかなと思いまして。
> なんにせよ、CSVを読んでその内容をDBに登録するPHPスクリプトを書くのは当然可能。
> 変更させるのも可能。
つまり手元のマシンからレンタルサーバー上のデータベースに手を加えるには
PHPを通さないと無理ということですねorz・・・
ありがとうございました(´Д`)
0495nobodyさん
2010/03/03(水) 22:46:38ID:???0497nobodyさん
2010/03/03(水) 22:50:51ID:???0498nobodyさん
2010/03/03(水) 23:17:53ID:p43dWZoRどうやったらできますか?
0500nobodyさん
2010/03/04(木) 00:19:57ID:Xd0cEYC5問題はログファイルでしてPHPスクリプトから読み書きできるような属性にしているため(646:rw-r--rw-)
ログファイルのURLさえ分かってしまえば一般ユーザーからもログファイルの中身が盗み見されてしまいます。
ログにはアクセスしてきた人の個人情報(ホスト名や検索語)が載っているためできれば
あまり第三者に公開したくありません。だからといって属性を640:rw-r-----とかにすると
PHPスクリプトからもそのログファイルにアクセスできなくなります。
こういうときはどうしたらいいでしょうか?
0501nobodyさん
2010/03/04(木) 00:28:51ID:???0502nobodyさん
2010/03/04(木) 00:29:17ID:???もしくは直接ファイルをapacheでアクセスできないようにする
0503nobodyさん
2010/03/04(木) 00:42:56ID:???0504nobodyさん
2010/03/04(木) 00:56:27ID:???0505nobodyさん
2010/03/04(木) 01:12:06ID:???メリット:簡単
デメリット:パスが変わるので変更が面倒 サーバによってはルートより上に置けない
・先頭に.htをつけたファイル名にする
メリット:簡単
デメリット:Apache限定かつサーバの設定次第で出来ない
・htaccessで制限する
メリット:配布する形ならもっとも一般的
デメリット:Apache限定かつサーバの設定次第で出来ない htaccessの知識が必要
・データベースに突っ込む
メリット:管理がし易い データ膨大になるほど処理速度が有利
デメリット:若干面倒 セキュリティリスクが増える DBが使えないサーバでは出来ない SQLの知識が必要
0506nobodyさん
2010/03/04(木) 01:17:07ID:/m9H25630507nobodyさん
2010/03/04(木) 02:02:32ID:???0508nobodyさん
2010/03/04(木) 02:04:24ID:???0509nobodyさん
2010/03/04(木) 02:12:32ID:???0510nobodyさん
2010/03/04(木) 02:15:10ID:Xd0cEYC5>>504
フリーで転がっているものでログファイルをデータベースにしてあったり.htaccessでアクセス制限
してくださいね、と主張しているものはあまり見たことがないもので・・・
0511nobodyさん
2010/03/04(木) 02:17:12ID:???特定の拡張子だけアクセスできないようにすればいいんです
ていうか>>503の発言から察してこのスレのログぐらい嫁
>>28
0512nobodyさん
2010/03/04(木) 02:23:39ID:???基本中の基本なんだけどそれはスルーするの?
0513nobodyさん
2010/03/04(木) 02:25:54ID:???このファイルはルートの上におけなんてわざわざreadmeに書かないんじゃないかね
まぁ自サイトで使うのみなら定石だよな
0514506
2010/03/04(木) 02:35:41ID:/m9H2563あかんな
反省々々
0515nobodyさん
2010/03/04(木) 02:46:35ID:Xd0cEYC5これは失敬、特定の拡張子にだけアクセスできないよう設定するという意味でしたか
>>512
レンタルサーバーなんで公開ディレクトリ以外のディレクトリにファイルを置くことはできないんです
0516nobodyさん
2010/03/04(木) 02:47:33ID:???0517nobodyさん
2010/03/04(木) 02:50:28ID:???0518nobodyさん
2010/03/04(木) 02:50:50ID:???0520nobodyさん
2010/03/04(木) 02:55:58ID:???0521nobodyさん
2010/03/04(木) 02:58:43ID:???0522nobodyさん
2010/03/04(木) 02:59:43ID:???0523511
2010/03/04(木) 03:00:44ID:???>そうですか、データベースか.htaccessでフォルダ自体にアクセスできないようにするかしたほうがいいということですね。
これだけ見てBASIC認証の話してると思ったけど
よくよく考えてみたら
特定ディレクトリにログファイル集めてDrectoryMatchのことを言ったのかなぁと思って
0524nobodyさん
2010/03/04(木) 03:16:11ID:???public_html
└index.php
public_html
└index.php
└.htaccess
└logfile
0525nobodyさん
2010/03/04(木) 09:37:38ID:???レンサバが、DBへの外部からのアクセスを許しているなら、手元のPC上のDBクライアントから
レンサバに繋いでDBの操作も可能。
上が駄目でも、レンサバにtelnetなりSSHなりでアクセスでき、レンサバ側にDBクライアントも
乗っているなら、それを使うという手もある。
上記がどっちも駄目なら、DBアクセスする(PHPに限らず何らかの)コードをサーバ上に置いて、
そのコードを(CGIなり何なりで)起動させる。
これら以外は俺も知らない。
0526nobodyさん
2010/03/04(木) 10:16:46ID:???0527nobodyさん
2010/03/04(木) 10:18:29ID:???0528nobodyさん
2010/03/04(木) 10:38:17ID:???mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "xxx@yyy.com";
$name = $_POST["name"];
$from = $_POST["mailaddress"];
$subject = $_POST["subject"];
$message = $_POST["message"];
$header = "From: " . mb_encode_mimeheader (mb_convert_encoding($name,"UTF-8","AUTO")) . "<" . $from . ">";
//入力チェック
if ($name == "") {$errMsg .= "名前が入力されていません。";}
if (mb_strlen($name) > 20) {$errMsg .= "名前は20文字以内で入力して下さい。";}
if ($from == "") {$errMsg .= "メールアドレスが入力されていません。";}
$ret = preg_match("/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/", $from);
if (!$ret) {$errMsg[] = "メールを正しい形式で入力して下さい。";}
if ($subject == "") {$errMsg .= "件名が入力されていません。";}
if ($message == "") { $errMsg .= "本文が入力されていません。";}
mb_send_mail ($to, $subject, $message, $header);
?>
メール送信の前にチェックをして未入力の項目があったら画面にエラーメッセージを表示し、
送信出来ないようにしたいのですが、何を追加したら良いのでしょうか?
0529nobodyさん
2010/03/04(木) 10:49:47ID:???0530nobodyさん
2010/03/04(木) 11:08:43ID:???0531nobodyさん
2010/03/04(木) 12:31:00ID:???0532nobodyさん
2010/03/04(木) 12:42:44ID:???もうこのスレの存在意義ないよ
0533nobodyさん
2010/03/04(木) 12:55:01ID:???0534nobodyさん
2010/03/04(木) 14:43:21ID:iGtVy898写真とそのコメントを登録するアプリがあるとします。
更新時、必ずクエリの成功と画像登録の成功をセットで行いたいです。
1)コメントと画像を変更する時は、
if($updateRS==1){?画像登録処理} //$updateRSはupdate文の返り値
という流れで問題ないです。
2)コメントは変更しないけど画像だけ変更するとき、この場合はどうしたら良いんでしょう?
2)の場合、mysqlは更新前後で値の変化がない時はupdateの返り値が0なので、
if($updateRS==1){?画像登録処理}という流れができません。
値の変化を伴う場合、変化がない場合にも共通して使えるような
update〜画像登録の処理はどうしたら良いでしょうか?
自分で考えたのは、テーブルに適当なダミーカラムを持たせて、
UPDATE $table SET `dummyC` = time() とかすればとりあえず更新が常に発生するかと思ったんですが
そんなことのためにカラム作るの嫌だなと…
どうしたら良いか、ご意見お願いします。
if($updateRS==1)のチェックをしなきゃ良いんですけど、2)のケースの時に
クエリエラーで文章が変化ないのに写真だけ更新される問題が発生しかねないので避けたいです。
それともそんなの気にする必要ないんでしょうか?
0535nobodyさん
2010/03/04(木) 14:46:10ID:???0536nobodyさん
2010/03/04(木) 14:49:08ID:???>2)コメントは変更しないけど画像だけ変更するとき、この場合はどうしたら良いんでしょう?
>
>if($updateRS==1)のチェックをしなきゃ良いんですけど、2)のケースの時に
>クエリエラーで文章が変化ないのに写真だけ更新される問題が発生しかねないので避けたいです。
コメントは変更しないのに何のクエリを発行するの?
文章が変化なくて写真だけ更新されるなら2)の目的を達してるのでは?
0537536
2010/03/04(木) 15:03:12ID:iGtVy898>>535
sql板で聞くかこちらで聞くか悩んだ末でした。ずれてたらすみません。
>>536
たしかに、コメントが変更されないとわかってればif($updateRS==1)のチェックせず
ストレートに画像登録単体ですれば良いんですが、
その場合コメントがdb登録済みコメントと同じことを確認する処理が必要になるので。。
とりあえず、コメントと画像が更新される前提としてif($updateRS==1)を用意して、
コメント変更がない場合にも柔軟に対応させたいんです。
「画像だけを変更する」「コメントだけを変更する」って機能にすればいいんですけどね…
実際にはコメントにあたるupdate対象のtextarea や inputが30個くらいあるので難しいです。
0538nobodyさん
2010/03/04(木) 15:04:03ID:iGtVy898わかりにくい文章でごめんなさい
0539nobodyさん
2010/03/04(木) 15:04:30ID:???0540nobodyさん
2010/03/04(木) 15:08:51ID:???普通は更新日時付ければいいものだけどな
0541nobodyさん
2010/03/04(木) 16:01:07ID:iGtVy898それはちょっとw
>>540
やっぱり更新日付いれますか…
mysqlのtimestampで設定してるのでムダになっちゃうんですけどね
みんなこういうのどうやってるのかなぁ、ありきたりな処理のはずなんだけど
0542nobodyさん
2010/03/04(木) 16:05:12ID:???0543nobodyさん
2010/03/04(木) 16:12:54ID:???普通にコメントを上書きすればいいんじゃね?
それが嫌なら、コメントを取得して比較して、同じだったら画像登録処理だけ、違ったらコメント更新と画像登録処理をやればいいのでは?
0544nobodyさん
2010/03/04(木) 16:36:30ID:???それで判断すればいいんじゃない?
PDOもexecuteは True/False を返すみたいだね。
どっちも使ったことないけど。。。
0545nobodyさん
2010/03/04(木) 16:41:13ID:???DMLてのは間違いでした。すんません。
0546541
2010/03/04(木) 17:01:20ID:iGtVy898なんか、解決じゃないですがアプローチを変えることにしました
皆さんのアドバイス見てるうちに問題の切り分けができてきました。ほんとにありがとう。
以下雑記。。
今までpearのadodbの$db->execute("update〜〜")でやってて、それならupdateでも
クエリ成功したら1が返って来てたんですが、zendFWのupdateメソッドに変更したら
行数しか返ってこなくてif($rs==1)の確認ができなくなってたわけです。
問題はFWの知識不足に行き着きそうなので、そっちで考えます。ありがとうございました。
0547nobodyさん
2010/03/04(木) 17:06:50ID:???0548nobodyさん
2010/03/04(木) 17:18:27ID:???0551548
2010/03/04(木) 18:23:07ID:???0552nobodyさん
2010/03/04(木) 21:45:50ID:???0553nobodyさん
2010/03/04(木) 22:18:10ID:Xd0cEYC5質問をしたものです。
あのあとPHPファイルとログファイルを置いてあるフォルダに .httacces ファイルを設置し
order allow,deny
deny from all
と設定することで無事ログファイルを非公開にすることが出来ました。
ところでログファイルを置いているフォルダにアクセスログを取るPHPスクリプトも同居させていますが
このファイルをサイトから include する分には問題無いんですね。非公開フォルダに置いてあるphpファイル
はもしかしたらインクルードできないのではと思っていましたが杞憂のようです。
0554nobodyさん
2010/03/04(木) 22:35:25ID:???0555nobodyさん
2010/03/05(金) 00:15:54ID:???0556nobodyさん
2010/03/05(金) 01:25:28ID:???口にはわざわざ出さないけどな(今出しちゃったけど)
0557nobodyさん
2010/03/05(金) 01:26:04ID:???/home/lib/にlib.phpとlib2.php
/home/www/にhtml.php
あるとしてhtml.phpに
require_once("../lib/lib.php");
require_once("../lib/lib2.php)";
と書いているのですが、lib.phpとlib2.phpがお互いに参照したくなったので
lib.phpにrequire_once("lib2.php");
lib2.phpにrequire_once("lib.php");
と書いても問題ないでしょうか?
0559nobodyさん
2010/03/05(金) 05:59:48ID:8KOlP1UUaliasesには hoge:"|/usr/bin/php /var/www/hogehoge.php"
と設定し、newaliasをしてあります。
/var/wwwにあるhogehoge.phpには
<?php
$pointer=fopen("./test.txt", "w+"); //ファイルを開きます
flock($pointer, LOCK_EX); //ファイルをロックします
$ntime = date("Y年n月j日h時i分s秒");
fputs($pointer, $ntime."\n");
flock($pointer, LOCK_UN); //ロックを解除します
fclose($pointer); //ファイルを閉じます
?>
と記述してあります。
コマンドラインからhogehoge.phpは正常に実行でき、test.txtにはタイムスタンプが出力されるのですが、hoge宛にメールを送ってもphpは実行されていません。
postfixのログには
postfix/local[28018]: 1EBB65F8269: to=<hoge@****>, relay=local, delay=0.08, delays=0.04/0.02/0/0.02, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php /var/www/hogehoe.php)
とあるのでパイプ処理は通ってる気もするのですが。
なにか考えられる原因ってありますでしょうか?
0560nobodyさん
2010/03/05(金) 06:02:58ID:???postfixのログ、
status=sent (delivered to command: /usr/bin/php /var/www/hogehoe.php)
の最後hogehoe.phpとありますが、hogehoge.phpの間違いです。
0561nobodyさん
2010/03/05(金) 06:51:16ID:???それを PHPUnit を使ってやっている、という方はいませんか?
自分でバッチ処理を書こうかとも思ったんですが、それでいけるんなら
それでやってみたいなと・・・。
本来の使い方とは違う気もしますが、運用の実績があれば聞いてみたいです。
よろしくお願いします。
0562nobodyさん
2010/03/05(金) 07:05:12ID:???実行時のカレントディレクトリにtext.txtができる
./test.txt を /var/www/test.txt にしてみるとか
0563nobodyさん
2010/03/05(金) 08:42:39ID:oScRDulS【PHPのバージョン】5.2.12
【質問内容】
文字列をASCII値に変換したいと思っています。
1文字ならord()で可能だと思うのですが、複数文字からなる文字列の場合はバラバラにして各文字を変換するしかないのでしょうか?
適切な関数または良い方法があったらお教えください。
よろしくお願いします。
0566nobodyさん
2010/03/05(金) 10:16:56ID:???0568nobodyさん
2010/03/05(金) 11:59:02ID:nN2jzBk7するとブラウザに、「
90){ $err.="年齢が適切な値ではありません\n"; }; if(!ereg("^[0-9]{3}$",$_POST['zip1'])){$err.="郵便番号(前半)が適切ではありません\n";} 〜 header("Location: thanks.html"); exit; }
」、と「formmail.php」の内容が途中から全て表示されて意図した動作になりませんでした。
コレはどういう事で、また、どのようにすれば解決するのかを教えて頂きたいです。
色々と試しましたが解決しませんでした。
何か自分のPHP、Apacheの設定がおかしいのでしょうか?
それとも、このサンプルのコードがおかしいのでしょうか?
サンプルのソースは100行以上あるのでどう説明したらいいのか分かりませんが、ブラウザに表示される前後のコードを書いておきます。
<?php
.......
if($_POST['age']<10 || $_POST['age']>90){
$err.="年齢が適切な値ではありません\n";
};
if(!ereg("^[0-9]{3}$",$_POST['zip1'])){$err.="郵便番号(前半)が適切ではありません\n";}
........
header("Location: thanks.html");
exit;
} //ここで最後です。 ZFで学んだ通り、?>は省略しております。省略しなくても結果は同じでした。
0569568
2010/03/05(金) 12:01:29ID:nN2jzBk70570nobodyさん
2010/03/05(金) 12:08:47ID:???0571nobodyさん
2010/03/05(金) 12:14:35ID:???0573568
2010/03/05(金) 12:16:54ID:???大馬鹿でした
そのままサンプルをクリックしたのでURIが「file:///C:/Apache2.2/htdocs/Mycomi/01/formmail/input.html」のようになっておりました
「http://localhost/Mycomi/01/formmail/input.html」と自分で打ち直したらちゃんと動作しました
ご迷惑おかけしました
0574nobodyさん
2010/03/05(金) 12:21:43ID:???0575nobodyさん
2010/03/05(金) 12:23:32ID:???ロックしてから読み書きすると言いと書かれていました。
既に他プロセスによってロックがかけられていればflock関数は失敗するので
そのときはsleep(1)で1秒待ってから再度ロックをチャレンジする。そういうのを3回くらい
繰り返すプログラムが書籍に紹介されていました。
でもこのスレではなぜかflock関数は忌み嫌われている印象を受けます。
便利な関数だと思うのですがこのスレでの受けが良くないのはなぜでしょうか?
0576nobodyさん
2010/03/05(金) 12:25:29ID:???0577nobodyさん
2010/03/05(金) 12:25:59ID:???0578nobodyさん
2010/03/05(金) 12:26:09ID:???これってどうやってるの
0579568
2010/03/05(金) 12:26:09ID:???もうしわけないです
ただ、このような事やサンプルの置き方は本には書かれておりませんでした
今まであまりにもサンプルをクリックしただけで動作するものに慣れていたので、パスがおかしいとか気が付きませんでした
自分の不注意でした、すみません
0580nobodyさん
2010/03/05(金) 12:27:25ID:???作るのも管理するのもあなたなのだから誰も止めやしない
0582nobodyさん
2010/03/05(金) 12:28:37ID:???どこにコピーして何のソフトを起動してアドレスバーにどう記述してくださいって
まともな入門書なら書いてあると思うがw
0583nobodyさん
2010/03/05(金) 12:36:38ID:???webプログラム素人は仕方ない
EXE同様に、ダブルクリックで動かないプログラムはバグってると思うんだぜ?
FTPでダウンロードしたローカルにあるファイルを手直ししただけで、
ブラウザで確認したら反映されてないと騒ぐし素人は見ていて飽きないよ
0584nobodyさん
2010/03/05(金) 14:16:38ID:Q1wicMuL【PHPのバージョン】php5.3.0
【質問内容】
外部exeファイルを実行して値を取得できればと考えています。
例えばhoge.exeというテキスト変換プログラムをphpから実行して出力される値を取得したくhoge.exe -t "文字列"というコマンドを実行したいのですが、以下関数を使って
$res=system(`./hoge.exe -t ¥"123456¥"`, $ret);
$res=passthru(`./hoge.exe -t ¥"123456¥"`, $ret);
としてみましたが、Cannot execute a blank commandというエラーが表示されて悩んでいます。
一応DOS窓上でコマンドを叩くと変換された文字列が表示されるのですがphpだと方法が分からず困っております。
よろしくお願いいたします。
0585nobodyさん
2010/03/05(金) 14:18:46ID:???0586nobodyさん
2010/03/05(金) 14:51:19ID:aBGtSP20アドレスが●●●を含むリンクをクリックした会員にポイントを付与する
これってPHP学べばできますかね?
どうやればできますかね?
0587nobodyさん
2010/03/05(金) 14:54:52ID:???0589584
2010/03/05(金) 15:05:13ID:Q1wicMuL有難うございます。「`」から「"」に変えてみたところCannot execute a blank commandのエラーは無くなりました。
結果system関数は空を返しましたが、passthruは文字を返してくれました。
ただ新たな問題としてDOS上で叩いたコマンドは10文字以上の文字列を返すのに
php上でpassthruを使ってexeファイルを実行すると1文字しか返さないんですよねぇ…
0590nobodyさん
2010/03/05(金) 15:32:04ID:fG5LjHc7$hoge = ($hoge < 1)? 1 : $hoge; この ? と : なんですけど、
意味が分かりません。ググッテもこういう書き方の説明がありません。
?と:はどういう意味があるのでしょうか。
0591nobodyさん
2010/03/05(金) 15:34:28ID:???三項演算子
PHP: 比較演算子 - Manual
http://php.net/manual/ja/language.operators.comparison.php
0592590
2010/03/05(金) 15:41:13ID:fG5LjHc7ありがとうございます。てことは、この式は↓こういうことですか?
if($hoge<1){
$hoge = 1;
}else{
$hoge = $hoge;
}
(else以降は不要だと思いすが、>>590の式の分解として記述しました)
0594590
2010/03/05(金) 15:48:06ID:???0595nobodyさん
2010/03/05(金) 18:46:11ID:NJlwtSqm【PHPのバージョン】php5.12
【連携ソフトウェア】ありません
headerで
header("test: test1");
という内容で返しているんですが、test1の部分には何か文字数制限などあるんでしょうか?
PHPとしては特に制限はないように見えるのですが、そういった制限があるのでしたらどういった制限があるのか教えていただけると助かります。
0596nobodyさん
2010/03/05(金) 18:46:42ID:???0597nobodyさん
2010/03/05(金) 18:48:00ID:p18my2+g【PHPのバージョン】PHP Version 5.2.11
【連携ソフトウェア】MySQL 5.0.77 + phpMyAdmin
【質問内容】
RSSの取得にSimplePie(1.1.3)と言うパーサを使っています。
http://simplepie.org/
CDATAセクションの拾い方がわからず困っています。
ご存知の方がいらしたら教えてください。
0598nobodyさん
2010/03/05(金) 18:48:40ID:???0599595
2010/03/05(金) 18:53:20ID:NJlwtSqmすいません。
バージョンは5.1.6でした。
最新のバージョンを使えればよいのですが、仕様要件で5.1.6で固定されておりますのでご理解いただければと思います。
0601nobodyさん
2010/03/05(金) 21:58:43ID:???こんな風に
$smarty->register_outputfilter("filterSjis");
function filterSjis($buff, &$smarty) {
return mb_convert_encoding($buff,"SJIS-win","UTF-8");
}
ブラウザで表示させると頭に「?」が入ってるんだけどこれはなぜでしょうか?
0602nobodyさん
2010/03/05(金) 22:09:26ID:???実際その予想外の事態が生じてPHPコードは正しく終了したのですがなぜかそのPHPスクリプトを
呼び出した部分から下のhtmlコードがまるっきし出力されなくなってしまいました。
exit() はPHPだけでなくHTMLの出力をも中止させてしまうようです。
そうではなくて現在実行しているPHPスクリプトだけを中断し、残りのHTMLは問題なく出力させるには
どういうコードを書けばいいでしょうか?
0603nobodyさん
2010/03/05(金) 22:10:52ID:???0605nobodyさん
2010/03/05(金) 23:24:07ID:???0607nobodyさん
2010/03/06(土) 10:13:13ID:???0608nobodyさん
2010/03/06(土) 10:14:31ID:???人に聞いて解決してるのに自己解決とかぬかしてやがる
0609nobodyさん
2010/03/06(土) 10:50:26ID:6YHfBKj/if文とswith文以外のもので戸惑っています。
1番の意味は2番と同じでしょうか?
1番 $act = $act == 'index' ? 'read' : $act;
2番 if ($act == 'index') { $act = 'read' : $act};
If以外の条件分岐の説明を検索してもなかなか見つからず、
本にもif文しか載っていないものが多く、どうしたものかと。
0612nobodyさん
2010/03/06(土) 11:03:21ID:6YHfBKj/ありがとうございます! 三項演算子というのですね。
0613nobodyさん
2010/03/06(土) 14:08:10ID:8pehZnIZ【PHPのバージョン】php5.2.11
【連携ソフトウェア】Apache/1.3.42
【質問内容】
A>B>Cという遷移をするところで、CにPOSTが来ないときがあり、その時に$_SERVERのdumpをしてみたら、以下のような所がありました。
["REQUEST_METHOD"]=>
string(102) "id=9&command=81&quantity[1]=0&quantity[2]=0&quantity[3]=0&quantity%5B4%5D=0&quantity%5POST"
このPOSTの前の文字列は、AでPOSTされるべきフォーム達で、Bでは出力していないはずなので、Cには来るはずがないんです。
似たケースに遭遇し、解決した方はおられないでしょうか
0614nobodyさん
2010/03/06(土) 14:18:51ID:???0615nobodyさん
2010/03/06(土) 14:33:18ID:f6Vbrv2v【PHPのバージョン】5.2.9(ソースSJIS、zend mb有り)
【質問内容】
セッションスタートした画面で、
$rec[0-9999行][列名(20列)]に、平均20文字程度の文字
という配列を
$_SESSION[hoge_Table](仮称)に代入して、headerで画面遷移すると、
セッションがすべて吹っ飛びました。(全部unset)
$rec[0-2999行][列名(20列)]に、平均20文字程度の文字
という配列ならOKでした。
9999行と2999行の違いだけですが、どこにも書いてありません。
目盛りはデフォルトの128MBで、上記9999行でもCSVで5MB程度しか
有りません。
0617nobodyさん
2010/03/06(土) 14:36:28ID:f6Vbrv2vどの辺を読めばよいのでしょうか?キーワードだけでも!!
0618nobodyさん
2010/03/06(土) 21:43:07ID:???とりあえず設計からやり直した方がいいんでね・・・
0619nobodyさん
2010/03/06(土) 22:01:31ID:???DBかファイル使った法がいいよねー
0620nobodyさん
2010/03/06(土) 23:12:21ID:???0621nobodyさん
2010/03/06(土) 23:49:42ID:???0622nobodyさん
2010/03/07(日) 02:36:02ID:???window.self === window 以下略
0623nobodyさん
2010/03/07(日) 02:46:14ID:???0624nobodyさん
2010/03/07(日) 03:51:00ID:???0625nobodyさん
2010/03/07(日) 07:20:22ID:EAtbczi7JAVAスクリプトを使わずにPHPでフォームに入力されたパスワードの2重チェックって
可能でしょうか?
1つめに入力されたパスワードと2つ目に入力されたパスワードが一致しなければ
アラートを出すという感じです。
0626nobodyさん
2010/03/07(日) 07:29:32ID:???アラート出すってのはブラウザ側のコントロールだからJavaScriptが必要
一旦送信してからパスワードが一致しませんというメッセージを出すだけならPHPだけで可能
0627nobodyさん
2010/03/07(日) 07:31:49ID:EAtbczi7確かに・・
ありがとう御座います。
一旦送信してからってなると、一旦間違ったままでも送信は完了してしまうって事ですよね?
0629nobodyさん
2010/03/07(日) 08:00:33ID:???一旦送信させて、間違ってたら再入力。
1つ目と2つ目のパスの一致チェックは確認用だからブラウザ側でもチェックしていいけど、
だからといってサーバ側での一致チェックは外すべきじゃない。
0631nobodyさん
2010/03/07(日) 09:17:03ID:???サーバ側で全項目チェックしないとだめだお
0632nobodyさん
2010/03/07(日) 11:06:00ID:nTlnSe/qとりあえず、
$_SESSION[名前][行][列]というセッション変数にDBからじかに入れる
共通部品をつくって対処しました。全体で大きくても、1つのセッション
変数が小さければセーフみたいです。
しかし、
その落ちる画面遷移のタイミングで、(なにもしていないはずなのに)
かなり時間がかかりました。シリアライズか何かしているのでしょうか?
0633nobodyさん
2010/03/07(日) 14:20:21ID:sojeiGx1require /hoge/hoge.php
と書くと、相対で
hoge/hoge.php
を読んでる気がするんだけどそういう仕様ですかね?
0634nobodyさん
2010/03/07(日) 14:48:58ID:???0635nobodyさん
2010/03/07(日) 14:49:29ID:???0636nobodyさん
2010/03/07(日) 15:34:38ID:???/hoge/hoge.php を見に行く。
DOCUMENT_ROOT と勘違いしてるんじゃね。そんなの見るわけない
>>634
evalだよ
0637nobodyさん
2010/03/07(日) 15:39:11ID:9X9vAVh2指定したURLからHTMLを取得してローカルに保存するPHPを作っていますが
内容がgzip形式なので展開してから保存したいと思っています。
そこで、gzuncompressを使ったのですがWarning: gzuncompress(): data errorとなってしまいました。
同じURLがブラウザでは表示できるのだからデータが壊れているわけがない…と思いいろいろ試したところ
一度ファイルに書き出してgzfileを使うとデータが平文になることがわかりました。
そこで質問です。
同じgzipデータなのにgzuncompressとgzfileで結果が違うのはなぜでしょうか。
一度ファイルに書き出さずメモリ上でなんとかする方法はないでしょうか。
0638nobodyさん
2010/03/07(日) 15:57:00ID:nXKvXzTgwhile( $row = mysql_fetch_array($ret) ) {....}
のように1件ごとに取得して処理してますが、
この$retを何回も最初から使いたい時はどうすればいいでしょうか?
$retのポインタ戻そうと思ってreset($ret)とやったり、$cpret = $ret;のようにやってもだめでした。
0640nobodyさん
2010/03/07(日) 16:48:48ID:???こっちを使えばいいんでない?
http://www.php.net/manual/ja/function.gzdecode.php
0641nobodyさん
2010/03/07(日) 17:01:29ID:nXKvXzTgwhile( $row = mysql_fetch_array($ret) ) { $row_array[] = $row;}
で使いまわせました。ありがとうございます。
あと別な質問なのですが、一般的に同じ処理をする場合、PHPで処理するのとSQLで処理するのはどちらがいいんでしょうか?
レンタル鯖でSQLの負荷なるべく少なくするようにPHPでできる部分はPHPでやろうって思ってたのですが、
SQL使いまくった方が全体の負荷的にはいいのかなって疑問がでてきました。
0642nobodyさん
2010/03/07(日) 17:02:15ID:???使いまくったほうがとか言ってるレベルではDB使うのやめといたほうがいい
0643nobodyさん
2010/03/07(日) 17:05:22ID:nXKvXzTgSQL勉強してきます・・・
0644637
2010/03/07(日) 17:17:37ID:9X9vAVh2あ…php5.2だったので使ってませんでした
ちょっと落としてきます。ありがとうございます。
0645nobodyさん
2010/03/07(日) 17:20:52ID:???0646nobodyさん
2010/03/07(日) 19:14:55ID:tE2+VL65・データを全件表示→10件だけ表示に。
・ページング部分を表示。([1][2][3].....)の表示と(/index.php?p=2)への移動。
まではできたんですが、
この二つを組み合わせる方法がわかりません。
/index.php?p=2に飛んでも、
/index.phpのときと同じ内容が表示されます。
0648nobodyさん
2010/03/07(日) 19:51:39ID:???ども!
ただうちのPHP5.3.0だとそういう動きします
以下のファイル配置でa.php、b.phpどっちもちゃんとhoge.phpをインクルードしてくれる
C:\xampp\htdocs\test\a.php
C:\xampp\htdocs\test\b.php
C:\xampp\htdocs\test\hoge.php
・ a.php内容
<?php
require "/hoge.php";
?>
・ b.php内容
<?php
require "hoge.php";
?>
これがバグなのか仕様なのかすっきりしたいわけです
0649648
2010/03/07(日) 19:52:25ID:sojeiGx10652nobodyさん
2010/03/07(日) 23:40:09ID:???>>651
include_path = ".;C:\xampp\php\PEAR"
.が入ってるから見つからない場合はカレントも見るってことかな?
0654nobodyさん
2010/03/08(月) 13:24:47ID:js+PR+h4exec("nmap -sT -P0 -p 12000 ***.***.***.***", $out, $ret);
var_dump($out);
このような処理をping.phpで保存して
http://example.com/ping.php
で表示したところ、ダンプした値がarray(0)でした。
SSHより、
php -f ping.php で実行したところ、
正常に
array(7) {
[0]=>
string(0) ""
[1]=>
string(76) "Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2010-03-08 13:21 JST"
[2]=>
string(36) "Interesting ports on ***.***.***:"
[3]=>
string(23) "PORT STATE SERVICE"
[4]=>
string(21) "12000/tcp open cce4x"
[5]=>
string(0) ""
[6]=>
string(64) "Nmap finished: 1 IP address (1 host up) scanned in 0.014 seconds"
}
のように値が入っています。
恐らくexecコマンドは結果を待たずにすぐに値を返すので空っぽになってしまうのだと思いますが、
何か対処法はないでしょうか?
0655nobodyさん
2010/03/08(月) 13:41:30ID:???0656nobodyさん
2010/03/08(月) 14:59:50ID:???うちじゃ普通に入るけどなあ
0657nobodyさん
2010/03/08(月) 15:00:16ID:???0658nobodyさん
2010/03/08(月) 15:08:41ID:js+PR+h4apache権限で実行テストする方法ってないですかね
su apache
だとパスワード求められた、わからないorz
0659nobodyさん
2010/03/08(月) 15:20:12ID:???まずはsshで、$ which nmap して
そのパスごとexecに書いたら?
exec("/usr/bin/nmap・・・
とかさ
0660nobodyさん
2010/03/08(月) 15:29:27ID:???apache権限で実行したいなら、いったんrootになってからsuすれば
0661nobodyさん
2010/03/08(月) 15:30:13ID:js+PR+h4レン鯖なのでroot権限もらえないのです
>>659
今ftpUPしてるの終わったら試してみますー
0662nobodyさん
2010/03/08(月) 15:36:24ID:js+PR+h4(ちなみにwhich nmapした結果のパスです)
0663nobodyさん
2010/03/08(月) 15:39:41ID:???0664nobodyさん
2010/03/08(月) 15:48:47ID:???resource(2) of type (stream)
--- SSH上から
*****@s152:~> php -f public_html/*****/ping.php
resource(1) of type (stream)
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2010-03-08 15:46 JST
Interesting ports on ***.***.***.***
PORT STATE SERVICE
12000/tcp open *****
Nmap finished: 1 IP address (1 host up) scanned in 0.015 seconds
popenでwhile(!feof($fp)) {}
で書き出した結果です。
やっぱりブラウザ上からだとうまくいかないです
0665nobodyさん
2010/03/08(月) 16:44:56ID:f9rWk+Ynexecを使っても起動できません
ちなみにローカル環境のみ起動できれば構いません
どなたかご教示お願いします
0666nobodyさん
2010/03/08(月) 16:46:17ID:???0667nobodyさん
2010/03/08(月) 17:41:44ID:???0669nobodyさん
2010/03/08(月) 17:45:26ID:js+PR+h4これはどうしようもなさそうですね
ありがとうございました
0670722
2010/03/08(月) 18:23:37ID:???489 名前: nobodyさん 投稿日: 2009/12/23(水) 00:40:17 ID:5FKPpQ9S
fgetsやCURLでgzip圧縮されたHTTP bodyを元の文字列に復号するにはどうしたらいいのでしょうか
490 名前: nobodyさん 投稿日: 2009/12/23(水) 00:45:48 ID:5FKPpQ9S
gzdecodeは未定義でgzuncompress、gzinflateはデータエラーになりました。
493 名前: nobodyさん 投稿日: 2009/12/23(水) 00:57:59 ID:5FKPpQ9S
自己解決しました。
圧縮されたデータをbase64エンコードしてDATAスキームとして読み込みgzopen -> gzreadしました
$data = curl_exec($ch); //gzip圧縮されたデータ
$data = "data:application/x-gzip;base64,".base64_encode($data); // dataスキームに整形
$fp = gzopen($data,"r"); // gzopen
echo gzread($fp,1024); //読み込み
494 名前: nobodyさん [sage] 投稿日: 2009/12/23(水) 00:59:41 ID:???
file_get_contents("compress.zlib:///home/aaa.gz");
495 名前: nobodyさん 投稿日: 2009/12/23(水) 01:19:52 ID:VLbb10P/
age
496 名前: nobodyさん 投稿日: 2009/12/23(水) 01:27:35 ID:5FKPpQ9S
URLencodeのほうがわずかに軽い?気がする
$data_scheme = "data:application/x-gzip;charset=iso-8859-7,".urlencode(curl_exec($ch));
$fp = gzopen($data_scheme,"r");
echo gzread($fp,524288);
0672nobodyさん
2010/03/08(月) 21:20:03ID:Hw9tq/xF片方はよりパフォーマンスがいいので、できればそちらを使いたいのですが、
インストールされていない可能性があります。
その場合条件文で書くと無駄に長くなってしまう可能性があるのですが、
こういうときに自分で同名のメソッドがあるクラスを作ればスッキリすると思うのですがそういう実装方法は一般的ですか?
例えばmysqlとmysqliを例に出すと、
$dbp = null;
if (class_exists("MySQLi")) {
$dbp = new MySQLi("localhost", "hoge", "foo", "bar");
//略
$dbp->close();
} else {
$dbp = mysql_connect("localhost", "hoge", "foo", "bar");
//略
mysql_close($dbp);
}
となりますが、MySQLiはクラスが用意されてるので、
MyMySQLというクラスを作って、MySQLiのメソッド群を模倣して、
class MyMySQL {
private $dbp = null;
function MyMySQL($host, $username, $passwd, $dbname) {
$this->dbp = mysql_connect($host, $username, $passwd, $dbname);
}
function close() {
mysql_close($this->dbp);
}
}
続く
0673nobodyさん
2010/03/08(月) 21:23:42ID:Hw9tq/xFif (class_exists("MySQLi")) {
$dbp = MySQLi("localhost", "hoge", "foo", "bar");
} else {
include("MyMySQL.php");
$dbp = MyMySQL("localhost", "hoge", "foo", "bar");
}
//略
$dbp->close();
といった感じに、オープン以降は統一できると思うのですが、
こういうやり方はおかしいでしょうか?
何か他にいい方法があったら教えてください。
0674nobodyさん
2010/03/08(月) 21:26:50ID:???0675nobodyさん
2010/03/08(月) 21:27:15ID:Hw9tq/xFこの例でいうと、mysqlとmysqliのことです。
0676nobodyさん
2010/03/08(月) 21:40:56ID:???0677nobodyさん
2010/03/08(月) 21:55:18ID:v7y33OYQ//これをコピーして
if (a) {
print 1;
}
if (b) {
print 2;
//ここに貼りつけると
}
インデントを自動調整して
if (a) {
print 2;
if (b) {
print 1;
}
}
こうなるものってありますか?
eclipse+javaは出来るのにPHPは対応してなかった・・
0680672
2010/03/08(月) 22:06:15ID:Hw9tq/xF私に対してのレスでしょうか?
今後そういうケースに当たったらという話なので、
今そういう壁にあたってるわけではないです。
0682nobodyさん
2010/03/08(月) 22:07:34ID:Hw9tq/xFどうもありがとうございます。
Zend_Db_Adapterは初耳ですがそちらのソースも探してきて眺めてみたいと思います。
0684nobodyさん
2010/03/09(火) 01:31:56ID:tXdsqaljmysql(php_mysql)もしくはmysqli(php_mysqli)を利用してMySQLに接続した場合、ライブラリがLGPLではなくてGPLなので
それらを利用して作ったプログラムもGPLになってしまいますが、PEARのライブラリである
PEAR::DBはPHPライセンスでPEAR::MDB2はBSDライセンスですけどこれらを
利用してMySQLに接続した場合のプログラムのライセンスはどうなるのですか?
やはりGPLになるのでしょうか?それとも一端PHPライセンスやBSDライセンスを挟んでいるのでGPL汚染は無くなるのでしょうか?
0685nobodyさん
2010/03/09(火) 01:59:16ID:???> PHP と MySQL は互換性のない別々のオープンソースライセンスを導入しているので、
> PHP コミュニティでの MySQL の使用を奨励・促進するために特別な除外規定を設けています。
> これにより MySQL AB では、GPL でライセンスされた MySQL ソフトウェアと、
> PHP ライセンスのバージョン 3.0 でライセンスされたソフトウェアで作成される派生物の頒布を許可しています。
> この際、お客様には、PHP ライセンスのバージョン 3.0 に基づいてライセンスされたコードを除くすべてのコードにおいて、
> GNU General Public License の規定をすべての面で順守することが義務付けられます。
つまりMySQLでなんかしてる部分だけGPLになるってことか?
解釈がよく分からないしMySQLのコミュニティで聞くのが手っ取りばやいんじゃね
0686nobodyさん
2010/03/09(火) 10:28:40ID:???0687nobodyさん
2010/03/09(火) 11:03:51ID:???MySQLを利用したソースコードを公開するならGPL
でもGPLだからといって自サーバ内でのみ使うのならソースコードを公開する必要なないんだよ
0688nobodyさん
2010/03/09(火) 12:07:28ID:w/nUscX9makeの途中で止まってしまいます
64bitには入らないのでしょうか?
インストールに成功した方いますか?
0689nobodyさん
2010/03/09(火) 14:13:14ID:???0690nobodyさん
2010/03/09(火) 14:27:52ID:ezJ3thxT↑の「MEGA-RANK系一括登録」のようなものを作りたいのですが、どうやって作ればいいのか検討がつきません
PHPで作れますか?もしくはこんな感じで作れるよって方いたらご教授お願いします
0691nobodyさん
2010/03/09(火) 15:08:46ID:???0692nobodyさん
2010/03/09(火) 15:21:20ID:FVF0JEpR取得先がPHPでWarningを出している場合、取得しないようにしたいのですが、
「Warning」であると言う事を調べる方法はないでしょうか?
0693nobodyさん
2010/03/09(火) 15:22:22ID:???0694nobodyさん
2010/03/09(火) 15:23:42ID:???取得する
↓
preg_replace()でWarningの表記があるか判別
↓
Warningがなければ値をクリア
とかでいいんじゃね?
てか、何がしたいのかわからんが、何をしたいか教えてくれれば
他に良いやり方があると思うんだが・・・
0695nobodyさん
2010/03/09(火) 15:26:57ID:???0696694
2010/03/09(火) 15:27:35ID:???0697nobodyさん
2010/03/09(火) 15:49:00ID:FVF0JEpRちょっとしたリンク集みたいなのを作ってまして、
登録されたURLでWarningが出てるかどうか調べたかったんです。
fsockopenとかで取得先の状態を調べられると思ったのですが、無理なんですね。
やっぱり、一度取得してエラーメッセージを解析する方法しかないのかな。。
0699nobodyさん
2010/03/09(火) 16:09:38ID:FVF0JEpR調べてみるのでURL教えて下さい。
0700nobodyさん
2010/03/09(火) 21:37:38ID:tXdsqaljそうなんです。問題はそこ。
いったん別のオープンソースライセンスのソースを通った場合はどうなるかって事です。
しかもGPL汚染を受けるのはlibmysqlでPHPライセンスのmysqlndを利用すればGPL汚染も無くなりますよね?
ただmysqlndを使って開発をしたとしても相手の実行環境が必ずしもmysqlndではないって事もありますよね。
特にレンタルサーバの場合、利用者が接続ライブラリを選択なんてできないでしょうから
>>686,>>687
それは知っています。
問題は上記に書いたように「PHP用のGPLライセンス除外規定」と「別のオープンソースライセンスのソースを通った場合」です。
>自サーバ内でのみ使うのならソースコードを公開する必要なないんだよ
それも変わりきっています。
でもGPLになるのは変わりませんよね。
0701nobodyさん
2010/03/09(火) 22:00:15ID:???PHP上で動くスクリプトにはライセンス関係ない
0702nobodyさん
2010/03/09(火) 23:06:49ID:???GPLのものじゃなくてまず、mysqlの決めたルールに従うんですよ。
汚染とか関係ない。
0703nobodyさん
2010/03/09(火) 23:48:52ID:???一つのテーブルに、書き込みログを30万レコード記録しているのですが、
だんだん処理が重くなってきています。
軽くする場合、どのような方法がありますか?
0704nobodyさん
2010/03/09(火) 23:53:18ID:???0705nobodyさん
2010/03/10(水) 00:00:31ID:???こんな感じの
単純なクエリーのレスポンスです。
5万レコードなら0.05秒とかで返ってくるのですが、
レコードが増えるにつれ1秒くらい掛かってしまいます。
データ容量の制限もあるので、テーブルを分散させるのが一般的な対処方法ですか?
0706nobodyさん
2010/03/10(水) 00:02:08ID:???0707nobodyさん
2010/03/10(水) 00:04:42ID:???0708nobodyさん
2010/03/10(水) 00:17:30ID:???0709nobodyさん
2010/03/10(水) 01:12:26ID:???0710nobodyさん
2010/03/10(水) 01:16:58ID:???それMySQLがGPLライセンスの意味無くなるぜ。
>mysqlの決めたルールに従うんですよ。
それが正しいなら今頃MySQLはGPLを採用してないで
MyQSL Licenseてライセンスを作っていることでしょう。
ここで従うべき物はMySQLの決めごとではなくて、GPLの決めごと。
0712nobodyさん
2010/03/10(水) 09:14:18ID:sEFtoxmN暗号化でも出来ればと思ってます。
header("test: himitsu");
himituの部分をとりあえずbase64化したのですが、受け取り側でdecodeしたら文字化けしてしまいます。
何か簡単にできる暗号化があれば教えていただけませんか。
0713nobodyさん
2010/03/10(水) 09:21:55ID:???0715712
2010/03/10(水) 10:24:59ID:sEFtoxmNなるほど。
mb_convert_encodingでutf-8とかにしてからやったほうがいいかもしれないですね
ちょっとやってみます
ありがとうございます
0716nobodyさん
2010/03/10(水) 10:53:52ID:???0717nobodyさん
2010/03/10(水) 10:56:15ID:???0718nobodyさん
2010/03/10(水) 11:13:49ID:???0719nobodyさん
2010/03/10(水) 11:24:48ID:8zSSeEnypreg_replace_callback( '@(<\?php.*?\?>)@mi', 'hoge', $val );
こんなソースがあるんですが、正規表現で@を使ってるのを初めて見ました。
この場合の@は/と同じ意味になるんでしょうか?それとも他の意味があるんでしょうか。
教えてください。
0720nobodyさん
2010/03/10(水) 11:25:12ID:???俺は{}派
0721nobodyさん
2010/03/10(水) 11:58:02ID:8zSSeEnyありがとうございます。同じなんですね
あともう一つ、
preg_match('!<(/p)>!')
preg_match( "|\n</p>$|")
最初と最後がエクスクラメーションだったり
縦線だったりする時はどういう意味なんでしょうか。
0722nobodyさん
2010/03/10(水) 12:07:25ID:cTVjM4iNfor ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <=9; $j++) {
echo "$i × $j = " . $i * $j . "<br>";
}
}
を実行すると
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
・
9 × 7 = 63
9 × 8 = 72
9 × 9 = 81
になるのですが、どのような処理を行っているのかイマイチわかりません。どなたかわかりやすく教えていただけませんか
0723nobodyさん
2010/03/10(水) 12:28:04ID:???0724nobodyさん
2010/03/10(水) 12:31:06ID:???http://pc12.2ch.net/test/read.cgi/tech/1261057499/
0726>>722
2010/03/10(水) 13:39:24ID:cTVjM4iNググったら↑の文を見つけて解決しました。答えてくださった方ありがとうございました
0727nobodyさん
2010/03/10(水) 14:06:28ID:8jD6opA3$b = 2;
$ex = '+';
echo $a.$ex.$b;
というコードがあるとして出力すると「1+2」となります。
結果として「3」が表示されて欲しいのですが、
上記のように式を変数で置き換えるのは駄目なのでしょうか?
0728nobodyさん
2010/03/10(水) 14:12:14ID:???0729nobodyさん
2010/03/10(水) 14:19:23ID:???見解の違いどころか>>714みたいなトンチンカンも現れた。
MySQLはGPLかコマーシャルライセンスかのデュアルライセンスを採用している。
0730nobodyさん
2010/03/10(水) 14:27:38ID:pOogiIvE0731nobodyさん
2010/03/10(水) 14:28:46ID:???0733nobodyさん
2010/03/10(水) 15:08:50ID:???はてなブックマークみたいな物を作りたいのか?
>>732
そういうこと。
>>714みたいな馬鹿はもうMySQLのライセンス違反していそうだけどね。
>>714がつとめているソフトハウスさんは大変だ。
0735nobodyさん
2010/03/10(水) 15:34:08ID:???会話が成立してないのでこれでも読んどけ。
http://www-jp.mysql.com/about/legal/licensing/faq.html
0736nobodyさん
2010/03/10(水) 15:43:30ID:pOogiIvEhttp://www.net.c.dendai.ac.jp/~keiju/#A2_3
ニコニコブックマークっぽいやつ
0738nobodyさん
2010/03/10(水) 15:47:04ID:PG8HaZ2b<?if(stristr($_SERVER['PHP_SELF'], "/index.php")){echo " hoge";}?>
<?if(stristr($_SERVER['PHP_SELF'], "/2/index.php")){echo " hoge";}?>
<?if(stristr($_SERVER['PHP_SELF'], "/3/index.php")){echo " hoge";}?>
としたいのですが、
TOPページは、URL/index.phpのため、大丈夫なのですが、
その他ページでは、URL/2/index.phpな為、
1行目の/index.phpも含まれ、2つ表示されてしまいます。
回避する方法は有りますでしょうか??
0740nobodyさん
2010/03/10(水) 16:13:38ID:PG8HaZ2b>>739
意味はわかるのですが、書き方が分かりません。。。
例えばどの様に書けば出来ますでしょうか??
0742nobodyさん
2010/03/10(水) 16:40:06ID:PG8HaZ2b>>741
ありがとうございます。ただ、私は素人なもので、全くかけないのです。
よろしければ、サンプルで書いていただけませんか?
0743nobodyさん
2010/03/10(水) 16:42:17ID:???0744nobodyさん
2010/03/10(水) 16:45:48ID:???PHP: elseif/else if - Manual
http://jp.php.net/manual/ja/control-structures.elseif.php
0746nobodyさん
2010/03/10(水) 16:51:04ID:???って書かないとだめ?
<%= %>
こういうのは無い?
0748nobodyさん
2010/03/10(水) 16:55:28ID:???http://www.php.net/manual/ja/language.basic-syntax.phpmode.php
0749nobodyさん
2010/03/10(水) 17:03:58ID:???サンクス
phpiniの設定が必要なのか
0750nobodyさん
2010/03/10(水) 17:09:16ID:PG8HaZ2b>>743
>>744
以下では間違えてますよね。
条件を満たす方法がわからないのですが、どうすればよいのでしょうか??
<?if(stristr($_SERVER['PHP_SELF'], "/index.php")){echo "hoge";}elseif(stristr($_SERVER['PHP_SELF'], "/2/index.php")){echo "huga"";}?>
<?if(stristr($_SERVER['PHP_SELF'], "/2/index.php")){echo " hoge";}?>
<?if(stristr($_SERVER['PHP_SELF'], "/3/index.php")){echo " hoge";}?>
0751nobodyさん
2010/03/10(水) 17:10:26ID:8c82Xkrk一緒に勉強してサイト作ろうぜ!
0754nobodyさん
2010/03/10(水) 17:16:54ID:8c82Xkrk0755nobodyさん
2010/03/10(水) 17:20:53ID:PG8HaZ2b>>753
例えば、
URL/index.php
のページにhogeを出力
URL/2/index.php
のページにhugaを出力
といったふうにしたいのです。
ただ、自分の書き方だと、
URL/2/index.php
のページにはhoge、hugaともに出てしまうということです。
0756nobodyさん
2010/03/10(水) 17:25:56ID:8c82Xkrkif($_SERVER['PHP_SELF'] == /index.php){
hoge
} elseif($_SERVER['PHP_SELF'] == /2/index.php){
huga
}
でいいんじゃないですか???
0757nobodyさん
2010/03/10(水) 17:26:46ID:???<?if(stristr($_SERVER['PHP_SELF'], "/index.php") == 0){echo " hoge";}?>
でいいんじゃ
0758nobodyさん
2010/03/10(水) 17:27:03ID:???回答者をなめくさってんの?
0759nobodyさん
2010/03/10(水) 17:28:23ID:8c82Xkrkif($_SERVER['PHP_SELF'] == /index.php){
hoge
} elseif($_SERVER['PHP_SELF'] == /2/index.php){
huga
}
でいいんじゃないですか???
0760nobodyさん
2010/03/10(水) 17:32:30ID:???{
echo 'hoge';
}
else
{
echo 'fuge';
}
かな
0761nobodyさん
2010/03/10(水) 17:35:23ID:???0762nobodyさん
2010/03/10(水) 17:41:28ID:8c82Xkrk0763nobodyさん
2010/03/10(水) 17:42:19ID:???0764nobodyさん
2010/03/10(水) 17:45:16ID:8c82Xkrk連絡取りたいんでSkypeって持ってますか?
0765nobodyさん
2010/03/10(水) 17:51:03ID:???0766nobodyさん
2010/03/10(水) 17:52:33ID:8c82Xkrkとりあえずここ来て下さい
0767nobodyさん
2010/03/10(水) 18:01:38ID:8c82Xkrk0768nobodyさん
2010/03/10(水) 18:04:34ID:???中学生かなんか?
0769nobodyさん
2010/03/10(水) 18:06:00ID:8c82Xkrk連絡手段なくないですか?
0770nobodyさん
2010/03/10(水) 18:10:02ID:8c82Xkrk0771nobodyさん
2010/03/10(水) 18:13:37ID:???0772nobodyさん
2010/03/10(水) 18:16:20ID:???0773nobodyさん
2010/03/10(水) 18:17:36ID:???0774nobodyさん
2010/03/10(水) 18:17:53ID:8c82Xkrk自分は基本的なことしかできないんですがw
鯖はレンタルサーバーです
0775nobodyさん
2010/03/10(水) 18:18:12ID:???0776nobodyさん
2010/03/10(水) 18:18:51ID:PG8HaZ2b>>758
例えば、というかほとんどそのままなんですが、
<li<?if(stristr($_SERVER['PHP_SELF'], "/index.php")){echo " class=\"hoge\"";}?> ><a href="">index</a></li>
<li <?if(stristr($_SERVER['PHP_SELF'], "/1/index.php")){echo " class=\"hoge\"";}?>><a href="/1/">1</a></li>
<li <?if(stristr($_SERVER['PHP_SELF'], "/2/index.php")){echo " class=\"hoge\"";}?>><a href="/2/">2</a></li>
のようなナビゲーションをインクルードさせて読み込ませているという意味でした。
該当URL表示時にclass="hoge"を出したかったのですが、上記回答頂いた方もものだと、出来ませんでした。
ご回答頂いた方ありがとうございます。
0777nobodyさん
2010/03/10(水) 18:21:11ID:8c82Xkrk以後チャットで話します。。
0779nobodyさん
2010/03/10(水) 19:31:35ID:???俺の物は俺の物
0780nobodyさん
2010/03/10(水) 19:56:36ID:???0781nobodyさん
2010/03/10(水) 19:58:42ID:wG/HRXu2????
みたいなエンティティに変換するのってどうやるのですか?
ぐぐってurlencodeや、htmlentitiesというのを使ってみたけど、望む出力は出ないようです。
0782nobodyさん
2010/03/10(水) 19:59:59ID:wG/HRXu2&#12392;&#12371;&#12429;&#12391;
全角なら大丈夫かな。こういう出力が欲しい。
0783nobodyさん
2010/03/10(水) 21:01:54ID:???$result = mb_convert_encoding($string , "Unicode" , "UTF-8");
$length = mb_strlen($result , "Unicode");
$i = 0;
for($i = 0; $i < $length; $i ++){
echo "?" . bindec(mb_substr($result , $i , 1 , "Unicode")) . ";";
}
たぶんこう
0784nobodyさん
2010/03/10(水) 21:08:34ID:???$result = mb_convert_encoding($string , "Unicode" , "UTF-8");
$length = mb_strlen($result , "Unicode");
$i = 0;
for($i = 0; $i < $length; $i ++){
echo "&#x" . bin2hex(mb_substr($result , $i , 1 , "Unicode")) . ";";
}
bindecは別の関数だった
0785nobodyさん
2010/03/10(水) 22:22:49ID:???$A=array(1,2,3,4);
print_r($A);
unset($A[2]);
print_r($A);
これだと添え字が個数とずれるんですが。
0786nobodyさん
2010/03/10(水) 22:24:45ID:UhmzcxdAC++STLのように配列範囲を削除出来ると良いんですが。
添え字が連想配列に強制で入れられるのも不便なこともあります。
0787nobodyさん
2010/03/10(水) 22:28:02ID:UhmzcxdA$A=array(1,2,3,4);
print_r($A);
unset($A[2]);
$A=array_values($A);
print_r($A);
0788nobodyさん
2010/03/10(水) 22:35:48ID:pOogiIvEこの警告って何?
phpで掲示板作ってたら出てきた
0790nobodyさん
2010/03/10(水) 22:47:52ID:???0791 ◆1tWDDRpr5.
2010/03/10(水) 23:12:52ID:oEz4W3Cxmysql_query("select * from Database where id={$_GET["i"]};", $db);
等としたときに、{$_GET["i"]}の部分に何らかの文字列を入れることによってテーブルの破壊をされたりする危険性はありますか?
もしあるなら、対策法などを教えてください。
0792nobodyさん
2010/03/10(水) 23:15:48ID:???0794nobodyさん
2010/03/10(水) 23:45:55ID:???http://php.net/manual/ja/function.mysql-real-escape-string.php
0796nobodyさん
2010/03/11(木) 00:00:27ID:uZgmI9An0798nobodyさん
2010/03/11(木) 00:14:26ID:???0799nobodyさん
2010/03/11(木) 00:21:26ID:???0800nobodyさん
2010/03/11(木) 00:21:57ID:???フォーム入力欄に副クエリーとかテーブル結合とかまで入れて、
サーバーに過度の負荷を与えたりとか。
入力欄「abc or id = (select * from (select * from (select * from(....) )))」
id=の後をダブルクオーテーションで囲んで、794を参照。
0802nobodyさん
2010/03/11(木) 00:43:05ID:uZgmI9Anわからないんだったら出てくるなよバカ
0803nobodyさん
2010/03/11(木) 00:51:33ID:???わかっているからこそプログラミングでの常識レベルと判断できるのですかなにか?
本当に>>798の状態ですよね。
0805nobodyさん
2010/03/11(木) 01:01:25ID:uZgmI9An的確に説明できる人いませんか?
0806nobodyさん
2010/03/11(木) 01:13:39ID:???http://www.google.co.jp/search?q=%67%75%67%75%72%65%6b%61%73%75
0807nobodyさん
2010/03/11(木) 01:13:46ID:???http://www.google.co.jp/search?hl=ja&q=%E5%86%8D%E5%B8%B0%E7%9A%84%E3%81%AB%E5%87%A6%E7%90%86&lr=lang_ja
最近のゆとり組はパソコンすらまともに使えなかったりするからな。
グーグルできなくても当たり前みたいだよ。
でもオナニーとmixiはできます。みたいな。
大きな器が必要だよみなさん。これから全盛期の人間が本格的に社会に出てくるぞ。
0808nobodyさん
2010/03/11(木) 01:14:17ID:???0809nobodyさん
2010/03/11(木) 01:30:26ID:???説明できるのいないと言うが再起処理って初歩中の初歩。
説明するのがばからしい。こんな初歩すら自分で調べられない馬鹿には仮に説明したところで理解できないね。
0810nobodyさん
2010/03/11(木) 01:33:21ID:???これからphpはwww
0811nobodyさん
2010/03/11(木) 01:34:35ID:???0813nobodyさん
2010/03/11(木) 01:48:58ID:???0814nobodyさん
2010/03/11(木) 02:01:23ID:S9Wmg552IDチョックは簡単だぞ
IDを数字にすればOK
0815nobodyさん
2010/03/11(木) 02:10:44ID:???0816nobodyさん
2010/03/11(木) 02:13:34ID:???0817nobodyさん
2010/03/11(木) 05:02:26ID:???0818nobodyさん
2010/03/11(木) 05:10:15ID:???>・ 質問者として、態度をわきまえること。
>・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
0819nobodyさん
2010/03/11(木) 05:28:59ID:???0820nobodyさん
2010/03/11(木) 05:40:39ID:uZgmI9Anじゃ、文字列から「(」と「)」の間の文字を取り除くにはどうしたらいいでちゅか?
ただし「(」と「)」は入れ子になっている可能性がありまちゅ。
//わからない人は出てこなくていいでちゅよ。
0822nobodyさん
2010/03/11(木) 06:07:14ID:???0823nobodyさん
2010/03/11(木) 06:09:39ID:???入れ子になっている可能性も考えるともう正規表現だと無理があるかな。
文字列を1文字1文字再帰的に処理して行く。
0824nobodyさん
2010/03/11(木) 06:11:50ID:???文字列としても文字としても簡単に扱えるから。
0825nobodyさん
2010/03/11(木) 06:19:09ID:uZgmI9An0826nobodyさん
2010/03/11(木) 06:30:08ID:???だったらやればいいじゃん。入れ子はどう考慮するか理解してないようだけどね。
どっちにしても再起処理は不可欠だね。
0827nobodyさん
2010/03/11(木) 06:32:44ID:???0828nobodyさん
2010/03/11(木) 09:27:15ID:???0829nobodyさん
2010/03/11(木) 09:30:01ID:???0830nobodyさん
2010/03/11(木) 11:07:09ID:1xNa3qka【PHPのバージョン】php5.31
【連携ソフトウェア】ImageMAGIC
ImageMAGICを使いgifのサムネイルを作っています。
サイズがどうしても重くなるので、最初の5フレームだけ抜き出すようにしました。
元画像を分割
convert +adjoin a.gif /tmp/image%04d.gif
分割された画像0〜4までを結合&リサイズ
convert -adjoin -loop 0 -delay 20 /tmp/image0000.gif /tmp/image0001.gif /tmp/image0002.gif /tmp/image0003.gif /tmp/image0004.gif -resize $150x150\> as.gif
しかしこのやり方では場合によっては処理に1分以上かかることがあります、非常に重いです。
ImageMAGICではおそらくどんなやり方をしてもこの処理時間は縮めるのは難しいと指摘されました
もっと軽くて効率的なやり方はないでしょうか?どうぞよろしくお願いしますm(__)m
0832nobodyさん
2010/03/11(木) 11:31:58ID:G8nMSG6F0833nobodyさん
2010/03/11(木) 12:10:43ID:0kmM8iNj例えば、サーバのフォルダ構造を想像して
/hoge/huga/aaa.php
/hoge/huga/bbb.php
/hoge/hoge/ccc.php
/hoge/hoge/ddd.php
ってなってた時、4つ全てのファイルの処理をする場合に
「/hoge/以下を再帰的に処理する」なんていいますね。
0834nobodyさん
2010/03/11(木) 12:17:12ID:0kmM8iNj続けて質問なのですが
urlencodeに関して
例えば
http://itpro.nikkeibp.co.jp/article/Keyword/20100309/345549/?ST=network
のタイトル、「 短縮URLとは、Webサイトが使うURLを短く変換したもののこと。
Webサービスとして運営されている短縮URLサービスを使うことで、アルファベット数文字程度にする。
短くしたURLは、自分のTwitterやブログなどに張り付けて使う。」
をphpでURLエンコードした結果と
http://www.tagindex.com/tool/url.html
でエンコードした結果が違うのですが
PHPでtagindex.comさんで変換したようにアルファベット、記号含め全て"%xx"の形に変換する方法を教えてください
0835nobodyさん
2010/03/11(木) 12:26:15ID:???0836nobodyさん
2010/03/11(木) 12:26:56ID:???0837nobodyさん
2010/03/11(木) 12:35:54ID:???http://pc11.2ch.net/test/read.cgi/php/1266229386/
のようにunixtimeでスレッドを識別していて、同じ時刻にスレを立てた人が複数いると
unixtimeがかぶってしまうので拒否するようになってるみたいです。
この識別を連番以外で重複なく、
また、複数人が同時刻にスレを他てようともどちらも立てることができるようなものにしたいのですが、
なにかいい方法はありますでしょうか?
0839nobodyさん
2010/03/11(木) 12:50:46ID:w3xbnBCuselectじゃなくてshowなのでフェッチできない。
さてどうしたらいいかな。
0840nobodyさん
2010/03/11(木) 13:05:02ID:???0841834
2010/03/11(木) 13:18:42ID:0kmM8iNj文字コードを一応SJIS、EUC、UTF-8試したのですがどれも元々アルファベット、記号の物は
変換されませんでした。
http://jp.php.net/manual/ja/function.urlencode.php
マニュアルには
>-_. を除くすべての非英数文字が % 記号 (%)に続く二桁の数字で置き換えられ
とあるので上記の挙動は仕様通りなのですが、
http://www.tagindex.com/tool/url.html
では英数文字も非英数文字も全てが%xxに変換されていて、これをPHPでやりたいのです。
こんな関数はデフォルトでは実装されていないでしょうか?
0842nobodyさん
2010/03/11(木) 13:30:49ID:???0843nobodyさん
2010/03/11(木) 13:44:11ID:???>http://www.tagindex.com/tool/url.html
>では英数文字も非英数文字も全てが%xxに変換されていて、これをPHPでやりたいのです。
英数文字は変換されないと思うけど?
0844nobodyさん
2010/03/11(木) 15:17:30ID:???0845nobodyさん
2010/03/11(木) 15:34:58ID:???文字列から文字コードはord()なりunpackなりで
0846834
2010/03/11(木) 17:14:21ID:0kmM8iNj>>843のおっしゃるとおり英数文字は変換されていなかったです…
urlencode()した文字列と件のサイトで変換した文字列を見比べているつもりが
関係無い文字列を見比べてました。
もう日が暮れる;;
おそらく>>842さんご指摘の改行コードとあとはurlencodeが変換しない「+」をstr_replaceとかで
変換すればいけそうです。
0847nobodyさん
2010/03/11(木) 19:18:34ID:???0849nobodyさん
2010/03/12(金) 06:26:13ID:eE8Qh1j0echo $_POST["test"];
echo '<form method="post" action="test3.php"><input type="text" name="test" /><input type="submit" value="Check" /></form>';
?>
テキストボックスに
"hoge"
と入力して送信すると
\"hoge\"
と表示されます。
この \ が勝手に付加されてしまうのですが、
これはそういうもんなのでしょうか?
よろしくお願いします。
POSTされたデータの
" を \"、
/ を \/
[ を \[
・・・
みたいな変換をしていたのですが、"だけ\\"
になってしまったので、なんか統一感がないなぁ、程度の悩みです。
0850nobodyさん
2010/03/12(金) 08:20:56ID:???http://www.php.net/manual/ja/security.magicquotes.php
0851nobodyさん
2010/03/12(金) 08:35:11ID:eE8Qh1j0これが知りたかったのです。
ありがとうございました。
0852nobodyさん
2010/03/12(金) 09:55:06ID:Yfu1bPWM【PHPのバージョン】php5.2.1
【質問内容】
intの最大値が32bitの環境で64bitの整数を使いたいのですが、
方法ありませんか?
0853nobodyさん
2010/03/12(金) 10:05:46ID:???http://www.php.net/manual/ja/book.bc.php
0854nobodyさん
2010/03/12(金) 10:35:58ID:Yfu1bPWMありがとうございます!
解決しました。
0855830
2010/03/12(金) 10:42:54ID:HJClOaz10856nobodyさん
2010/03/12(金) 11:28:29ID:???0857nobodyさん
2010/03/12(金) 12:03:25ID:???GD アニメgif php でぐぐったら出てきたぜ
0859nobodyさん
2010/03/12(金) 14:48:01ID:cUrmnSSn元々C/C++などのコンパイル言語ということもあり、疑問がありまして。
PHPにもrequireやincludeといった素晴らしい機構があるのですが、
これの引数には変数を指定することができるようです。
となると、PHPというのはincludeなどの展開は実行時に毎回行っているということになりますよね?
PHPはアクセスがあるたびに
・ソースコード解釈
・コンパイル
・実行
をやっているのでしょうか?
それともコンパイル済みの中間ファイルあたりをどこかに持っていて、ソースコードが更新されていなければそちらを使っているのでしょうか?(ファイルの更新日時あたりを利用して)
そして、どちらにしろincludeなどは実行時に動的に読み込まれると。
単にファイルを分割したいだけなので、変数などが使えない高速のincludeなどが欲しいのですが、それは無いものでしょうか?
色々な質問がまざってすいません。
0860nobodyさん
2010/03/12(金) 14:56:20ID:???中間ファイルをキャッシュするためには各種アクセラレータが必要です
APCとかeAcceleratorあたりでググってみて下さい
0861nobodyさん
2010/03/12(金) 15:46:43ID:???処理系に依ります。
Cだってインタープリタがありますし、CやC++でもincludeされる部分は最初に一回だけ
コンパイルして(それが変更されない限り)コンパイル済みコードを再利用するものがあります。
PHPだからとかCだからのように言語で言う話ではないのです、実際のところ。
0862nobodyさん
2010/03/12(金) 15:54:28ID:???0863nobodyさん
2010/03/12(金) 16:01:14ID:???0864nobodyさん
2010/03/12(金) 17:03:24ID:cUrmnSSnありがとうございます。
基本的には毎回コンパイルするイメージなんですね。
元々スピードを求める言語ではないので、それで納得しておこうと思います。
APCなどについてはこれから調べてみます。ちょっと見てみた感じ、とても良さそうですね。
0865nobodyさん
2010/03/12(金) 17:25:34ID:???ですが、対応バージョンがPHP5.0までのようで、新たに追加されたクラスや例外などの関数名がハイライトされません
ユーザ関数として登録もできるのですが、システム関数との見分けがつかなくなるのでなんとかしたいです
PHPエディタ作者は、要望掲示板の内容を読んでいないようで、対応の見込みが無いのですが
他のエディタで、プロジェクト管理機能とテンプレート機能を持つPHPエディタはないでしょうか?
0867nobodyさん
2010/03/12(金) 19:51:29ID:???0868nobodyさん
2010/03/12(金) 19:57:19ID:NKXaLgFF0869nobodyさん
2010/03/12(金) 19:59:35ID:???0870nobodyさん
2010/03/12(金) 20:30:47ID:sa3ugaEOn回以下でリクエストするためにはどうしたらよいでしょうか?
0871nobodyさん
2010/03/12(金) 20:31:23ID:???0872nobodyさん
2010/03/12(金) 20:34:43ID:sa3ugaEOひとりのユーザーがphpを実行しているのではなく、複数のユーザーが実行している時でも
sleepで対応できるのでしょうか?
0873nobodyさん
2010/03/12(金) 20:44:11ID:???0874nobodyさん
2010/03/12(金) 20:48:19ID:???リクエストの度にタイムスタンプ(microtime)を記述したファイルを生成。
また、PHP実行の度に、そのタイムスタンプを読み込み、例えば制限が「1秒に10回まで」なら、
(現在時-タイムスタンプ)が0.1秒以上でないとリクエストしない、とか。
0875nobodyさん
2010/03/12(金) 20:53:12ID:???最新の10件を取り出して一番古いのが1秒居ないだったら待機
0876nobodyさん
2010/03/12(金) 20:56:03ID:???0877nobodyさん
2010/03/12(金) 21:07:16ID:sa3ugaEO0878nobodyさん
2010/03/12(金) 22:15:26ID:???0879nobodyさん
2010/03/12(金) 22:20:23ID:sa3ugaEOそうなるときつい気もしてきました
0880nobodyさん
2010/03/12(金) 22:24:44ID:???なんか制限のあるAPI使うってことはユーザリストと処理内容を元に自分で処理するような気がするんだけど
0881nobodyさん
2010/03/12(金) 22:47:37ID:???モニタは、過去1秒なら1秒間のリクエストの記録(オンメモリ)を保持して、
10個を超えそうならリクエスト拒否。
リクエストが来た時点で記録を調べて、1秒以上古いのは捨てる。
ファイルもDBの要らんでしょ。
0882nobodyさん
2010/03/12(金) 22:50:48ID:???0883nobodyさん
2010/03/12(金) 23:02:16ID:???サーバー負荷が大きくなって初めて調べられて連絡が来るというパターンが多い。
ある時には1秒3回あっても、平均を取ると60秒に20回とかなら、まず文句言われない。
しかも、アフィリエイト系APIの場合には、儲かっていると基準が甘くなったりする。
以上、経験論ではあるけど、例外があったらゴメンナサイ。
0884nobodyさん
2010/03/13(土) 06:06:30ID:GjD8zhAGDBから取ってきたリストをforeachでぐるぐる回してるんですが、
一行評価する度に消えちゃうじゃないですか。
もっかい読み出すっていう関数は無いでしょうか。
<?php foreach( $data["datas"] as $data ){
if($data["category"]==1){
0885nobodyさん
2010/03/13(土) 06:12:36ID:GjD8zhAG(あんま関係ないけど)cheetan使ってまして、
MySQLのテーブルにname,categoryとあったとして、
ビューで呼び出す側のindex_.html側で
<?php
foreach( $data["datas"] as $data ){
if($data["category"]==1){
echo $data["name"];
}
}
foreach( $data["datas"] as $data ){
if($data["category"]==2){
echo $data["name"];(上と全く同じ処理)
}
}?>みたいな事をやって結果的に
category 1の人は Aさん、Cさん、Eさん
category 2の人は Bさん、Dさん
みたいに出力したいのですが、
なんか根本的に処理がおかしい気が自分でもしてます;
0886nobodyさん
2010/03/13(土) 06:19:34ID:TPMaSDUCリソースから1行ずつ取り出して新たに配列作れば使いまわせたんで、
とりあえずそうしてます。
$result = mysql_query($sql,$con);
while( $row = mysql_fetch_array($result) ){
$data[] = $row;
}
0887nobodyさん
2010/03/13(土) 06:35:40ID:???俺だったらcategoryをキーにした連想配列に入れて再度ループして表示するか
予めカテゴリ別に取得して表示するか
DBのAPI利用してグループ化して取得して表示するかする
0888nobodyさん
2010/03/13(土) 06:42:00ID:GjD8zhAG>>886 配列に入れてからfor文でまわすのを
繰り返すっていう事でしょうか。
>>887 DBもっかい取ってくるってのは、その分SELECT文が
走るって事ですよね。サーバのHDD負荷をできる限り減らしたい
ので、みんなどうしてるんだろなって。
HTML出力する時に、HTMLって上から下に書かないといけない
じゃないですか;前に戻って書けないというか。
やっぱぐるぐる回すしかないんですかね;
0889nobodyさん
2010/03/13(土) 06:53:46ID:???いやDBもっかい取ってくるのは3行目だけだが。
あと別にHTML出力は変数に入れて最後にまとめて表示してもいいし、
887で書いたのはロジックを先に処理してあとで表示する方法
0890nobodyさん
2010/03/13(土) 12:03:41ID:???<?php
foreach( $result as $row ){
if($row["category"]==1){
$temp .= $row["name"];
}elseif($row["category"]==2){
$temp2 .= $row["name"];
}
}
echo $temp . $temp2;
?>
0891nobodyさん
2010/03/13(土) 12:05:16ID:???0892nobodyさん
2010/03/13(土) 12:05:18ID:???0893nobodyさん
2010/03/13(土) 12:06:08ID:???0894nobodyさん
2010/03/13(土) 12:13:05ID:???708 名前:デフォルトの名無しさん 投稿日:2005/05/11(水) 23:22:55
20通りくらいのパターンをswitch文を使って表しているのですが、
switchは遅いという情報を見つけました。
ifで表現したら速くなりますか?
A
基本的には気にする必要なし。
switchの分岐が多すぎることの方が問題。
710 名前:デフォルトの名無しさん 投稿日:2005/05/11(水) 23:26:16
>>708
君が気にする程違うわけでもなし、
気にしないといけない程
クリティカルなプログラムも書かないだろうし、
何よりコンパイラのオプティマイザに任せた方が
余程いい結果が得られる。
711 名前:デフォルトの名無しさん 投稿日:2005/05/11(水) 23:27:48
そもそも case や else がアホみたいに出てくるのは
良くない設計の兆候。まずは設計を見直せ。
714 名前:デフォルトの名無しさん 投稿日:2005/05/11(水) 23:42:02
>>708
switchをジャンプテーブルに変換してくれるコンパイラならifより速い
0895nobodyさん
2010/03/13(土) 13:03:19ID:???0896nobodyさん
2010/03/13(土) 21:22:52ID:???html内に出来るだけ短いphpで画像をランダム表示させようとしてるんだけれど、どうしてもうまくいかない。
<?php
$num = rand(1,200);
print "<img src=\"imagfile\{$num}.jpg\">\n";
?>
まだ始めたてでスレ内のレベルの高さにgkbrしてるけど、お願い
0897nobodyさん
2010/03/13(土) 21:26:42ID:???0898nobodyさん
2010/03/14(日) 03:08:12ID:P9+VbQHb結局こうなった…。
foreach($data["datas"] as $data){
$temp=(そのレコード行に対するタグを延々出力);
$temp.=$data["name"];
$temp.=(そのレコード行に対するタグを延々出力);
$cate[$data["category"]][]=$temp;
}
とやっておいて
echo "<h1>category 1の人は</h1>";
for($i=0;$i<count($cate[1]);$i++){ echo $cate[1][$i]; }
echo "<h2>category 2の人は</h2>";
for($i=0;$i<count($cate[2]);$i++){ echo $cate[2][$i]; }
…以下続く
とりあえず出力は期待通りになったけど、正直、なんか納得
いってないw しかしみんなありがとう。
0899nobodyさん
2010/03/14(日) 03:16:00ID:P9+VbQHb>>891 それだ!w PHP側でメモリの操作でやるのとorder byでソート
させとくのとどっちが高負荷でどっちが処理的に高速、また
効率良しなんでしょうかね。あんま拘るとこじゃないか…。
>>892 今回のと関係ないんですけど、他の記載箇所で、
全然平気でcase:1〜case:100とか出てくるんですが、やっぱダメです
よね…。用途は、さっきのcategoryが0-99あるとして、
対応する文字列を出力してるんですが、ほんとはDBに入れて
アソシエーションっていうんでしょうか、そっから引っ張ってくるべき
なのかなとか思ってました。。どうなんでしょうか。。
0900nobodyさん
2010/03/14(日) 11:54:00ID:???0901nobodyさん
2010/03/14(日) 16:55:47ID:???0902nobodyさん
2010/03/14(日) 17:27:47ID:???0903nobodyさん
2010/03/14(日) 18:09:51ID:???http://mlb.mlb.com/index.jsp
0904nobodyさん
2010/03/14(日) 20:43:36ID:afDdQzXD見やすさからBで書いてましたが、順番に処理を実行できるという意味では、
Aが正しい書き方な気がするのです。
【書き方A】
if (!empty($this->data)) {
$this->Book->create();
if ($this->Book->saveall($this->data)) {
$this->redirect(array('action' => 'index'));
}
【書き方B】
if (!empty($this->data)) {
$this->Book->create();
$this->Book->saveall($this->data);
$this->redirect(array('action' => 'index'));
}
0905nobodyさん
2010/03/14(日) 20:51:05ID:???0906nobodyさん
2010/03/14(日) 20:58:12ID:afDdQzXDありがとうございます。
0907nobodyさん
2010/03/15(月) 00:26:18ID:???saveAll()って失敗してもtrue返ってくるんじゃなかったっけ
0908nobodyさん
2010/03/15(月) 01:57:58ID:uc4oih1Jはい、CAKEPHPです。
ということは、常にAのような書き方をしたほうがよいということでしょうか?
すみません、発言の内容がよくわからなくて。
0909nobodyさん
2010/03/15(月) 02:11:15ID:7k3Do5eSその変数から呼び出すことってできますか?
↓こんな感じな事を想像してるのですが
$func = "strcmp";
if (!$func("文字1", "文字2")) {
echo "一致";
}
0911909
2010/03/15(月) 02:26:07ID:7k3Do5eSΣ(´∀`;) できるのですかっ
スイマセン 試せばよかったですね ; ;
ありがとうごさいました!
0912nobodyさん
2010/03/15(月) 06:24:34ID:wB2/C/Duただ、毎回重いわけではなくリロードすると5回に1回くらいの割合で重くなります。
なにぶん初めてサイトを作っているので、これがスクリプトに問題があるのか
サーバーに問題があるのか、CSSに問題があるのかわかりません。
私的にはスクリプトが原因なら毎回重くなるハズだからサーバーかな?と思っているのですが
スクリプトに原因があったとしても読み込み速度が毎回大幅に違うという可能性はあるのでしょうか?
0913nobodyさん
2010/03/15(月) 07:26:57ID:???0914nobodyさん
2010/03/15(月) 10:05:28ID:???・FireBugで接続時間の計測
これで切り分けな
0915nobodyさん
2010/03/15(月) 11:53:49ID:ToDwupd9質問です。
一度定義された関数を、未定義状態に戻す。もしくは上書き定義することはできますでしょうか?
また同様に、クラスはどうでしょうか?
----------
require("app_hoge"); // ここの中でfuncという名前の関数が定義されている。
func();
//ここでfuncの定義を消したい
require("app_test"); // ここの中でもfuncが定義されている
----------
現状ですと、下記のようなエラーとなります。
Fatal error: Cannot redeclare func()
0916nobodyさん
2010/03/15(月) 12:00:24ID:???0917nobodyさん
2010/03/15(月) 12:10:02ID:???function_existsでチェックしてから定義とかあるけど・・・
違うものなら、名前変えようよ。
0918nobodyさん
2010/03/15(月) 12:45:56ID:???0919nobodyさん
2010/03/15(月) 12:54:27ID:???or
runkit_function_remove('func');
どちらもインストールされてる環境のほうが稀
0920nobodyさん
2010/03/15(月) 13:10:12ID:???あれ?みんなどうやってんだ?
0921nobodyさん
2010/03/15(月) 13:21:46ID:???0923nobodyさん
2010/03/15(月) 13:42:29ID:R2wjg7Ee0924nobodyさん
2010/03/15(月) 13:49:00ID:???file_get_contentsで読み込んで
mb_convert_encodingで変換して
file_put_contentsで吐き出すとか。
俺ならexecでnkf使っちゃうけど。
0926nobodyさん
2010/03/15(月) 14:35:03ID:???0928nobodyさん
2010/03/15(月) 14:49:26ID:???だっておおおおおwwwwww
ならなんのためにnamespaceって技術が生まれたんだ?wwwwwww
0929923
2010/03/15(月) 14:51:01ID:R2wjg7Eeありがとうございます。
nkfのほうがよさそうなんでそちらでやってみます。
0930nobodyさん
2010/03/15(月) 15:04:06ID:???0931nobodyさん
2010/03/15(月) 15:04:57ID:???0932nobodyさん
2010/03/15(月) 15:06:15ID:???名前がぶつからないようにするのが基本って考えも相当危ういかと
いざぶつかったらどうしようもない。って意味だし
0933nobodyさん
2010/03/15(月) 15:12:51ID:???PHPごときでそこまで気にしたライブラリ作ってる人間いないだろ
ぶつかる時はぶつかるよ
0934nobodyさん
2010/03/15(月) 15:13:30ID:???ライブラリの命名は被らないように注意するのが基本だと思うよ
ネームスペースにしたってJavaのパッケージ名のようにしない限りは被る確立は同じに思えるし
ただネームスペースの場合は、1箇所修正するだけで済むっていうメリットはあるけどね
0936nobodyさん
2010/03/15(月) 17:21:58ID:EtpL+ybWclass Takahashi_Lib
{
function textedit() {
return 1;
}
function foodmenu() {
return "FoodSet";
}
}
$class = new Takahashi_Lib();
echo $class->foodmenu;
}
0938nobodyさん
2010/03/15(月) 18:21:42ID:???変数にするな。インスタンス生成するな
0939nobodyさん
2010/03/15(月) 18:26:16ID:???const textedit = 1;
const foodmenu = "FoodSet";
}
echo Takahashi_Lib::foodmenu;
これが正解
0940nobodyさん
2010/03/15(月) 18:29:09ID:???0941nobodyさん
2010/03/15(月) 18:31:17ID:???0942nobodyさん
2010/03/15(月) 19:02:16ID:e8CcSYKq前半のif文でtrueの場合のみ、 div class="actions" の内容を表示するという処理をしたいです。
どのように書けば上手くいくでしょうか?
<?php if ($userinfo['User']['role'] == 3); ?>
<div class="actions">
<ul>
<li><?php echo $html->link(__('Add Book', true), array('action' => 'add')); ?></li>
</ul>
</div>
0943nobodyさん
2010/03/15(月) 19:10:49ID:???<?php } ?>
0944nobodyさん
2010/03/15(月) 19:30:32ID:e8CcSYKqありがとうございます!
バッチリ綺麗に動きました!
0945nobodyさん
2010/03/15(月) 19:33:44ID:???Takahashi_Lib::foodmenuの書き方って
Takahashi_Lib->foodmenuみたいにアロー演算子と同じ?
0946nobodyさん
2010/03/15(月) 19:34:31ID:???・・・IDは?
0947nobodyさん
2010/03/15(月) 20:06:06ID:QBlQMDaRclassの中のfunction(data_ijiru())にGET文字(20100315)を渡して処理した内容を出力したいのですがどのように書くのでしょうか?
class data
{
private function data_ijiru($data){
$data = md5() . $data;
return $data;
}
}
$obj = new data();
echo $obj->data_ijiru($_GET['data']);
0948nobodyさん
2010/03/15(月) 20:06:11ID:???0950nobodyさん
2010/03/15(月) 20:09:59ID:???privateだからアクセスできねーんだろ
これもインスタンスを生成する必要が全くねーよな…
class data{
static function data_ijiru($data){
return $data = md5() . $_GET['data'];;
}
}
echo data::data_ijiru();
0951nobodyさん
2010/03/15(月) 20:14:24ID:???0952nobodyさん
2010/03/15(月) 20:18:10ID:???関数だけにしとけ
0953nobodyさん
2010/03/15(月) 20:25:29ID:???つまりこうなるわけだ。スッキリしたなww
0954nobodyさん
2010/03/15(月) 20:37:04ID:???0955nobodyさん
2010/03/15(月) 20:39:29ID:???0956nobodyさん
2010/03/15(月) 20:42:54ID:???0957nobodyさん
2010/03/15(月) 20:44:43ID:???0958nobodyさん
2010/03/15(月) 21:07:04ID:???950様のコードの書き方を覚えて書いてみたいと思います。
ありがとうございます
0959nobodyさん
2010/03/15(月) 21:09:41ID:???0960nobodyさん
2010/03/15(月) 21:09:47ID:???0962nobodyさん
2010/03/16(火) 00:23:15ID:t2aUhxNk掲示板のログ(書き込み)は2ちゃんねるのように.datの形式で保存するのと
MySQLのようなDBに入れて保存するののどちらがいいのでしょうか?
0963nobodyさん
2010/03/16(火) 00:25:23ID:???0964nobodyさん
2010/03/16(火) 00:40:31ID:t2aUhxNk0965nobodyさん
2010/03/16(火) 00:49:13ID:???.NET FrameWork で専用プログラム作るしかないかなーと思ってる。
めんどくさいので後回しだけど・・
0966nobodyさん
2010/03/16(火) 01:09:42ID:???0967nobodyさん
2010/03/16(火) 02:01:34ID:???0968nobodyさん
2010/03/16(火) 02:07:02ID:???0969nobodyさん
2010/03/16(火) 02:07:11ID:???・2chのように専ブラが普及している
・2chのようにスレッドが膨大に存在している
こういう条件ならdatでいいんじゃねーの
無数に存在するスレッドのテーブルにスレ番で検索かけるよりはいいと思うぜ
0970nobodyさん
2010/03/16(火) 09:36:01ID:???やっぱりDB使うと初期設定がめんどうだからね。
それに1000件程度ならそんなに処理時間もかからないし、
掲示板ならスレッド(トピックス)毎に分ければ良いだけだからね。
(まさに2ちゃんがそれだが)
0971nobodyさん
2010/03/16(火) 09:39:48ID:???0972nobodyさん
2010/03/16(火) 09:44:26ID:???0973nobodyさん
2010/03/16(火) 11:10:14ID:zjXFVPa/サニタイズ(htmlspecialcharsとか改行の置換とかいろいろ)は保存するときと出力するときと2回行うべきですか?
よく出力するときだけ行えばいいってここで聞いた覚えがあるのですが、
一行一データでログに保存する場合、改行を含む文字列を保存するときに問題があるのですが
保存するときにサニタイズなどはしないほうがいいのでしょうか?
0974nobodyさん
2010/03/16(火) 11:11:48ID:AXr2QtK6例えば以下のように書いたものを<li>で囲むにはどのような作業を行うのでしょうか?
*リスト1
*リスト2
0975nobodyさん
2010/03/16(火) 11:15:12ID:???htmlspecialcharsは出力の直前
保存は、DBならSQLインジェクションに注意(mysql_real_escape_stringなどでエスケープ)
ファイル保存で改行が問題になるなら改行だけ置換
0976nobodyさん
2010/03/16(火) 12:05:18ID:???$lists = array('リスト1', 'リスト2');
foreach($lists as $list)
{
echo '<li>'.$list.'</li>';
}
こんな感じ
0977nobodyさん
2010/03/16(火) 13:51:24ID:???0979nobodyさん
2010/03/16(火) 14:11:48ID:???http://pukiwiki.sourceforge.jp/
pukiwikiのlib/convert_html.phpあたりが参考になると思う
0981nobodyさん
2010/03/16(火) 14:33:31ID:ThiLQofN【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
定数を定義する場所は、一般的にはどこがいいのでしょう?
もちろん環境によるとは思うのですが、計測してから決めるというのはそう無いですよね?
1.実行するphpファイルにdefine
2.includeするphpファイルにdefine
3.const
4..ini、.conf等のテキストファイルに
5.データベースに
6.その他
0982nobodyさん
2010/03/16(火) 14:35:46ID:???0984nobodyさん
2010/03/16(火) 15:05:02ID:???同じでいいならincludeするファイルに、
という感じで俺は使っているよ。
perl も php も ruby もそうだけど、実装
の作法ってこの言語ならこう!ってのは
なかなか集約しづらいと思う。
自分なりの方法論を見つけていけば
いいんじゃないのかな。
0985nobodyさん
2010/03/16(火) 15:11:58ID:ThiLQofNincludeするとして、constとdefineのどちらを使っていますか?
くらす::TEISUとTEISUの違いでしかないとは思いますが、constの方がどこにあるかと判断しやすいかなとは思うのですが、余計なメモリ消費やオーバーヘッドもあるんじゃないかと思ったりもするわけです
0986nobodyさん
2010/03/16(火) 15:17:56ID:???0987986
2010/03/16(火) 15:20:48ID:???許容できるから自分はこちらを使う/使わないを選択すればいいんじゃないのか
0988nobodyさん
2010/03/16(火) 15:22:54ID:???基本的にプログラミングはそうやって覚えていくものじゃないですか?
0990nobodyさん
2010/03/16(火) 15:28:02ID:ThiLQofN0991nobodyさん
2010/03/16(火) 16:38:23ID:???ZendのとかPEARのとかお好きなのどうぞ。
0992nobodyさん
2010/03/16(火) 16:43:08ID:???イライラするのだ!!!!!!!!!!!!!!!!!!!
0993nobodyさん
2010/03/16(火) 17:04:11ID:???次はデザインパターンの勉強すれいい
複数人で開発する際に、他のPGとの意思の疎通がやりやすいという建前ではなく、
他の糞PGが作った部分を隔離することで、バグの責任の所在を明らかにすることが目的という意味でね
設計の段階で責任分担がなされていないブラックIT企業ならなおさらのこと、覚えておいて損はない
0994nobodyさん
2010/03/16(火) 20:59:08ID:cUbgN6Jr【PHPのバージョン】php5
【連携ソフトウェア】無し
【質問内容】
includeされて読み込まれた先のhtmlのタイトル−<title>タイトルだよ</title>−を取得してくれる関数は
用意されていますか?
以前はそういう関数は無かったのでhtmlファイルに以下のような小細工をしてタイトル名を取得していました。
<html>
<header>
<?php>$title = "タイトルだよ";</?>
<title><?php>echo $title</?></title>
</header>
<body>
<?php>include hoge.php</?> ← hoge.phpのなかで $title を通してタイトル名を取得できるようになる。
</body>
</html>
従来のこの方法ですとhtmlファイルのタイトルに小細工をいれなければならないので結構面倒でした。
最近のPHPではこのあたりは改善されたりしていますか?
0995nobodyさん
2010/03/16(火) 21:10:54ID:???php5.0
php5.1
php5.2
php5.3で違うんだからちゃんと書け
0996nobodyさん
2010/03/16(火) 21:17:02ID:???<?php>←なにこれ?
普通はテンプレートにタイトルと本文を埋め込むけど
あえてそれをやりたいなら正規表現使えばできるよ
0997nobodyさん
2010/03/16(火) 21:17:51ID:???0998nobodyさん
2010/03/16(火) 21:20:11ID:???0999994
2010/03/16(火) 22:02:19ID:cUbgN6Jrすいません。php5.3です。
>>996
> 普通はテンプレートにタイトルと本文を埋め込むけど
そのあたりをもう少し詳しく教えて頂けないでしょうか
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。