【PHP】下らねぇ質問はここに書き込みやがれ 29
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/17(日) 04:26:39ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0133nobodyさん
2006/09/19(火) 17:06:28ID:Uo5rUHBVリロードするとformから受け取ったデータが残ってまして、
同じ内容が書き込まれてしまうんです。
0134nobodyさん
2006/09/19(火) 17:17:14ID:???それは変数の$_POSTの中身を消した所でどうにもならない。
クッキーなりセッションなり使ってリロード対策するしかない。
0135nobodyさん
2006/09/19(火) 17:25:09ID:???お前バカか? どういう本の読み方してんだ。
『PHPポケットリファレンス』のendのページの下の部分に
関連関数としてresetがしっかり載ってるじゃないか。
これで「対義語が載ってないくさい」などとよく言えるな、この能無しチンカスが。
0136nobodyさん
2006/09/19(火) 17:26:37ID:???>リロードするとformから受け取ったデータが残ってまして
受け取ったデータが残っているのではなく、
送る側が同じデータを送信している
消したいなら、クライアント側を工夫する+処理後に表示するページを別ページにする
0138nobodyさん
2006/09/19(火) 18:20:55ID:4NYt81r/登録したファイルの拡張子を記録したいのですが、
例えば
$upfile="test.jpeg" //JPEGファイルをアップしたと過程
if(ereg(".jpeg",$upfile)){
echo"これはJPEGファイルです";
}
っと識別出来るかと思うのですが、必ずしも特定のファイルじゃないと思うし
さまざまな拡張子があると思います。
その場合も事前に「これは○○ファイルです」というようにIFを用意しておくのでしょうか?
それとも、もっと便利な方法・構造があるのでしょうか?
0139nobodyさん
2006/09/19(火) 18:34:38ID:???まず第一に拡張子はいくらでも変更出来るので実際のファイルが何かは分からない。
これは多分理解してると思うから・・。
あとは正規表現なり、 . でsplitするなりである程度出来るんじゃん。
0140nobodyさん
2006/09/19(火) 18:49:58ID:???目的と頻度次第でお好きなように、ってのが正直なとこ。
システムの目的として拡張子登録が重要な機能で
可能な限り全ての拡張子を網羅しなければいけなくて
必要時にすぐ新規の拡張子が登録できなければ…
みたいな話ならメンテナンス性が重要になると思うんで、
「拡張子文字列」→「ファイル種別文字列」
みたいな対応ファイルを別途用意してそれを読み込んで
処理するような仕組みを採用した方がいいかもしれないし、
判別が画像ファイルだけとか数が少ないならif並べた方が早いし、
追加が緊急では無いが数は多いとかなら配列データとして
includeファイルにリストアップしとくのがベストかもしれない。
配列データからの判定は例えば
$ext_list = array(
"jpeg" => "JPEGファイル",
"jpg" => "JPEGファイル",
"gif" => "GIFファイル",
);
$pathinfo = pathinfo($upfile);
$ext = $pathinfo['extension'];
if(isset($ext_list[$ext])) {
echo "これは{$ext_list[$ext]}です";
}
みたいな感じで処理する。
0141138
2006/09/19(火) 19:01:03ID:???アドバイスありがとうございます。
目的としては登録リストを拡張子で並べ替え出来る程度で良いのですが、
140さんが書かれているソースの方法だと汎用性も高いと思うし、
私自身も意味が理解出来るので、良いですね。勉強になりました。
0142nobodyさん
2006/09/19(火) 19:03:04ID:Uo5rUHBV処理する記述は大丈夫でしょうか?
0143nobodyさん
2006/09/19(火) 19:09:55ID:???別に問題はないよ。それでロックという目的が果たされてるかは知らんけど。
複数ファイルを一斉にロックする場合、ロック状態を示すロック専用ファイルを
1個だけ用意しておいてロックはそれだけで行うという「プロセスロック」という
考えの方が適切な場合もある。
0145nobodyさん
2006/09/19(火) 19:35:11ID:???0146nobodyさん
2006/09/19(火) 20:16:12ID:???INSERT INTO `tbl` (`key1`, `key2`, `key3`) VALUES ($val1, $val2, $val3)
って書き方っていつも面倒くさいと思ってたけど
INSERT INTO `tbl` SET `key1` = '$val1', `key2` = '$val2', `key3` = '$val3'
って書き方もあるんだね?いままで知らなかった。
この書き方ってなにか問題ありますかね?
0147nobodyさん
2006/09/19(火) 20:25:52ID:???0148nobodyさん
2006/09/19(火) 20:26:17ID:???みづらくてしょうがありません。
しかし改行を入れると正規表現が変わってしまい
見やすく整理できません。
どういうふうに整形していけば良いのでしょうか?
現在こんな感じです。
preg_match_all("(<\/TABLE>[^a-z]{15,15}(.+)[^a-z]{15,15}<TABLE border=\"1\"><TR><TD>|<font color=.+>...(.*)...<\/font>.*(http.*)\">(.*)</a>)U",$content,$content);
0149nobodyさん
2006/09/19(火) 20:36:13ID:???"loooooooooooooooong " .
"regular expression/";
preg_match($reg, $str);
0152nobodyさん
2006/09/19(火) 20:48:26ID:???0157nobodyさん
2006/09/19(火) 22:21:08ID:sKqysrv5安全といえるのでしょうか?
また、htaccessを使わずにディレクトリごとロックすることは可能でしょうか?
たとえば・・・
public_html-----[abc]←このディレクトリ中のファイルへのアクセスを拒否するのは可能ですか?
0159nobodyさん
2006/09/19(火) 22:59:26ID:???>IDとpassの埋め込み型のphpファイルは安全といえるのでしょうか?
心配なら生Pass記述ではなく、cryptした値で比較すれば?
>htaccessを使わずにディレクトリごとロックすることは可能でしょうか?
httpd.confが弄れるなら可能。
0160nobodyさん
2006/09/19(火) 23:25:08ID:???まあ普通に使ってる限り、拡張子がphpのファイルはソースが見えることはありえないが、
設定ミスなどが怖いのなら、パスワードを書いたファイルはDocumentRoot外に置いて
includeすれば良い。
0161nobodyさん
2006/09/19(火) 23:35:24ID:???あんまり後者の書き方は見かけないんですが・・・
mysql書き始めて2年にもなろうというのに初めてみましたよ>後者の書き方
0162157
2006/09/19(火) 23:36:21ID:???<<159さんや<<160さんみたいのは新しい発見です。
cryptで暗号化も考えたのですが、結局生のパスワードを書きますから
先輩方のアドバイスを参考にさせていただきまして、もうすこし調べてみます。
ありがとうございます。
0164nobodyさん
2006/09/19(火) 23:51:04ID:???0165nobodyさん
2006/09/20(水) 00:11:51ID:???0166nobodyさん
2006/09/20(水) 00:12:23ID:???>cryptで暗号化も考えたのですが、結局生のパスワードを書きますから
なんで、暗号化するのに生のパスワードを書く必要があるの?
PHP内にはcryptで暗号化した文字列だけ書いておいて、
入力されたパスを同じcrypt化して比較すればいいじゃん。
0167nobodyさん
2006/09/20(水) 00:15:56ID:???アクセス数に対し、可変する横棒グラフを作成しています。
例えば、1日(30)、2日(15)、3日(40) ※()内はアクセス数です。
とした場合、どういう風に構築するのが良いのでしょうか?
単純に<img src="bar.gif" width="<?=$access?>">とすると、横に伸びきるし。。
質問内容がまとまっていないかもしれませんが、ご教授いただければと思います。
0169nobodyさん
2006/09/20(水) 00:34:33ID:???とりあえずメール欄は空白も何も無しが正解。努力は買うが。
仕様として、横バーの最大を固定にするか可変にするかでも変わる。
1日(30)、2日(15)、3日(40)のときで40のグラフが横幅いっぱいになるようにするなら
$acc = array(1 => 30, 2 => 15, 3=> 40); //アクセス数のリスト
$maxwidth = 400; //バーの横幅最大
$max = max($acc);
$rat = $maxwidth / $max;
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
という感じだろう。
それに対して、アクセス数100のときに横幅いっぱいになるようにするなら
$acc = array(1 => 30, 2 => 15, 3=> 40); //アクセス数のリスト
$maxwidth = 400; //バーの横幅最大
$rat = $maxwidth / 100;
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
になるかと。
0170167
2006/09/20(水) 00:48:26ID:???ありがとうございます。ただ、説明不足で申し訳ないのですが、
1日とかは日付が入っているので実際は”2006年9月20日”になります。
それをDBで管理しているので
day | count
2006-09-18 | 30
2006-09-19 | 15
2006-09-20 | 40
というような表から抽出して表示させるわけです。
その場合、arrayで配列に代入する方法は使用出来ないかと思いまして。
説明不足で申し訳ないのですが、もう少しお願い出来ないでしょうか。
0172nobodyさん
2006/09/20(水) 00:57:19ID:???外部のオブジェクトが簡単に利用する方法は
ありませんか?
function get_content(){
$aaa = "aaa";
$bbb = "bbb";
$ccc = "ccc";
}
たとえばこんな感じに、変数を複数設定してしまったとき、
ほかのオブジェクトも、この変数を利用したいのですが・・・
0173nobodyさん
2006/09/20(水) 01:01:47ID:???後だしじゃんけん的質問はイカン。それに169がここまで書いてくれてるんだから後は
自分で考えるないとなー
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
を
while ($row = mysql_fetch_assoc($result)) {
$w = $row["count"] * $rat;
echo <<<EOT
{$row["day"]}<img src="bar.gif" width="{$w}"><br>
EOT;
}
とかでいいんじゃまいか?日付の書式は適当にね
0174nobodyさん
2006/09/20(水) 01:17:32ID:???PHPスクリプトとして認識させないならreadfileもあるよ
>>148
xを使う。スペースは\sで。{15,15}は{15}でいいよ。
$str = 'outer"in\"ner"outer';
preg_match('!
"( # デリミタとその内側のキャプチャ開始
(\\\\.|[^"])+ # エスケープを避けて"までの最短マッチ
)" # キャプチャとデリミタの終了
!x', $str, $cap);
var_dump($cap);
0175nobodyさん
2006/09/20(水) 01:56:01ID:???> その場合、arrayで配列に代入する方法は使用出来ないかと思いまして。
それで何が困るのかさっぱり分からん。
$acc = array(
"2006-09-18" => 30,
"2006-09-19" => 15,
"2006-09-20" => 40,
);
というアクセス数の配列にしといて
$maxwidth = 400; //バーの横幅最大
$max = max($acc);
$rat = $maxwidth / $max;
foreach($acc as $date => $cnt) {
?><?=$date?><img src="bar.gif" width="<?=$acc[$date] * $rat?>"><br><?php
}
でふつーに問題なくね?
0176nobodyさん
2006/09/20(水) 09:21:48ID:???マニュアルを見た感じ、出力後にバッファをクリアするかしないかの違いしかないような感じなんですが、それだけですか?
0177nobodyさん
2006/09/20(水) 09:52:13ID:???以降の出力を内部バッファに保存する
↓
ob_flash
内部バッファに保存された出力を、出力バッファへ移動する
↓
flash
出力バッファからクライアントへ送信
まぁあれだ、ob_flash()やってもPHPが常に持ってるバッファに移動するだけで、
それを即座にクライアントへ送りたいならflash()が必要だって事だ。
タブン
0178nobodyさん
2006/09/20(水) 10:59:42ID:???>書き込み完了後にLocationで別ページに飛ばしちゃうのが簡単な対策
飛ばしても、「戻る」ボタンでPOST後のページに戻れば再POSTになっちゃうけどね。
0179nobodyさん
2006/09/20(水) 11:16:15ID:???ならないよ
Location の意味分かってる?
HTTPヘッダーを使用したリダイレクトね。
IE, Firefox, Opera の最新版で試したが、全部ならない。
0180nobodyさん
2006/09/20(水) 12:36:06ID:74yeHhioOSはLinux(CENTOS)で、PHPは4.3。
sendmailそのものは動いています。(telnetからメール送信した)
php.iniの記述は↓です。
sendmail_path = /usr/sbin/sendmail -t -i
特に問題ないはずなのに、原因が分からず途方にくれてます。
0181nobodyさん
2006/09/20(水) 12:40:45ID:xiIYenEjapache 2.2.0
php 5.1.6
net-snmp 5.2.2
でphpを--with-snmpでコンフィグしてるんだけど、
apache起動時にエラーログに
Cannot find modue (IP-MIB): At line 0 in (none)
Cannot find modue (IF-MIB): At line 0 in (none)
Cannot find modue (TCP-MIB): At line 0 in (none)
Cannot find modue (UDP-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-SMI): At line 0 in (none)
Cannot find modue (UCD-SNMP-MIB): At line 0 in (none)
Cannot find modue (UCD-DEMO-MIB): At line 0 in (none)
Cannot find modue (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find modue (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find modue (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find modue (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find modue (SNMP-MPD-MIB): At line 0 in (none)
Cannot find modue (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find modue (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find modue (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-TM): At line 0 in (none)
てmibsがない旨のエラーがでるんだけどなんでかな。
0182nobodyさん
2006/09/20(水) 12:44:09ID:R2HBn3N4http://tech.heteml.jp/
1.現時点での個人情報
福井雅晴(偽名の可能性あり)
42歳、企業経営者。滋賀大学経済学部卒、カリフォルニア大学・バークレー校のPh.D(経済学)を取得
現在東京在住
2.てっくさんのお知り合い
http://www.geocities.jp/tatsuman/links.htm
http://www.jurists.co.jp/ja/attorney/detail/rn.shtml
http://ja.wikipedia.org/wiki/%E5%A4%A7%E7%9F%B3%E8%8B%B1%E5%8F%B8
ホリエモンのエピゴーネンの似非保守です。
3.やっていること
インターネット専門の広告代理店
保守系ブログの管理人
保守系ブログの管理人を操って政治的ムーブメントを起すこと(ちょい犯罪の可能性あり)
「エリート掲示板」管理人 参加者は福井晴敏や西村幸祐など(マジかよ!)
4.そしてなんと不敬な!
皇室を利用した振込み詐欺(女系天皇反対論者が文句を言えない個人の内面を弄ぶ卑劣な行為)
http://tech.heteml.jp/2006/03/post_429.html
本気で旧宮家復籍キャンペーンフラッシュをつくるつもりであれば一刻も早く会計報告書を自分のブログに掲載しておくれ。
0183nobodyさん
2006/09/20(水) 12:52:34ID:???PHPで調べられないか試しています。
以下のようなソースを書いたのですが、思い通りになりません。
どこがおかしいかご指摘いただけないでしょうか?
$con = mysql_connect($dbserver, $dbuser, dbpassword);
$tabls = mysql_list_tables($dbname,$con);
if($tabls=="member"){
echo "memberテーブルが存在します";
}else{
echo "memberテーブルがありません";
exit;
}
0184nobodyさん
2006/09/20(水) 12:58:59ID:???関数の戻り値ぐらい確認しろよ
resource mysql_list_tables ( string database [, resource link_identifier] )
http://jp.php.net/mysql_list_tables
0185nobodyさん
2006/09/20(水) 13:09:09ID:???パッと見、問題無いように見えるからクリティカルな回答
じゃないが、
phpinfo()関数を実行した時
Local Value
Master Value
共に
/usr/sbin/sendmail -t -i
になっているかな?
後
>mail関数をコールすると止まってしまいます。
ということだけど、止まるって症状をもっと具体的に。
PHPのエラーメッセージも出ないってこと?
0186nobodyさん
2006/09/20(水) 14:20:55ID:74yeHhioアドバイスありがとうございます。
はい。local,master共に↓こちらです。(そのままコピペ)
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i
>ということだけど、止まるって症状をもっと具体的に。
>PHPのエラーメッセージも出ないってこと?
はい。mail();の行で突然止まってます。
関係あるか分かりませんが、mb_encode_mimeheaderをコールした時も同症状です。
ちなみに、mbstringの設定なのですが、Windowsだとextension=php_mbstring.dll
というようにライブラリを呼び出していますが、Linuxは設定しなくても良いのでしょうか?
0187nobodyさん
2006/09/20(水) 14:51:35ID:yPqg/Cyb含まれているからですか?
basenameを併用したら安全でしょうか?
0188nobodyさん
2006/09/20(水) 15:23:40ID:???0189nobodyさん
2006/09/20(水) 15:49:36ID:ap8SjPDw止まるとはmail()から返ってこなくなるということ?
だとしたら具体的なmail()の呼び出し方を貼ったら・・・?
0191nobodyさん
2006/09/20(水) 17:01:05ID:???処理を試しています。
$dir_name="$site_url"."files/"; //$site_urlにはサーバのURLが入ります。
if(!is_dir($dir_name)){
mkdir("$dir_name",0777);
}else{
echo "作成済みです";
}
としているのですが、アクセスする度に何度も作成しようとして、
存在している場合はスルーされません。
$dir_nameに絶対パスを指定しているので、ディレクトリと見なしていないかも
しれませんが、こういう場合、どうすればいいのでしょうか?
0192nobodyさん
2006/09/20(水) 17:02:59ID:wx80eLIiこうかいても、ブラウザ上でソースひらくと上記とそのまんま表示されてしまいます。
参考書や多くのサイトでは<?= ?>でくくれって書いてありますけど、
<?php echo $_SERVER['SCRIPT_NAME']?>">
とすると意図した結果を返します。
phpのバージョンによるものなのでしょうか?
当方の環境はphp5.1.6でサーバapache2.0.59です。
0193nobodyさん
2006/09/20(水) 17:07:39ID:???0194nobodyさん
2006/09/20(水) 17:17:32ID:???short_open_tag が off
<?=の形式はあんまり推奨されないけど、「どうしても」使いたいなら
php.ini の short_open_tag を off に設定するか、
.htaccess に php_flag short_open_tag off を設定する。
0195192
2006/09/20(水) 17:23:41ID:???ありがとうございます。
0196nobodyさん
2006/09/20(水) 19:33:42ID:???hoge.phpでif文とisset関数でセッション変数をチェックするコードを書きました。
セキュリティに気をつけるところがあればご指摘お願いします。
データベースは使っておりませんが、セッションをデータベースに格納した
ほうが安全が高まるのでしょうか?
0197nobodyさん
2006/09/20(水) 19:49:24ID:???漠然としすぎて指摘のしようが無い。
DBに保存するかどうかも安全とはほぼ無関係。
そのレベルの情報量でセキュリティ的なものが判断できると思ってる
キミの無知加減が1番危ない気はするw
0198nobodyさん
2006/09/20(水) 19:57:17ID:???セッションについてです。
クライアントがリクエスト、サーバがセッション開始
続けてもう一度クライアントがリクエストした場合
クライアントがセッションのIDをサーバに送るのですか?
クライアント側にIDみたいなのを保存しなければ成り立たない
機能だと思いますが、そのIDはクッキーとして保存するのですか?
だとすれば、クッキーの内容を変更するなどで、
他のセッションIDを送ることもできると思います。
つまりクライアントから受け取ったセッションIDには何の信憑性もないのでしょうか?
0199nobodyさん
2006/09/20(水) 20:09:10ID:???です。セッションIDは通常はクッキーで保持。
クッキーが使えない場合はクエリー文字列のパラメータに埋め込みも使用可能。
(この辺はphp.iniの設定次第)
他人のセッションID送信で中身を横取りする手法はセッションハイジャックといい
セキュリティ対策では重要なポイントの1つだと思う。
セッションハイジャックでググれば問題点もその対策方法も色々出てくると思うよ。
0200nobodyさん
2006/09/20(水) 20:09:20ID:???セッションIDは通常Cookieに保存され(逆にCookieが使える環境ではCookieのみにすべき)、信憑性は無い。
が、個人が現実的な時間内で破れるほどヤワなものではない。
発行されうるIDのパターンは殆どの環境では少なくとも2^128ある。
ユーザが送ってきたセッションIDはサーバに保存されている値と比較され、マッチした場合にのみ保存されている値が取り出せる。
セッションIDの信憑性より、下手な設定にしてセッションハイジャックされる心配をしたほうがいいな
0201nobodyさん
2006/09/20(水) 20:12:01ID:???ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session
0202nobodyさん
2006/09/20(水) 20:21:29ID:vCicRGZlPHPからはどのような手順や関数を使えばいいのでしょうか?
また、登録された画像を取り出したいときはどのようにしたらいいのでしょうか?
0203nobodyさん
2006/09/20(水) 20:30:20ID:???0204nobodyさん
2006/09/20(水) 20:34:08ID:???base64_encode()でバイナリ→文字列変換してそれをtext型のフィールドにinsert。
取り出しは逆にselectした結果をbase64_decode()でバイナリ変換。
辺りでいいんじゃない?
0205nobodyさん
2006/09/20(水) 20:38:54ID:AVQePo+Usession_start();はセッションを扱うページすべてに記述しなくてはならないのですか?
それとも、あるページに一回だけ記述しとけばいいのでしょうか?
0207nobodyさん
2006/09/20(水) 20:57:24ID:???0210nobodyさん
2006/09/20(水) 22:11:34ID:???メインスクリプト中にそのまま画像を出すことができないのでGETか何かで渡すのが一番簡単かと思いますが、
データ量が多くなった場合はセッションか何かを使うのがいいのでしょうか?
0211nobodyさん
2006/09/20(水) 22:16:00ID:???0212nobodyさん
2006/09/20(水) 22:48:18ID:???207じゃないけど、PHPでバイナリデータの文字列エスケープ処理なんて正常に動作すんの?
エスケープ処理できなきゃSQL文が壊れる場合があるし俺は怖くてバイナリそのままなんて書けないな。
あと、DBによっては強制的に文字コード変換かけるようなのもあるじゃない。バイナリ壊されるよね。
0214nobodyさん
2006/09/20(水) 22:57:58ID:???統計値か何かを計算して表にして表示するスクリプトがあるとしますよね。
表だけでは寂しいのでそれにグラフを表示させたい場合、メインスクリプトからどうやって
画像表示スクリプトにデータを受け渡すか、というような場合の話です。
画像表示スクリプト内で同じ計算をするのは無駄ですし、同時に表が出せませんよね(画像で作れないこともないけど)。
それともこういう構成は変なんでしょうか。
0216nobodyさん
2006/09/20(水) 23:07:41ID:???・メインスクリプトから画像生成スクリプトを呼び出し、
生成した画像のURLをHTMLに埋め込む。
・GET・セッションなどお好みの方法でデータを渡し、生成した画像を返す。
0217nobodyさん
2006/09/20(水) 23:35:29ID:???セッションが良い気がする
書き込み中に読み込んじゃうことないし
あとは画像がどういうデータから生まれたものか分かるように入力値のハッシュを識別子に使うとか
0218nobodyさん
2006/09/20(水) 23:46:35ID:Wdl0S+zkあるファイルを読み込んでそのファイルにデータを追加するというのを
作成したいのですが、書き込まれる内容は別ファイルにある中身に
したいのです。
$fp=fopen("$file_name","w");
fwrite($fp,"別ファイル");
上記の”別ファイル”の箇所に書き込み用変数が入るとします。
何か良い方法はないでしょうか?(別ファイルへのパスを書いても駄目でした。)
0219nobodyさん
2006/09/20(水) 23:55:01ID:???説明が抽象的で勘違いしてるかもしれないが
copyしてそれを追記openしてちょろっと書くだけでは?
requireってことはPHPコード?もしそうならob_start〜
0220218
2006/09/21(木) 00:04:32ID:???目的としてはフォーム(form.html)からファイル名(file_name)とタイトル(title)
を入力して送信(write.php)したら、そのファイル名のファイルが出来上がる。
その出来上がったファイル内には、別ファイルの内容+指定箇所が
フォームで入力したタイトルに入れ替わっているというやつです。
別ファイルの内容を変数に代入するのは
$tmp_file="templete.php";
$array = file($tmp_file);
$templete = join("",$array);
で出来まして、その後に>>218のソースを追記したら
新規ファイル内にtemplete.phpの内容が書き込まれているのですが、
フォームで入力した「タイトル」は変わっていないのです。
なのでソースが違うのかな?っと思った次第です。
0221nobodyさん
2006/09/21(木) 00:24:28ID:???テンポラリファイルかDBにデータを保存してファイル名やIDをGETで渡すとか。
で、画像生成プログラムが画像生成完了後にそのデータを削除。
0222nobodyさん
2006/09/21(木) 00:24:44ID:???そもそも説明で言ってる事が分からないし、そんな物を何に使うのかも分からん
"form.html""write.php""template.php"のコードを出すか、「エスパー回答希望」と言ってくれ
まぁ、何か盛大に勘違いして妙な事やってるのだけは理解した。
0223nobodyさん
2006/09/21(木) 00:28:43ID:???最初からテンプレートと言ってくれればw
面倒だから色々汲み取った上でサンプル書いちゃうよ
--- template.php ---
<?php
$username = "%REPLACE_USERNAME%";
$password = "%REPLACE_PASSWORD%";
コード略
?>
--- writer.php ---
<?php
$replace_rule = array("%REPLACE_USERNAME%" => "218", "%REPLACE_PASSWORD%" => "1234");
$tmpl = file_get_contents("template.php");
$fp = fopen("result.php","w");
fputs($fp, strtr($tmpl, $replace_rule));
?>
>>221
削除するのは生成側じゃなくて表示側では
0224221
2006/09/21(木) 00:28:52ID:???渡すデータが大きくなった場合にどうするかって話で何故GETが選択肢に入るの?
>>217
セッション使うと同じページを2枚とか3枚とか表示させたとき、
どのデータで画像を生成するのか判別するのが複雑にならない?
こういう場合ではデータIDをページ表示毎に生成した方が都合よさげな気が。
0225221
2006/09/21(木) 00:30:48ID:???表示側=画像生成プログラム だと思うんだが違う?
<img src="画像生成プログラム?データ識別ID">
って形で呼び出されるもんだと思ってるんだけど。
0227nobodyさん
2006/09/21(木) 01:01:26ID:???BLOB型のカラムにすればバイナリのまま入れられるでしょ。
0228nobodyさん
2006/09/21(木) 01:34:59ID:k7zFBu8vなぜか勝手に改行コードが一つ削除されてしまいます。
具体的には、たとえば先頭に改行(エンターキー)3つ置き、
その後に文章が続くものをPOSTし、それを受け取って表示してみると
改行が2つに減っているのです。逆に文章の末尾にある改行コードは影響を受けません。
これはどうしてなのでしょうか?
ちなみに上記において、受け取ったPOSTデータは、変換やエスケープを一切せずに
表示しても、やはり先頭にある改行が一つ勝手に削除されてしまいます。
phpのバージョンは4.3.1です。
0231228
2006/09/21(木) 01:48:37ID:k7zFBu8vたとえばmixiのプロフィール変更画面で、「自己紹介」の欄(textarea)にて
先頭部分でエンターキーを2回押して改行を2つ入れてから本文を書いたとします。
それで「変更ボタン」を押すと、当然プロフィールには、たった今POSTした内容(改行2つ+本文)が反映されています。
ところが、その状態で再度プロフィール変更画面に行ってみますと、
なぜか自己紹介欄textareaの改行が1つに減っています。そのまま何を手を加えずに「変更ボタン」を
押しますと、当然のことながらプロフィール画面に反映される先頭の改行は1つに減っています。
ここでまたプロフィール変更画面に行きますと、また改行が1つ減っています。
すなわち、こうやって繰り返していると、一番初めに入力したはずの改行は0になってしまうのです。
mixiでも発生する現象だということは、PHPの問題ではなく
HTMLの問題(仕様?)なのでしょうか・・・。
0232228
2006/09/21(木) 01:50:09ID:k7zFBu8v>>231で書きましたように、mixiで再現できますので、お試しください。
>>230
Perlを使っているmixiでも再現できたので、PHPのバージョンの問題ではないと思われます。
■ このスレッドは過去ログ倉庫に格納されています