【PHP】下らねぇ質問はID出して書き込みやがれ 85
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん
2009/06/15(月) 22:55:33ID:???【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/
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
【PHP】下らねぇ質問はID出して書き込みやがれ 79
http://pc11.2ch.net/test/read.cgi/php/1231850905/
【PHP】下らねぇ質問はID出して書き込みやがれ 78
http://pc11.2ch.net/test/read.cgi/php/1230026935/
【PHP】下らねぇ質問はID出して書き込みやがれ 77
http://pc11.2ch.net/test/read.cgi/php/1228667259/
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
0003nobodyさん
2009/06/15(月) 22:56:19ID:???■本家マニュアル 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さん
2009/06/15(月) 22:57:02ID:???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さん
2009/06/15(月) 22:58:07ID:???→ 確認すべきは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に保存?
→ 好きにしてください
0006nobodyさん
2009/06/15(月) 22:58:53ID:???【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
http://pc11.2ch.net/test/read.cgi/php/1233590976/
0007nobodyさん
2009/06/15(月) 23:09:45ID:???スパム行為目的と判断できる質問には原則答えませんと追記願う
0008nobodyさん
2009/06/16(火) 12:51:21ID:???なんですが、&= ってなんですか?
0009nobodyさん
2009/06/16(火) 12:58:18ID:???0010nobodyさん
2009/06/16(火) 13:01:03ID:???0011nobodyさん
2009/06/16(火) 13:24:09ID:???0014nobodyさん
2009/06/16(火) 16:20:36ID:???モダン PHP みたいのはありませんか。
認証や日本語処理、
セキュリティ対策はこうしとけ、みたいな。
0015nobodyさん
2009/06/16(火) 19:08:31ID:???何て手抜きをすると大嘘記事を真に受けたりするので素直にマニュアルを
隅から隅まで読んでみる
0016nobodyさん
2009/06/16(火) 19:14:46ID:37ReaO1gコマンドがされたときにだけ実行するようにしたいです。
どういった方法が普通なのでしょうか?
・apache関係でローカル以外からアクセスのときはエラー
・実行したいphpに簡単なパスワードフォームをつけて、コマンドラインで認証通す
・phpのファイル名を予想付かないような長い名前にしたり、そういった名のフォルダに入れる
これらを全部組み合わせてもいいのですが、
特に二番目の認証のあるものだと、コマンドで実行したい以外にも利用できてうれしいのですが
例えばpostメソッドでパスワードフォームを作っているとき、○○.phpに接続はできても
exec(コマンドライン)だけで、postができるのかよくわかりません。
なのでapacheで接続されないようにするのと、ファイル名も個性的名ものにしようと思うのですが
もっと賢い方法はありますでしょうか
よろしくお願いします。
0017nobodyさん
2009/06/16(火) 19:16:32ID:37ReaO1gwindowsのコマンドだけでもよろしくお願いいたします
0019nobodyさん
2009/06/16(火) 19:53:15ID:???要するに、実行中のphpからさらに別のphpを実行したいんだろ?
違うなら日本語でおkとしか言えない
0020nobodyさん
2009/06/16(火) 19:55:46ID:q26JNoUY勘違いかな??
サンプルつくってみたところ、-1も0も返さないんだけど以前-1が返ってきた気がするので
念のため聞きました。下質ですがひとことアドバイスお願いします
0021nobodyさん
2009/06/16(火) 21:25:50ID:37ReaO1gすいません、じぶんで見直してもわかりにくかったです
実行と適当に言ってしまいました。
>要するに、実行中のphpからさらに別のphpを実行したいんだろ
そんなかんじです。phpを実行して、このphpの中の処理にも手を加えたいという感じです。
test.php
<?php
echo <form method='post' action='text.php'〜〜
.<input type='text' 〜〜〜
.<input type='submit'〜〜</form>的な入力フォームがある
入力フォームからpostされた値が正しければ、
以降処理をする。値が間違っていればここで処理終わり、以降何もできない。
?>
これを普通にブラウザで表示すれば、textに入力してsubmitおして、という流れ
なのですが、これをexecで外部ファイルとして開くときに、formの処理もしてみたいのです。
別のツールを組み合わせればpostを飛ばせるのもわかったのですが、
レンタル鯖などでも汎用性の高い方法でできるのならやってみたいということです。
できなければform無しphpを別に作ろうかなと思います
002421
2009/06/17(水) 10:01:40ID:???ありがとうございます
さっそくやってみて、postさせることができました。
require_once 'HTTP/Request.php';
$req = new HTTP_Request( "URL" , array( "timeout"=>2 ) );
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addPostData( "key" , "pass1" );
$req->addPostData( "key2" , "pass2" );
$req->sendRequest();
という風にしてみたのですが、sendRequestだと、
ttp://sandman.s6.xrea.com/nucleus/index.php?itemid=48
にも書いてあるように、送った先の処理が終わるまで、こちらは待っていなければならないみたいなのです。
sendだけするようなものはないのでしょうか・・
もしくはsendして数秒たってから、Requestをまたずに中断して先に進めるようにしたいのですが・・
もう少し勉強してみますありがとうございました。
002721
2009/06/17(水) 10:12:24ID:???さきしらべていたら、timeoutのところをreadtimeoutでできました・・
ありがとうございました。
0029nobodyさん
2009/06/17(水) 11:22:30ID:PMErRJxcクラスを使わない場合で
function hoge()
{
$name = $_POST[ "form_name" ];
}
function mail()
{
$_hogehoge = mb_substr( $name ..............
}
ユーザー関数間で、変数を取り扱うにはどうしたらいいのでしょうか?
globalはユーザー関数の外で有効ですよね?
$_POSTを使い回せば良いとは思いますが
任意の変数名に入れて持ちまわすことは出来ないのでしょうか?
0031nobodyさん
2009/06/17(水) 11:38:46ID:???function hoge(){
$name = $_POST[ "form_name" ];
return $name
}
function mail($name){
$_hogehoge = mb_substr( $name.....
}
//main
$name = hoge();
mail($name);
0032nobodyさん
2009/06/17(水) 14:09:24ID:QWeUGdqP何処をどうしたらいいでしょうか?
http://idol.nm.land.to/
よろしくお願いします<m(__)m>
0033nobodyさん
2009/06/17(水) 14:31:01ID:???「PHP」を「勉強」したらよいです
自分でやってどうしても出来ない分からないところだけここで人に聞きなさい
「読めないからかわりに読んで」なんてのは論外です
0035nobodyさん
2009/06/17(水) 15:05:37ID:???そうやって空気悪くなって過疎って行ったスレだらけじゃねーか。
答えたい奴だけが答える、答えたくない奴はスルー、それが出来ない奴はこのスレに2度と書き込むな。
0036nobodyさん
2009/06/17(水) 15:09:27ID:???とりあえず
ttp://www.google.com/search?hl=ja&num=50&q=php+%E3%82%AF%E3%83%83%E3%82%AD%E3%83%BC+%E5%85%A5%E9%96%80&lr=
でも読んで疑問があれば再度。
0037nobodyさん
2009/06/17(水) 15:14:52ID:???あん?なめてんのクズが。
下に改造用スレがあるだろうが。
「何処をどうしたらいいでしょう」とかキチガイみたいな事言う前に下で聞いてこい。
http://pc11.2ch.net/test/read.cgi/php/1222645553/
0038nobodyさん
2009/06/17(水) 15:22:44ID:???003932
2009/06/17(水) 16:01:36ID:???とりけします
0040nobodyさん
2009/06/17(水) 16:31:40ID:???0041nobodyさん
2009/06/17(水) 17:24:45ID:tSVJeFRVhttp://hogehoge.jp/hoge/以下のhtmlを全てPHPとして認識させるには
Apacheの設定ファイルをどのように変更すればよいのでしょうか?
当方RHE3 PHP4です
0042nobodyさん
2009/06/17(水) 17:26:40ID:???0043nobodyさん
2009/06/17(水) 18:06:12ID:???マニュアルにご丁寧に書いてあるぞ。
http://www.php.net/manual/ja/security.hiding.php
0044nobodyさん
2009/06/17(水) 22:42:05ID:7VboH98imysql5で
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | eucjpms |
| character_set_connection | eucjpms |
| character_set_database | eucjpms |
| character_set_filesystem | binary |
| character_set_results | eucjpms |
| character_set_server | eucjpms |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
でちゃんとEUCになっていると思うんだけど
phpから
mysql_client_encoding()
ってしたらlatin1ってかえってくるの・・・
my.cnfにもいたるところにeucjpmsってかいたのに。
もう3日も悩んでいるので、助けてほしい・・・
0045nobodyさん
2009/06/17(水) 23:47:45ID:???stackoverflowで質問しましよう
http://stackoverflow.com/
0046nobodyさん
2009/06/17(水) 23:53:49ID:???MySql良く知らんが、
>character_set_system | utf8
のままだよ。
また、
http://jp.php.net/manual/ja/function.mysql-client-encoding.php
のコメント欄に、
> if you think "set names utf8" for each connection is too
> trouble, you can modify my.cnf of MySQL to solve the problem
> forever. In my.cnf, add the line "default-character-set=utf8"
> in both [mysqld] and [client] sections:
>
> [client]
> default-character-set=utf8
> [mysqld]
> default-character-set=utf8
> The MySQL will use utf8 after you restart it.
って、書かれてるけど試してみた?
0048nobodyさん
2009/06/18(木) 07:31:46ID:???だろうね。
三点リーダーの使い所もおかしいし。
高校でレポートとか小論文ぐらい書かされなかったのかな。
学校で習わなくてもビジネス文書の書き方は入社時に叩き込まれるはずなんだが。
004944
2009/06/18(木) 08:29:04ID:+GbpfhSzありがとう
utf-8にしてもダメだったんだ
>>47
[mysqld]には
default-character-set = eucjpms
skip-character-set-client-handshake
init-connect=SET NAMES eucjpms
って入れてるんだけどなぁ。
mysql_client_encoding()がなんでlatin1になるんだろう
0050nobodyさん
2009/06/18(木) 09:36:37ID:???それかPHP内でmysql_set_charsetを使用するか
でも実際には今の設定で文字コードがらみは問題ないと思うけど、文字化けとかするの?
005144
2009/06/18(木) 11:43:41ID:+GbpfhSzおっしゃる通りphp内でコネクトするたびに
mysql_set_charset("eucjpms");
ってすると化けません。
しないと???となって化けてしまうんです。
化けるってことは何か設定がおかしいのかな?と思いまして
0052nobodyさん
2009/06/18(木) 11:48:46ID:???show variablesはシステムの設定ってだけ。
文字コードはテーブル毎や、カラム毎に設定できるので
そっちがlatinになってるだけだと思う。
SHOW CHARACTER SET
とかでググるとよいと思う。
005344
2009/06/18(木) 12:30:55ID:+GbpfhSz結局
ALTER TABLE hoge.hogehoge DEFAULT CHARACTER SET eucjpms;
ってすると化けなくなりました。
…ということはこれは、すべてのテーブルに対してしなきゃいけないってことですね。
そもそも、my.cnfでEUCで指定してたから大丈夫だと思ってたんですけど、
実は、そうではなかったということでしょうか。
0054nobodyさん
2009/06/18(木) 12:39:13ID:???0055nobodyさん
2009/06/18(木) 13:37:45ID:gqLHvinHダメだったんすよ
しかもmy.cnfに指定してるから大丈夫だとタカを
くくってしまってました。
0056nobodyさん
2009/06/18(木) 13:54:30ID:???ここ読んで出来ないなら知らん
mySQLのバージョンが上がって文字化けしやすくなった件
http://heeha.ws/index.php?DB%B4%D8%B7%B8#cebc24b2
0057nobodyさん
2009/06/18(木) 13:55:50ID:???005844
2009/06/18(木) 20:38:57ID:+GbpfhSzおかげで解決できました。
0059nobodyさん
2009/06/19(金) 01:53:03ID:h2rW+CLw<?php
function fc1(){}
function fc2(){}
function fc3(){}
?>
て感じで
そういう例をマニュアル本で見たことないので、何となくClassの体裁をとって外部化したものの
クラスにする理由がない代物を作ってしまったことがあります
あと、クラスと関数の違いって値を保持できるかどうかってだけなんでしょうか?
あるサイトを見るとそう書いてあったんですがそれだけじゃ今イチありがたみがないというか。。
0060nobodyさん
2009/06/19(金) 02:04:02ID:???0061nobodyさん
2009/06/19(金) 02:15:36ID:???何となく格好良く見えるのがオブジェクト指向プログラミング
006259
2009/06/19(金) 03:01:01ID:h2rW+CLwありがとうございます
難しいなあ、クラスの使い方ですが
例えば同じDBから同じユーザとパスワードで、複数のテーブル固有の情報を引き出すのに、
DB設定に必須の部分(ユーザ名とパスワードなど)をメンバ変数としてもたせて、
「個別の情報を引き出す処理」をそれぞれ専用のメソッドとして動かせば良いんでしょうか?
Class GetData{
var $db = ****;
var $userName = ****;
var $password = ****;
function __construct(){
//DBに接続処理
}
function getInfo1(){
//個別の情報1を取得する
}
function getInfo2(){
//個別の情報2を取得する
}
}
こんな感じでしょうか。
こんな例だと重複する処理を省けるくらいしか単独のfunction関数と比べたメリットない気が…
やり込んだらわかるんですかねー
0063nobodyさん
2009/06/19(金) 03:03:05ID:???006459
2009/06/19(金) 03:14:48ID:h2rW+CLw本読むだけでも読んでみようかなぁ
0065nobodyさん
2009/06/19(金) 05:07:42ID:???情報の抜き出しに時間がかかっています。
for () {
array_mapで会員IDのみにしてarray_searchやin_arrayなども試してみましたが相変わらずで訳あってDBも使えないので困っています。
何か良い方法は無いものでしょうか?
0066nobodyさん
2009/06/19(金) 05:15:41ID:1u+RZNQNコードは以下の通りです。
$mfile = file("id.dat");
$count = count($mfile);
for($i=0;$i<$count;$i++)
{
if($id == substr($mfile[$i], 0, 10)){
$data = $mfile[$i];
break;
}
}
0067nobodyさん
2009/06/19(金) 05:53:20ID:???$fp = fopen("id.dat", "r");
while (!feof($fp))
{
$line = fgets($fp, 1024);
if (strstr($line, $id) === 0) {
break;
}
}
fclose($fp);
echo $line;
早くなるかしらないけど。
0068nobodyさん
2009/06/19(金) 09:28:05ID:???>haystack の中で needle が最初に現れる場所から文字列の終わりまでを返します。
しかも
>注意: もし特定の haystack に needle があるかどうかを調べるだけの場合、 より高速でメモリ消費も少ない strpos() を代わりに使用してください。
0069nobodyさん
2009/06/19(金) 09:35:21ID:jp3LKqpN【PHPのバージョン】php4
【連携ソフトウェア】oracle
【質問内容】
http://www.spencernetwork.org/memo/tips-5.php
を参考にボタンを押してダウンロードする処理を作成しました。
ダウンロードは行えるのですが、その後に何か処理をしようとすると
HTMLがくずれて?ソースだけが表示されるようになります。
表示されたソースは 処理前のHTM L+ 処理後のHTML になって
いるようです。
おそらく最上記の処理内でHTTPヘッダをいじくってるので
その関連だとは思うのですがどうもうまく行きません。
回避策をご教授願えますでしょうか?
0070nobodyさん
2009/06/19(金) 09:58:52ID:???ファイルに/etc/passwdとか指定される恐れあるから結局指定されたファイルのチェックを自前で書く必要がるし
007169
2009/06/19(金) 10:46:30ID:jp3LKqpNそうですか・・。
全く素人なのでどういったものが参考になるか分からないです。
なにかよい方法はありますか?
0073nobodyさん
2009/06/19(金) 13:21:28ID:???このfunctionに渡すファイル名をどう扱うは考えないといけないけど。
このfunction自体は問題ないだろ?
007469
2009/06/19(金) 17:45:11ID:jp3LKqpN0075nobodyさん
2009/06/19(金) 17:47:14ID:???0076nobodyさん
2009/06/19(金) 17:57:33ID:dM+wXKpC「自動転送設定がループしている」
のようなメッセージが出るのですが、これは何が原因なのでしょうか?
一度前の画面に戻って再度リクエストすれば元に戻っていたりもします。
0079nobodyさん
2009/06/19(金) 23:07:52ID:???>こんな例だと重複する処理を省けるくらいしか単独のfunction関数と比べたメリットない気が…
そのクラスを使う人が、「$dbとか$userNameっていうのを意識しなくてもいい」
っていうのはどうだろう。
var → private
にするとどうなるか、って考えてみるとか。
。。。一回作って終わりっていうんなら、あんまりメリットは感じないかもね。
そのクラスを使いまわしたりするようになるとなんとなく納得するかもしれない。
0080nobodyさん
2009/06/20(土) 01:07:56ID:???文字通りの意味。header()とかで何度も同じページにリダイレクトするとそうなる。
FirefoxにLiveHttpHeader拡張でも入れてアレコレ試してみたら?
0081nobodyさん
2009/06/20(土) 06:50:03ID:???クラスとかオブジェクト指向ってのはいわゆる整理整頓みたいな事だし
感覚としてはそんな感じじゃないかな
一言で言うとメンテのしやすさかね。
ステップ数が膨大になってきても
$user->getInfo();
$article->getInfo();
みたいにシンプルな命名ができるし
$a = new Hoge();
$a = new Hage();
と違う2つのクラスがあっても呼び出すところでは
$a->getInfo();
と、重複する処理をfunctionにまとめたように、インスタンス化すれば
呼び出す所の処理の重複もまとめられるわけ。いわゆるポリモーフィズム
あとは、>>79 の言う private とかでクラス外に存在を隠せるということ。
privateなメンバーはクラス内だけのグローバル変数的な扱いもできるし
クラス内からしか呼ばれないという保証があるので
変更が加わる際でも調査する手間がかかりにくい。
実装を隠蔽することで責任の所在も明確になるからバグがあっても
原因を特定しやすい。
デメリットはクラス数が増えてIDEがないとしんどいとかかな。
と、うちの一年生に説明する練習。
0082nobodyさん
2009/06/20(土) 06:53:16ID:???0084nobodyさん
2009/06/20(土) 07:18:38ID:???0085nobodyさん
2009/06/20(土) 08:10:10ID:???この状況の中、政府自民党は外交的になすすべなく、
しかも、景気を冷ます増税路線を打ち出しています。
かたや、民主党は、北朝鮮を増長させるだけの「友愛外交」を主張し、
経済に関しても将来の増税が避けられないバラマキ政策を打ち出しています。
0086nobodyさん
2009/06/20(土) 15:02:26ID:9LLAIagyデータベースの中を空にしたいです。
やはり検索してからphpで文を組み合わせてdrop table テーブル1,テーブル2,・・
という具合にしなければいけないですかね。おねがいします
0087nobodyさん
2009/06/20(土) 15:05:15ID:???0088nobodyさん
2009/06/20(土) 16:10:09ID:9LLAIagyすいません書き忘れてしまいました
レンタル鯖でdrop databaseが禁止されていてその方法が使えなかったんです・・
create databaseもむりでした。drop tableだけはいけました
0089nobodyさん
2009/06/20(土) 16:36:46ID:???show tables
してそれぞれdropすればいいじゃん
0090nobodyさん
2009/06/20(土) 16:56:06ID:9LLAIagyそれでいけそうです
やってみます
ありがとうござました
0091nobodyさん
2009/06/20(土) 20:07:20ID:???今Linux上でphp5.2.5をインストールして下記のように記述してます。
$rssurl = "http://dailynews.yahoo.co.jp/fc/rss.xml";
$rssdata = simplexml_load_file($rssurl);
print convert($rssdata->channel->title);
でも、simplexml_load_fileの部分で
Fatal error: Call to undefined function simplexml_load_file()がでます。
PHP5だとsimplexml_load_file()が使えるはずなんですけど
なんで呼べないのかわからない状態です。
知ってる人いませんか?
0092nobodyさん
2009/06/20(土) 20:30:53ID:???0093nobodyさん
2009/06/21(日) 19:30:41ID:eYkB7H28phpの関数名や引数に「&」を付けているのを見かけたのですが、
これはどのような意味なのでしょうか?
function &fetch( ObjectFetcher &$objects);
ご教授下さいm(__)m
0094nobodyさん
2009/06/21(日) 19:36:37ID:???0095nobodyさん
2009/06/21(日) 21:59:34ID:???0096nobodyさん
2009/06/22(月) 16:45:51ID:HPmTjla5【PHPのバージョン】php5.26
【質問内容】
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20080508/301027/
にあるコードを使って
同じ内容のメールを返させるのとファイルに保存するようなのを書き足したPHPファイルをつくったんですけど
メールが返ってくるところまではうまくいったんですけど(内容もちゃんと)
ファイルに保存がうまくいきません
mail($mail_address,,$diary_subject,$diary_body);
write("dat/test.dat",array($diary_subject,$diary_body));
------------------------------------------------
function write($filename, $input)
{
$input=serialize($input);
$fp=fopen($filename,"w");
flock($fp, LOCK_EX);
fputs($fp, $input);
flock($fp, LOCK_UN);
fclose($fp);
}
ちゃんとdatはchmod 733してあります。
何が原因になりそうでしょうか?
0097nobodyさん
2009/06/22(月) 16:50:18ID:???0098nobodyさん
2009/06/22(月) 16:57:00ID:HPmTjla5でけたw アリガト♪
けど、なぜフルパスなのかがわからん(´ェ`)
0099nobodyさん
2009/06/22(月) 17:29:11ID:???0100nobodyさん
2009/06/22(月) 17:41:01ID:???0101nobodyさん
2009/06/22(月) 17:59:36ID:???010297
2009/06/22(月) 18:17:23ID:???そのユーザのホームディレクトリから見てdat/test.datに書き出す処理をしている
0103nobodyさん
2009/06/22(月) 20:14:54ID:???対処法は無いの?
010497
2009/06/22(月) 20:20:25ID:???0105nobodyさん
2009/06/22(月) 20:26:05ID:EjMUz/ox微々たるもんですが、Perlを少しいじった事があったので
PHPの勉強の為、Perl→PHPへ移行しています。
で、その中でどうしても分からない部分がありましたので質問させて頂きます。
read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'});
このPerlをPHPに変換するとどうなるのでしょうか?
お手数ですがよろしくお願いいたします。
0106nobodyさん
2009/06/22(月) 20:38:05ID:HPmTjla5/etc/aliasesに書いたコマンドラインのエラーメッセージを
ファイルに出力させようとしたけどなんかうまくいきませんでした
(foo: "| /usr/bin/php /home/foo/mail.php >/tmp/error.log")
ので、エラーがなんなのかわかりませんでした><
>>102
そうみたいですね
メールでgetcwdの結果を返させたら
/var/spool/postfixになってました。
で、違う問題が浮上したんですけどよろしいですか?
これで作ったファイル(test.dat)の所有者・所属グループがnobdy nobodyになってるんですけど
これってどうやったら設定返れますか?><
(たぶん、自分が聞いてるのはaliasesで設定したコマンドを実行してるユーザーは誰なのか?)
自分がしたいのはapacheが作ったファイルに メールででも書き足しできるようにしたいんですが。
0107nobodyさん
2009/06/22(月) 20:41:07ID:HPmTjla5010896
2009/06/22(月) 21:09:32ID:???0110nobodyさん
2009/06/22(月) 21:28:31ID:???http://stackoverflow.com/
で聞いてみよう。
011297
2009/06/22(月) 21:42:50ID:???nobodyユーザでchmod("/path/to/file", 0777);を実行させればできると思う
>>105
URLデコードはPHPでは自動でしてくれるから$_POST['key']みたいにアクセスできる
0113nobodyさん
2009/06/22(月) 22:36:12ID:iiTIgfBL誰か解決策わかる人いませんか?
92>>
ロードしてないからって何をロードです?
できれば具体的な方法を教えて頂けると助かります。
0114nobodyさん
2009/06/22(月) 22:37:21ID:JP1gh/Ozの送りボタンを作成したいんですが、どう作ればいいのでしょうか。
答えのサイトどっかしりませんか。
例では、35件データがあった場合
最初の画面が20件、次は15件表示されます。
pearありとなしで作り方お願いします。
0115nobodyさん
2009/06/22(月) 22:47:42ID:???0117105
2009/06/22(月) 23:00:28ID:EjMUz/ox早速ありがとうございます。
ちなみに質問方法が悪かったですね。
$_POST['key']のkeyにあたる部分の数が多い、または決まっていないなどで指示できないのです。
で、たとえば$_GET['key']のkeyが不確かな場合は
$_SERVER["QUERY_STRING"];でクエリから抽出すればいいのですが
POSTの場合はどうすればいいのかなぁ?と思い
質問させていただきました。
お手数ですが再度、よろしくお願いいたします。
0118nobodyさん
2009/06/22(月) 23:02:03ID:???echo $value;
}
0119105
2009/06/22(月) 23:18:00ID:EjMUz/oxありがとうございます!
無事にできました。
また何か分からない事がありましたらよろしくお願いいたします。
本当にありがとうございました。
0122nobodyさん
2009/06/22(月) 23:35:36ID:???0123nobodyさん
2009/06/22(月) 23:56:26ID:???0124nobodyさん
2009/06/23(火) 00:04:19ID:???echo $value;
}
まじですかwwwww
こんなの初めて見ました
0126nobodyさん
2009/06/23(火) 00:12:42ID:???サーバー1台で運用中で、できるだけダウンタイムを短くしたいと思ってます。
・configure
・make
・make test (一応)
・httpd stop
・make install
・httpd start
こんな感じかと思ってますがどうでしょう
0127nobodyさん
2009/06/23(火) 00:55:44ID:???0128105
2009/06/23(火) 01:59:17ID:eAPItn6A私もです。
調べても分からない事は、素直に聞くべきですね。
本当に勉強になりました。
0130nobodyさん
2009/06/23(火) 05:20:28ID:fbX2StFR$hoge = "abc";など複数の変数や定数が定義されてて、
それを別の.php内のクラスの中で読み込むとします
class myClass{
require 'inc.php';
}
ここで、このクラス内に読み込まれた変数・定数にprivate属性?を設定するには
どうしたらいいですか?
DBの接続情報などが書いてあるので、インスタンスから見られる可能性は消したいんです
考え方がおかしかったら、それについても一言もらえると嬉しいです。
0133nobodyさん
2009/06/23(火) 10:57:26ID:hM5iLPbbhttp://〜の場合は付加してくれません。(たぶん、外部リンクへの配慮かと思うが・・・)
SSL通信をはさむ場合、セッションIDは手動で付加するべきなのでしょうか
0134nobodyさん
2009/06/23(火) 11:40:11ID:???echo htmlspecialchars($value, ENT_QUOTES);
}
しないとセキュリティホールになるよ。
0135nobodyさん
2009/06/23(火) 12:24:13ID:26Ndjc+C【OS名】CENTOS
【PHPのバージョン】わかんね、4.xだと思う
【連携ソフトウェア】mysql
【質問内容】
テーブルAにはお店のIDとお店の名前とか、テーブルBにはお店のIDと販売アイテムとかが入ってる
んで
$test = "SELECT `SHOPID`, `ITEMS`, FROM `TABLEB` ";
$test2 = mysql_query($test);
$test3 = mysql_fetch_assoc($test2);
echo $test3['SHOPID'];
って書くと当然1とか2とかで表示されちゃう
これをテーブルAを参照してお店の名前を表示したいんだけどどうすればいい?
0136135
2009/06/23(火) 12:25:59ID:26Ndjc+Cマルチするわけにもいかないんで多めに見てくだしあ
0137nobodyさん
2009/06/23(火) 12:40:43ID:???SELECT a.shopid,a.shopname,b.items
FROM tablea AS a,tableb AS b
WHERE a.shopid = b.shopid
0138nobodyさん
2009/06/23(火) 12:41:59ID:???0139nobodyさん
2009/06/23(火) 13:30:29ID:???0140nobodyさん
2009/06/23(火) 14:24:41ID:???0141nobodyさん
2009/06/23(火) 14:25:30ID:hM5iLPbb0142135
2009/06/23(火) 14:47:09ID:26Ndjc+Cあざーっす
次から気をつけます
0143nobodyさん
2009/06/23(火) 18:49:10ID:???0144143
2009/06/23(火) 18:53:44ID:w/0G3XQg質問なんですが、クラスのインスタンス生成時、
$obj = &Log::factory();
$obj =& Log::factory();
アンパサンドの位置が異なることで処理はどのように変わるんでしょうか?
同じですか?
0145nobodyさん
2009/06/23(火) 21:31:14ID:KCXdMJjNこれを取り出す際に<pre>〜</pre>の中身を\nに戻して取り出したいです.
<pre>〜</pre>が複数ある場合や,入れ子になってる場合にも使える方法ありませんか?
よろしくお願いします.
0146nobodyさん
2009/06/23(火) 21:45:11ID:???0147nobodyさん
2009/06/23(火) 21:47:10ID:???0148nobodyさん
2009/06/23(火) 23:25:35ID:???面倒くせえから、丸ごとDOMにぶち込んでXPathで処理。
0149nobodyさん
2009/06/24(水) 00:21:17ID:QqjFg27f0150nobodyさん
2009/06/24(水) 02:58:42ID:O6/z8sKK<html>
<head>
<title>PHP TEST</title>
</head>
<body>
<?php
echo"<p>Hello World</p>";
?>
</body>
</html>
って書いたのですが、IEで開くと
Hello World
"; ?>
と表示されます
アドバイスください
0151105
2009/06/24(水) 02:58:57ID:21wDpb5Zなるほど。
特殊文字を変換しないと直接入力されたら、そのまま命令を実行されてしまうのですね。
親切にありがとうございます。
また、何かありましたらよろしくお願いいたします。
0152nobodyさん
2009/06/24(水) 03:10:23ID:QqjFg27fサーバーがPHPとして認識してないんだよ
ファイルの拡張子を確認 .php
ファイル名が正常ならサーバーに問題がある
0153nobodyさん
2009/06/24(水) 03:22:07ID:O6/z8sKKサーバーに使うのとは別のPCで作っているのでサーバーを介さずにその場で開いてます
とりあえず動作確認だけしたいのですがどうすればいいのでしょうか?
0154nobodyさん
2009/06/24(水) 03:29:08ID:QqjFg27fちゃんとローカル環境を構築してある?
0155nobodyさん
2009/06/24(水) 12:53:26ID:???フリーのスクリプトで
という書き方をよくみるんですがこれはどういうことなんでしょうか?
例えば
<?php if ($page == 'unko') {
echo "test"; ?>
<a href="index.php" class="text">Images</a>
<?php }
else { echo "bgcolor=\"#0099FF\""; ?>>
<a href="<?php if ($page == 'chinkof') {?>../<?php } ?>
のように。
<?php } ?>
はヒアドキュメント末尾のような意図でつかわれているのでしょうか?
エラーは返さないようなのですが。
0156nobodyさん
2009/06/24(水) 13:09:03ID:???SQLのクエリや、ヒアドキュメントで
$var を
{$var} にしているのを見るんですが、
これをしないとエラーになるんでしょうか?
SQLクエリの中でも
$var のままだったりするコードもよく見るんですが、
{$var} と $var をどのように使い分けているんでしょうか?
0157nobodyさん
2009/06/24(水) 13:14:48ID:???0158nobodyさん
2009/06/24(水) 13:28:29ID:???<?php と ?> の間は PHP と解釈され、それ以外は HTML と解釈される。
>>156
配列の場合は {} が必要。
変数の場合は必要ないけど、
統一のためや、見やすくするために {} を使う人いるね。
0159nobodyさん
2009/06/24(水) 13:31:30ID:???0160nobodyさん
2009/06/24(水) 14:40:53ID:XDFiYdlaありがとうございます。勉強になります
<? ?> 内でステートメントが完結していなくても
問題ないんですね
0161nobodyさん
2009/06/24(水) 14:43:29ID:???問題ないのはブロックだろ
0162nobodyさん
2009/06/24(水) 17:58:43ID:???携帯・PCは識別出来たんですが、OSの識別はぐぐっても出てこない。
見落としてたらすんません。誰かご教授お願いします。
0163nobodyさん
2009/06/24(水) 18:05:12ID:???Mac?Windows?みたいに質問するって方法もある
あとやったことないけどJavaScriptで改行コード"\n"を展開させてそれを受信してみるとか。。
0164nobodyさん
2009/06/24(水) 18:15:53ID:???ttp://jp2.php.net/manual/ja/function.get-browser.php
も忘れずに。
0166nobodyさん
2009/06/24(水) 18:54:57ID:O6/z8sKKローカル環境という言葉自体をはじめて聞きました
ググってみたのですが、説明が抽象的でよくわかりませんでした
ローカル環境を構築したPCはサーバーになるということですか?
だとしたらサーバーにしないで動作確認だけする方法はありますか?
ずれた質問をしてるかもしれませんがご教示願います
0167nobodyさん
2009/06/24(水) 19:54:37ID:???Webアプリケーション製作の基礎中の基礎。っていうか根本概念。
プログラム書くのはまだ早すぎる。
0168nobodyさん
2009/06/24(水) 20:57:38ID:???string(1) " "
と返ってきました
これは変数に半角空白が入ってると
思い
if($last == ' ')echo 'true';
と書いてみたのですがtrueが帰ってきません
string(1) " "をもっと詳しく調べる方法はないでしょうか?
0169nobodyさん
2009/06/24(水) 20:59:46ID:???0170nobodyさん
2009/06/24(水) 21:11:08ID:???0171nobodyさん
2009/06/24(水) 21:13:51ID:O6/z8sKKローカルはオフラインのこと
サーバーはオンラインでデータをやり取りするためのもの
・・・と解釈してるのですが間違ってますか?
0172sage
2009/06/24(水) 22:24:39ID:QqjFg27f0174nobodyさん
2009/06/24(水) 22:49:32ID:???プログラムを教えてください
http://pc12.2ch.net/test/read.cgi/tech/1243778529/
0176nobodyさん
2009/06/25(木) 00:57:46ID:Niw+Ve6P【PHPのバージョン】php5.2
【質問内容】
HTMLでinputボタンを下記のように6個作ってあります。
A0 B0
A1 B1
A2 B2
A0のボタンが押された後、B0のボタンが押されたら「1」
A0のボタンが押された後、B1のボタンが押されたら「2」
と言うようにボタンの組み合わせによって数値を作り
3桁のパスワードを作る画面を作りたいと思っているのですが、
PHP1日目故、どこをどう作っていいのか分からず途方にくれています。
何かヒントでも頂ければと思い書き込みさせてもらいました。
レス頂ければ幸いです。
0177nobodyさん
2009/06/25(木) 01:08:21ID:???0178nobodyさん
2009/06/25(木) 02:22:08ID:???要は3桁の数字をボタンで入力させて、サーバーに送ればいいんでしょ?
それだったらJavascript使って、ボタン押した時にhiddenなinputに一桁ずつ入れて、三桁目が入ったらphpファイルにpostすればいいんじゃない?
でもパスワード入れる画面なら、普通にinput type=textのほうが操作性いいと思うよ!
0179nobodyさん
2009/06/25(木) 02:31:59ID:Niw+Ve6Pパチスロではないです。課題で出された問題なんです。
>>178
そうです。ボタンの組み合わせで3桁の数値を作って111の様なパスを設定し、
それをログイン画面の入力欄に入力されたパスワードと比較して、
正しければOKのページ、間違いならエラーメッセージと言うような
処理にしたいと思っています。
Javascriptで上記が満たせる処理が作れるんでしょうか?
色々調べてみようと思います。
0180nobodyさん
2009/06/25(木) 03:51:50ID:???これってPHPの課題?
画面の遷移無しでって話ならjs使わないと無理だろ。
画面の遷移ありならPHPだけで出来るけど。
どうせなら課題の問題全部伝えないと答え出ないよw
0181nobodyさん
2009/06/25(木) 04:07:38ID:???>>180の言う通りでPHPで実現するにはどうしても画面遷移が必要だし、そうするメリットは何もない。
だから数字の入力と、サーバーに送る動きは別物で考えるべき。
前者はJSで、後者はPHPでやればいいよ。
暇だから書いてあげるよ!課題は?
0182nobodyさん
2009/06/25(木) 04:24:18ID:???0183nobodyさん
2009/06/25(木) 06:41:54ID:HSbLKHIxPHPの課題です。
画面の遷移の有無でも違いがあるんですね。
知りませんでした。
>>181
>>176で書いた処理を使ってパスワードを設定した後、
そのパスワードをどこかに保持した状態でログイン画面に遷移します。
ログイン画面から入力されたパスワードと設定したパスワードを比較して、
正しければOKのページ、エラーならメッセージの表示と言う風に
処理を分岐させたいと考えています。
javascriptとPHPを上手く使わないといけないのですね。
奥が深いです。
0184sage
2009/06/25(木) 07:29:23ID:utUUg4I/javascriptで簡単にできるぞ
0185nobodyさん
2009/06/25(木) 13:20:30ID:???function &test() {
}
function test() {
}
0186nobodyさん
2009/06/25(木) 13:30:30ID:???リファレンス
PHP: リファレンスの説明 - Manual
http://www.php.net/manual/ja/language.references.php
0187nobodyさん
2009/06/25(木) 13:35:10ID:???ありがとうございます。
変数のリファレンスは分かった気がします。
関数のリファレンスは
どんなときに使うと便利か誰か教えてくれませんか。
0188nobodyさん
2009/06/25(木) 14:27:22ID:???だから変数と同じ
0190nobodyさん
2009/06/25(木) 16:53:33ID:???0191nobodyさん
2009/06/25(木) 17:04:31ID:???どういう時かよく分からんのです。。。
0192nobodyさん
2009/06/25(木) 18:00:17ID:???0193nobodyさん
2009/06/25(木) 18:16:24ID:???0194nobodyさん
2009/06/25(木) 18:48:17ID:???0195nobodyさん
2009/06/25(木) 19:34:23ID:???0196nobodyさん
2009/06/25(木) 20:00:11ID:???行数を見るしか方法無い?
sqlite_queryの結果ハンドルがFALSEを返すかと思ったけど、よく読むとクエリが失敗した
場合にFALSEを返すので使えない。
今はこんな風に書いているけど、何かこう美しくないというかもっとスマートな方法が
あるような気がする。
$sql = "SELECT ....";
$res = sqlite_query($db_con, $sql);
if (sqlite_num_rows($res) == 0) {
//0件の時はSQL投げ直し
$sql = "SELECT ...";
$res = sqlite_query($db_con, $sql);
}
while ($row = sqlite_fetch_array($res, SQLITE_ASSOC)) {
}
0197nobodyさん
2009/06/25(木) 20:23:47ID:utUUg4I/0198nobodyさん
2009/06/25(木) 20:31:04ID:4KEfnuybjavascriptでどういう風にプログラムを組めばいいか
何かヒントを教えて頂けないでしょうか?
0199nobodyさん
2009/06/25(木) 20:55:26ID:utUUg4I/// <![CDATA[
function test(n) {
document.getElementById("out").innerHTML = n;
}
// ]]>
</script>
<div id="out"></div>
<input type="submit" value="1" onClick="test(1)">
0200nobodyさん
2009/06/25(木) 21:19:33ID:???やっぱり行数で見るしかないのか…
イメージ的に、boolで返してくれそうな関数があっても良さそうなんだけど。
0201nobodyさん
2009/06/26(金) 01:13:39ID:???0202nobodyさん
2009/06/26(金) 01:32:36ID:???<?php
if($_POST["pass"]=="成功の場合の数字")
echo "成功";
else
echo "エラー";
?>
0203nobodyさん
2009/06/26(金) 01:44:34ID:m+lfcOij○○の部分にphpの変数を入れたいのですがどうしたらいいでしょうか?
0204nobodyさん
2009/06/26(金) 01:50:13ID:???0205nobodyさん
2009/06/26(金) 01:57:52ID:m+lfcOijphpの外のhtmlのタグの中に入れたいのです
0206nobodyさん
2009/06/26(金) 02:05:28ID:???省略表示が使えるなら
<form action="write.php?data=<?=$hoge?>" method="post">
って感じ。使えないなら
<form action="write.php?data=<?php echo $hoge;?>" method="post">
って感じ。あんまり美しくないけど。
0207nobodyさん
2009/06/26(金) 02:08:36ID:m+lfcOijありがとうございました
0208nobodyさん
2009/06/26(金) 02:21:51ID:???0209nobodyさん
2009/06/26(金) 03:56:41ID:eh6qHIVYコントローラのメソッドで
function add($id) {
と
function add($id = null) {
の違いがわかりません。
後者でもURLのパラメータ値がidに入ってくるのに、
nullで初期化する意味はあるのでしょうか?
0210nobodyさん
2009/06/26(金) 06:23:17ID:???0211nobodyさん
2009/06/26(金) 07:35:12ID:???でシステムエラーのようなものが表示されます。
0212nobodyさん
2009/06/26(金) 07:50:16ID:vbul8rC5名前違うかも
0213nobodyさん
2009/06/26(金) 07:51:56ID:vbul8rC5http://www.apachefriends.org/jp/xampp-windows.html#2671
0214nobodyさん
2009/06/26(金) 10:23:56ID:TMhnu1Tdif($_POST['A0']=="A0"){
$b=str_rplace=("B0","1",$a);
$b=str_rplace=("B1","2",$a);
print("パスワードは".$b);
}else{
print("操作が間違っています");
}
0215nobodyさん
2009/06/26(金) 10:30:30ID:???0216nobodyさん
2009/06/26(金) 11:22:27ID:Ht+rgjYH平田 信(44歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/hirata001.jpg
高橋克也(51歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/takahashi001.jpg
菊地直子(37歳)
http://www.keishicho.metro.tokyo.jp/jiken/tehai/image/kikuchi001.jpg
0217nobodyさん
2009/06/26(金) 13:56:50ID:???function a() {}
}
$t = new Test();
のように new Test() した後に
Test クラスに b メソッドを追加することってできますか?
0218nobodyさん
2009/06/26(金) 14:02:25ID:???0219nobodyさん
2009/06/26(金) 14:03:22ID:???0221nobodyさん
2009/06/26(金) 16:20:28ID:???pg_query($db, 'begin;');
try {
pg_query($db, $sql); // ★エラーが発生
}
catch (Exception $e) {
pg_query($db, 'rollback;');
}
pg_query($db, 'commit;');
0222nobodyさん
2009/06/26(金) 16:21:28ID:???0223nobodyさん
2009/06/26(金) 16:24:13ID:???0224nobodyさん
2009/06/26(金) 16:42:12ID:???0225nobodyさん
2009/06/26(金) 16:45:45ID:???0227nobodyさん
2009/06/26(金) 17:25:24ID:???0228nobodyさん
2009/06/26(金) 17:25:48ID:???0229nobodyさん
2009/06/26(金) 17:44:17ID:???既存プログラムである >>221 に
一部 try を入れて、>>226 のように
function error_handler($no, $message, $file, $line) {
throw new Exception("[$no] $message at $file:$line");
}
というのを用意しました。
try 外のエラーが error_handler のために
おかしなエラーになっているので、
function error_handler($no, $message, $file, $line) {
$message = "[$no] $message at $file:$line";
if (try 内部か) {
throw new Exception($message);
}
else {
die($message);
}
}
にしたいなと。
0230nobodyさん
2009/06/27(土) 03:46:30ID:???まとめるもんじゃね?
そこで例外投げればいいわけだし。
素直にPDO使えばいいのに。
0231nobodyさん
2009/06/27(土) 04:15:49ID:+RIsncnI0232231
2009/06/27(土) 05:06:52ID:+RIsncnI$session_file = "/tmp/sess_5f660455a0c309d48c04b0597144a9fa";
$data = preg_split('/([A-Za-z_][A-Za-z0-9_]*)\|/',file_get_contents($session_file),
-1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
for($i=0;$i<count($data);$i+=2)
$_SESSION[ $data[$i] ] = unserialize($data[$i+1]);
0233nobodyさん
2009/06/27(土) 09:21:00ID:???システムファイルを修正する前はapacheがちゃんと起動できたのに、誰か助けて〜〜〜〜〜〜!
0234nobodyさん
2009/06/27(土) 11:46:01ID:???GoogleのHTMLを取得して、別に用意したlog.htmlに上書き
という処理をしたいです。
<?php
$lines = file("http://www.google.co.jp/index.html");
foreach ($lines as $l) {
$html .= $l;
}
$inc = fopen("log.html","w");
fwrite($inc,$html);
fclose($inc);
?>
上記コマンドで文法ミスがありますでしょうか?
別問題としてcronを使っているので、cron側の問題でしょうか?
0235nobodyさん
2009/06/27(土) 12:25:28ID:???0236nobodyさん
2009/06/27(土) 12:33:20ID:+txMHXQ40237nobodyさん
2009/06/27(土) 12:59:40ID:???0238nobodyさん
2009/06/27(土) 16:34:23ID:nkgcVTu2データベースから取り出した文字列を、textやtextAreaの形でブラウザに表示をさせ、
もし変更があれば、変更を入力してもらい、変更があった場合と変更がない場合で
処理をかえるプログラムを作っています。
ここでphpの文字列比較がうまく行かなくって悩んでいます。
データベースから取り出した文字列をセッションで保存(この文字列を以下「A」とします。)
それをブラウザで表示させ、再度入力をしてもらった文字列(以下「a」とします。)
「a」はもちろん入力された後、すぐにhtmlspecialcharsを通しています。
if(strcmp(A,a)==0){
//処理1
} else {
//処理2
}
とすると、何の変更もないのに処理2を行ってしまいます。
なにかうまい方法はないでしょうか?
「A」をhtmlspecialcharsで変換してみてもだめでした。
どなたかご存知でしたらお教えください。
よろしくお願いいたします。
0239nobodyさん
2009/06/27(土) 17:33:06ID:???表示しないでしょ?
0240nobodyさん
2009/06/27(土) 19:26:15ID:???脊髄反射してみる
0241nobodyさん
2009/06/27(土) 20:56:19ID:nkgcVTu2一応確認のために、入力してくれた値を再表示するので、通してます。
>>240
見比べても、全く違いがないんだけど・・・・
0242nobodyさん
2009/06/27(土) 21:27:39ID:???0243nobodyさん
2009/06/27(土) 21:39:09ID:nkgcVTu2とりあえず、試しにhtmlspecialcharsをかけないで試してみた。
でも、変わらず・・・。
ただ、htmlspecialcharsをかけてもかけなくても、文章によっては正常に「同じ」と評価する場合もある。
なんか、だめな文字とかあるのかな?
0244nobodyさん
2009/06/27(土) 21:57:17ID:nkgcVTu2評価している両方の文章の見分けは、やっぱりつかない。
でも文字列にmd5をかけてみたら、違う数字になった。
やっぱりどこかが違っているみたい。
0245nobodyさん
2009/06/27(土) 22:15:58ID:???0246nobodyさん
2009/06/27(土) 22:35:53ID:nkgcVTu2macの改行文字「\r」を評価するもの同士から削除すると、再現されなくなる。
どうやら昔macで入力したデータは、文字列評価で誤作動を起こすらしい。
0247nobodyさん
2009/06/27(土) 22:45:01ID:???0248nobodyさん
2009/06/28(日) 00:03:18ID:???0249nobodyさん
2009/06/28(日) 08:31:21ID:???前にこんな風に使ってる方が居ました。
mysql_real_escape_stringを使ってさらにhtmlspecialcharsも使ってました
0250nobodyさん
2009/06/28(日) 10:06:21ID:???htmlspecialchars()は表示するときに無用なゴミを取るもの。
0251nobodyさん
2009/06/28(日) 11:38:42ID:???0252nobodyさん
2009/06/28(日) 11:44:31ID:???0253nobodyさん
2009/06/28(日) 13:20:28ID:???0254nobodyさん
2009/06/28(日) 16:04:22ID:04jk16zQ他の人から丸見えなんで、隠す方法ってありますか?
0255nobodyさん
2009/06/28(日) 16:07:45ID:???basic認証が使えないってことは.htaccessも使えないのかな?
使えるならそれで隠せるし
てかパーミッションいじればいいのでは?
0256nobodyさん
2009/06/28(日) 16:35:43ID:04jk16zQbasic認証で隠せました!
ありがとです
0257nobodyさん
2009/06/28(日) 18:07:47ID:P1lH7m+sテーブル1
a b c d e
1 0 -10 -2 1
とある場合、abcdeの値全部に
値が0より上の場合だけ
-1を足してやりたいのですが、
今まで、phpで値を参照して、0以上なら〜
という風に最低でも5回調べていました。
何かもっと効率的な方法はありますでしょうか
よろしくおねがいします
0258nobodyさん
2009/06/28(日) 18:25:56ID:???0259nobodyさん
2009/06/28(日) 18:31:00ID:P1lH7m+s全てINT型のデータです
0260nobodyさん
2009/06/28(日) 18:33:07ID:???0261nobodyさん
2009/06/28(日) 19:14:05ID:P1lH7m+s特に今のところ詳しく考えていませんが、
例えば、eの全ての値の0より上に-1を足す
ならwhere e > 0 で参照して簡単にできていたのですが(縦の値?)、
ふとこれが257の例のように、横の値(1 0 -10 -2 1)が0より上の場合だけ-1を足して
とした場合どうやればいいんだろう、と気になったのです。
で、今まで通り縦の方法をわけてやる方法しかないのかな、と質問してみました。
0262nobodyさん
2009/06/28(日) 20:24:17ID:???0263nobodyさん
2009/06/28(日) 21:55:28ID:???a = IF(a >= 0, a - 1, a),
b = IF(b >= 0, b - 1, b),
.....
つーかPHP関係ないな
0264nobodyさん
2009/06/29(月) 10:14:56ID:fNGZfwgvテストをブラウザでするにはどうすればいいでしょうか?
コマンドラインだと文字化けした時にコンソールが死んでしまうので
ブラウザでテスト結果を見たいのですが。
ネットで検索しても古いドキュメントばっかりで
3.3でやり方知っていたらお願いします。
0265nobodyさん
2009/06/29(月) 11:21:55ID:Q/RyyZ0F【PHPのバージョン】
【連携ソフトウェア】
【質問内容】
すいません、プログラムの事はよく分からないのですがエラーの内容にPHPと記述されていたのでここにきました、質問させてください
「萌えた体験談コピペ」という2chまとめ系のサイトの記事を開くと
Warning: require_once(Net/Socket.php) [function.require-once]: failed to open stream: No such file or directory in /home/www/moe/HTTP_Request-1.2.4/Request.php on line 47
Fatal error: require_once() [function.require]: Failed opening required 'Net/Socket.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/www/moe/HTTP_Request-1.2.4/Request.php on line 47
このような文が出てサイトが開けません、時間を空けたり再起動したりしましたがまったく変わりませんでした
最近ネット関係でいじった事といえばFireFoxをインストールした位です、ちなみにFireFoxでもIEでも同じ症状がでます
どうすればようでしょう、よろしくお願いします
0266nobodyさん
2009/06/29(月) 11:24:22ID:???| htmlspecialcharsはDBに入れる前でなく表示する直前にかけれ
というサニタイズするな意見がよくあるけど、
表示する前の htmlspecialchars を忘れるセキュリティホールを本当によく見る。
人間だから 100% は無理だからね。
なのでサニタイズしたほうがバグになっても
セキュリティホールにはならないと思うのだけどどう?
0268nobodyさん
2009/06/29(月) 13:36:35ID:fNGZfwgv出力の時、全てサニタイズするようにして、HTML出力したいところだけ
明示的にOFFにするようにすればOKだと思います。
それでも100%じゃないというなら、DBに入れる前にサニタイズだって100%とは言い切れないと反論させてもらいます。
0269266
2009/06/29(月) 13:56:17ID:???そういうことです。>出力の時、全てサニタイズ
「表示する直前」の定義によるのですが、
まさに表示する直前に
print htmlspecialchars($var, ENT_QUOTES);
は危険だなと。
0270nobodyさん
2009/06/29(月) 14:12:35ID:???ハッシュ ( 連想配列? ) 用の関数はないでしょうか。
0272nobodyさん
2009/06/29(月) 14:36:11ID:lu8+BB9Zハッシュ ( 連想配列? ) 用の関数はないでしょうか。
( >>271 指定ありがと )
0274272
2009/06/29(月) 14:45:07ID:lu8+BB9Z$hash = array(
'a' => 'x',
'b' => 'y',
'c' => array(
'm' => 'o',
'n' => 'p',
),
);
$hash = array_map('foo', $hash);
function foo($argv) {
print_r($argv);
}
a や b, c が取得できなくて。
0275nobodyさん
2009/06/29(月) 14:53:52ID:???0277nobodyさん
2009/06/29(月) 15:06:21ID:???array_map も array_walk も変わらなくないか?
array_walk_recursive を求めてるんだと思ったんだが。
0278nobodyさん
2009/06/30(火) 03:41:24ID:DIe+JQtVどういう仕組か説明お願いします
function clean ($str){
$str = strip_tags ($str);
$str = htmlspecialchars ($str, ENT_NOQUOTES);
$str = stripslashes ($str);
$str = mysql_real_escape_string($str);
return $str;
}
if(isset($_POST['submit'])){
$username = clean($_POST['username']);
$password = md5(clean($_POST['password']));
0279nobodyさん
2009/06/30(火) 08:53:18ID:???strip_tagsかけてhtmlspecialcharsかけてstripslashesかけてmysql_real_escape_stringかけて
返しているということ
0280nobodyさん
2009/06/30(火) 11:57:57ID:91azNsAMエラーメッセージを出すようにしています。
(例えば「登録できませんでした。管理者にお問い合わせ下さい」的な)
しかし、記述ミスは設計者の問題ですから、そういうメッセージを見せられても
ユーザはわからなですし、他に良い方法が無いのかと思い質問しました。
0281nobodyさん
2009/06/30(火) 12:32:00ID:???0282nobodyさん
2009/06/30(火) 14:53:51ID:Y8wbyR8h「システムの記述ミスです。申し訳ありません。」
0283nobodyさん
2009/06/30(火) 16:35:46ID:???クエリやエラーの内容にもよるけど「エラーが発生しました。もう一度お試しください。」とか書くしかないじゃん
なるべく客が納得いく表現にケースバイケースで書き換えてさ。
あとはそのエラー画面に管理者宛にエラー内容書いたメール飛ばすプログラムでも組み込んで。
ユーザに「問い合わせてね♪」なんて今時みたことない
0284nobodyさん
2009/06/30(火) 22:27:17ID:???英語だけど
0285nobodyさん
2009/07/01(水) 05:29:44ID:gkTQFvwH0286nobodyさん
2009/07/01(水) 11:26:09ID:fkYaARDwチェックボックスで選択された商品の情報をDBからPHPで取得して
その情報を商品ごとに配列にしてそのままダウンロードする処理を作成したのですが
複数選択された場合のダウンロードはできませんでした。
Javascriptを使わなければならないというところまでは
調べたのですが、どういう記述をしたらいいか分からなくて
困っています。
よろしくお願いします。
JSのスレかPHPか迷ったのですがここに書かせて頂きました。
0287nobodyさん
2009/07/01(水) 11:42:24ID:???0288nobodyさん
2009/07/01(水) 11:52:55ID:4mfkCgDjつまり、1商品データを1ファイルとして扱い、
複数選択の場合は複数のファイルをダウンロードさせたいわけ?
0290nobodyさん
2009/07/01(水) 12:23:50ID:4mfkCgDj俺もやったことがないから正確なことは言えないが、ちょっと難しい
商品それぞれにダウンロードボタンを付けるのが妥当だと思う
お役に立てなくてごめんなさい
0291nobodyさん
2009/07/01(水) 12:27:59ID:???ZIP圧縮してそれを、適当なHTTPヘッダつけて送ればいいんじゃね?
0293nobodyさん
2009/07/01(水) 16:59:02ID:/Z34wosifailed to open stream: 許可がありません
というエラーが出ます。
おそらくアクセス権限のエラーと思い、ディレクトリのパーミッションを0755にしましたが、
まだこのエラーが出てしまいます。
他に何か原因があるのでしょうか
0294nobodyさん
2009/07/01(水) 17:16:31ID:???0755ってことはウニックス系鯖だな
で、パーミッション変更はFTPで行ったと・・
つまりFTPユーザとPHP実行(ウェブ)ユーザが別であると
したがって書き込むためには、0777にすればいいんじゃないかと
0295nobodyさん
2009/07/01(水) 21:11:34ID:???あるいは、アパッチ権限で動いている?
どっち?
0296nobodyさん
2009/07/01(水) 21:24:28ID:???パーミッションを0755にしたのだから、(ftpユーザと同じ)ユーザ権限で動いていれば
0755の「7」に該当するわけで問題無い。
それで問題あるという事は、PHPはapacheの権限で動いていると思われる。
0297nobodyさん
2009/07/01(水) 21:28:57ID:???0298nobodyさん
2009/07/02(木) 10:11:16ID:???0299nobodyさん
2009/07/02(木) 10:23:04ID:???もしサーバー自前でphpをはじめて動かすとかならフォルダのパーミッションも関係あるぞ
/home以下のユーザーフォルダのパーミッション/home/*/public_html のパーミッションが700になってる可能性がある、これも755にしてやらないと動かない
そもそもhello worldが動いているのか?何はできるが何になると出来ない等、問題の切り分けをしていかないと解決しないぞ
0300nobodyさん
2009/07/02(木) 17:04:14ID:0lGL3Sc9その他のマシンではdebianのパッケージ(PHP 5.2.0-8+etch15)を入れているのですが、
ソースから入れたマシンだけ、
filter_var('test..@example.jp', FILTER_VALIDATE_EMAIL);
がfalseにならず、test..@example.jpを返す。
configureはこんな感じ。
./configure --with-apxs2=/usr/bin/apxs2
--enable-mbstring
--with-ldap
--with-imap
--without-mysql
--with-libmbfl
--with-pgsql
--with-pdo-pgsql
--with-zlib
--with-curl
--with-gd
--with-kerberos
--with-imap-ssl
php5のchangelogには仕様が変わったというような記述はないようですし、
何が原因か判る方いますか?
php.iniのどこを確認すべき、とか。
0301nobodyさん
2009/07/02(木) 17:39:03ID:???0302300
2009/07/02(木) 18:00:44ID:???自己解決。
いや、解決してないけど。
debパッケージ版のソースと見比べたら、
php_filter_validate_email内の正規表現が変わっていました。
実際に両者の正規表現で直接マッチするか試したら、
5.2.10のソース版の方だけ'test..@example.jp'がマッチすることを確認できました。
Cはよくわからないのでこれ以上追えませんでしたが。
0303nobodyさん
2009/07/02(木) 18:51:38ID:???debianパッチとか見てみた。
> + - CVE-2007-1900/MOPB-45 ext/filter Email Validation Vulnerability
これじゃね? どうもタイムスタンプとか見る限り、debianのメンテナが、
PHPの新版が出るのを待って、そこからバックポートのパッチを作る時間を
惜しんで自分で作ったパッチと、PHPの中の人が作ったパッチとが違うようだ。
危険度highのセキュリティフィックスだし、本家の更新を待たずに独自パッチ作るのは
良いと思うけど、振る舞いが本家と異なるのはダメダ
さぁDebianメンテナにケツを持ち込むんだ。
0304300
2009/07/02(木) 19:24:29ID:???サンクス。
どうも修正原因は2009-02-02のこれっぽい。
http://bugs.php.net/bug.php?id=47282
内容がちょっとおかしいですけど。
e.x.a.m.p.l.e.@example.com
や
a@com
が通るように修正されたらしい。
自分的にはdebin版(というか5.2.8以前の版?)の動作を期待していました。
> This bug has been fixed in CVS.
と、バグとして処理されているので、それが本来の振る舞いってことでしょうか。
単にFILTER_VALIDATE_EMAILが自分の期待していたものとは違ってたってことですかね...。
lenny版(5.2.6)のソースから件の正規表現を持ってきて使うことにします。
0305nobodyさん
2009/07/02(木) 19:40:17ID:???0308nobodyさん
2009/07/02(木) 20:48:04ID:???0310nobodyさん
2009/07/02(木) 23:03:27ID:FF1NZIiG毎日、午前8時に自動的にmail関数を実行する事は
可能でしょうか?
もし、不可能なら、どんな言語・技術が必要でしょうか?
0312nobodyさん
2009/07/03(金) 00:05:48ID:???0313nobodyさん
2009/07/03(金) 01:42:59ID:O2VxaChrglobal $config;
}
とすると関数外の変数をグローバル変数にして取得することが出来ます。
では、classの場合はどう書けばいいのでしょうか?
0314nobodyさん
2009/07/03(金) 01:47:49ID:DH30LmcYなんとか出来そうです
@メールを送信する度に送信日付をdat書き込み
↓
Aアクセス毎に送信日付と現在の日付を比較
↓
B一致しなければメール送信
↓
@へ戻る
0316nobodyさん
2009/07/03(金) 02:08:04ID:O2VxaChrクラスの関数内でglobalを宣言すればいけます。
ただ、それだとクラスの意味はないと思い質問しました。
メンバ変数をグローバル変数にするような事が出来ればいいのですが・・。
0317313
2009/07/03(金) 02:12:24ID:O2VxaChrclass class1{
function class1{
global $config;
$this->config = $config;
}
}
0318nobodyさん
2009/07/03(金) 04:35:44ID:???0319nobodyさん
2009/07/03(金) 06:44:13ID:???普通に受け渡しすりゃいいのに
0320nobodyさん
2009/07/03(金) 09:17:30ID:0BOHJIMnこれってGESTパラメータを受けてXMLを返せばOKってことよね?
0321nobodyさん
2009/07/03(金) 09:18:49ID:0BOHJIMn0322313
2009/07/03(金) 14:10:56ID:O2VxaChrですよねw
>>319
$configはサイト設定に値する配列なのですが、
普通に受け渡しをすると、毎回、$obj->config = $config
のような指定を書かなければいけないし、クラス内の関数じゃなくて
普通のユーザ関数内で使いたいときもあります。
その時にグローバル変数化しておくとどのページでも参照できて便利なんです。
なので、もう一つ上の書き方・効率の良いソースはないかと思い、質問しました。
0323nobodyさん
2009/07/03(金) 15:04:35ID:???http://framework.zend.com/manual/ja/zend.config.html
0325nobodyさん
2009/07/03(金) 23:54:14ID:???static変数はほぼグローバル変数と同じ感じで使える。
http://jp2.php.net/manual/ja/language.oop5.static.php
class Config{
static $hoge;
}
Config::$hoge = 'hogee';
echo Config::$hoge;
0327nobodyさん
2009/07/04(土) 01:11:23ID:LBMY5xnE同じページの最初にジャンプって
出来ますか?
headerは何も書いてないときしか
使えないんですよね?
0328nobodyさん
2009/07/04(土) 01:25:38ID:???0329nobodyさん
2009/07/04(土) 04:06:05ID:???出しちゃったらあとはできちゃったのを待つしかないように・・
ページの途中で、<img onload="やりなおし関数"> を仕込むとかw
チラっとページが見れたと思ったらまたリロード。img の中身はエロ画像な。
0330nobodyさん
2009/07/04(土) 06:51:21ID:???リロードさせたいって意味?
0331nobodyさん
2009/07/04(土) 09:07:22ID:tI0ECBzn0332nobodyさん
2009/07/04(土) 09:14:08ID:???最終出力する関数をつくって、その中で最終的なヘッダを操作するようにすればいい
関数名はコンドームで
0333nobodyさん
2009/07/04(土) 10:58:00ID:???0334nobodyさん
2009/07/04(土) 11:12:34ID:???プログラムの構造化で真っ先に取り組むべきは、画面出力箇所とロジック部分の切り分け(VとMCの分離)なわけだが、そこからしてできていない。
最低でも、echoする箇所は1つの関数内にまとめろ。
んで、その中ではループ処理とisset($var)やif($var)レベルの処理以上のロジックを扱わないようにしろ。
>333
そこまで限定されるとフレームワークっつうよりパッケージソフトだな。もしくはコンサルウェア。
PHPにあるかどうかは知らんが、あったら書いた奴の根性を尊敬するわ。
0335nobodyさん
2009/07/04(土) 16:05:04ID:???http://jp2.php.net/manual/ja/function.header-remove.php
0336nobodyさん
2009/07/04(土) 20:33:01ID:LBMY5xnEいろいろな助言ありがとうございます。
説明が下手でしたね…
echoというか、本当はソケット関数で
通信を行って、5秒後に再度同じ処理を
初めから行いたかったんです。
その場合もheader_removeでいいんでしょうか?
0337nobodyさん
2009/07/05(日) 03:42:21ID:???テキストとして保存するという処理を行うとメモリ容量エラーで終了しません。
50KBぐらいだと普通に処理できるので設計の問題ではないと思われます。
なにか別の方法があるでしょうか?
0338337
2009/07/05(日) 03:44:06ID:S+gPtyj70339nobodyさん
2009/07/05(日) 04:44:02ID:???通常、8Mだから、そんなことやってるとメモリ制約に
ひっかかる可能性がある。php.ini の値を自分で変更
できない環境なら、小出しに中間ファイルなど使って
やっていくしかないかも。
0340nobodyさん
2009/07/05(日) 14:59:44ID:7afKnISw複製した同一ファイルにアクセスがあるのとでは
前者の方が負荷は高くなりますよね?
前に、「PHPでのアクセスならファイルを分けても負荷は変わらない」
と言うようなことを聞いたので、どうだったかな?っと思い質問しました。
0341nobodyさん
2009/07/05(日) 15:13:27ID:???0342nobodyさん
2009/07/05(日) 15:13:41ID:???0343nobodyさん
2009/07/05(日) 15:51:45ID:eOwA/AWQ$contents2 = "ABCDE\n";
file_put_contents(file.txt,$contents1);
file_put_contents(file.txt,$contents1);
とやると、file.txtにはABCDEしか入ってないんですが、
なんでabcdeは入っていないんでしょうか?
0344nobodyさん
2009/07/05(日) 15:56:31ID:???0345nobodyさん
2009/07/05(日) 16:12:10ID:eOwA/AWQ自分では、\nで改行されているので、
上書きされないはずと考えてしまうのですが?
0346nobodyさん
2009/07/05(日) 16:20:12ID:???0347nobodyさん
2009/07/05(日) 16:21:13ID:???>filename が存在しない場合はファイルを作成します。
>存在する場合はそのファイルを上書きします。ただし FILE_APPEND フラグが設定されている場合は別です。
0348nobodyさん
2009/07/05(日) 16:36:03ID:eOwA/AWQわかりました、ありがとうございました!
0349nobodyさん
2009/07/05(日) 18:06:39ID:???前者のほうが僅かに軽くなる。
ただ、体感できるレベルの差ではないので気にしなくていい。
0350nobodyさん
2009/07/05(日) 23:44:16ID:eOwA/AWQ|a|a
|a|a
見たいな感じで、
文字の前に'|'を入力したら表になるようなプログラムを作りたいのですが、
<table></table>をどう処理していいかわかりません。
なにかいいアイディアはないでしょうか?
ちなみにexplodeでtxtファイルから一行ごとに取り出し、
正規表現を使って先頭の'|'を判断し、それをexplodeで分割して、
<td></td>の間に表示するというやり方で作っています。
0351nobodyさん
2009/07/06(月) 00:14:41ID:???なんでそんな入力になるの?
なんでもいいなら、FCKやMCEエディタ入れて、
ユーザーにHTML入力させればいいじゃない。
0352nobodyさん
2009/07/06(月) 00:18:32ID:???0353nobodyさん
2009/07/06(月) 00:52:20ID:MPcI6fKXweb上で使えるメモ帳みたいなものを作りたいので
>>352
preg_replaceですか?
確かに使えそうですね!やってみます!
ありがとうございました!
0354nobodyさん
2009/07/06(月) 02:47:50ID:???で、行頭に<tr><td>
パイプに</td><td>
行端に</td></tr>
終わりに</tbody></table>
explode でいいんじゃねーの?
何が難しいのか分からん。
0355nobodyさん
2009/07/06(月) 16:41:05ID:qPA0wc5K何か問題あったりする・・・よなorz
0356nobodyさん
2009/07/06(月) 16:47:44ID:???0357nobodyさん
2009/07/06(月) 17:05:31ID:???0358nobodyさん
2009/07/06(月) 17:07:03ID:qPA0wc5Kしまったそれだwwww
とりあえず
find ./ -name *.php | xargs chmod 0775
で一括変換してくるよありがとう
0359nobodyさん
2009/07/06(月) 17:22:16ID:???0360nobodyさん
2009/07/06(月) 17:24:15ID:???0361nobodyさん
2009/07/06(月) 17:24:37ID:qPA0wc5K./(ドットスラッシュ)なので大丈夫です><。
見えづらくてごめんよー
0362nobodyさん
2009/07/06(月) 19:30:04ID:Zv6if7aohttp://say-move.org/
0363nobodyさん
2009/07/06(月) 20:07:29ID:???他にjavascript、能力、やる気なども必要。
ちなみに、何か「できないかも」と思う機能があるの?
そういう懸念があるのならそれも併記すべき。
そういうことすら判らないのでとりあえず聞いてみた、
ということなら、あなたには難しいんじゃないだろうか。
0364nobodyさん
2009/07/06(月) 20:29:52ID:Zv6if7aoありがとうございます
javascriptも勉強してみます
0366nobodyさん
2009/07/06(月) 22:19:16ID:???・コンテンツごとのユーザーアップロード・コメント管理
→CMS全般・RDBMS
・動画コンテンツの再生制御
→主流はFlash。ただFlashだとツールが高いので、
SilverLightを勉強するとよろし。FLVは使えないけど、
WMVが使える。
CMSをPHPベースのものにすれば、カスタマイズする
ときにPHPが使えるよ。MT等、静的HTMLを出力する
タイプのCMSだったら、ベースがPerlでもPHPでのコン
テンツ開発ができる。
0367nobodyさん
2009/07/07(火) 10:17:56ID:???0368nobodyさん
2009/07/07(火) 11:42:17ID:???早いしわかりやすい気がするのは僕だけですね
0369nobodyさん
2009/07/07(火) 12:04:41ID:???開発ツールと同期させたり、WMVストリーミングと組み合わせると
MSのサーバー製品が必要になる。けど、Flashみたいな使い方なら
Win鯖なくてもおk
>>368
お決まりのテンプレートが自分の手中にあればいいけど。
ゼロから開発ならCMS使ったほうがいいでしょ。製品によっては、
コーディングを最小限にしてテンプレートと設定だけで実現できるし。
0370nobodyさん
2009/07/07(火) 12:09:35ID:YRT2t6kR0371nobodyさん
2009/07/07(火) 12:24:36ID:???http://www.microsoft.com/japan/msdn/vstudio/Express/
Visual Web Developer Express edition + Silverlight Tools
http://www.eclipse4sl.org/update/
Eclipse + Eclipse4SL
FlashだとSuzukaとかあるけど、使いであるんだろうか。
0372nobodyさん
2009/07/07(火) 12:59:47ID:2bX5okbx/hoge/fuga.php?id=5
で、
/hoge/fuga/id5.php
を表示させたいのですが(動的URLで静的ページを表示)
RewriteRule ^/hoge/fuga\.php?id=5$ /hoge/fuga/id5.php [L]
としても表示してくれません
記述方法が間違っているのでしょうか・・・
0373nobodyさん
2009/07/07(火) 13:39:18ID:???あとRewriteCondは正しいかとか、そもそもRewriteLogはどうなってんのとか。
0374nobodyさん
2009/07/07(火) 13:44:40ID:2bX5okbx?もエスケープしてみましたが同じでした。
RewriteLogはどこで確認すればよいのでしょうか?
0375nobodyさん
2009/07/07(火) 13:50:34ID:???0376nobodyさん
2009/07/07(火) 21:30:03ID:q2UkOan/知りたいです。
session.cookie_lifetimeの値を0にすればブラウザを閉じるまで
セッションが継続することは分かったのですが、どうもこれだけ
ではダメなようです。
session.gc_maxlifetimeの値も関係しているようですが実際どうすれば
永続化できるかが分からないです。
0377nobodyさん
2009/07/07(火) 21:37:39ID:???0378nobodyさん
2009/07/07(火) 22:41:45ID:???0379nobodyさん
2009/07/07(火) 22:55:20ID:???いつまで経っても処理が完了しないページなんて糞以外の何者でもないよな。
0380nobodyさん
2009/07/08(水) 11:39:13ID:???>session.cookie_lifetimeの値を0にすればブラウザを閉じるまで
>セッションが継続する
session.cookie_lifetimeはクライアントが保持するセッションクッキーの生存期間。
session.gc_maxlifetimeサーバー側に保管されているセッションデータの生存期間。
※サーバーがsession.gc_maxlifetimeでごみ掃除するよう設定されていれば、だが。
なお、セッションは永続化すべきでない。
セッションハイジャックのリスクについて調べてみよう。
session_regenerate_idも忘れるな。
セッションハイジャックされても困らないようなものなら、単に寿命を長くしたクッキーに保管すれば良い。
0381nobodyさん
2009/07/08(水) 17:40:20ID:Y5N6FZ0y%%って何?
0382nobodyさん
2009/07/08(水) 17:45:38ID:???0383nobodyさん
2009/07/08(水) 17:58:01ID:Y5N6FZ0y拡張子phpのファイルで%%の表記を見たので気になりました
0384nobodyさん
2009/07/08(水) 18:09:55ID:???0385nobodyさん
2009/07/08(水) 18:29:58ID:Y5N6FZ0yデータベースとなにか関係がありそうな感じのコードになっているのですが…
伝わりにくい説明で申し訳ないです
0386nobodyさん
2009/07/08(水) 18:54:20ID:???0387nobodyさん
2009/07/08(水) 19:01:09ID:???mysql と php で、mysql 内の日付関数使うのに。
sql文の条件更新は sprintf でやっているから。
0388nobodyさん
2009/07/08(水) 19:19:21ID:???mb_send_mailでメールを送り、メールアカウントが存在せずに送れなかった、
等の細かいエラーステータスを取得することはできますか?
もし、PEARやZend Framework等でできるのであれば、それでも構いません。
0389nobodyさん
2009/07/08(水) 19:20:20ID:Y5N6FZ0yひょっとしてSQLの命令文てphpに直接書いて問題なく通るんですか?
>>387
日付関数とは違うと思います
なんというか…
DBから読んだ情報をそのまま表っぽく出力させていた感じでした
0390nobodyさん
2009/07/08(水) 19:23:16ID:???0391nobodyさん
2009/07/08(水) 19:25:35ID:Y5N6FZ0y今それが出来る環境ではなかったので…
申し訳ないです
0392nobodyさん
2009/07/08(水) 19:41:47ID:???どうして目を通そうとは思わないんだろうな。
0393nobodyさん
2009/07/08(水) 20:45:39ID:foGDI8Y6$str1 = "a,b";
$str2 = "a";
$str3 = "b";
$arr1 = array( $str1 );
$arr2 = array( $str2 , $str3 );
echo var_dump( $arr1 );
echo var_dump( $arr2 );
?>
$arr1を$arr2のようにarrayするにはどうすればいいかアドバイスください
0394nobodyさん
2009/07/08(水) 20:48:23ID:foGDI8Y6結果
array(1) {
[0]=>
string(3) "a,b"
}
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
0396nobodyさん
2009/07/08(水) 21:03:17ID:foGDI8Y6できました
ありがとうございます
0397nobodyさん
2009/07/08(水) 22:28:52ID:E0xRJmX/5.2.10はあるのですが、5.3が見つかりません。。
0398nobodyさん
2009/07/09(木) 00:07:17ID:???0399nobodyさん
2009/07/09(木) 01:30:42ID:???SELECT * from TableName where Cullum1=? and Cullum2=?
のようなクエリ文から、プリペアドステートメントを使いながら、レコード数(行数)を取得する方法はないでしょうか?
PDO::prepareを使うと、PDOStatement->rowCountから、SELECT文の行数を返さなくなってしまい、
PDO::queryを使うと、プレースホルダが使えないため、SQLインジェクションに対して弱くなってしまいます。
やはり、PDO::queryとmysql_real_escape_stringを使って、行数を取得するしかないでしょうか?
0400nobodyさん
2009/07/09(木) 01:35:11ID:???0401nobodyさん
2009/07/09(木) 01:45:51ID:???PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって
実行された 直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。
関連する PDOStatement によって実行された直近の SQL ステートメントが SELECT 文の場合、
いくつかのデータベースは文によって返された 行数を返すかも知れません。
しかしながら、 この振る舞いは全てのデータベースで保証されていません。
さまざまな場所で使用するアプリケーションでは、 これに頼ってはいけません。
http://www.php.net/manual/ja/pdostatement.rowcount.php
mysql で LIMIT なら calcfoundrows() かな。
全部持ってきてるなら php でカウントの方が早いんじゃね
0402nobodyさん
2009/07/09(木) 13:20:43ID:???なるほど。PDO::prepareを使って、countするって言う方法もあるんですね。
--------------------------------------------------
$TableName_sql = $dbh->prepare('SELECT * from TableName where Cullum1=:Cullum1 and Cullum2=:Cullum2');
$TableName_sql->bindParam(':Cullum1', $Cullum1);
$TableName_sql->bindParam(':Cullum2', $Cullum2);
$Cullum1 = 1;
$Cullum2 = 2;
$TableName_sql->execute();
$TableName_array = $TableName_sql->fetchAll(PDO::FETCH_ASSOC);
count($TableName_array);
//$TableName_arrayから欲しいデータをforeachなどで取得する
--------------------------------------------------
これで、行数を取得することができました。
クエリがlimit 0, 1であれば、fetchAllをfetchにしてもいいですね。
calcfoundrows()はググってみたのですが、よく分からなかったので(Zend Frameworkの関数?)この方法でやってみようと思います。
ありがとうございました。
0403nobodyさん
2009/07/09(木) 13:34:46ID:zxpsDuOP0404nobodyさん
2009/07/09(木) 14:03:01ID:???0405nobodyさん
2009/07/09(木) 15:34:47ID:???phpunitはPHP5が必要でした。
0406nobodyさん
2009/07/09(木) 15:44:15ID:???0407nobodyさん
2009/07/09(木) 17:01:21ID:???たとえば
class Foo {
function f() {
// ここでクラス名を取得したい
$classname = current_class_name();
echo $classname;
}
}
Foo::F(); //=> Foo
のような感じです。
0408nobodyさん
2009/07/09(木) 17:16:23ID:???0410nobodyさん
2009/07/09(木) 18:47:32ID:???ひょっとしたら <? ?> の代わりに使っているのかもと思った
0411nobodyさん
2009/07/09(木) 19:11:11ID:???0412nobodyさん
2009/07/09(木) 19:53:16ID:???まさかjspというオチじゃないとは思うが
0414nobodyさん
2009/07/10(金) 02:50:37ID:HEyAts5C$data=$_POST["form"];
$time=date("Ymdhis");
$filename=$time.".txt";
$fh=fopen($filename,"w");
fwrite($fh, $data);
このような感じに書いたのですが、特定の字(表など)の前に勝手に\が追加されてしまいます
どうかご教示ください
0415nobodyさん
2009/07/10(金) 02:53:47ID:???的外れかもしれんが、
・PHPスクリプトの文字コード
・フォームが記述されているHTMLの<meta>で記述された文字コード設定
が一致しているかい?
0416nobodyさん
2009/07/10(金) 02:57:01ID:???0417nobodyさん
2009/07/10(金) 06:48:06ID:i3ltcwt5if(get_magic_quotes_gpc()){
$date = stripslashes($date);
}
0418nobodyさん
2009/07/10(金) 12:46:45ID:???0419nobodyさん
2009/07/10(金) 16:24:36ID:umZSlYAS・あらかじめ大量のランダムIDを配列に入れるなりファイルに書いておいて順番に割り振る
・動的にrand()か何かを使って既に割り振ったかどうかを調べて、重複してればもう一回ランダム生成を繰り返し
他にいい方法はないでしょうか?
雰囲気としては無料HPとったときに勝手に割り振られるIDとか、
短縮URLのtinyurl.comみたいに動的な振り方を考えています
0421nobodyさん
2009/07/10(金) 16:55:26ID:???$text = 'aaabcc';
preg_match('/aaa(.*?)c/',$text,$array);
とすると、$array[1]には「b」だけが入ります。
例えば「cの前にbがついていると無効」みたいな設定が出来て
「bc」のみを取得したいのですが、そう言う事って出来るのでしょうか?
0422421
2009/07/10(金) 16:56:37ID:68PKUhMI0423419
2009/07/10(金) 16:59:33ID:umZSlYASありがとうございます、そういう関数があったんですね
0426nobodyさん
2009/07/10(金) 18:20:09ID:???0427421
2009/07/10(金) 19:32:39ID:68PKUhMI的な設定が出来るのかという質問です。
アルファベットの間を取得したいと思った時、
正規表現の文字区切りをどうすればいいか悩み、
「それなら無効にする条件があればいいのでは?」と思って質問しました。
0428nobodyさん
2009/07/10(金) 19:42:14ID:???何もいえんだろう
0429nobodyさん
2009/07/10(金) 22:14:22ID:6BztVKYK$_FILES["hoge"]
のファイルのtypeだったり、sizeって
どっから読み取っているのですか?
例えばイメージファイルで、hoge.jpg
というファイルで、inputのタイプがfileのフォームから
ポストされたときに、一体どこから判断しているのでしょうか。
考えたのが、ファイルそのものにそういう情報が埋め込まれてる?
ということなんですが、これだと簡単に変更が可能なような気もするのです。
例えばsizeに関して言えば、本当は1GBのファイルだけど、
(埋め込まれている(仮 情報は)1MBにしてしまえば
間違って1MBとして判断して処理してしまう、ような感じです。
なのでこれはないような気がするのですが、それだとどこから判別しているのかなぁ、と。
よろしくお願いします
0431nobodyさん
2009/07/10(金) 22:53:48ID:???HTTPプロトコルを勉強しよう。
具体的にはPOSTという処理を行う際に、どのような
データがブラウザからサーバーに送られているか。
http://www.atmarkit.co.jp/fnetwork/rensai/netpro01/netpro01.html
ファイルつきでブラウザからサーバーにPOSTが行
われると、HTTPのBODYという欄に画像のバイナリ
データ(ファイル内容)そのものが記入される。
その記入方法がいろいろあって、ファイル種はブラ
ウザによって記述されたり、記述されなかったり。
430さんの仰る Content-Lengthも、multipart という
方法(form内の複数パラメータを送信するときによく
用いられる)では任意になる。
なので、基本的には、ブラウザからの通知があれば、
ブラウザからの通信メッセージでもらったファイル長さ、
ファイル種を適用する。
そうでない場合もあるし、ブラウザが嘘ついてることも
ある。なので、画像ファイルとして正しいか、画像ファ
イルとして掲載していいかなどを検査するには、一度
アップロードファイルを一時ディレクトリに展開してか
ら、GDなどでチェックするのがいいんじゃないだろか。
0432nobodyさん
2009/07/10(金) 22:54:28ID:???http://www.studyinghttp.net/
0433nobodyさん
2009/07/10(金) 23:10:33ID:3xLtfsMq0434nobodyさん
2009/07/10(金) 23:32:10ID:6BztVKYKなるほど、リクエストメッセージに、
ファイルの概要みたいな情報も乗せることができて、サクサクっとやりとりする
みたいな感じでしょうか。
>その記入方法がいろいろあって、ファイル種はブラ
>ウザによって記述されたり、記述されなかったり。
たしかに、このままだとクライアント側のファイルやブラウザ次第になってしまいそうなので、
おっしゃられるように受け取った実際のファイルを
チェックすることが確実だとわかりました。
まだまだ理解が不足しているのでじっくり掲示してもらったサイトをみて
勉強しようとおもいます
ありがとうございました
0435nobodyさん
2009/07/11(土) 03:08:18ID:ktZCccmb以下のコードで実行すると。
while(!feof($filepointer)){
$fileline = fgets($filepointer);
$fileline2 = fgets($filepointer2);
if(strcmp($fileline,$fileline2)!=0){
echo strcmp($fileline,$fileline2);
echo "[".$fileline."][".$fileline2."]";
}
}
1[abcdefg ][abcdefg ]
1[hijkl ][hijkl ]
1[mno ][mno ]
1[p ][p ]
1[q ][q ]
このようになります。
なにが原因なんでしょうか?
0436nobodyさん
2009/07/11(土) 03:35:30ID:???0437435
2009/07/11(土) 03:40:25ID:???hijkl
mno
p
q
テキスト形式でこんな感じです。
0438nobodyさん
2009/07/11(土) 03:42:15ID:???0439435
2009/07/11(土) 03:55:48ID:ktZCccmb手頃なロダ探すのに時間がかかりました。
申し訳ない・・
アップローダーのCGIに手を加えて、アップロードしたファイルが所定のファイルと合致するかを調べる仕様にしたいです。
320〜360行辺りが手を加えた辺りです。
0440435
2009/07/11(土) 04:02:10ID:ktZCccmb違った場合にはその行を出力しています。
ですね、日本語おかしくてすみません
0441nobodyさん
2009/07/11(土) 04:06:35ID:???abcdefg
hijkl
mno
p
q
--test.php--
<?php
$fp1=fopen('log.txt','r');
$fp2=fopen('log.txt','r');
while (!feof($fp1)) {
$line1 = fgets($fp1);
$line2 = fgets($fp2);
if (strcmp($line1, $line2 ) != 0) {
echo strcmp($line1, $line2);
echo '[' . $line1 . '][' . $line2.']';
}
}
で実行してみたけど同じと判定されるよ
0442435
2009/07/11(土) 04:12:15ID:ktZCccmb$fileline = rtrim(fgets($filepointer));
$fileline2 = rtrim(fgets($filepointer2));
としたら期待した動作になりました。
勝手に入れられたスペースが怪しかったのかも・・・
こんな時間にありがとう御座いました。
0446nobodyさん
2009/07/11(土) 14:24:39ID:MrwFrSXN現在のファイルに記述されている関数を呼び出すことって出来ますか?
やりたいのは、ユーザーが操作したら、現在のページで作った変数の値のデータを
そのまま、自身のURLにPOSTして、現在のページを再読み込みしたいのです。
0448nobodyさん
2009/07/11(土) 15:33:50ID:MrwFrSXNHiddenしりませんでした、ありがとうございます。
0449nobodyさん
2009/07/11(土) 16:05:06ID:???【PHPのバージョン】php5.26
【連携ソフトウェア】なし
【質問内容】
PHPで画像を表示するWebページを作っているのですが、質問があります。
目次のページを作り、見たい画像の一覧を作って、一覧から画像を選択すると
そこにジャンプし、ジャンプ先には画像とその画像が載っている本の表紙が表示されるという
ページを作りたいのですが、どうもうまくいきません。
考えているのは、目次のページのリンクでは、クエリ文字配列で、以下のように設定をし、
※擬似コードっぽくなってます。
# imgid 画像名を読み込み、格納
<a href="gazou.php?imgid=$imgid">$imgid</a>
ジャンプ先では、
# 表紙画像 hyousi.$imgid.jpg
<img src="$imgid.jpg">
<img src="hyousi.$imgid.jpg">
といった風に、目次ページの$imgidを読み込んで、
ジャンプ先の画像表示ページでは$imgidに沿った画像を表示させるというページを作りたいです。
どのようにすれば、目次ページでクエリ文字列とIDを設定でき、ジャンプ先のページに値を渡すことができるのでしょうか?
長文失礼致します。
0451nobodyさん
2009/07/11(土) 16:07:13ID:EDbsXnZV【PHPのバージョン】php5.26
【連携ソフトウェア】なし
【質問内容】
PHPで画像を表示するWebページを作っているのですが、質問があります。
目次のページを作り、見たい画像の一覧を作って、一覧から画像を選択すると
そこにジャンプし、ジャンプ先には画像とその画像が載っている本の表紙が表示されるという
ページを作りたいのですが、どうもうまくいきません。
考えているのは、目次のページのリンクでは、クエリ文字配列で、以下のように設定をし、
※擬似コードっぽくなってます。
# imgid 画像名を読み込み、格納
<a href="gazou.php?imgid=$imgid">$imgid</a>
ジャンプ先では、
# 表紙画像 hyousi.$imgid.jpg
<img src="$imgid.jpg">
<img src="hyousi.$imgid.jpg">
といった風に、目次ページの$imgidを読み込んで、
ジャンプ先の画像表示ページでは$imgidに沿った画像を表示させるというページを作りたいです。
どのようにすれば、目次ページでクエリ文字列とIDを設定でき、ジャンプ先のページに値を渡すことができるのでしょうか?
長文失礼致します。
0452nobodyさん
2009/07/11(土) 16:07:56ID:EDbsXnZV専ブラのsageチェック外すの忘れていました。
すいません。
0453nobodyさん
2009/07/11(土) 16:11:56ID:BAvUHxXp何か質問の意味がわかるようでわからない
目次で
<a href="image.php?imgId=1">1</a>
<a href="image.php?imgId=2">2</a>
<a href="image.php?imgId=3">3</a>
<a href="image.php?imgId=4">4</a>
<a href="image.php?imgId=5">5</a>
表示で
<img src="<?php echo $imgid; ?>.jpg" />
<img src="hyousi.<?php echo $imgid; ?>.jpg" />
じゃだめなん?
0454nobodyさん
2009/07/11(土) 16:22:16ID:EDbsXnZVレスありがとうございます。質問分かりにくくてすいません。
画像ファイルの数が多いため、目次ページでは
テキストに別途まとめた画像ファイル名の一覧を読み込んで、
それを単純に出力表示させるようにしています。
なので、目次ページで
<a href="image.php?imgId=1">1</a>
<a href="image.php?imgId=2">2</a>
番号続く
という風に書くことができません。
所有しているPHPの教本では、クエリ文字列を使って値を渡すのは
formじゃないと無理的な事が書かれているので…。
このWebページみたいに、ttp://php.thm.jp/index.php
ひとつのPHPでコンテンツだけ色々変わるという風にしたいのですが。
0455nobodyさん
2009/07/11(土) 16:57:04ID:???$dir = "/home/erosuke/images/";
$mode = $_GET["mode"];
if(strcmp($mode,"index")){
目次HTML出力コード
}
if(strcmp($mode,"showimage")){
if( $_GET["ファイル名"] があったら){
画像データ送信
}else{
エラー処理。ブランク画像送るとかでも
}
}
よくわからんけどこんなの?
クエリ文字列の渡し方は、URL欄のパラメータと
して表示されるGETという方法がある。
POSTでも、画像参照元のHTMLにForm書くだけ
だからそれほど難しくないぞ。
つーかHTTPは勉強しとこうぜ。
http://www.studyinghttp.net/
0456nobodyさん
2009/07/11(土) 17:08:21ID:EDbsXnZVレス、ありがとうございます。
参考にしてやってみます。
Webプログラミングは最近始めたもので、HTTPの知識皆無で申し訳ありません。
参考になるWebサイトの紹介もありがとうございます。
また何かありましたら書き込みをしたいと思います。
0457nobodyさん
2009/07/11(土) 17:16:51ID:MrwFrSXN今ローカルで動くかテストして、アップロードしてみたんですけど
サーバ上では上手く動かないみたいです(途中から何も出力されなくなりました)
file_get_contents
unserialize
mb_strimwidth
mb_convert_encoding
こういった関数を呼び出している部分です、このような関数は対応していないというか
許可していないレンタルサーバって多いのでしょうか?
0458nobodyさん
2009/07/11(土) 17:19:44ID:BAvUHxXp何も表示されないのはエラー処理がOFFになってるだけ
あとレン鯖に入ってるPHPのバージョンとかも確認汁
0459nobodyさん
2009/07/11(土) 18:45:45ID:???PHPのバージョン情報とかは絶対レン鯖のFAQだからまずそっち調べろカス
0460nobodyさん
2009/07/11(土) 21:41:38ID:EDbsXnZVすいません。
>>455を参考にページを作っているのですが、上手くいきません。
クエリ文字配列で、表示するWebページに飛ぶことができません。
http://s1.muryo-de.etowns.net/~seancovey/
こういった動作をphpでできるようにしたいのですが、上手くいきませんでした。
http://s1.muryo-de.etowns.net/~seancovey/sample/
0461nobodyさん
2009/07/11(土) 23:25:33ID:EDbsXnZV皆さん、ありがとうございました。
0462nobodyさん
2009/07/12(日) 05:19:16ID:wh3eRKvydisplayerrorOFFでこういう場合issetを使う必要はあるのでしょうか?
見えなくても警告が出ないように書いておいた方が速度も早いのでしょうか?
よろしくお願いします。
0463nobodyさん
2009/07/12(日) 07:51:57ID:???0464nobodyさん
2009/07/12(日) 08:18:43ID:???0465nobodyさん
2009/07/12(日) 08:58:12ID:???0466nobodyさん
2009/07/12(日) 11:40:20ID:???if(!empty($hoge))
if($hoge != "")
if($hoge <> "")
どれが一番良いの?
0467nobodyさん
2009/07/12(日) 11:44:58ID:???($hogeが初期化されていない事がある、という前提で)
そしてNoticeを切っていると、もっと複雑な場所のバグに気づかなくなるかもしれない。
エラーメッセージなしでコーディングするのは、懐中電灯だけで暗闇を歩くようなもの。
電気のスイッチが壁にくっついてるなら、点けておくに越した事はない。
速度は気にしない。
バグを未然に防ぐ事と、0.1msにも満たない処理速度の向上を天秤にかけて、後者を取るのは無能なアマチュアだけ。
つうか、そんな細かい処理の速度が気になるような状況なら、そもそもPHPを使う、という事自体大間違いだしな。
書き方で迷った時は、基本的に常に「速度が速いか」じゃなくて「バグを見つけやすいか」「コードを読みやすいか」で判断するべき。
>466
そもそも意味が違う。
$hogeに0、null、空文字列("")を代入した場合、$hogeを初期化しない場合、の4パターンで実行結果がどう違うか試してみれ。
0468nobodyさん
2009/07/12(日) 12:08:06ID:???訳がわからなくなったとか言ってたりするのはもう見てらんない
0469nobodyさん
2009/07/12(日) 16:05:02ID:D+DGjsUg>>459
ありがとうございます、ところがFAQにもどこにも乗っていないんですよね・・・。
ちなみにここttp://www.i-paradise.nu/です
どちらにせよ今の関数が使えないということは諦めないとダメですよね?
代替用の関数とかありませんよね?
0470nobodyさん
2009/07/12(日) 16:29:39ID:???どこがおかしいのでしょうか。。
<?php
include_once "config.inc.php";
i18n_http_output("pass");
header("Content-type: image/jpg");
echo "<html><body>";
echo "<img src='";
readfile(_HOGE_DIR."123.jpg");
echo "' />";
echo "</body></html>";
?>
定数_HOGE_DIR は保存用ディレクトリ /var/www/hoge/を出力 します
画像のパーミッションは644でも755でもダメでした
よろしくお願いします
参考にした情報はここの一番下です
http://www.stackasterisk.jp/tech/php/php02_01.jsp
0471nobodyさん
2009/07/12(日) 17:10:22ID:???>
> echo "<html><body>";
お前は何をやってるんだ
0472nobodyさん
2009/07/12(日) 17:14:16ID:eWzEgYjhホントすみません。今、変だとおもって
imgOutput.php
---------------------------
<?php
i18n_http_output("pass");
header("Content-type: image/jpeg");
readfile("/var/www/hoge/123.jpg");
?>
img.html
---------------------------
<html>
<body>
<img src="imgOutput.php" />
</body>
</html>
に分割しました。が、画像欠けマークが出ます
なんででしょうか
0473nobodyさん
2009/07/12(日) 17:15:30ID:???を開いてみ
0474nobodyさん
2009/07/12(日) 17:24:01ID:eWzEgYjh何も出力されないです。。
パスがおかしいのかなぁ
ソースも真っ白だし、 パーミッションの問題でしょうか?
hogeディテクトリは755です
0475nobodyさん
2009/07/12(日) 17:46:13ID:???0476nobodyさん
2009/07/12(日) 17:49:29ID:eWzEgYjhどひゃー! うまくいきました!
これで作業が進みます、ありがとうございました!
あの一行は何だったんでしょうか、意味もわからず書いてましたが
0477nobodyさん
2009/07/12(日) 17:58:56ID:???0478nobodyさん
2009/07/12(日) 22:55:44ID:???0480nobodyさん
2009/07/13(月) 10:49:55ID:???文章の流れからするとそれっぽいんだけど、
>例えば「cの前にbがついていると無効」みたいな設定が出来て
>「bc」のみを取得したい
って、「bcがないときにbcを取得したい」って読めるんだよ。
俺が馬鹿なだけだったらすまん。
0482nobodyさん
2009/07/13(月) 12:35:32ID:YQaPJde3のImageCreateFromBMP関数とかユーザ定義関数がないとGDでbmpファイル取り扱えないの?・・
ImageCreateFromPNGでもbmpはいけます、
みたいのをどっかでみたんだけど・・
よろしくおねがいします。
0483nobodyさん
2009/07/13(月) 12:43:59ID:???別にユーザー関数でいいじゃない?
0484nobodyさん
2009/07/13(月) 14:37:17ID:???動作はするのにEclipseがエラー吐くのでキモイです…。
$user->list();
みたいな。
0485484
2009/07/13(月) 14:41:02ID:dllOgc2X0486nobodyさん
2009/07/13(月) 15:47:57ID:???管理者画面に入ろうとすると真っ白なページが一瞬読み込まれてその後トップページに戻ってしまいます。
ここで質問することなのか分かりませんがどなたか助けてくださいませんか?
0487486
2009/07/13(月) 15:49:20ID:OhNG2SXCちなみにDLしたのはPHPウェブログシステム3.1です
0488nobodyさん
2009/07/13(月) 15:54:47ID:???0489nobodyさん
2009/07/13(月) 15:58:04ID:???管理画面ってことはクッキーまわりとかじゃないのかな
クッキー発行できなかったらトップに飛ばす処理とかしてそう
((まぁ普通はクッキーONにしてくださいって出すだろうから違うかもしれないけど)
ブラウザの設定は問題ない?
0490486
2009/07/13(月) 16:06:28ID:OhNG2SXC>>488
見てみたら 「CGI TerminateProcess 4856 error 5」とエラー出てました
調べてみたらエラーコード5はアクセス拒否らしいんですが心当たりがないです・・
>>489
クッキーはONです。
0491nobodyさん
2009/07/13(月) 16:20:00ID:???設定でどうにかなるか知らないけどEclipseの設定でどうにか汁
とりあえず定義しちゃいけないなんてことはない
ただ避けたほうがいいとは思う
何をするメソッドか知らないけどlistってメソッド名はちょっとどうかと思う
set get add append remove clear findとか前になんかつけたほうがいいんじゃないかと思う
0492484
2009/07/13(月) 16:54:04ID:dllOgc2Xありがとうございます。
どうにかしてみようとしましたが、たぶんどうにもならないようです。
いろいろ検証したところ、
microtime()などのメソッド名ではエラーにならないので、
どうやら「標準関数と名前が重複しているからエラー」ではなく、
「(標準関数と誤解した上で、)代入先なし&引数なしの文法エラー」のようです。
(かといってmicrotime()の場合になぜ誤解しないのか不明ですが)
というわけで、PHPではなくEclipseのQ&Aになってしまいました。
すみません。
// list()という名前については、
// まぁ本格コーディングの前のプリコードなので実際には変えると思いますが、
// 今後、本番で遭遇しないとも限らず、きもちわるいと思って質問させていただきました。
0494nobodyさん
2009/07/13(月) 17:47:02ID:OhNG2SXCwinXPSP3+AnHTTPD+PHP5.3です
winでの鯖運用はトラブルが多いと言われているのは知っていたんですが、
気まぐれではじめたものでしたので、、それにまさかこんな小さなことでもトラブるとは思ってませんでしたorz
ブログはレンタルサーバではじめようと思います これ以上はスレ違いになりそうですし、、
0495nobodyさん
2009/07/13(月) 18:06:43ID:???まあレンタルサーバではすんなり動くと思うし使い方、設置の質問だとスレ違いな気も。
0496nobodyさん
2009/07/13(月) 18:14:17ID:OhNG2SXCですよね。スレ汚し申し訳なかったです。
レスしてくださった方々ありがとうございました。
0497nobodyさん
2009/07/13(月) 19:27:58ID:???というのを簡単に実装できるライブラリみたいのないでしょうか?
ぐぐったらありそうだったけど見つからなかったので
0499nobodyさん
2009/07/13(月) 19:57:05ID:???0501nobodyさん
2009/07/13(月) 22:31:08ID:???listは関数ではなく言語構造。
0502nobodyさん
2009/07/13(月) 22:43:39ID:aQVGItnX$var2 = "<a href=\"".$var."\">link</a>";
print $var2
というような処理をしてて、htmlとして$var2のaタグを出力してるんですが
そのhtmlが
hoge.php?width=100&height=100 となって正しく処理できないことがあります
(期待通り hoge.php?width=100&height=100 となることもある)
どうしたら良いですか?
0503nobodyさん
2009/07/13(月) 22:54:48ID:aQVGItnX間違えてる方の表記は width=100 &.a.m.p.; height=100 ってなります
(勝手にserializeがかかった状態?になってる)
*ampの間の「.」は無視してください
どうしたら良いんでしょうか?
0504nobodyさん
2009/07/13(月) 23:00:59ID:???何回かやって違う結果が出るということならなにか勘違いしてるか壊れてるかだろうね
0505nobodyさん
2009/07/13(月) 23:11:56ID:aQVGItnXどうもありがとうございます
もう少し確認してみます
0506nobodyさん
2009/07/13(月) 23:18:55ID:???0507503
2009/07/14(火) 01:43:49ID:+BJ8SPET0508nobodyさん
2009/07/14(火) 02:44:11ID:???0509nobodyさん
2009/07/14(火) 10:39:27ID:???0510nobodyさん
2009/07/14(火) 12:02:12ID:lTtAPwXi某管理システムの作成を依頼されました。
しかし、そのシステム自体はスタンドアローンのみで使用するということでした。
後DBもフリーのもの(未確定)を使用して欲しいとのこと。
技術的には可能であるけど、導入する際の手間もありますし
スタンドアローンならPHPじゃなくて、VBAでも良さそうに思えます。
依頼先にそう伝えたいと考えているのですが、私の見方はおかしいでしょうか?
0511nobodyさん
2009/07/14(火) 12:05:34ID:???客が何の目的でフリーのシステムを要望しているのかわからんじゃないか。
ある程度LinuxやBSDのインストールや設定ができる人が客先にいて、必要
とあらば規模拡張が自分でできる、ということなら、フリーのツールで揃える
のは悪くない。
MSのツールの方が開発効率がいいなら、初期導入に必要な機材、ソフトの
コスト、開発コストを上げて比較して先方に提案するのがいいんじゃないか。
スタンドアロンなら、OOoのDBを使うって手もあるぞ、要件が合致してるなら。
0512510
2009/07/14(火) 12:25:39ID:lTtAPwXi返信有難うございます。
依頼先とは長い付き合いですが、Linux、BSDのインストール、設定が出来る人はいません。
また、管理システムを提供する先にいるかは後ほど確認してみようと思います。(多分居ないと思います)
0513nobodyさん
2009/07/14(火) 12:52:46ID:pcPGspml動画の変換というプロセスに関しては
コマンドラインで動作する外部プログラムを使用してexec関数などで変換するのでしょうか?
PHPで何か簡単に変換できるようなマルチメディア関数みたいのってないですかね?
動画形式はflvかoggあたりがいいのですが
0514nobodyさん
2009/07/14(火) 14:02:52ID:???タイムアウトあると思うから、一時ファイルなり、DBなりを使って、
別プロセスで変換プロセスをキックするのがいいんじゃないかな。
0515nobodyさん
2009/07/14(火) 15:23:52ID:bh9ZWFGS$query = "select * from foo_bar_table";
$res = mssql_query($query, $db);
$row = mssql_fetch_row($res);
mssqlを使ってるのですが、取得した文章が途中で切れてしまいます。
なぜでしょうか?
300文字くらいあるのが、150文字くらいで切れてしまいます。
0516nobodyさん
2009/07/14(火) 15:50:50ID:ToMbC0F2tinytext(256バイト)のカラムが日本語128文字くらいで切れてるとかじゃなくて?
0517nobodyさん
2009/07/14(火) 15:51:58ID:???ひとまず思いつくのは
・実際はカラム型の文字数が足らなくて150文字くらいしか入ってない
・なんか途中に特殊な文字が入っていて切れてる
ぐらいしか思いつかなかった。
役に立ちませんかすいません。
まずはそこから確認してみては・・。
書いてるうちに>>516さんが書いてるわ。
>>516も言っているがカラム型からチェックを進める。
0518nobodyさん
2009/07/14(火) 15:55:34ID:???0519515
2009/07/14(火) 15:57:50ID:bh9ZWFGSnvarchar(4000)
でテーブルにはちゃんと文字列が入ってます。
php.iniにもそんな制限ないです.デフォルト値を用いています。
0520nobodyさん
2009/07/14(火) 16:07:47ID:???こういうケースとか?
0523515
2009/07/14(火) 16:39:52ID:???違います
今分かったのはテーブルにinsertするのも115文字しかできません。
windows server 2003 SQL server 2005 php ver 5.2.x
0524nobodyさん
2009/07/14(火) 16:42:25ID:???518 名前: nobodyさん [sage] 投稿日: 2009/07/14(火) 15:55:34 ID:???
300あることと、150で切れてるのはどうやって確認した?
0525nobodyさん
2009/07/14(火) 16:43:19ID:???「あ」は 2byte だけど 1 文字、みたいな。
0526515
2009/07/14(火) 16:48:28ID:???0527nobodyさん
2009/07/14(火) 16:57:52ID:ToMbC0F2>>515氏の直面している問題以上に>>515氏本人が手強い相手であることがわかった(笑)
1. insertでも115文字しか入らないなら、300文字あるはずの既存データはどうやって入れたの?
入ったのは日本語で115文字?既存の300文字は日本語?ちなみに文字コードは?
全部半角のASCII文字でも115文字?2倍の230文字?ひょっとして256文字?
2. selectで150文字程度、insertで115文字の意味するところは?
毎回115文字?文字列の中身(全角半角比率など)によって誤差がけっこうある?
誤差があるとはいえselectのほうがたくさん文字が入るのは確かだったり?
投げたselect文とinsert文を差し支えなければフルで見せてほしい。
とか。
0528nobodyさん
2009/07/14(火) 17:02:12ID:???ID出したほうがいいよ、混乱するし。
あと
nvarchar(4000)
であることをどうやって確認したのかも一応聞いておきたい。
0529nobodyさん
2009/07/14(火) 17:02:21ID:NN1hGdEX糞過ぎて泣きそうになると気ないですか?
0530nobodyさん
2009/07/14(火) 17:06:17ID:ToMbC0F2可能なら、$rowをその後どう扱って「150文字くらい」を表示させたのかまで書いてほしい。
- いつか alter table したつもりなだけで実際には256だったりするのではないかと疑ってみたり…
- 4000じゃなくて400だったり…
SHOW COLUMNS FROM foo_bar_table;
を試してみてほしい。可能なら。
0531nobodyさん
2009/07/14(火) 17:12:05ID:???SQL文の応答とかみてみてはどう?>>515
>>529
いやぁ、作ったものは、なんだか愛着あって嬉しいよ。
実装がひどいってのはあるけどなw
逆に、こういうところ苦労してたんだ、と知ることで、
もっと堅実な、またはもっと効率のいい設計や、製作方法
を勉強する機会になったりもすると思う。
0532515
2009/07/14(火) 18:42:20ID:bh9ZWFGSみなさんありがとうございました。
0533nobodyさん
2009/07/14(火) 19:04:31ID:???0534nobodyさん
2009/07/14(火) 21:09:07ID:O9yJ0RDj君が成長してる証だよ
0535nobodyさん
2009/07/14(火) 23:20:43ID:???半年前の自分のコードを見直して糞だと思えないなら、その方がよほど問題。
なんとかしたいなら、ファウラーの『リファクタリング』でも買って読め。
0536529
2009/07/15(水) 00:11:00ID:VnFaQFKD2〜3年前に作ったプログラムが糞過ぎて涙目でしたw
テンプレート(HTML部分)と処理するPHPが混雑してて見難かったり
変数名や表示名がわかりづらかったり、色々あります。
とりあえず、修正する上でセキュリティ向上を意識して
直せる限り直したいと思います。
0537nobodyさん
2009/07/15(水) 00:13:57ID:???0538nobodyさん
2009/07/15(水) 00:17:24ID:???0539nobodyさん
2009/07/15(水) 00:50:15ID:???満足感が欲しいのかどっちなんだ
0540nobodyさん
2009/07/15(水) 01:45:37ID:???virtual host毎にinclude_pathを設定したいので
vhost毎に php-cgi.exe -b 127.0.0.1:%PORT% -d include_path="."
とかやってますが、これ以外に方法ないでしょうか。
起動はバッチですればいいんですが、vhostが増えると保守も面倒だし
その分だけ起動されちゃうのでイマイチ感が満天です。
PHPRC環境変数にphp.iniのパスを設定しても読んでくれないし、
-d include_path だと複数パスの指定に問題があるしで。
apache でいう php_value include_path とかできれば幸せなんですが
どなたかいい方法ご存じでしたらお願いします。
0541nobodyさん
2009/07/15(水) 05:10:47ID:???オブジェクト指向パラダイムを理解しているやつはそんなこと思いもしないよ
自然と書いてるもの
そもそもオブジェクト指向でしか設計できない言語もあるわけで
そういうところから来た人間はわざわざ手続き型でやるなんてことはしないでしょ
設計思想を理解していないやつが無理に書いてるという話ならば
オブジェクト指向を理解するには通らないといけない道だから
熟練者には失笑ものでも生暖かく見守ってやらないといけない
0543nobodyさん
2009/07/15(水) 13:50:45ID:yniO2VZrこの外部phpファイルが構文エラーでも停止させない方法はありませんか?
requireと違いincludeはファイルが無くても停止しないけど、
それでも構文エラーだと停止してしまいます。
構文エラーで停止させたくない理由は、この外部phpファイルは、
システム稼動中に例外的な理由で修正する必要があるが、
その修正にミスっても完全停止まではさせたくないからです。
0544nobodyさん
2009/07/15(水) 13:52:04ID:???0545nobodyさん
2009/07/15(水) 13:55:04ID:yniO2VZrそれでも、括弧の対応ミスで、tryブロックのそのものの
最後の括弧が足りないというミス等は防げないと思いますが?
0546nobodyさん
2009/07/15(水) 13:59:07ID:???つーか、include するモジュールは、最低限
構文チェックくらいやっておいた方がいいと思うぞw
0547nobodyさん
2009/07/15(水) 13:59:48ID:yniO2VZrやっぱりだめでした。
0548nobodyさん
2009/07/15(水) 14:02:41ID:???0549nobodyさん
2009/07/15(水) 14:02:56ID:yniO2VZrやっぱりムリですか。
> つーか、include するモジュールは、最低限
> 構文チェックくらいやっておいた方がいいと思うぞw
ふぇ〜るせ〜ふ ってやつですw
なんかのフレームワークや(PHP構文が使える)CMSなんかで
ユーザーが入力したPHPコードを含む文章に構文エラーがあったときに、
分かりやすいメッセージかなんかを表示しているのがありそうだと思ったんですけどね。
0550nobodyさん
2009/07/15(水) 14:04:01ID:yniO2VZrPerl使えるからって、いーばるな!
0551nobodyさん
2009/07/15(水) 14:05:58ID:???549の要望なら、指定ファイルを読み込んで、その内容に、
動的な値を追加して、try しつつ eval 実行して結果を返す
ような拡張モジュール専用関数や専用クラスを作ると便利
かもしれない。
http://www.phppro.jp/phpmanual/php/function.eval.html
0552nobodyさん
2009/07/15(水) 14:06:13ID:yniO2VZr構文エラーチェックってのは思いついたんで
それ以外でお願いします。
0553nobodyさん
2009/07/15(水) 14:09:39ID:yniO2VZr0555nobodyさん
2009/07/15(水) 15:07:53ID:???http://php.benscom.com/manual/ja/function.uniqid.php
0556nobodyさん
2009/07/15(水) 20:06:04ID:???想像されてもいい値ならオートインクリメントだっていいぐらいだ
0557nobodyさん
2009/07/15(水) 20:56:47ID:???uniqid が楽だと思うけど
0558nobodyさん
2009/07/15(水) 20:58:59ID:???登録後じゃないとIDが出てこないという欠点はあるが。
でなきゃ、uniqid だね
0559nobodyさん
2009/07/15(水) 21:08:05ID:???0560nobodyさん
2009/07/16(木) 03:37:05ID:???直接データベースに入れればいいけど、
単に重複しない値を得るだけならuniqidの方が楽だろw
関数一個でいいんだぜ。
関数一個ですむことを負荷増やしてまでデータベースでやるとか
あほらしいw
0562nobodyさん
2009/07/16(木) 06:08:55ID:uYVqD/1s何かアドバイスくださいませ。
0563nobodyさん
2009/07/16(木) 09:19:39ID:???0564nobodyさん
2009/07/16(木) 09:47:57ID:???鯖側でIPを記録する
とかしてカウントする
クッキー(セッション)は消せるしIPも多くの人ならすぐに変えられるから
完全な対策は無理
ファイルのサイズを調べる関数はfilesize()
0565nobodyさん
2009/07/16(木) 13:11:50ID:uYVqD/1sありがとうございます。
なるほど・・
ipを記録する方法でやってみようと思います。
一応phpでipを記録する方法で考えてみたのですが、
0.データにアクセス
1.filesize()で○bytes以上であれば以下を実行
2.ip取得
3.記録されている(ダウンロード中の)ip全てを参照して、2で取得したipがあれば弾く
4.2で取得したipが一致しなければ、このipを記録
5.データをダウンロード開始
6.データのダウンロード終了、もしくわ途中で終了したりすれば記録したipを消去
で、いきなり3で詰まってしまいました・・
4で記録するipを3で参照するつもりで、
記録しておきたいのは、データのダウンロードしている間だけなんです。
でもこの”間だけ”という操作をどうすればいいのかよくわかりません(6のデータ転送”終了時”の判断方法も)・・
そもそも1〜6の操作が的外れかもしれませんが
どなたかよい方法を教えてくださいよろしくお願いします。
0566nobodyさん
2009/07/16(木) 13:14:57ID:uYVqD/1sデータのダウンロード中に、さらに同一ipからデータをダウンロードされる、、ということです、説明不足でしたすいません
0567軟式PHP
2009/07/16(木) 13:16:31ID:???mod_limitipconnとか使えないのかいな。
0568nobodyさん
2009/07/16(木) 13:18:30ID:iIDXJDL1ダウンロードボタンクリック→JavaScriptでボタンをdisabledにする
0569nobodyさん
2009/07/16(木) 13:31:14ID:uYVqD/1sなるほど、でも新しくページをリロードされたりクッキーとかと同じでやはり代えられてしまうのでしょうね
>>567
いえ、大丈夫です。
mod_limitipconn調べてみました、流し読みですが
なんとかできそうかもしれませんありがとうございました
0570nobodyさん
2009/07/16(木) 13:32:54ID:uYVqD/1sしかしながら、多重クリックで未然に防ぐことができるのではと思いました
ありがとうございました
0573nobodyさん
2009/07/16(木) 15:11:07ID:???大量のデータから重複のチェックなんてDBの十八番じゃないか
0574nobodyさん
2009/07/16(木) 15:37:23ID:NM9P6RACmb_ereg_replace("\"",'',$line);
とやっても消えません。
どうやったら良いのか、誰か教えてください。
0575nobodyさん
2009/07/16(木) 15:45:38ID:???0576nobodyさん
2009/07/16(木) 15:45:54ID:???ちなみにその例ではmb_ereg使わなくてもstr_replaceでいいと思うけど
コード
<?php
$text = 'The person said "Working is losing of life."';
echo mb_ereg_replace("\"",'',$text);
結果
The person said Working is losing of life.
0577nobodyさん
2009/07/16(木) 15:53:53ID:NM9P6RAC>>576
有難うございます。
でも、やっぱり削除されません。
何が原因なんでしょうね、これは…
0578nobodyさん
2009/07/16(木) 15:56:20ID:???0579nobodyさん
2009/07/16(木) 15:57:42ID:???用途なら、>>419に書いてあるじゃんw
だいたいランダムな値って言っているのに、
連番を答えるやつは頭が悪いね。
0581nobodyさん
2009/07/16(木) 16:08:06ID:NM9P6RAC有難うございます。一度違うやり方でやってみます。
0582nobodyさん
2009/07/16(木) 16:12:57ID:???答えてるやつは重複しなけりゃいいだっていう理論をもとに
質問者の求めてる「一般的ないい方法」を言ってるに過ぎないよ
ランダムな値を管理するには結局DB使うんでしょ?
ならオートインクリメントでもいいんじゃないの?っていう話
0583nobodyさん
2009/07/16(木) 16:16:09ID:???0584nobodyさん
2009/07/16(木) 16:18:29ID:???0585nobodyさん
2009/07/16(木) 17:08:56ID:???0586nobodyさん
2009/07/16(木) 17:39:57ID:???0587nobodyさん
2009/07/16(木) 17:43:16ID:???0588nobodyさん
2009/07/16(木) 18:02:35ID:wZUMSXTz俺昨日駅で拾った
0589nobodyさん
2009/07/16(木) 18:05:33ID:???0590nobodyさん
2009/07/16(木) 18:10:45ID:???> ランダムな値を管理するには結局DB使うんでしょ?
なんで決め付けてるわけ?
そんなの要件に合った?
ファイル・ディレクトリかもしれないじゃんか。
0591nobodyさん
2009/07/16(木) 18:18:27ID:???0592nobodyさん
2009/07/16(木) 18:37:36ID:???用途がわからないことにはなんともいえないが
例にあげたようなアプリケーションでその言い分は苦しいよ
どこのレンタルサービスがそんなのファイルで管理してると思う?
0593nobodyさん
2009/07/16(木) 18:47:19ID:wiET9Ah7レンタルサーバーを定期更新したいと思い
centOS php5の自鯖から
$conn = ftp_connect( $ftp_server,21,60 );とやったところ
どんなサーバーへも接続できません
何か根本的なところが抜けているとは思うのですが
なにを確認するのでしょうか? phpのコンフィグで --enable ftpにはなっています
0594nobodyさん
2009/07/16(木) 18:47:45ID:???ランダムな値が必要とされているなら、
uniqid使うのが手っ取り早いし効率がいいでしょ?
それとも簡単にランダムな値を生成してくれるDBがあるとでもいのかな?
DBに格納しても重複されない値が得られるだけ。
それは決してランダムな値ではない。
0595nobodyさん
2009/07/16(木) 18:54:19ID:???rand()関数使って、ランダム(かもしれない)な値を生成。
それを主キー(プライマリーキー)か一意制約(UNIQUE)をつけたフィールドにいれる。
なお主キーにnullを入れて格納しても、連番になるので要求を満たさない。
そしてデータベースに入れて、エラーになれば、
再度rand()関数を実行して、ランダムな値を生成して格納する。
この処理を繰り返す。
俺ならすなおにuniqid()使うw
0596nobodyさん
2009/07/16(木) 19:06:29ID:wZUMSXTz0597nobodyさん
2009/07/16(木) 19:16:38ID:9yCTA3Ep今はよく使う関数はユーザー定義関数でまとめてるし、それで事足りています。
よく、「車のエンジンやギアなど中の精密な構造まで知らなくても
運転の仕方が分かれば車は乗れる」とかたとえ話するばか
みす。する方がいらっしゃいますが、それでは分かりません。
具体的に教えてください。
0598nobodyさん
2009/07/16(木) 19:32:20ID:???DBでも乱数の生成は可能だが重複する可能性のあるただの乱数をキーに使うのはご法度
DBの算術関数操作だけで重複しないまともなキーを作成するのは可能かもしれない
自分は数学詳しくないんで具体的なやり方はわからないけど
ただそんなご苦労なことやるぐらいならすでに用意されているものを使うべき
車輪の再発明だっけか?
DBでできることはやったほうがいいとはいうが限度ってものがある
プログラム側で簡単に実現できるならそっちを使ったほうがいい
パスワード突っ込むときだってプログラム側でハッシュ関数にかけてるのと同じこった
0599nobodyさん
2009/07/16(木) 20:04:06ID:???0600nobodyさん
2009/07/16(木) 20:12:22ID:???0601nobodyさん
2009/07/16(木) 20:59:10ID:wZUMSXTzお勧めのライブラリとかありましたらおしえてください
0602nobodyさん
2009/07/16(木) 21:09:21ID:???0603nobodyさん
2009/07/16(木) 21:45:36ID:???ものの考え方だからそんな難しく考えないで
オブジェクトに対する情報(プロパティ)と動作(メソッド)
これをまとめたのがクラス
パーツまで考えるときりがないのでおおざっぱにパソコンというオブジェクトを考えると
動作(メソッド)として、『起動する』 『シャットダウンする』ってのがあるね
これをソースであらわすと
class パソコン {
function 起動する() {
}
function シャットダウンする() {
}
}
こうやって最初に考えておいて後で中身を書いていくのがオブジェクト指向的な書き方
こんな調子でWebアプリケーションにおきかえて考えてみればOK
掲示板というオブジェクトを考えると
動作(メソッド)は『書き込む』 『表示する』とかあるね
class 掲示板 {
function 書き込む(内容) {
内容を書き込む
}
function 表示する() {
内容を表示する
}
}
情報(プロパティ)については割愛したけど考え方としてはこんな感じ
最初はこんな感じから始めればOK
継承とかMVCモデルとかははじめは気にしなくていい混乱するだけだから
とにかく始めはオブジェクトに必要なもの(書くべきことを)を見極めるところから
0605nobodyさん
2009/07/16(木) 22:09:01ID:xcgIWd6Zクラス単位にまとめた方が見やすい。継承も使えるし。
0606597
2009/07/16(木) 22:13:58ID:9yCTA3Epありがとうございます!
0607nobodyさん
2009/07/16(木) 22:44:56ID:???>こうやって最初に考えておいて後で中身を書いていくのがオブジェクト指向的な書き方
それはオブジェクトというよりは段階的詳細化の気がするなあ。。
gotoとラベルでも同じことはできるわけで。
0609nobodyさん
2009/07/16(木) 22:57:08ID:???0610nobodyさん
2009/07/16(木) 23:06:32ID:???手続きとデータをまとめて持てる、っていうのと
(言語にもよるかもけど知れんが)他人から隠せるっていうのが利点かな。
>>603のBBSの例で、例えば書き込み先がファイルだとする。
関数だと、呼び出し元がファイルポインタを引数として渡すか、
あるいは関数内でグローバルスコープにする必要があるわけで
つまり「ファイルポインタ」の存在を気にしないといけない。
0611nobodyさん
2009/07/16(木) 23:40:54ID:???0612nobodyさん
2009/07/17(金) 01:47:11ID:???2chで規制を食らった時に書き込みをする方法について某スレで紹介が
ありそこでその存在をしったのですが、
そのサイト上のページに
・書き込みを行いたいURL
・名前
・投稿内容
・(自分の携帯メールアドレス)
を入力し「送信」ボタンをクリックすると自分の携帯メールにURLが送られて来て
そのリンクをクリックすると2chの投稿フォームに入力した内容が設定される
のですがあれはどうやっているのでしょうか?
0613nobodyさん
2009/07/17(金) 01:53:01ID:???大抵の場合、先にネックになるのはDBだから
PHPで簡単にできるならPHPでやってしまうってのは悪くはない。
0616nobodyさん
2009/07/17(金) 02:40:25ID:???どうしてご指名なのかは知らんが、getでパラメータ渡してんじゃねーのかな。
その携帯に送られてきたURL晒してみ?
0617nobodyさん
2009/07/17(金) 02:52:05ID:???簡単にいうと、カプセル化、ポリフォーフィズムかな。
完璧に動き、仕様変更は絶対ないという前提なら、それでもいいかもしれん。
2-3行で利点を説くのは難しいわい
0618nobodyさん
2009/07/17(金) 03:13:04ID:???面白いこと考える奴がいるんだね、商売上手だなぁ
WebProg 初心者の質問スレで質問すべきだと思うけど。
その携帯に送られてきたURLにユニークのgetパラメータがついてるんだよ
で、それをクリックするとリンクした先のページでそのパラメータを判別して
それに応じた書き込みデータを投稿するようになってるんだと思う
(きっと送信完了画面にはあれこれ広告が貼り付けてあるだろうねw)
0619593
2009/07/17(金) 09:41:13ID:189Q4h2A0622nobodyさん
2009/07/17(金) 11:03:34ID:???0623nobodyさん
2009/07/17(金) 11:14:33ID:???オブジェクト指向ねぇ。
ユーザー定義関数としてまとめてるでしょ?
いろんなプログラムで汎用的に使う関数は
きっと別のファイルに分けてまとめているはず。
オブジェクト指向は、このまとめ方をさらに発展させたものだよ。
いろいろごちゃごちゃ言う人いるけどねw
0624nobodyさん
2009/07/17(金) 12:01:11ID:???データと関数をまとめただけとか低レベルすぎ
0625nobodyさん
2009/07/17(金) 12:23:31ID:???そこを言えよw
0626nobodyさん
2009/07/17(金) 12:28:29ID:+Z3bH2zE【PHPのバージョン】php5.30
<?php
//setting.txtの読み込み
{
$setting_txt = file( 'setting.txt' );
foreach( $setting_txt as $setting ){
$setx = split("\n", $setting);
$set[$setx[0]] = $setx[1];
unset($setx);
}
}
?>
これを実行すると
Warning: implode() [function.implode]: Invalid arguments passed in X:/index.php on line 6
Warning: implode() [function.implode]: Invalid arguments passed in X:/index.php on line 6
何か根本的な勘違いをしてるような気がするのですが
自分ではわかりません指摘していただけると嬉しいです
0627nobodyさん
2009/07/17(金) 12:32:19ID:WCCLHa3V心配しているのが、大量のファイルを悪意でアップロードされた場合に、
どのように防ぐか悩んでいます。
最大アップロードサイズを指定しても、それに満たないサイズで、
大量にアップロードされた場合に防ぐ方法が分かりません。
質問1:
クライアントからアップロードされたファイルを一時ファイルに置く処理(upload_tmp_dirで指定された場所に置く処理)は、
どのタイミングで行なわれるのでしょうか。
悪意のユーザーと分かった時点で、アップロード中に処理を切りたいと思います。
質問2:
upload_tmp_dirに置かれた一時ファイルは自動的に削除されますか?
Windowsでは、アップロードされた一時ファイルが探しましたがありませんでした。
「C:\WINDOWS\Temp」のところを見ました。
スクリプトの処理が終わると自動的に消去される仕組みでしょうか。
宜しくお願いします。
0628nobodyさん
2009/07/17(金) 12:33:00ID:???0629nobodyさん
2009/07/17(金) 12:34:15ID:???悪意のユーザってどうやって判別するの?
一時ファイルを削除するのはOSの仕事じゃないですかね.
まぁ別にPHPから削除してもいいと思うけど
0630nobodyさん
2009/07/17(金) 12:56:05ID:WCCLHa3Vレスありがとうございます。
悪意のユーザを判定する一つとしては、
小さいファイルを何回も何回も短時間にアップロードを繰り返すようなケースでしょうか。
そのほか、サーバーに負荷が掛かるようなケースに制約を掛けたいと思います。
0632nobodyさん
2009/07/17(金) 13:09:01ID:WCCLHa3Vそのように信じたいのですが、
暇なユーザーかどうか分かりませんが、
毎日毎日届くスパムメールやウィルスなどのことを考えると、
セキュリティーのために、予算の許す限りで考えられる得る対策はしたいと思っています。
0633nobodyさん
2009/07/17(金) 13:23:17ID:???そのようなシステムかな?
無駄に制限をつけるのなら、最初からそのシステムの思想に
欠陥が在るように思えるが、いかがか?
0634nobodyさん
2009/07/17(金) 13:27:28ID:???×アップローダがブログの画像投稿
○アップローダかブログの画像投稿
文章を間違えました。
アップローダならばDBにアップロード時刻を保存して時間で制限をかける
画像投稿ならファイルサイズにて制限と思いますが、
細かいファイルのやり取りで制限をつけるなら、クッキーで
カウントさせて回数を制限させるのが簡単と思います。
それではダメですか?
0635nobodyさん
2009/07/17(金) 13:36:55ID:???継承とか、オーバーライドとかオーバーロードを理解すると便利さが分かるかもしれない。
でも、現時点で困ってないならいらないんだと思う。
複数人での大きめの開発とかだと有効だけど、一人で書く分にはそれほど効果は上がらないかも。
0636nobodyさん
2009/07/17(金) 13:47:10ID:???セキュアな機能は多くの場合無駄にはなるが、
その無駄が正常なシステムの運用を支えるのであって、
その無駄を欠陥と考えるのは、平和主義者の素人だな。
0637nobodyさん
2009/07/17(金) 13:51:51ID:???0638nobodyさん
2009/07/17(金) 14:31:47ID:F6lKm6fiというような設定はできますでしょうか?
例えば、test.htmlが、
<html>
<body>
<?php
echo phpinfo();
?>
</body>
</html>
であったとしても、拡張子がhtmlなのでecho phpinfo();は実行されない
という感じです。
よろしくお願いします。
0639nobodyさん
2009/07/17(金) 14:35:26ID:???それはPHPとは関係ない
Webサーバ側の設定でしょ(htaccessとかの話)
深読みしてPHPのソースを表示したいなら
拡張子phpsにする
htaccessにAddType application/x-httpd-php-source .phpsを追加
0640nobodyさん
2009/07/17(金) 14:39:17ID:???シス管がシステムをしっかりと安定させてトラブル対策を少なくしているより
トラブル発生しまくりで対応に動いている方が働いていると思われるのと同じだよな
0641nobodyさん
2009/07/17(金) 17:07:31ID:NiuWIla/$data["test"] = "123";
$data["abc"] = "456";
$after = preg_replace("/(http:\/\/www\.example\.com\/\?file\=)([\w\-\.!~\*'\(\)%#]+)/","変換後",$befor);
echo $after;
$afterが「123<br>456」のように
変換後の部分を$2の拡張子を取った $data["$2"] のようにしたいのですが$2を文字列として上手く利用できません
どなかご教示出来ますか?
0642nobodyさん
2009/07/17(金) 17:50:12ID:raMKvGDhまたはゼンドガードに代わる暗号化ソフトやコンパイラ無いですか?
ソースが見えるのはともかく、データベースのパスワードも丸見えなのはセキュリティ上どうかと思います。
あとユーザー関数を使う度に呼び出すのではなく常にメモリ上に置いておきたいのですが
そういうのできますか?
0644nobodyさん
2009/07/17(金) 17:56:15ID:kh/NJMurオワビニ、ライチモテキタヨー
ウレチーライチシュキダッタヨネ!
キョウモ、イッパイモッテキタヨー
0645nobodyさん
2009/07/17(金) 17:57:02ID:kh/NJMur0648nobodyさん
2009/07/17(金) 19:51:26ID:???0649nobodyさん
2009/07/17(金) 20:04:21ID:???公開FTPにおいてあるとか人為的流出ならマヌケと言わざるをえないけど
しっかりとした対策をした上でサーバの脆弱性を突かれて見られてしまったとかなら
もうそれはどうしようもない話
レンタルサーバならなおさら
DB鯖の脆弱性ついて直接ハッキングされるなんて可能性も捨てきれないわけで
通常運営するにあたってちゃんとした対策しができてるならそれ以上の過度な対策は必要ない
やっても無駄だから
0650nobodyさん
2009/07/17(金) 20:11:54ID:???心配するほど
人来ない
orz
0651nobodyさん
2009/07/17(金) 22:42:09ID:vZoTOxod$id = $_POST['id'][$i]; //3を返す
$var = "DB_lessonPic".$id;//DB_lessonPic3を返す
$_POST['{$var}']; で3を返すようにしたいですがうまくいきません
どうしたら良いでしょうか?
0652nobodyさん
2009/07/17(金) 22:47:15ID:???強いて言うなら、$_POSTはスーパーグローバル変数なのでコード内でキーや値を変えないほうがいいです
0653nobodyさん
2009/07/17(金) 22:53:19ID:???を突っ込んで、それに応じたXだけを返すようにしたいんだろう。
何でそんなことをしたがるのかは別のエスパーのために取っておく。
0654nobodyさん
2009/07/17(金) 22:55:54ID:vZoTOxodどうもありがとうございます
フォームのnameとして
DB_lessonPic1,DB_lessonPic2,DB_lessonPic3,,,って感じに末尾の数値が変わるものがあるんですが
受けてで、それぞれのvalueを取得したいんです。
ただ末尾の数値が何になるかは動的なものなので($_POST['id'][$i]のvalueに決定される)
$var = "DB_lessonPic".$id;
$_POST['{$var}'];
これでうまくいくかなと試してみたけど失敗してる次第です
ダメなのかな
0655nobodyさん
2009/07/17(金) 23:25:13ID:???とりあえずエラーでてるならかきなよ
シングルクオートでは{}は使えない
ようするに$_POST["{$var}"]としないとだめ
$varがStringならそのまま$_POST[$var]でいい
まぁ何がしたいんだかよくわからないけど
$_POSTには連想配列でPOSTされた値が入ってるから
$_POST[x]がわからなくても
foreach ($_POST as $key => $value) {
echo $key;
}
これでわかるはずだ
0656nobodyさん
2009/07/17(金) 23:27:59ID:???$_POSTには連想配列でPOSTされた値が入ってるから
↓
$_POSTには連想配列でPOSTされたキーと値が入ってるから
0657nobodyさん
2009/07/17(金) 23:45:23ID:vZoTOxodなるほど、参考にさせていただきます
ありがとうございます!
0658nobodyさん
2009/07/18(土) 09:15:53ID:wE0p3a0A0659nobodyさん
2009/07/18(土) 10:53:15ID:FK9dZ1QCPHP5.2.0の開発でオブジェクトとして扱える配列みたいな感じで
使ってみてたんですが、
php5.1.6では
$array['hoge']['hoge'] = 'hoge';
みたいな連想配列的な代入をするとエラーになるんですよね。
PHP Fatal error: Objects used as arrays in post/pre increment/decrement must return values by reference
これの原因や対処法などお教えいただけないでしょうか…。
0660nobodyさん
2009/07/18(土) 12:24:22ID:???0661nobodyさん
2009/07/18(土) 17:51:24ID:pPEtcMUp以前どっかのブログか何かに掲載されていたのですが、見つけられません。
知っているかた教えてください。
0662661
2009/07/18(土) 17:56:26ID:pPEtcMUp0663nobodyさん
2009/07/18(土) 18:10:07ID:???0664nobodyさん
2009/07/18(土) 20:00:39ID:???0665nobodyさん
2009/07/19(日) 05:02:12ID:eVfI2UBD【PHPのバージョン】php5.26
【連携ソフトウェア】なし
【質問内容】
簡易掲示板を作成しているのですが質問があります。
テキストファイルで読み込んだ内容をhtmlで出力し、
出力した内容の横にテキストエリアを設置して、そのテキストエリアに書き込みをし、
保存ボタンを押すと保存され、日付と共に出力されるようにしたいのですが、うまくいきません。
どのようにすれば同一php内でこういう処理ができるのでしょうか?
読み込むファイル、phpファイルは以下のような内容です。
読み込みファイル data.txt
A田A男
B川B太郎
C上C子
D山D絵
本体PHPのhtml出力部 sc.php
サークル 一言コメント
氏名
A田A男 [来週火曜日は試験があるから参加できません!ごめん!]2009/7/19
B川B太郎 [金曜の飲み会出席する人、メール頂戴 → bkawabtarou@bocomo.ne.jp]2009/7/13
C上C子 [ ] //書き込みなし
D山D絵 [夏休み合宿の詳細、誰か教えて!] 2009/6/21
こんな感じです。
0666nobodyさん
2009/07/19(日) 05:18:16ID:56+I2Wt4「うまくいきません」ってことは、
「うまくいくはずなのに」と思ってるスクリプトがすでにあるのかな?
だとすれば、その大まかな流れでも書いてもらえると参考になります。
それとも、「うまい方法が思いつきません」って意味なのかな?
その場合は、「○○しようとすると○○なのでダメだ、うーむ」みたいな、
これまで悩んだ過程や現状の悩みを書いてくれると参考になります。
0667nobodyさん
2009/07/19(日) 05:32:26ID:eVfI2UBD説明不足で申し訳ありません。
スクリプトは自分で書いていっています。
現在、テキストファイルを読み込んでhtmlに出力されるところまでは
完成していて普通に動作しているのですが、書き込みの部分を
どういう風に処理してよいのかわかりません。
なのでうまい方法が思いつきませんの方が正しいです。
考えているのは、配布されているフリーの掲示板のように書き込んだ内容を
datファイルなどに保存をして、phpを開くたびにdatファイルを読み込み、
それぞれの人物のテキストエリアの内容と日付を表示させるようにしたいのですが、
この場合、A田A男の人物IDかなにかを設定して、A田A男のidが1ならば、
datファイルには1、コメント内容、書いた日付 的な物を書き込んで、読み込ませるようにしたら良いのでしょうか?
また、保存ボタンを押した場合、どのようにすればphpのhtml部を更新し、datファイルにデータを書き込みできるかでも悩んでいます。
長文ですいません。
0668nobodyさん
2009/07/19(日) 05:32:32ID:???0669nobodyさん
2009/07/19(日) 07:52:27ID:56+I2Wt4>>665を見る限り、実現したいのは「各メンバーの近況ひとこと欄」的な仕組みでしょうか?
最新1件しか表示しなくていいのなら、ほぼそのまま以下のテキストファイルを保存しておくのが簡単かと思います。
> A田A男 [来週火曜日は試験があるから参加できません!ごめん!]2009/7/19
> B川B太郎 [金曜の飲み会出席する人、メール頂戴 → bkawabtarou@bocomo.ne.jp]2009/7/13
> C上C子 [ ] //書き込みなし
> D山D絵 [夏休み合宿の詳細、誰か教えて!] 2009/6/21
その際、過去ログ用のファイルも別途用意して両方のファイルを書き換えるようにして、
過去ログのほうには「日付,氏名,コメント」のような記録が各行に並んでいれば扱いやすいでしょう。
>>667の最後に書かれた悩みは「マニュアルのファイルシステム関数読め」でおk?
使うのはたとえばfile()とかfwrite()とか。またはfile_get_contents()とかfile_put_contents()とか。
ただ、自分が作るならデータベースを使います。
0670nobodyさん
2009/07/19(日) 10:51:12ID:???想定しなくていいの?
0671nobodyさん
2009/07/19(日) 11:15:25ID:???ファイル使うと、ファイル形式云々かんがえなきゃいけなかったけど、
今はYAML使えばいいじゃんって感じで。
たいていの言語からでも読み書きできるから汎用性あるし、
読みやすい、書きやすいし、データを簡単に自由なデータ構造に出来る。
遅いって問題があるけど、それはserializeでキャッシュにしてしまえばいいし。
0672nobodyさん
2009/07/19(日) 11:53:38ID:???仕方なくファイルに吐くにしても使い回しを考えてXMLとかJSONだし。
0674nobodyさん
2009/07/19(日) 14:33:46ID:???SQLなんて忘れてしまうよw
普通はO/R使うんでな。
0675nobodyさん
2009/07/19(日) 14:56:26ID:???0676nobodyさん
2009/07/19(日) 15:19:31ID:???SQLの改善費用だけで2500万とかうちの会社はホント恥ずかしい
O/Rはともかく、未だにEXPLAINすら知らない開発者は多い
0678nobodyさん
2009/07/19(日) 18:03:43ID:???0679nobodyさん
2009/07/19(日) 19:47:22ID:???お前らも俺もコーディングの正確さ・美しさに捕らわれすぎ
0680nobodyさん
2009/07/19(日) 20:38:41ID:???0681nobodyさん
2009/07/20(月) 00:02:29ID:NuDmDR7p・料理名(必須入力)
・作り方文章(必須入力)
・写真一枚(任意入力)
・写真の解説(任意入力。写真がない場合は出力しない「三つ葉を散らすと見た目も綺麗です」みたいな感じ)
この場合、「写真の解説」の出力判別用に、登録時にpic_upload = 1のようなカラムをDBに用意・insertして
それを判別するべきでしょうか?
該当ファイルが存在するかどうかをfile_exists();で確認して出力するしないを決めても良いかと思ってたんですが
ヘタなやり方だったかもと悩んできました
皆さんならどんなやり方にしますか? ご意見お願いします。
0682nobodyさん
2009/07/20(月) 00:14:57ID:mGSM8h71そういう質問するってことは、画像ファイル名は(id).jpgみたいに自然に定まる仕組みなのかな。
そうだとしても、pic_uploadとかやるよりはファイル名ないしパスを入れるカラムを作っといたほうがいいと思うな。
0683nobodyさん
2009/07/20(月) 00:36:00ID:???0684nobodyさん
2009/07/20(月) 00:36:51ID:NuDmDR7pなるほどー、それは確かにそうですね!
思いつかなかった。今まで画像までのパスを生成する関数をいちいち動かしてました
そうした方が全部一発で出来ますね!
ありがとうございました!
0685nobodyさん
2009/07/20(月) 01:55:21ID:81Sgp959レスが遅れて申し訳ありません。
各メンバーの近況ひとこと欄でほぼ間違いはありません。
Web上に存在する1行掲示板スクリプトを参考に、とりあえずコメントだけでも、
書き込みと更新ができるようにと色々改造を施してみたのですが
ファイルを読み込んで表示するだけで、内容の更新ができませんでした。
元となったスクリプトは、http://wakusan.com/programinng_PHP/one_bbs.htm ですが
これを参考に書き換えたのがこれです。
http://kissho.xii.jp/1/src/1jyou84526.zip.html
どのようにすれば更新ができるようになるのでしょうか?
>>670
その辺は想定しなくて大丈夫です。
0686nobodyさん
2009/07/20(月) 02:00:05ID:???ファイルがアップロードされたかどうかを判定する為にだけ使用する、という認識で良いですか?
$_REQUEST["up"]
0687685
2009/07/20(月) 02:00:29ID:81Sgp9590688nobodyさん
2009/07/20(月) 02:03:45ID:???0689nobodyさん
2009/07/20(月) 02:06:06ID:???そりゃそのスクリプト書いた人の意図によると思うけど
おそらくはGETかPOSTでupを送っておいて
処理先のスクリプトでupを確認してアップロード処理を行うっていう
よくある手法じゃないかな
>>687
A田A男さんは1行目とか決めておいて更新が来たら1行目を書き換えればいいんでね?
0690nobodyさん
2009/07/20(月) 18:51:36ID:LTJd3lAbPHPでjavascriptにあるsettimeoutみたいなのありませんか?
ある時間になるとその時間に合わせて、PHPで作成したデータを元に表を更新するというものです
javascriptで作成した時計の部分はsettimeoutを使って1秒ごとに更新されていいのですが、
当然ながらその部分だけ更新されて、ページ全体は更新されないので・・・
何かいい方法はないですか?お願いします
0691nobodyさん
2009/07/20(月) 19:10:37ID:???0693nobodyさん
2009/07/20(月) 19:28:53ID:???crond用のプロセスを作って、そこが参照する設定ファイルをPHPから
更新するなどの方法はある。けど、ブラウザ上の再読み込みを行いた
いなら、やっぱり settimeout をPHPで吐くか、または、
<meta http-equiv="refresh" content="時間,URL">
などのヘッダを使って強制的に再読み込みをするなどがいいと思う。
0694nobodyさん
2009/07/20(月) 20:02:55ID:LTJd3lAb>>693
>settimeout をPHPで吐く
というのはどのようにすればよいですか?
最悪metaで強制的にしますかねー ヘッダを全ページで共有して使っているので考え物ですが
0695nobodyさん
2009/07/20(月) 20:12:54ID:???metaタグのrefreshでリロードさせるか、javascriptでリロードさせるしかない。
ヘッダを全ページ共有ってtitleとかも共有なのか?titileはページ毎に置換してない?
つまりそのページだけrefreshのmetaタグを置換して入れればいい
0696nobodyさん
2009/07/20(月) 20:16:56ID:mGSM8h71あなたにとってPHPが
「とりあえず今回動けばいいブラックボックス」ではなく、
「難しいけど今後とも活用していきたい道具」であるならば、
以下を参考にがんばるか、以下を理解できるようになるまで本を読もう。
http://jp.php.net/manual/ja/language.variables.external.php
http://jp.php.net/manual/ja/language.types.array.php
http://jp.php.net/manual/ja/book.filesystem.php
http://jp.php.net/manual/ja/function.print-r.php
0697nobodyさん
2009/07/20(月) 20:22:42ID:LTJd3lAbヘッダとフッタはそれぞれ1つのファイルを共有して各ページは中身(コンテンツ)だけ変更するような形でやってるんですよ
ちょっと特殊ですが なんでタイトルとかは全部同じです
今試しにmetaでやってみたんですが、更新ボタンを押してる感じがあるんでちょっと
上にも書いたんですけど今はjavascriptの時計の関数をonload=settimeout1秒ごとという仕組みにしてるんですけど、
全体は難しいですよね PHPとjavascriptじゃサイドが違うんで・・・
0698nobodyさん
2009/07/20(月) 20:44:06ID:???0699nobodyさん
2009/07/20(月) 20:46:49ID:???リロードさせるんだから、更新ボタンを押してる感じがあるのはしょうがない。
それが嫌なら、>>698 さんが言うようにajaxになるな。
0700nobodyさん
2009/07/20(月) 20:51:21ID:LTJd3lAb聞いたことはあるんですけど、全然知らないんですよね^^;
とりあえず調べてみます
参考になるページがあればお願いします
0702nobodyさん
2009/07/20(月) 21:47:10ID:???連想配列じゃなくて配列の配列
これは ArrayAccess のシグネチャと Zend Engine の参照渡し・戻しに関する問題らしい
配列の要素がオブジェクトなら常に参照扱いなので気にしなくて済む
// ○5.2.0, ○5.1.6
$a = new ArrayObject();
$a[0] = new ArrayObject();
$a[0][0] = 1;
// ○5.2.0 ×5.1.6
$a = new ArrayObject();
$a[0] = array();
$a[0][0] = 1;
0703nobodyさん
2009/07/22(水) 15:49:48ID:4ehWfJJ0PHPをパースする全てのページのフッタに著作権を自動挿入したいです。
mod_layout以外で何か方法はありますか?
0704nobodyさん
2009/07/22(水) 16:04:30ID:8OvKTpgg小手先でやるならregister_shutdown_function()とか。
0705nobodyさん
2009/07/22(水) 19:17:52ID:???複雑なJOINとかができる必要はないのですが、
プリペアドステートメントを使って、安全にWHERE文を追加していけるものがいいです。
Zend_DBとかSymfonyのDoctrineとかいろいろあると思うのですが、
独立して組み込めるものが望ましいです。
SQL文だけ組み立てて、実行自体は今まで使ってきたMDB2でできればなおいいです。
よろしければ教えていただければと思います。
よろしくお願いします。
0706nobodyさん
2009/07/22(水) 19:31:26ID:???もっと抽象的にやりたかったらこれ使ってさらに関数でも
クラスでも作ればよかろ
0707nobodyさん
2009/07/22(水) 20:00:53ID:???0708nobodyさん
2009/07/22(水) 23:44:43ID:???今はDoctrineがナウい
もちろんこいつ自体は独立して組み込める
ZendFramework+Doctrineも流行っている
0709nobodyさん
2009/07/23(木) 00:02:49ID:???0710nobodyさん
2009/07/23(木) 06:38:49ID:3HKcBquf説明不足の部分まで汲んでもらってありがとうございます!
なるほどです…。
PHP5.1 or 5.2の辺りで世間のインストール状況に一つ壁があると思うので
動作テストうんぬん考えるとArrayObjectってちょっと使いにくい感じかもですね。
0711nobodyさん
2009/07/23(木) 09:40:42ID:???QueryToolはプリペアドステートメントが使えないんですよね…。
もちろん、これを自分用に改修することはさほど難しくはないと思いますが、
既に実用に耐えているライブラリがあれば、そちらを使いたいと思いました。
>>707
Zend_Dbは、オブジェクト生成の際にホストまで設定しないといけないのが、
私にとってはネックになります。
自分で使う分にはすごくいいライブラリだと思うのですが、
現在会社で使っているフレームワーク上、それができないのです…。
(できなくはないけど、記述があちこちでばらけて後々面倒)
なので、SQL文を動的に生成し、それを文字列として取り出せるものが必要なのです。
>>708
Symfonyはセットアップが面倒なイメージがあったのですが、
独立して組み込むこともできるんですね。
ドキュメント等読んで調べてみようとお見ます。
皆さんありがとうございました。
0712nobodyさん
2009/07/23(木) 13:34:09ID:afGBhoweforeach ($var_names as $key => $value ) {
global $$value;
if (!isset($_SESSION[$value])){
$_SESSION[$value]= $$value;
}
}
}
というコードがあるんですけど、これは
・register_globals が設定されてなければ(つまりoffであれば)、
・配列$var_namesに入っているグローバル変数名を調べて、
・その名前と値を$_SESSIONに追加する
という理解でよろしいでしょうか。
またこの理解が正しいとして、なぜこんなことをしているのか分かる方はいませんか。
register_globalsがonのときなら、このような動作もわからなくはないのですが、
offのときにあえてこんなことをする理由がわかりません。
0713nobodyさん
2009/07/23(木) 13:43:15ID:???0714nobodyさん
2009/07/23(木) 14:28:45ID:t5/aDE1Aあれってsmatyとかフレームワークとか使ってんの?
小遣い稼いでる奴いたら教えて。
普通に働いてる奴も教えて。
0715nobodyさん
2009/07/23(木) 14:31:54ID:???0716nobodyさん
2009/07/23(木) 14:33:05ID:???0717nobodyさん
2009/07/23(木) 14:48:42ID:???0718nobodyさん
2009/07/23(木) 14:50:48ID:???まともなとこならフリーのもの(cakeとか)は使わない
自社製(他社製)のもの使うね
自社サイトの開発業務とかならなんでもあり
0719nobodyさん
2009/07/23(木) 14:52:49ID:t5/aDE1APHPできるって言われてもフレームワークやその他のプラグインも使えないで、
HTMLにだだ書きしてる奴とかいるのかな?と思って俺もほぼ変わんないけど。
派遣って給料高いし一回働いてみたいよな。
0720nobodyさん
2009/07/23(木) 15:01:14ID:???0722nobodyさん
2009/07/23(木) 15:09:56ID:???書き方が悪かったね
他社といっても関連企業のことね
ライセンスがらみの問題もなく
意見もちゃんと反映できる範囲にいる企業
0723712
2009/07/23(木) 15:32:53ID:afGBhowe>それは、たまに避妊したいときに利用することがある。
すみませんが、もうすこし詳しく教えていただけませんでしょうか。
#もちろんコンドームのことではないですよ?
0724nobodyさん
2009/07/23(木) 15:54:56ID:???ttp://d.hatena.ne.jp/keyword/register_globals
0725nobodyさん
2009/07/23(木) 15:59:07ID:???0726軟式PHP
2009/07/23(木) 16:00:48ID:???0727712
2009/07/23(木) 17:27:30ID:afGBhoweregsiter_globalsについては知っています。
質問はそこではないんですけど。
0728nobodyさん
2009/07/23(木) 17:36:31ID:???register_globals on のように
外部から来た変数を $xxx のように使いたいからでしょ。
0729nobodyさん
2009/07/23(木) 18:21:33ID:???当事者にどういうつもりでこんな糞コーディングしたのか頬をビンタしながら問い詰めなさい
0730nobodyさん
2009/07/23(木) 18:34:42ID:???>offのときにあえてこんなことをする理由がわかりません。
こんなことかかれて知ってますといわれてもな
offだからこそだろ
0731nobodyさん
2009/07/23(木) 18:35:31ID:t5/aDE1A0732nobodyさん
2009/07/23(木) 18:43:12ID:???0733nobodyさん
2009/07/23(木) 18:53:40ID:???該当部分のコード削除するか自分の考えるものに変更して
register_globalsをoffにして動作させてみた?
挙動比較してみて同じようなら意味のないコードなんでしょうよ
何か問題があったからそのコード入れたかもしれないし
ほかの人のソースをただコピペしたようなものかもしれない
人のソース見て勉強するのはいいがコメントがないようなものはお勧めしない
0734nobodyさん
2009/07/23(木) 20:12:49ID:???0735712
2009/07/23(木) 20:13:54ID:???すみません、書き忘れてましたが、これはPHPLibのコードの一部なんです。
PHPLib の php/session4.inc にある Session クラスの regsiter() メソッド定義において
>>712のようなコードがあり、読んでもよくわからなかったので質問しました。
PHPLibは有名なライブラリであり、挙動もみなさんよくご存知だろうと思いますが、
register_globalsがoffのときに限りグローバル変数を$_SESSIONに代入するという仕様が、
ぼくにとってまったく意味不明な仕様なので、これにどういう意味があるのか
教えていただければと思います。
0736712
2009/07/23(木) 20:15:43ID:???function register ($var_names) {
if (!is_array($var_names)) {
// spaces spoil everything
$var_names = trim($var_names);
$var_names=explode(",", $var_names);
}
// If register_globals is off -> store session variables values
if(!(bool) ini_get('register_globals')) {
foreach ($var_names as $key => $value ) {
global $$value;
if (!isset($_SESSION[$value])){
$_SESSION[$value]= $$value;
}
}
}
else {
return session_register($var_names);
}
} // end func register
0737nobodyさん
2009/07/23(木) 22:07:23ID:???これをやってるんでなくて?
0738nobodyさん
2009/07/23(木) 22:17:18ID:oVStTj1j正規表現などで後方から数えて最初にある"."で切り分けたいのですがどのように記述すればいいのでしょうか
要は拡張子を切り出せればいいんです
0740nobodyさん
2009/07/23(木) 22:25:04ID:???http://www.php.net/manual/ja/function.pathinfo.php
0741738
2009/07/23(木) 22:36:25ID:oVStTj1jこんな関数あったんですか
ありがとうございます
0742やや
2009/07/23(木) 22:44:20ID:i1eDkP4Fファイル数が100万位ある中から一つを読み込みたいのですが、1000個のフォルダに1000個のファイルを入れようか、
それとも1000個のフォルダに1000個のフォルダを作りそれぞれにファイルを一個ずつ入れようか迷っています。
どちらの方が、高速にファイルにアクセスできると思いますか?
ちなみにデータベースは使えないので、txtファイルを使っています。
0743nobodyさん
2009/07/23(木) 22:51:15ID:???疑問ならダミーファイルつくって試してみ
0744nobodyさん
2009/07/23(木) 22:52:35ID:???その程度の処理時間の差を気にする案件ならPHPを使うな。以上。
0745nobodyさん
2009/07/23(木) 22:55:12ID:???0746やや
2009/07/23(木) 23:11:53ID:i1eDkP4Fありがとうございます。試してみます。
>>744
ありがとうございます。速度を測ったところ、ファイルの読み込みが足引っ張っているようなのですが、
プログラムにあまり詳しくないのですが、他のプログラムで読み読みが速いプログラムを
教えてもらえないでしょうか。
0747やや
2009/07/23(木) 23:13:37ID:i1eDkP4Fすいません。読み読みは、読み込みの間違いです。
0748738
2009/07/24(金) 00:04:41ID:w4nZ/YW/if (move_uploaded_file($_FILES["file"]["tmp_name"], "files/$filen.$x")) {
chmod("files/" . $filen, 0644);
//files.txtへの書き込み
$res_file = fopen( 'files.txt', 'w+' );
$time = data("Y/m/d (D) G:H:s");
$data = array("number" => $filen,"name" => $_FILES['file']['name'],"comment" => $_POST['comment'],"extension"d => $x,"size" => $_FILE['file']['size'],"data" => $time,"dl" => "0","dllimit" => $_POST[dllimit]);
unset($x);
foreach( $data as $x ){
fwrite($res_file,$x)
unset($x);
}
fwrite($res_file,"\n");
fclose( $res_file );
} else {
echo "upload失敗";
}
}
またお願いします
これを出力したところ
Parse error: parse error, expecting `')'' in X:\index.php on line 46
とエラーが出ました
自分が見たところでは問題点が見つかりませんお願いします
ちなみに一番長いところが46行目です
0749nobodyさん
2009/07/24(金) 00:07:32ID:???セミコロン
0750nobodyさん
2009/07/24(金) 00:08:18ID:???つうか記述ミスぐらいIDE使えばすぐわかるんだからEclipseあたり使いなさいよ
0751nobodyさん
2009/07/24(金) 00:10:00ID:???ここも変
''で囲まないと$_POST['dllimit']
0752nobodyさん
2009/07/24(金) 00:12:48ID:???0753738
2009/07/24(金) 00:22:29ID:w4nZ/YW/PHPの構文て結構厳しいんですね
エラーや警告のでないスクリプトを目指して頑張ります
0754nobodyさん
2009/07/24(金) 00:30:02ID:???パースエラーだよアホ
0755nobodyさん
2009/07/24(金) 00:30:48ID:???誰がファイルの読み込みは足を引っ張らないと言ったよ
どっちを取っても差はない、としか書いてないのだが?
ファイルのI/Oはどの言語でも足を引っ張る
0756nobodyさん
2009/07/24(金) 00:32:07ID:K8XyGptT文字列処理/日本語関係 がダルくてしかたありません
0757nobodyさん
2009/07/24(金) 00:35:36ID:???0758nobodyさん
2009/07/24(金) 01:36:48ID:???0760nobodyさん
2009/07/24(金) 11:26:52ID:???マニュアルに載ってるのはonとoffのエミュレート
>>736のコードは指定した変数をセッションに追加
0761nobodyさん
2009/07/24(金) 11:44:11ID:???0763nobodyさん
2009/07/24(金) 11:49:18ID:???0765nobodyさん
2009/07/24(金) 12:55:26ID:???これをクッキーやデータベースに保存するよう変更したいのですが、できますか。
独自にクラスを作ったりすればできますけど、レガシーコードが大量に
$_SESSIONを使っているので、できれば$_SESSIONを使ったままで、
セッションデータの保存先をクッキーとかに変更したいのですが可能でしょうか。
0766nobodyさん
2009/07/24(金) 13:06:54ID:???スレタイ
セッションデータをクッキーに保存って本末転倒だな。
なぜそういう事をしたいのか書くとレスを返しやすい。
0767nobodyさん
2009/07/24(金) 14:45:14ID:???CodeIgniterとかRailsとか。
#利点は、サーバの台数が増えてもスケールしやすいことダッタかな。
なんで本末転倒なんでしょうか?
0768nobodyさん
2009/07/24(金) 15:26:42ID:???railsも2.0(?)からデフォでcoockieらしいな。
で、本末転倒とはイミフだった、すまん。
個人的にクライアント側にデータが保存されるのが嫌で$_SESSION使ってるから
そのセッションデータがcoockieに入ったら意味無いなと思い、本末転倒と書いてしまった。
0769nobodyさん
2009/07/24(金) 15:27:16ID:???0770nobodyさん
2009/07/24(金) 15:35:26ID:???0772nobodyさん
2009/07/24(金) 15:56:51ID:???セッションはHTTPのステートレスな性質を補う技術で
データをクラサバどっちに持たせるかは本質じゃないし
そもそもの質問が”できますか?”なんだから茶々入れずに答えろよボケ!
あと>>1読まずに質問してサーセン!
って765さんが言ってました
0774nobodyさん
2009/07/24(金) 17:40:22ID:???0777nobodyさん
2009/07/24(金) 18:07:25ID:moawRAWq自作しないと無理でしょうか?
0778nobodyさん
2009/07/24(金) 18:29:14ID:???0779685
2009/07/25(土) 02:17:25ID:eE6Kfkku【OS名】CentOS
【PHPのバージョン】php5.26
【連携ソフトウェア】なし
【質問内容】
>>696さんのWebサイトを参考にし、もう少しコードを簡単し、以下の用に動作する物を書いてみました。
(テキストフォームに文字を入力し、保存ボタンを押すと、書いた内容が別テキストファイルに保存される。
PHPのWebページを開くたびに別テキストファイルが呼び出され、その内容がテキストフォームに
value=として設定される。簡易やることリスト的なPHPスクリプト。)
テキスト入力フォームがひとつの場合は問題なく動作するのですが、
複数のテキスト入力フォームを用意した場合、どうやらテキストファイルを読み込んでいないみたいで
ページを開くたびに保存してある内容が消えてしまいます。
ここの修正だけで数時間以上悩んでいるのですが、ここだけ解消できれば完成するので
どのように修正すればよいかご教示願えないでしょうか?
これが書いたスクリプトです。oneディレクトリに入っているものが、テキスト入力フォームがひとつの場合、
arrayディレクトリに入っているものが、複数のテキスト入力フォームを用意した場合です。
http://kissho1.xii.jp/7/src/7jyou24055.zip.html
0780nobodyさん
2009/07/25(土) 03:00:06ID:t/OU2yuM> ページを開くたびに保存してある内容が消えてしまいます。
ここが誤りです。
最初にページを表示した際に、以下の流れになっています。
1. 26-33行目で、$POSTが空っぽのため、空っぽの$test配列が生成される。
2. 36行目で、空配列と文字列""を混同しているためif条件を通過してしまう。
3. 空っぽの$testを元に、空っぽのtxtファイルが作られてしまう。
とりあえず最小限で動かすには36行目を次のように書き換えればいいと思います。
if(isset($_POST['test'][0])){
しかし動くからといって満足せず、
ヒマを見つけて本を買うなりしてステップアップされることをおすすめします。
わたしの個人的な印象では、
この手の「サンプルコード」なるものを載せてるサイトの8割は初学者にはおすすめできません(苦笑)。
0781nobodyさん
2009/07/25(土) 08:06:09ID:TYwYBgIMmysql1クエリ送信するたびにSET time_zoneを付け加えているのですが、
例えば
$sql1 = "SET time_zone = '+09:00'";
$sql2 = "SELECT * FROM test";
$sql = $sql1.";".$sql2;
として最終的にfetchAllでSELECTした結果を得たいのですが、
SET time_zone = '+09:00'の部分の結果が得られてしまいます。
実際のSELECT文にはDATE(NOW())などを使うので、
どうしてもSET time_zoneが必要なのですが、
できればSELECT部分の結果だけを得るにはどうしたらいいでしょうか
($sql2だけならSELECTの結果が得られます)
またphp内でmysqlのタイムゾーンまでをも指定できる方法が
あれば教えてくださいよろしくおねがいします。
0782nobodyさん
2009/07/25(土) 08:12:04ID:???0783nobodyさん
2009/07/25(土) 08:48:33ID:eE6Kfkkuありがとうございます。ご指摘の箇所を修正したら普通に動作するようになりました。
しかし、”1. 26-33行目で、$POSTが空っぽのため、空っぽの$test配列が生成される。”で、
空っぽの$test配列が生成されないようにするためにはどのようにすればいいのでしょうか?
書籍の方ですが、オライリー社のプログラミングPHP 第2版を購入して読んでいっています。
Webで公開されているサンプルコードはあまり為にならないのですね。
0784nobodyさん
2009/07/25(土) 13:34:23ID:t/OU2yuM$test配列の問題はオライリー読んでれば解決できるようになるでしょう。
> Webで公開されているサンプルコードはあまり為にならないのですね。
あくまで、8割です。いいコードもあります。が、初学者には見分けられない(苦笑)。
0785nobodyさん
2009/07/25(土) 18:25:38ID:???0786nobodyさん
2009/07/25(土) 18:27:46ID:???0788nobodyさん
2009/07/25(土) 23:33:48ID:???0789nobodyさん
2009/07/26(日) 03:54:04ID:VnzjqimA36進法(a〜zと0〜9)を作ってデーターを入れることを考えています。
たとえば、最高1億の数値を36進法にすれば、何桁でOKになるのでしょうか?
多分、高校で習った対数とか使うと思うのですが、もうすっかり忘れてしまって、
計算の仕方が分かりません。教えてください。お願いします。
0790nobodyさん
2009/07/26(日) 04:06:51ID:???36進数1が10進数36^0=1
36進数10が10進数36^1=36
36進数100が10進数36^2=1296
36進数1000が10進数36^3=46656
0791nobodyさん
2009/07/26(日) 04:38:18ID:VnzjqimA次どうぞ↓
0792nobodyさん
2009/07/26(日) 04:52:09ID:/+Zib1Pr1296
46656
1679616
60466176
2176782336
0793nobodyさん
2009/07/26(日) 04:56:01ID:VnzjqimA分かりやすい説明ありがとう。
0794nobodyさん
2009/07/26(日) 05:09:20ID:???0795nobodyさん
2009/07/26(日) 05:26:48ID:o1BXfd9yスコープが変わるごとに別のファイルにあるfunc( )を呼び出したいのですが、
うまく行きません。
スコープ内でのみ有効なincludeみたいなのは無いのでしょうか?
// やりたいのはこんな感じ。
for( $i=0; $i<10; $i++ ){
include("func" . $i . ".php");
func();
}
0796nobodyさん
2009/07/26(日) 05:33:04ID:???そんなことやっても自滅するだけ
0797nobodyさん
2009/07/26(日) 05:36:24ID:???なんかエラーが出てるの?出てるならだしなよ
それともfunc0のfunc()しか実行されないとか?
もっと詳細なこと書いてくれないと困っちゃうよ
0798nobodyさん
2009/07/26(日) 05:47:36ID:/+Zib1Pr誰も知らないことだが、その技は俺が先に発案した技だからな
0799nobodyさん
2009/07/26(日) 05:49:18ID:???スコープが変わるごとにってそれ同じスコープだけどな
どうしてもやりたいなら
http://jp.php.net/manual/ja/function.runkit-function-remove.php
とか
0800nobodyさん
2009/07/26(日) 05:56:24ID:???どういうケースを想定してるのかぜひ教えてほしい
0801798
2009/07/26(日) 05:56:36ID:/+Zib1Prついでに書いとく
その技はWEBサイトにおいて極めて有効
その技を完璧に操れば、どんな巨大なサイトでも構築できる
頑張れ
0802nobodyさん
2009/07/26(日) 09:53:04ID:adDNcXgh【PHPのバージョン】5.2.9
【連携ソフトウェア】MySQL,Apache
【質問内容】 先に自鯖板の方で質問させて頂き、webprogでやれと怒られたのでこちらで質問させて頂きます。
> 先ほどPHP5.2.9にpeclを使ってAPCを導入、設定したのですが
> PHPの実行時にPHP Startup: apc.shm_segments setting ignored in MMAP mode in Unknown on line 0と表示されるようになってしまいました。
> どうもMMAPモードなのにもかかわらずapc.shm_segmentsを設定しているのを警告してくれているようなのですが
> メモリを大量に積んでいるので、自分はshmで動作させたいと思っています
> ですが、ドキュメントを見る限り[apc.mode]という設定項目は現在のバージョンでは削除されているようなのです
> この場合、動作モードをMMAPからshmに変更するにはどの様にすれば良いのでしょうか?
あちらへ書いた文章の引用ですが、宜しければお願いします。
0803nobodyさん
2009/07/26(日) 11:06:09ID:LoPusb4z$num_org = $_GET['num'];
ってしておいて
echo $num;
で値が取れてしまうんだが・・
php5
0804nobodyさん
2009/07/26(日) 11:06:53ID:???0805nobodyさん
2009/07/26(日) 11:09:41ID:LoPusb4zwindowsならいけたんだが
linuxでやったらなぜかダメだった
見間違いかもしれないから
もっかいみてみるけど・・
0806nobodyさん
2009/07/26(日) 11:13:46ID:LoPusb4z<?php
$num_org = $_GET['num'];
echo "num=".$num;
?>
かなり端折ったけど、これで確認できた・・
test.php?num=10
でやったら$num_orgじゃないのにnum=10って表示されました。
windows2000 php5.2.6 localhost
0807nobodyさん
2009/07/26(日) 11:17:53ID:LoPusb4z0808nobodyさん
2009/07/26(日) 11:19:07ID:LoPusb4z0809nobodyさん
2009/07/26(日) 11:21:30ID:???$_GET['num'];をechoのところと同じにしてるからなんだろうけどなぜなんでしょうか
0810nobodyさん
2009/07/26(日) 11:51:29ID:???0811nobodyさん
2009/07/26(日) 12:00:10ID:???0812nobodyさん
2009/07/26(日) 12:04:35ID:???だろ
0813nobodyさん
2009/07/26(日) 12:26:44ID:???php5.2.6ってデフォでregistar_globalsってoffじゃないのか?
0814nobodyさん
2009/07/26(日) 12:40:45ID:LoPusb4zぐぐってみました
こんなのがあったなんて知りませんでした。
すっきりしましたありがとうございました。
0815nobodyさん
2009/07/26(日) 12:47:38ID:VnzjqimAデータベースの仕様上、字数オーバーのため、
どうしても圧縮しないとできないのです。
その苦肉の策が、36進法という最適解です。
>>796
少なくても、質問に答えられないあなたが、そのようなことを資格はありませんね。
0817nobodyさん
2009/07/26(日) 13:07:32ID:???0818nobodyさん
2009/07/26(日) 13:09:36ID:VnzjqimAもちろん、integerやlongも考えました。
しかし、それらの型は浮動小数計算のため、
利子計算などを色々やると誤差が出ます。
金融系の開発をしておりますので、これは致命傷です。
0819nobodyさん
2009/07/26(日) 13:55:19ID:???0820nobodyさん
2009/07/26(日) 15:22:00ID:???123.12.1みたいな変なのはもう数値ではないんだから
0821795
2009/07/26(日) 15:56:02ID:???>>799
>>800
>>801
ありがとうございます。
説明不足で申し訳ありませんでした。
例では示しませんでしたが、
func( )は巨大な配列(16000個)を返す関数です。
func0.php〜func9.php内には、サイズは同じで中身の違う配列が定義されています。
0〜9の選択はユーザの次第です。
このとき、0〜9の1個だけを呼ぶ場合もあれば、
0〜9の中から2個を呼んで、関数から返ってきた2つの配列を足し合わせる、といったこともします。
ファイルを別々にしているのは、1個1個のファイル自体が巨大なため、
必要なfunc[0-9].phpのみを必要な時のみインクルードして、無駄な資源確保を避けたいと考えたからです。
func( )と名前を統一しているのは、インターフェースの統一のためです。
for文で例より、もっとシンプルに書くなら以下のような感じです。
===========================================
{
include("func0.php");
$A = func();
}
// スコープを抜けたので、func0.phpはメモリから開放
===========================================
0822nobodyさん
2009/07/26(日) 16:17:49ID:???func0()呼んで
適当な配列にでも入れとけばいいじゃん
インタフェースの統一ってのが意味不明
0823nobodyさん
2009/07/26(日) 17:56:26ID:???こいつはとんだしったかだな
算数の質問しにくるような馬鹿が金融系開発?
釣りもほどほどにしとけ
0824nobodyさん
2009/07/26(日) 17:59:23ID:???アイディアを盗まれる前に起業すべき
http://itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/
>>821
*** data.php
<?php return array(1, 2, 3);
*** main.php
<?php $a = include 'data.php';
データをわざわざ実行コードにする必要性は?なければ別のフォーマットを選ぼう
serialize()/unserialize(), json_encode()/json_decode(), fgetcsv()/fputcsv()
0825nobodyさん
2009/07/26(日) 18:33:08ID:???・ファイル名に変換
・VisualBasic
・ストップウオッチを片手に処理速度を計測
あたりが凄まじくネタっぽいな
0826nobodyさん
2009/07/26(日) 18:47:06ID:???0828192.168.0.774
2009/07/26(日) 19:51:13ID:+70USpznechoのリファレンスを見ました。でも、↑のようなものについては見当たりませんでした。
これは、どのように解釈したらいいんでしょうか?また↑の出力結果は同じになりますか?
これと似た構文でC言語にもありますか?
よろしくお願いします。
0829nobodyさん
2009/07/26(日) 19:57:38ID:???0830nobodyさん
2009/07/26(日) 20:58:41ID:???function call_func($func_number){
require_once('func' . $func_number . '.php');
$result = func();
// おぞましい黒魔法でfunc()の定義を削除
return $result;
}
黒魔法の詳細は
ttp://jp2.php.net/manual/ja/function.runkit-function-remove.php
引数以外のもの(環境変数などのスーパーグローバルなど、関数からアクセスできるもの)で処理を分けるなら、勿論それでもいい。
まあ、オススメできない。俺なら、func1 - func9で定義される関数func()には別名を使っておく。
そうすりゃ、衝突を気にしなくていいからな。
OOP的なプログラム構造にするなら、まずメソッドfunc()を持つ別個のクラスを10個用意する。
で、上記call_func()は、直接結果を返すのではなく、引数などに応じて適切なファイルをrequireしてクラスのインスタンスを返す。
呼び出し側は$obj->func()を呼べば、望む結果が得られる。
メモリ消費を気にするなら、そもそも16,000なんて大きさの配列を作るべきではない。
毎回16,000個の変数を全部使う、ってんなら話は別だけどな。
0832nobodyさん
2009/07/27(月) 12:02:48ID:TX4gysr6しかしユニットテストを書いて実行すると、
Cannot send session cookie - headers already sent
というエラーが出てテストできません。
まあ当たり前と言えば当たり前なんですけど、でもテストできないのも困ります。
こんなとき、どうすればいいでしょうか。
つまり$_SESSIONを扱うライブラリで、Cannot send session cookie エラーを回避しつつテストするにはどうしたらいいでしょうか。
0833nobodyさん
2009/07/27(月) 12:13:13ID:???>サンプルデータ約110万件のデータ検索時間は約1秒になった
たった110万件のデータの中から特定のものを抽出するのに1秒掛かるの?速いの?
0834nobodyさん
2009/07/27(月) 12:29:27ID:???実行開始と終了で引き算して結果をどっか隅っこにでも出力すればいいのに
なんでそんなとこでアナログマなんだよ
0835nobodyさん
2009/07/27(月) 12:36:51ID:???問い合わせが来るだろうが。
夏休みは、学生の知ったかばかりだな。
0836nobodyさん
2009/07/27(月) 12:46:59ID:???0838nobodyさん
2009/07/27(月) 13:10:36ID:???aho の検索結果 約 4,440,000 件中 1 - 10 件目 (0.12 秒)
おまえはこれを否定してるんだな
それこそ知ったか、もし社会人なら恥ずかしくて自殺するレベルだぞ?
0839nobodyさん
2009/07/27(月) 13:13:54ID:???検索エンジンという特殊事例を出してきて、
しかもgoogleの一例だけで全てを語るこの薄っぺらい脳みそwww
0840nobodyさん
2009/07/27(月) 13:23:46ID:???検索エンジンの何が特殊事例なんだ?やってることは同じだろ
指摘を素直に認められないなんて、なんてちっぽけな人間なんだよ
0841nobodyさん
2009/07/27(月) 13:26:02ID:???0842nobodyさん
2009/07/27(月) 13:32:02ID:???0843nobodyさん
2009/07/27(月) 13:34:04ID:???0844nobodyさん
2009/07/27(月) 13:34:15ID:RGhhhkQisystem('ls')で望む結果は取得できたのですが
system('history')では何も出力されません(エラーも)
ソース下記状態です
<?
ini_set ( "display_errors", "1" );
ini_set('error_reporting', E_ALL);
system('history');
?>
サーバの/bin/以下をみるとlsがあるのにhistoryがありませんでした
これが関係していると思うのですが、コンソールからhistoryとうつと問題なく履歴が表示されます
そしてwhereis historyとうつと
[root@www bin]# whereis history
history: /usr/share/man/man1/history.1.gz /usr/share/man/man3/history.3.gz
のようにmanしかひっかからないのですが
historyはどこにあるのでしょうか?
また、そもそも
system('history');
が無反応なのは/bin/にhistoryがないから、で合ってるんでしょうか?
0846nobodyさん
2009/07/27(月) 13:37:12ID:???ケンカすんなよw
>>835氏は、通常のwebサイトやシステムで、実行時間を隅っこに表示するのはおかしい。
>>838氏は、実行時間を隅っこに表示する事は珍しい事ではない(検索エンジンなど)
と言ってると俺は読んだ。そして両方言ってることは間違ってないと思った。
0847nobodyさん
2009/07/27(月) 13:37:37ID:???historyは通常のコマンドじゃなくて、shell内のみで利用可能な命令。
cdとかと同じで、system()では実行できないと思うよ。
もし$HOME/.bash_history とかあれば、それを読み込んで表示するしかないと思う。
0848nobodyさん
2009/07/27(月) 13:39:54ID:???Manpage of BASH_BUILTINS
http://www.linux.or.jp/JM/html/GNU_bash/man1/builtins.1.html
historyは組み込みコマンド。
0849nobodyさん
2009/07/27(月) 13:44:50ID:???0850nobodyさん
2009/07/27(月) 14:26:50ID:RGhhhkQiありがとうございました
$HOME/.bash_historyから読み込めそうです
後学の為に組み込みじゃないコマンドをしっておきたいのですが
【組み込みじゃない】のをぐぐるときのキーワードを教えて頂けますでしょうか
0851nobodyさん
2009/07/27(月) 14:31:28ID:???0853nobodyさん
2009/07/27(月) 14:37:36ID:???文中でしても作法的におかしくはない?
0854nobodyさん
2009/07/27(月) 14:40:06ID:???0855nobodyさん
2009/07/27(月) 14:45:33ID:jUhtLxSqどうもです〜。
0856nobodyさん
2009/07/27(月) 14:57:47ID:???そして、たいてい代替案はある。
0857853
2009/07/27(月) 15:15:40ID:???設定ファイルを外部ファイルにしててそれを読み込もうとしてるんですけど
phpファイルの変数として定義されてるものです。
<?php
$hoge=13
?>
みたいな。
改修なので設定ファイル自体のフォーマットはかえられないので
includeしかないかなと
0858856
2009/07/27(月) 15:21:36ID:???0859nobodyさん
2009/07/27(月) 15:22:45ID:???0860nobodyさん
2009/07/27(月) 15:25:35ID:???0861nobodyさん
2009/07/27(月) 15:32:56ID:???0862856
2009/07/27(月) 15:56:32ID:???読み込むファイルが以下のような内容なんだけど、
局所化したほうがいいかと思って
Class hoge1{
Function hoge2(){
//ここで使う
}
Function hoge3(){
//ここで使う
}
Function hoge4(){
//ここでは使わない
}
}
0863nobodyさん
2009/07/27(月) 16:19:15ID:???0864nobodyさん
2009/07/27(月) 16:20:14ID:???importとincludeじゃ意味あいが違うけど
0865nobodyさん
2009/07/27(月) 16:22:58ID:????
それとは?
プログラムの変更は可能だけど、そういうことではなく?
Class hoge1{
Function hoge2(){
//ここで使う
include hoge.php
}
Function hoge3(){
//ここで使う
include hoge.php
}
Function hoge4(){
//ここでは使わない
}
}
0866nobodyさん
2009/07/27(月) 17:38:33ID:iOuW4Vu1【PHPのバージョン】5.3.0
【質問内容】
filesize関数を使って
1.ファイルサイズを取得
2.ファイルを書き換え
3.ファイルサイズを取得
としたとき、ファイル書き換え後にファイルサイズを取得しても、取得した値は書き換え前のものになってしまいます。
解決方法はありますか?
0867nobodyさん
2009/07/27(月) 17:40:26ID:???<?php
$time_begin = microtime(true);
/* expression */
echo "実行時間".(microtime(true) - $time_begin)."秒";
?>
チラ裏
0868nobodyさん
2009/07/27(月) 17:41:01ID:???ttp://jp2.php.net/manual/ja/function.clearstatcache.php
0869nobodyさん
2009/07/27(月) 17:46:09ID:iOuW4Vu1解決しました
ありがとうございます
0870nobodyさん
2009/07/27(月) 21:41:14ID:JxRE4otA例えば名簿アプリでmeibo_tableにループで10回(10人分)のデータをループで入れるとします
このとき、登録がうまくいった場合は「成功」失敗したら「失敗」と表示するケースで、
どのようにプログラムを書けば良いんでしょうか?
for($i=0; $i<10;$i++){
$rs = mysql_query($sql);
if(!$rs){
$err = 1;
}
}
if($rs){ echo "失敗";}else{echo "成功";}
こんな感じですか? どうも自信がないというか、もっと良いやり方がないか知りたいです
トランザクションというのがあるのも知っていますが、使い方がrollbackなどいまいちわかりません
その辺も含めて教えてもらえたら嬉しいです
よろしくお願いします
0871nobodyさん
2009/07/27(月) 21:43:09ID:???クラスにするんだったら
includeは一箇所のほうがいいと思うけどなぁ。。
で、変数の内容はprivateなメンバに入れとくかんじ。
もっとそれっぽく書くなら
フレームワークなんかのConfigとかいう感じのクラスを
参考にしてみるといいかも。
0872nobodyさん
2009/07/27(月) 21:55:43ID:???mysql_queryのエラー自体はその方法で判別できる。
エラー内容はmysql_errorで取得できる。
トランザクションについては、mysqlの場合InnoDBとかでないと出来ないので注意。
>>871
「改修なので設定ファイル自体のフォーマットはかえられない」とあるので仕方がないんじゃない?
0873nobodyさん
2009/07/27(月) 21:58:52ID:???の結果だけしか見てないんじゃあ。
ていうか$errは何に使うんだ
0874872
2009/07/27(月) 22:10:57ID:???最後のif文は$errを見ないと意味無いな
あと「$err = 1;」の行の前後でmysql_errorなどでエラー内容拾っておいたほうがいい
0875nobodyさん
2009/07/27(月) 22:13:45ID:zLQPD/lR【PHPのバージョン】PHP5.3.0
【連携ソフトウェア】特になし
【質問内容】
社内の簡易報告システムを作っています。
そのシステムのメニューをPHPで作っていて、入力した内容を別のdatファイル、
もしくはtxtファイルに入出力で保存する処理をするように設計しています。
そのメニューPHP内でチェックボックスを使用しているのですが、
チェックを入れて、セーブボタンを押すと、チェックを入れた内容が保持され、
PHPを開くたびにチェックしている状態、チェックしていない状態を表示させたいです。
今考えているのは、チェックボックスの配列を用意して、以下のような処理をし、
数値が1の時は表示画面で、チェックボックスがON、数値が0の時は表示画面で、チェックボックスがOFFという風に
処理をし、チェックボックスの状態に変更があった場合は随時更新していくという風にしたいのですが、
どういう風にチェックのスクリプトを書けばよいのか分かりません。
html部のチェックボックスにチェックが入っているのは、PHPでどのように判断させればよいのでしょうか?
chk[0] = 1; // 配列の数値が1の時はチェックボックスON
chk[1] = 0; // 配列の数値が0の時はチェックボックスOFF
chk[2] = 1; // 配列の数値が1の時はチェックボックスON
chk[2] = 1; // 配列の数値が1の時はチェックボックスON
0876nobodyさん
2009/07/27(月) 22:17:00ID:???書き込みというボタンのとこが文字化けを起こるのですが
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
と書くと治りました。
なぜですか?
某所からダウンロードしたソースには<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
と書いてないのですが・・・
0877876
2009/07/27(月) 22:17:45ID:On6c+/Yd0878nobodyさん
2009/07/27(月) 22:21:48ID:???形式変える必要はないよ。使いかたを変えるの。
設定ファイルで設定した変数(って分かりにくいな)を直に触るんじゃなくて
間にイチマイ挟む。
もしひとつのクラスでしか使ってないのなら、メンバ変数にしてもいいし
複数のクラスで使うんなら「設定値を保持してるクラス」を導入して
そのクラス経由で使うっていう。
まぁ。。そこまでやるかっていうのはあるけど
せっかくクラス使ってんならそういう方向で考えたほうがいいかなぁって。
0879nobodyさん
2009/07/27(月) 22:48:01ID:???ありがとうございました
$errで判別するのを書き間違えました
ご意見参考にして、やり直してみます
0881nobodyさん
2009/07/27(月) 22:57:18ID:???コンピュータは、文字をデータとして、つまり一種の数字として保存している。
例えば、「11」なら「あ」、「15」なら「お」、「23」なら「く」みたいなイメージな。数字と文字を1:1対応させるわけだ。
で、日本語をデータとして表現する方法、つまりこの対応付けにはいくつかの種類がある。これを文字コードという。
たとえば、「あ」は、Shift_JISコードでは16進数の「82A0」、EUC-JPコードでは「A4A2」、UTF-8コードでは「E38182」という数値として格納されている。
(16進数ってのは、htmlの色指定のアレと同じ。09の次が0Aになって、0Fの次が10になる数値の表現方法)
で、コンピュータは文字を表示する際に、「82A0」を「あ」へと再変換しないといけないわけだが。
上記のように、日本語を数値として表現する方法にはいくつか種類があるので、「このデータは、どの種類の方法で文字を数字に直したものなのか?」が分からんと日本語に戻せないわけだ。
大体の場合自動で上手い事判別してくれるわけだが(3通り試して一番それっぽいのを選ぶとか)、たまにミスる。ミスった場合、文字化けが発生する。
文字化けさせないためには、ミスらないようにすればいい。
そのためには、自動判定に頼らず、「このデータはどの文字コードで文字を表現したものか」をきちんと指定すればいい。
そのための方法のひとつがmetaタグ。
ちなみに、アルファベットは「ASCIIコード」という統一標準があるので、まず文字化けしない。
0882nobodyさん
2009/07/27(月) 23:02:18ID:5jW2DCWq今利用しているレンタルサーバに拡張モジュール BC MATH が入っていないのですが、
ぜひ BC MATH を使いたいと思っています。
そこで、単純に BC MATH に属する関数をまとめた PHP ファイルを include する考えに至ったのですが、
この拡張モジュールに含まれる関数(bccomp とか)の PHP 版のソースコードはどこかにないでしょうか?
詳しい方よろしくお願いします。
0883nobodyさん
2009/07/27(月) 23:13:36ID:???それってソースはPHPじゃないよ。
Cか何か、つまりPHPのソースの中に含まれてる。
じゃないとPHP上で数字型データの制約を外部から
書き換えることはできない。(文字型演算に突っ込む
という手があるけど最悪CPU100%食ったままタイム
アウトなんてくらいの負荷がかかる可能性がある)
ちょいと難しいんじゃないかな
0884nobodyさん
2009/07/27(月) 23:23:42ID:???0885nobodyさん
2009/07/28(火) 00:04:32ID:IxhPfTut助言ありがとうございます。
引数をString型で受けとるなどの処理をすれば、PHPでも同様の機能を実現することは不可能ではないので、
PHPで書かれた同機能の関数を探していました。
そもそも邪道というか、必要とされない手段だから誰も作らない=見つからないのでしょうか。
>>884
普通はこういう場合、どのような手段をとるのでしょうか?
アドバイスをいただけると助かります。
0886nobodyさん
2009/07/28(火) 00:33:26ID:???まずは、これを読んでください
◯HTML フォームで配列を使用するにはどうすればよいですか?
http://www.php.net/manual/ja/faq.html.php#faq.html.arrays
これら内容に従うことで、チェックされた項目を配列として取得出来ます。
後は、保存された内容と比較すればよいでしょう
0887nobodyさん
2009/07/28(火) 03:26:44ID:UNpQ8CBnそのページを参考にチェックボックスの処理はすることができましたが
datもしくはtxtに保存された内容と比較はどうすればいいのでしょうか
txtファイルには110010011... といった風にチェックボックスを入れたところは1、
そうでないところは0と記載されているのですが表示画面に反映できません
0888nobodyさん
2009/07/28(火) 03:39:40ID:???0889nobodyさん
2009/07/28(火) 03:45:50ID:???どの言語でもライブラリがなければ自分で作るし>>882の考えは普通よ
大抵の場合PEARにあがってるから使ってあげようぜ
http://pear.php.net/package/Math_BigInteger
0890nobodyさん
2009/07/28(火) 03:48:06ID:???0891nobodyさん
2009/07/28(火) 03:53:16ID:UNpQ8CBnif文でいけました
しかし、チェックを入れてセーブボタンを押すとチェックを入れたチェックがすべて消えて、
もう一度セーブボタンを押すと反映されたものが表示されます
こういった風になるのは普通なのでしょうか?
0892nobodyさん
2009/07/28(火) 03:57:41ID:UNpQ8CBn反映さえた後にそのチェックボックスをオフにするとすべてオフといった状態に反映されません。
何がいけないのでしょうか?
0893nobodyさん
2009/07/28(火) 04:08:31ID:???0894nobodyさん
2009/07/28(火) 04:25:47ID:UNpQ8CBn0895nobodyさん
2009/07/28(火) 05:11:11ID:UNpQ8CBnttp://www.rupan.net/uploader/download/1248725391.txt
パスはphpです。
check.phpとファイル名を変えて、別途check.txtファイルをご用意ください。
0896nobodyさん
2009/07/28(火) 06:46:46ID:???<?php
$n = 10;
//書き込みロジック
$text = "";
if (isset($_POST['chk'])) {
for ($i = 0; $i < $n; $i++) {
if ($_POST['chk'][$i]) {
$text .= "1\n";
} else {
$text .= "0\n";
}
}
file_put_contents("check.txt", $text, LOCK_EX);
}
//表示ロジック
$list = file("check.txt");
for ($i = 0; $i < $n; $i++) {
if ((int)$list[$i]) {
echo "<input type=\"checkbox\" name=\"chk[{$i}]\" value=\"{$i}\" checked>{$i}<br>\n";
} else {
echo "<input type=\"checkbox\" name=\"chk[{$i}]\" value=\"{$i}\">{$i}<br>\n";
}
}
?>
なるべくシンプルに書いたつもり
インデントに全角スペースつかってるのでそのままコピペしても動かないので注意
原因は・・・ロジックの流れにあると思うけど詳しく調査してる時間もないので
詳しい人に任せるとしよう
0897nobodyさん
2009/07/28(火) 07:04:16ID:???すべてのチェックをオフにした場合
ii (isset($_POST['chk']))が働かないので更新されない
だからそこは変えたほういいよ
前回の状態と比較してかわってたら更新とかにすると
またやることが増えるので
単純にPOSTされたときに更新すればいいのだから
if ($_POST)とかにしたほうがいいと思う
0898nobodyさん
2009/07/28(火) 08:19:20ID:UNpQ8CBnありがとうございます
とりあえずコピペして動作確認をしてみたのですが、
やはり配列0の箇所が反映されません
>>891の修正は完璧でした
>>897
if ($_POST)にしてみたのですが、動作は変わりませんでした
0899nobodyさん
2009/07/28(火) 08:41:56ID:/osX6Bgiありがとうございます!
PEARは導入したことがなかったのですが、使用してみようと思います!
0900nobodyさん
2009/07/28(火) 08:47:54ID:/osX6Bgiクラス内で BC MATH 関数を使用しているようでした…;;
0901nobodyさん
2009/07/28(火) 09:35:09ID:???0902nobodyさん
2009/07/28(火) 10:28:24ID:???今手元に環境がないから動くかわからないけど、
array_fillで初期化してあらかじめ配列を用意しておいたらどうだろうか?
0と1だけ入れればいいのなら、
$n = 10;
if (isset($_POST['chk'])) {
$text = "";
$tmp = array_fill(0, $n, 0);
foreach ($_POST['chk'] as $key => $value) {
$tmp[$key] = 1;
}
foreach ($tmp as $value) {
$text .= $value."\n";
}
file_put_contents("check.txt", $text, LOCK_EX);
}
チェックボックスに何もいれなかったらエラーが出たり、
>>897の指摘にあるようなことがおきるので正常終了のための条件が必要。
チェックボックスが空の状態でもページを読み込んだ初期の状態でも、
おそらく!$_POST['chk']の状態であるので一工夫必要。
0903nobodyさん
2009/07/28(火) 12:16:04ID:iDr4ntOeそれともCみたくゴミが入ってることもあり得るのでしょうか?
0904nobodyさん
2009/07/28(火) 12:20:17ID:???http://jp2.php.net/manual/ja/language.variables.basics.php
0906nobodyさん
2009/07/28(火) 14:14:11ID:nFAJUBt9一番いいモジュールってどれでしょうか?
できればフリーで。
0908nobodyさん
2009/07/28(火) 14:32:23ID:???ttp://pchart.sourceforge.net/
0909nobodyさん
2009/07/28(火) 18:13:11ID:???ドキュメントぐらい読もうぜ
GMP/BCMath/俺俺実装のいずれかを使うって書いてあるでしょ
> Uses the GMP or BCMath extensions, if available,
> and an internal implementation, otherwise.
0910nobodyさん
2009/07/28(火) 19:06:49ID:???0911nobodyさん
2009/07/28(火) 19:13:18ID:???0912nobodyさん
2009/07/28(火) 19:58:38ID:???異論は認める
0913nobodyさん
2009/07/28(火) 20:09:28ID:???0914nobodyさん
2009/07/28(火) 20:16:49ID:???サンプルが豊富にあって、重宝してたんだが
↓サンプルサイト
http://pear.veggerby.dk/samples/
0915nobodyさん
2009/07/28(火) 20:46:32ID:???>>886に書いたページの次のFAQ
◯"select multiple" タグで選択された全ての結果を取得するには どうすればよいですか?
ここに
「... count() 関数を使えば選択された項目の数を知る ことができます。...」
と書かれています。
つまり、チェックを付けた箇所しか値が飛んできません。
チェックを外しても、値は飛んできません。
(PHPの仕様として、このページ以外のところに書かれてるとは思うのですが、不明です。)
従って、何番目をチェックしたかも保存する必要があるでしょう
例えば、保存フォーマットを
番号=チェック状態
とするとか...
この場合、file関数で配列展開した後、各行に対してexplodeで番号とチェック状態に分解すればよいでしょう。
0916nobodyさん
2009/07/28(火) 20:48:52ID:???「もう一度セーブボタンを押すと...」の所も同じ原因でしょう
(全てoffのため、$_POST['chk']がセットされず、ファイル更新されなかった。多分)
>>891の前半は不明。
$list = file("check.txt");
の直後に、print_rかvar_dumpで$listの内容を表示してみると何か原因が見えてくるかもしれない
0917nobodyさん
2009/07/28(火) 23:38:24ID:sYVzfVPt【PHPのバージョン】PHP5.2.9(XAMPP1.7.1)
【連携ソフトウェア】特になし
【質問内容】
PHPで以下のコードを書いたときに配列の値が出力されません。
原因を教えてください。
<?php
class Sample{
public $i;
public $arr = array("A", "B", "C", "D");
function Sample(){
$this->i=0;
}
function output(){
while($this->i < count($this->arr)){
print("$this->arr[$this->i]<br>");
$this->i++;
}
}
}
$samp = new Sample();
$samp->output();
?>
出力結果
Array[0]
Array[1]
Array[2]
Array[3]
foreachを使用する方法ならうまく出力されますが、この方法だと
なんでうまくいかないのかわかりません。
0918nobodyさん
2009/07/28(火) 23:52:34ID:???print( $this->arr[$this->i].'<br>');
または
print( "{$this->arr[$this->i]}<br>");
0919nobodyさん
2009/07/29(水) 00:09:58ID:4FaRK/k2ありがとうございました。期待する表示がされました。
これってどういうことなんでしょうか?
print関数に渡す前に$thisを解決しておく必要があるということでしょうか?
0920nobodyさん
2009/07/29(水) 00:19:05ID:???シングルクオートの場合は変数すらも文字列として扱われる
○ "$var<br>";
○ "{$var}<br>";
× '$var'<br>;
× '{$var}<br>';
○ $var . "<br>";
○ $var . '<br>';
× "$this->a[]<br>"
○ "{$this->a[]}<br>"
○ $this->a[] . "<br>"
0921nobodyさん
2009/07/29(水) 00:34:24ID:4FaRK/k2おお、なるほど。
解説ありがとうございました。
0922nobodyさん
2009/07/29(水) 00:37:26ID:???ここ。
http://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing
920は一箇所まちがってる。
0923906
2009/07/29(水) 08:15:18ID:cjl2IXaK軸ラベルとか凡例に日本語出したければ、jPGraphくらいしか
ないのでしょうか?
jPのフリー版だと6種類くらいしか作れないようで。
0924nobodyさん
2009/07/29(水) 11:21:59ID:???具体的にどれでどうやって出ないと判断した?
0925nobodyさん
2009/07/29(水) 13:26:47ID:???とかくのがだるいんですけど、もっとかっこよく書ける方法ありませんか。
$v = array_get($variables, 'keyname');
みたいなのがあればいいんですけど。
0926nobodyさん
2009/07/29(水) 13:34:08ID:???0927nobodyさん
2009/07/29(水) 13:53:26ID:???0928nobodyさん
2009/07/29(水) 14:34:52ID:xKqUPasC【PHPのバージョン】PHP 4.3.4
phpで外部コマンド(ps aux)の戻り値を取得したいんですが
なぜか、結果の一行が80バイトで切られてしまいます。
[期待] nobody 3040 0.0 0.4 34000 17652 ?? S Sun05AM 5:56.90 /usr/local/apache/bin/httpd
[結果] nobody 3040 0.0 0.4 34000 17652 ?? S Sun05AM 5:56.90 /usr/local/apach
※shell_exec(), system(), passthru()全て同じ結果です。
結果を末尾まで取得したいのですが、何か方法ありますでしょうか?
0929nobodyさん
2009/07/29(水) 14:42:24ID:???PHPのせいじゃなく、ps auxの出力自体が、80バイトで切られていると思う。
ps auxww とかでやってみてはどうだろう。
0930nobodyさん
2009/07/29(水) 14:48:41ID:xKqUPasCおー!ありがとうございます。出来ました。
コマンドラインからだと ps aux で表示出来ていたので
php のせいかと思ってました。
ありがとうございました^^
0931nobodyさん
2009/07/29(水) 15:36:43ID:ZW0xU0/lこれって意味ありますか?
つまり、半角の文字列のコードって文字コードによって変わるのでしょうか?
0932nobodyさん
2009/07/29(水) 15:45:15ID:???でもまあ、その例のような7ビットで収まるコードは、
UTF-8もSJISも同じだけどな。
0933nobodyさん
2009/07/29(水) 16:56:21ID:???0934nobodyさん
2009/07/29(水) 17:05:13ID:???ってバラバラにeclipse入れてxampp入れるより
数倍ハヤクできるよね
なんかいろいろいじって時間かかってたけど
さっきこれみつけてガックリきた・・
0935nobodyさん
2009/07/29(水) 17:12:49ID:???しかも全部ソースからコンパイル
0936nobodyさん
2009/07/29(水) 17:48:50ID:jN1W2sq9これに何かフックを仕掛けることはできますか。
やりたいことは、PHPが用意しているセッション機能ではなく自前のセッション機能を使いたくて、
それでPHPがHTTPヘッダーを送信するときに、自前のセッション用クッキーを送信しようとしています。
どなたかアドバイスをお願いします。
#自前のセッション機能の是非についてはスルーの方向でお願いします。
0937nobodyさん
2009/07/29(水) 18:34:25ID:???0938nobodyさん
2009/07/29(水) 19:33:37ID:OT09YFlbになってんのを一時的に無効にしたいんだけど
関数で制御する方法を教えてちょんまげ
0939nobodyさん
2009/07/29(水) 20:24:58ID:QWRvNOasGoogle App EngineがPHPに対応したんでやりたいんだけど、金ってかかる?
用途は趣味のサイトの掲示板だから、10MBもあれば足りるんだけど・・
0940nobodyさん
2009/07/29(水) 20:25:27ID:???0941nobodyさん
2009/07/29(水) 20:29:59ID:QWRvNOas0942nobodyさん
2009/07/29(水) 20:31:18ID:???0943nobodyさん
2009/07/29(水) 20:34:44ID:???http://pc11.2ch.net/test/read.cgi/php/1243654802/
0944nobodyさん
2009/07/30(木) 01:39:34ID:S7w57STy$pattern = '/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/';
$log_file = $_POST['select'];
if (!$fp = fopen("/home/hogehoge/logs/$log_file", "r")) {
echo "ファイルが開けません!";
die;
}
while (!feof($fp)) {
$line = fgets($fp);
preg_match($pattern, $line, $matches);
$host = @gethostbyaddr($matches[1]);
$time = preg_replace("/^\d.*2009:|\+0900/", "",$matches[4]);
$refer = preg_replace("/NET.*/", "",$matches[9]);
echo $host." ".$time." ". $refer."<br>";
}
自分の意図としては、最新のログを一番上に表示させたいのですが、これだと古いログが一番上に表示されてしまいます。
array_reverseやらrsortなど試したのですが思うよういきません。
ご教示お願いします。
0945nobodyさん
2009/07/30(木) 02:03:45ID:???$pattern = '/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/';
$line = file("log.log",FILE_SKIP_EMPTY_LINES);
$length = count($line);
$logarray = array();
for($i=0;$i<$length;$i++){
preg_match($pattern,$line[$i],$matches);
$logarray[] = $matches;
}
$logarray = array_reverse($logarray,true);
print_r($logarray);
?>
こんな感じで
0946nobodyさん
2009/07/30(木) 02:06:31ID:???0947nobodyさん
2009/07/30(木) 02:45:34ID:S7w57STyおお、こういう方法もあるんですね。勉強になります。
ありがとうございました。
0948nobodyさん
2009/07/30(木) 11:18:52ID:Mynk8nfnみたいな記述方法しているのですが、
Call-time pass-by-reference has been deprecated
- argument passed by value; If you would like to pass it by reference,
modify the declaration of [runtime function name]().
If you would like to enable call-time pass-by-reference,
you can set allow_call_time_pass_reference to true in your INI file.
However, future versions may not support this any longer
のようなエラーが出てしまいます。
翻訳(ツール)すると、
「呼び出し時間は参照パスに推奨しないです」のような感じのエラーですが、どういう意味でしょうか。
同じようなエラー出た人いませんか?
0949nobodyさん
2009/07/30(木) 12:01:43ID:???呼び出し時の参照渡しは非推奨だから関数(lfGetData)の宣言の方を
参照渡しになるように修正しろ。
どうしても呼び出し時の参照渡しをしたければ、
iniでallow_call_time_pass_referenceをtrueにすればできるけど、
将来のバージョンではこの機能がサポートされないかもしれない。
と読めるな。
function lfGetData($id, $obj){
}
となっているなら、
function lfGetData($id, &$obj){
}
に変更して、
$this->value = $this->lfGetData($id, $obj);
と呼び出せってことじゃないか?
0950nobodyさん
2009/07/30(木) 12:47:41ID:???0951nobodyさん
2009/07/30(木) 13:19:10ID:???というか、変数名をよく見てなかったよ...。
0952nobodyさん
2009/07/30(木) 20:04:34ID:???allow_call_time_pass_referenceはPHP4からの移行用だから
新規開発でonを必要とするものは書かないでね
0953nobodyさん
2009/07/31(金) 09:14:37ID:lGlimiZC来年からWEBエンジニアとして働く予定なんですが、あらかじめ勉強しておきたいと思っています。
初心者なんですが、どれを勉強した方が良いのでしょうか。会社からは、入社後にやるから入社前は勉強
しなくて良いと言われてるんですが、全くの初心者なので入社前に勉強しておかないと不安です・・・。
お願いします。
0954nobodyさん
2009/07/31(金) 09:33:42ID:???会社に質問できるなら会社で使われてる言語。
案外Javaとかかもしれないし。
質問できないならPHPあたりが無難かな。ここPHPスレだし
Perlもあるよ。
0955nobodyさん
2009/07/31(金) 09:51:02ID:lGlimiZC以前、聞いた事はあるんですが、「言語なんか気にしなくてもいい。入社後やるから。」と言われました。
でも、中途採用の所を見るとPHPでの開発経験○年以上とあるので、PHPかもしれません。
PerlとPHPなら、やはりPHPを勉強した方が良いですよね・・・。
0956nobodyさん
2009/07/31(金) 10:03:27ID:???今現在のスキルは?
htmlがわからないなら、phpよりもhtml/cssをやっておいたほうが教える方も助かる
htmlがわかるなら、今度はjavascriptとかも多少かじっておくといい
javascritpのようなクライアントサイドと、phpのようなサーバサイドで
それぞれ何をするべきかとか、ちょっとでもjavascript触っておいてもらえるとこれまた教えやすい
あとはwebエンジニアということなので、httpの仕組みとか勉強したほうがいい
0957nobodyさん
2009/07/31(金) 10:11:18ID:???俺は学校でCとかPascal使ってやった
0958nobodyさん
2009/07/31(金) 10:13:42ID:???Pascalは個人じゃないだろ・・・。
Cは作ってても面白いものができないので、うぇb系の言語のほうが
いいと思うけどね
0959nobodyさん
2009/07/31(金) 10:16:50ID:lGlimiZC大学の時はC言語を勉強していました。WEB系ですとhtmlが少し解る程度です。
でも、高校の時にやってたので、かなり忘れてます・・・。
なので、htmlから勉強し直した方が良いかもしれませんね。
html→javascript→PHPの順に勉強しようと思います。
httpの仕組み・・・。頑張って勉強します。今日、本屋に行って勉強出来る本を探しに行こうと思います。
0960nobodyさん
2009/07/31(金) 10:24:35ID:???javascriptは奥が深いから、とりあえずどんな時に使うかと記述の仕方がわかればいいと思う
httpについては、URLを入力するとなぜ表示されるのか?を図解できればいいよ
あとapacheのモジュールとして使うPHPとCGIの違いとか。
結構、httpの仕組みとかわからない人多いから、やっとくと後々効いてくるから頑張ってね。
0961nobodyさん
2009/07/31(金) 10:27:24ID:???Cを習得しているなら本なんて必要ない
ネットで配布されてるプログラムDLしてきて解説サイト見ながらやればすぐに使えるようになる
0962nobodyさん
2009/07/31(金) 10:27:28ID:lGlimiZC質問して良かったです。今日から勉強を始めようと思います。本当にありがとうございました!
0963nobodyさん
2009/07/31(金) 10:29:25ID:???Javascriptは言語なんて勉強しなくていい。どんなことに使えるか、
どんな風に使うか。実装依存ありすぎの言語だからストレートに使う
と馬鹿をみる。むしろ実際の業務の上で使える例題を増やしていけば
いいというもの。
それよりは、Cをやっていたのなら、Javaをまずやった方がいい。
CとJavaの違いは、クラスを扱うことができること。PHP、Perlといった
メジャーなWebツールの殆どはクラスを扱えし、使う機会も多いから、
その基礎をJavaで勉強しよう。
ほかのひとが言うように、http の仕組みと、HTML、CSSは理解していた
方がいい。あと、基礎勉強しているうちに、色やフォントの理解もして
いたほうがいいよ。フォントのレンダリングとは何か、色ってのはどういう
構造で、どんな風にあらわすのか、とか。それと文字コードも。
0965nobodyさん
2009/07/31(金) 10:36:35ID:???0966nobodyさん
2009/07/31(金) 10:37:37ID:???それに最近のセキュリティ対策はそれぞれ
の実装の上での問題となることが多い。
インジェクション対策とか、Apacheの特定の
アップデートとか。いずれにしても、httpを
学べばひと通り、IPでできることも理解できる
と思う。セキュリティは後付けで、そのときの
最新の情報を追っていけばいいと思うよ。
作る側の立場ならね。
0967nobodyさん
2009/07/31(金) 11:09:24ID:???スクリプト改造とか、サービス作成とかして学んだほうがいいよ
0968nobodyさん
2009/07/31(金) 12:58:41ID:RzCftC+Pphpスクリプトのアップロードも許可しています。
headerで「Content-Type: application/octet-stream」を指定すればダウンロードになりますが、
これでphpスクリプトのダウンロードしても大丈夫でしょうか。
テストでは、スクリプトコード丸々書いてあるhoge.phpがダウンロードされました。
0969nobodyさん
2009/07/31(金) 13:00:59ID:???スクリプトコード丸々書いてあるファイルでなく何をダウンロードさせたいの?
0971nobodyさん
2009/07/31(金) 13:31:14ID:???move_uploaded_fileで移動するときに拡張子を.phpから.txtに変えて直リンでいいと思う
0972nobodyさん
2009/07/31(金) 14:17:00ID:???好きなのからやれ
0973nobodyさん
2009/07/31(金) 15:07:15ID:???ヘッダ情報と
クッキーと
POST・GETわかれば十分?
0974nobodyさん
2009/07/31(金) 15:29:35ID:???0975nobodyさん
2009/07/31(金) 17:58:10ID:???0976nobodyさん
2009/07/31(金) 18:15:02ID:???0977nobodyさん
2009/07/31(金) 20:14:44ID:f7nn6Kbbチェックボックスのデータをひとつずつ取り出して
それをデータベースのwhere文で検索したいのですが、
たとえばhttp://www.livein-tokyo.com/search2.php?tdfk_cd%5b%5d=13&tdfk_cd%5b%5d=14&tdfk_cd%5b%5d=11&
tdfk_cd%5b%5d=12こんな感じの場合どうやって取り出してmysql文
を組むのでしょうか?
教えてください。
チェックボックスの扱い方がわかりません
0978nobodyさん
2009/07/31(金) 20:27:27ID:???配列わたしてんじゃね
0979nobodyさん
2009/07/31(金) 20:51:15ID:???0980nobodyさん
2009/07/31(金) 20:51:49ID:f7nn6Kbbソースかこういうことだよっていう
サイトがみたいです。
参考になるサイトありませんか?
よろしくお願いします。
配列わたしてんじゃね
だけでは意味がわからない。
0981977です。
2009/07/31(金) 20:56:51ID:f7nn6Kbb参考になりそうなサイトはいろいろたとえば
http://akita-nct.jp/yamamoto/comp/WEB/get_data/index.php
見たんですが、なんかこういまいちどう作っているのか
わからなくて。教えてください。
お願いします。
0982nobodyさん
2009/07/31(金) 20:59:08ID:???0983nobodyさん
2009/07/31(金) 20:59:42ID:???0985nobodyさん
2009/07/31(金) 21:05:14ID:???0986977です。
2009/07/31(金) 21:10:43ID:f7nn6Kbb$checkbox = $_REQUEST["chk"];
?><html>
<head>
<title>sample04</title>
</head>
<body>
あなたの好きなものは。<hr>
<?php
for($i=0; $i<sizeof($checkbox); $i++){
print "${checkbox[$i]}<br>";
}
?>
<p><a href="form4.html">戻る</a></p>
</body>
</html>
で作ったものをひとつひとつに分解して、sql文に入れたり
where文でひとつずつ検索をかけたりするにはどうしたらいいいの
でしょうか?
0987nobodyさん
2009/07/31(金) 21:13:31ID:???まあとりあえずvar_dump($_REQUEST)すりゃ筋道見えてくるだろ
0988977です。
2009/07/31(金) 21:14:49ID:f7nn6Kbbこれも品川区と府中市にチェックを入れた場合sql文のwhereで検索
かけていますよね。
でもどうやって2つ以上チェックされているのをひとつずつ分解して
検索をかけているのかそこがわかりません。
教えてください。
宿題ではありません。
0989nobodyさん
2009/07/31(金) 21:15:44ID:???質問のレベルに達してないわ
仕組みがわからないというなら自分で調べな
書き方やコードに関する質問なら教えてあげるよ
0991nobodyさん
2009/07/31(金) 21:17:55ID:???0992nobodyさん
2009/07/31(金) 21:21:03ID:???http://pc11.2ch.net/test/read.cgi/php/1249042741/l50
0994nobodyさん
2009/07/31(金) 21:21:54ID:???http://pc11.2ch.net/test/read.cgi/php/1238936666/l50
【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
http://pc11.2ch.net/test/read.cgi/php/1233590976/l50
姉妹スレ
0995977です。
2009/07/31(金) 21:22:25ID:f7nn6Kbb書き方を教えてくれ。
それを自分でしらべる。
初心者スレにいったほうがいい?
>>990
すまない。踏んでしまった。
次スレはたてられない。
0996nobodyさん
2009/07/31(金) 21:24:39ID:???∧_∧ 次スレでぼこぼこにしてやんよ
( ・ω・)=つ≡つ
(っ ≡つ=つ
/ ) ババババ
( / ̄∪
0997nobodyさん
2009/07/31(金) 21:28:48ID:f7nn6Kbbどうすればいいのかな?
0998nobodyさん
2009/07/31(金) 21:33:48ID:???phpの内容は
<?php
echo "<pre>".print_r($_POST,true)."</pre>";
?>
0999nobodyさん
2009/07/31(金) 21:36:36ID:???$_GET['tdk_cd'][1] = 14;
$_GET['tdk_cd'][2] = 11;
$_GET['tdk_cd'][3] = 12;
ってことだろ
んでこの数字は県IDだろ
11埼玉
12千葉
13東京
14神奈川
これでわかりませんか?
1000nobodyさん
2009/07/31(金) 21:38:34ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。