トップページ⇒php
1001コメント326KB

【PHP】下らねぇ質問はここに書き込みやがれ 50

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/07/11(水) 17:50:01ID:fYd+34US
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 49
http://pc11.2ch.net/test/read.cgi/php/1182794620/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
01081042007/07/13(金) 17:26:34ID:7syhWac6
>>105-107
レスありがとうございます。
とりあえず完成させて、テスト公開してみたいと思います。
0109nobodyさん2007/07/13(金) 17:36:59ID:???
俺はいっつもクエリを1,2本で抑えようとするから
余計時間かかって、苦労するな・・・

テーブルなんて細部に分けた方が扱いやすいんだけどな。
1画面1フォームの場合は、すべて1つのテーブルで済ませようと思ってしまう。
0110nobodyさん2007/07/13(金) 17:38:56ID:???
それはそれでいいんじゃないの?その程度の規模のシステムなら。
0111nobodyさん2007/07/13(金) 17:40:37ID:???
良いけど悩む。

テーブルを増やすとソースが増える。確認がしづらい。
しかし、テーブルを減らすと汎用性に欠く。

どちらも一長一短だろうけど。
0112nobodyさん2007/07/13(金) 17:41:27ID:???
>テーブルを増やすとソースが増える

じゃあクエリ送信するときに一度テーブルくっつけちゃえばいいんじゃね?
0113nobodyさん2007/07/13(金) 17:50:35ID:???
DBのパフォーマンス気にしているようだけど、
そんなに気にするほどでもないと思うけど。

アクセス数が異常に多いとか、レコード件数が億を超えるような膨大な
金融機関系のシステムなら別だけど。
0114nobodyさん2007/07/13(金) 18:03:19ID:???
レコード件数が億超えたら、phpMyAdminで確認するのは無理だなw

てか、phpMyAdminの場合、1000件程度でも重いが・・・
0115nobodyさん2007/07/13(金) 18:07:41ID:3J3Mm2ci
phpspot.netアクセスできなくね?
0116nobodyさん2007/07/13(金) 18:16:12ID:???
ページの半分が広告のムカツクあのサイトか
開いた途端に広告しか見えない状態になってから巡回先から外したよ
0117nobodyさん2007/07/13(金) 18:26:09ID:???
広告代が儲からなくなったので、閉じたということも考えられる。
見ず知らずの相手に手間と労力掛けて作っても儲からなかったら意味ないしな。
0118nobodyさん2007/07/13(金) 18:26:22ID:???
広告なんで気にしません
PHPエディタが使えれば
0119nobodyさん2007/07/13(金) 18:38:36ID:???
ま、億とか千万単位のレコードをがんがん扱う段階になったら優秀な人引っ張ってくりゃいいんだよ。
mysqlとかpostgresqlつかうよりOracleだろうし、むしろCacheとか使ってみたい気もする。



0120nobodyさん2007/07/13(金) 18:43:22ID:???
googleは億単位でmysql使ってますが、それが何か?
○件超えたらoracleって意味不明ですが、それが何か?
0121nobodyさん2007/07/13(金) 18:47:13ID:???
>>120
知ってるよ、あくまでも、ソースいじくって独自拡張できるような専門家がいないレベルでの中小企業での話。

ポイントはココにいるレベルなら今は気に病む段間じゃないということ(当然俺も含めて)。
0122nobodyさん2007/07/13(金) 20:51:11ID:LyxSzMMa
聞きたいんですけど、会員管理サイトをプロの現場で運用する場合、
ID、Passwordはもちろん、名前、住所などもMD5で暗号化するなどして
DBに保存するんでしょうか?
また、DB専用サーバをwebサーバとは別に?作ったりするものなんですか?
0123nobodyさん2007/07/13(金) 20:57:21ID:???
暗号化は必ずするけどMD5とは限らない。
DB別サーバーにするかは、規模に応じて。
あと、Web公開用とは別の用途でDBを使うかどうかも関わってくる。
0124nobodyさん2007/07/13(金) 21:00:31ID:???
名前や住所にmd5かけんなよ・・・
0125nobodyさん2007/07/13(金) 21:09:23ID:???
md5で暗号  ってただそう言いたかっただけと見た。
0126nobodyさん2007/07/13(金) 21:38:57ID:???
MD5ってもう信頼性は無いんじゃないの?
0127nobodyさん2007/07/13(金) 21:55:09ID:???
globで返ってくるパスはabc順だけど、
これをファイルの種類順にソートさせたい。

どうすればいいんすかえろいひと。
0128nobodyさん2007/07/13(金) 22:09:50ID:???
>>127
拡張子順って事なら
$index = glob('*');
usort($index,create_function('$a,$b','return strcasecmp(pathinfo($a,PATHINFO_EXTENSION),pathinfo($b,PATHINFO_EXTENSION));'));
print_r($index);
こんな感じで。
0129nobodyさん2007/07/13(金) 22:17:15ID:/IV1BAzj
define("SRC_DIR",'../thread/');
(中略)
$SRC=file(SRC_DIR.$delno.".log","r+b");

のソースで以下のようなWarningが出てまともに動作しなくなりました。
Warning: file() expects parameter 2 to be long, string given in

PHP4の時は問題なかったのですがPHP5になってエラーが出るように
なりました。何か内部変更があったのでしょうか?
01301292007/07/13(金) 22:22:57ID:/IV1BAzj
すみません。自己解決しました。
0131nobodyさん2007/07/13(金) 22:33:28ID:???
>>128
なんか強いなそれ。
ありがとうえろいひと
0132nobodyさん2007/07/13(金) 23:47:33ID:zCZ7I7UC
すみません、「あ」をそれぞれ2進数、10進数、16進数にしたいのですが
いきなり「あ」からそれぞれの進数に変換することはできませんよね?
そもそも「あ」というのは何進数なんでしょうか?
0133nobodyさん2007/07/14(土) 00:48:20ID:TLdn55kS
久々に公式見たら気づいたんだけど
Support for PHP 4 will be discontinued at 2007-12-31. Please consider upgrading to PHP 5.2.
なんて書いてあるじゃない!!

バンザーイ!バンザーイ!
0134nobodyさん2007/07/14(土) 01:52:33ID:YEDQCt26
METAタグのdescriptionで指定している文字列を取得したいと思っています。

preg_match("/<meta name=\"description\" content=\"(.*)<\">/",$meta_desc,$desc);
echo $desc[1];

このように書いたのですが、文字列を抽出出来ません。
どうしたらいいのでしょうか?
01351342007/07/14(土) 02:52:15ID:???
さっさと質問にこたえろ!
0136nobodyさん2007/07/14(土) 03:09:34ID:UxZqEuHT
>>134
preg_match("/<meta name=\"description\" content=\"([^\"]*)\">/",$meta_desc,$desc);
0137nobodyさん2007/07/14(土) 03:09:57ID:???
<
0138nobodyさん2007/07/14(土) 08:22:14ID:???
どうでもいいけど
そういうときはシングルクォートで囲めば? と思うわけだが
0139nobodyさん2007/07/14(土) 08:33:44ID:???
>>138
そんなに熱くならずに、自分のおならの臭いを嗅いでエクスタシー感じようよ。
0140nobodyさん2007/07/14(土) 09:30:58ID:???
>>139
最近、その言葉よく聴くけどどこかで流行っているの?
0141nobodyさん2007/07/14(土) 09:47:41ID:???
若槻千夏が深夜番組で口走ったw
0142nobodyさん2007/07/14(土) 10:11:10ID:???
意図しないリクエスト(クエリ)を排除する簡単な方法はないでしょうか
ホワイトリストでチェックするには変数が多すぎて面倒なのです
01431422007/07/14(土) 10:26:17ID:???
スレ間違いました・・・誤爆です。
0144nobodyさん2007/07/14(土) 10:48:52ID:vAbjevhB
フォームでデータを x[〜] の中に組み込みようにしました
x[1]
x[2]
・
・
・
x[15]
とx[〜]の中データが入るようにしました

それを変数に組み込むために↓のようにしたのですが

for($a = 1; $a <= 15; $a++)
{
$XXX[$a] = "".$_POST["x[$a]"]."";
}

$XXX[1]などの中にデータが入ってくれません
どのように記述したらうまく動くのでしょうか
何卒ご教授よろしくお願いします
0145nobodyさん2007/07/14(土) 11:06:12ID:???
>>144
普通に
$XXX = $_POST['x'];
でいいだろう…。
個別に入れる場合は
$XXX[1] = $_POST['x'][1];
0146nobodyさん2007/07/14(土) 11:27:32ID:???
>>145
ありがとうございます、それを参考に頑張ります
0147nobodyさん2007/07/14(土) 11:51:58ID:o7OpzzBd
// ここから
aaa

bbb
// ここまで

↑の改行を含むaaaからbbbまでの変数$stringsを、ファイルの中に一行で書き込みたいのですが
そのまま書き込むと、3行でファイルに保存されてしまいます。
そこで改行を<br />に変換するために
$strings = nl2br($strings)をして、ファイル書き込むようにしました。
今度は改行の前に<br />が追加されただけで、↓のようになりました
aaa
<br />
bbb
どうしたら$stringsの中身を一行分で書き込めるのでしょうか?
0148nobodyさん2007/07/14(土) 12:05:31ID:???
>>147
nl2br()は改行を<br>に変換じゃなくて改行の前に<br>を挿入。
$strings = str_replace(array("\r\n","\r","\n"),'<br>',$strings);
0149nobodyさん2007/07/14(土) 12:29:17ID:o7OpzzBd
ありがとうございます。解決できました。
ただ、疑問がわくのですが、この書き込んだ文字をhtmlに出力するとき
htmlspecialcharsを使って無害化しようと考えているのですが、そうすると<br>もタグの効力が失いますよね。
無害化は書き込む前に行うのがいいのでしょうか?

出力するときに無害化する措置のほうが安全だとは思っているのですが・・・
0150nobodyさん2007/07/14(土) 12:31:54ID:???
>>149
> 出力するときに無害化する措置のほうが安全だとは思っているのですが・・・
つ SQLインジェクション
0151nobodyさん2007/07/14(土) 12:39:45ID:???
>>149
<br>に変換する前にやることになるね。
出力の時だと出力の度にオーバーヘッドが生じる事にもなるし。
0152nobodyさん2007/07/14(土) 13:26:43ID:42mprax5
「このスレを見ている人はこんなスレも見ています」
のシステムはPHPでどうやって作るのでしょうか?
考えたけどさっぱりわかりません。
どなたか親切な方おしえてください。
0153nobodyさん2007/07/14(土) 13:32:03ID:???
>>152
多分、このスレの中の文字列を形態素解析して、
このスレのテーマと距離的に近いスレを表示しているのではないかと。
自然言語学と統計学的処理をしているので、phpの知識ではどうにもならないと思うけど。
0154nobodyさん2007/07/14(土) 13:38:28ID:???
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんなエサで俺様がクマ――!!
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
                               (´⌒; (´⌒;;;
0155nobodyさん2007/07/14(土) 13:50:04ID:???
Googleのキャッシュ機能みたいなのを作りたいんですけど、
考え方としては、fopenなどで読み込んだ先のサイト(HTMLソース)を
保存するだけで良いんですかね?
0156nobodyさん2007/07/14(土) 13:50:23ID:vP7abusR
>>146
改行は改行コードでしまっておいて無害化した後に改行を<br>に置換じゃだめ?
0157nobodyさん2007/07/14(土) 13:52:50ID:???
>>152
テレビの視聴率調査と同じ。
調査用の機器にあたるソフトを配って
それを介して2chにアクセスしたデータを統計的に処理してる。
ただ2chの場合テレビと違ってチャンネル数(=スレ)が異常に多くて
サンプル数まだまだなので、現状では余り精度は良くないらしい。
0158nobodyさん2007/07/14(土) 13:53:05ID:???
>>155
実装方式としては問題ないけど、日本でそれをやると著作権法違反になる。
合法的にやるなら、googleのキャッシュに表示されているHTMLを
キャッシュする必要がある。
01591522007/07/14(土) 13:56:50ID:42mprax5
>>153>>157
すいません。ちょっとわかりにくいかも。
cookieを使ってやってると聞いたことがあるのですが。
具体的にgookieを使ってどうやってるのか、わかりますか?
0160nobodyさん2007/07/14(土) 13:57:28ID:???
>gookie
>gookie
>gookie
>gookie
>gookie
0161nobodyさん2007/07/14(土) 14:00:28ID:???
>>159
だから視聴率調査機がフリーソフトであるからそれをインストールして
サーバに視聴情報を送るんだよ。そのソフトの名前がgookie。
0162nobodyさん2007/07/14(土) 14:07:02ID:???
>>159
cookieを使おうが使うまいが、それは情報を収集する一手段に過ぎないわけでしょ。
その情報をどう解析しどう集計するかは、自然言語学や統計学(多変量解析など)の知識が必要。
その知識がなけらば誤解析だらけの使い物にならないものが出来上がる。
例えば、phpという言葉だけではphp研究所のphpと言語としてphpの区別が付かない。
どういう文脈でphpが使われているかを調べるのが自然言語処理学であり、
それらの言葉の集合がどのスレの言葉のスレと近いのかを意味的距離を数量的に測るのが統計学。
だから、サーバー側のPG知識だけではどうにもならないよ。
01631522007/07/14(土) 14:37:22ID:42mprax5
>>162
いや、cookieとPHPだけでできると思うんですけど?
0164nobodyさん2007/07/14(土) 14:49:26ID:???
>>163
もしそれだけで本当にできるなら画期的な発明だ。
ぜひやり方を教えてほしい。
0165nobodyさん2007/07/14(土) 14:50:41ID:???
いやPHPだけでできると思いますけど…
0166nobodyさん2007/07/14(土) 15:06:19ID:???
多分、相当安易に考えていると思うなぁ。
最後までイメージしてから作り始めないと、
ある時点で壁にぶちあたるよ。

まぁ、とりあえず、作ってみて、
壁にぶつかったら、またこのスレにおいで。
01671522007/07/14(土) 15:09:42ID:42mprax5
>>166
えらそうなこと言ってるけど
簡易版でいいからどうやって作るのか言ってみてよ
0168nobodyさん2007/07/14(土) 15:27:19ID:???
難しく考えすぎ

2chは直前に書き込んだときのホスト名をCookieに保存している。
2chの書き込みシステム(bbsdだっけ?これはPHPではなくC言語)で、書き込みをまとめて管理する。
書き込みをするとき、今のホスト名と、Cookieにあるホスト名が一致するとき(つまりIPアドレスが変更されていないとき)、
この人は前書き込んだスレも見ていたことになる。
あとはbbsdから前に書き込んだスレ名を取得すれば完成。
01691552007/07/14(土) 16:49:28ID:???
>>158
そうなんですか!?

でも、別にサイト情報(URLやサイト名)は、取得しても問題ないですよね?
てか、googleも日本サイトの情報を保存している気が・・。
0170nobodyさん2007/07/14(土) 17:17:06ID:???
googleのサーバーは日本には置いてないと思う。
0171 ◆ykYUYrisZU 2007/07/14(土) 18:17:19ID:2KBXWsYs
配列が格納されている変数$dbからNumberのみを下記の入れ子の連想配列のようなものから取り出し、
1. Number 2. Number 3. Number 4... という風に表示したいと考えています。
いろいろ試したのですが、配列操作が苦手で取り出し方がよくわからず困っています。
わかる方教えていただけると助かります。よろしくお願いします。<(_ _)>

こんな感じの配列がひとつの変数$dbに格納されています。Irekoの配列数は固定ではありません、Irekoの数が10や8と多いものもあります。NumberとTitleは必ず用意されています。

array(1) { ["Data"]=> array(3) { ["Number"]=> string(8) "AX14222411" ["Title"]=> string(21) "リンゴ"
["Ireko"]=> array(1) { ["Data"]=> array(3) { ["Number"]=> string(8) "AX2429561" ["Title"]=> string(15) "オレンジ"
["Ireko"]=> array(1) { ["Data"]=> array(2) { ["Number"]=> string(8) "AX221531" ["Title"]=> string(22) "レモン" } } } } } }
0172nobodyさん2007/07/14(土) 19:18:45ID:???
>>152-167
自演しまくりワロタ
0173nobodyさん2007/07/14(土) 19:52:55ID:IGNHoFx0
>>171
適当に作ったから、見にくくてあんま綺麗じゃないけど勘弁な、


#!/usr/bin/php -q
<?php
$db = array(
"Data" => array("Number"=>"AX14222411","Title"=>"リンゴ","Ireko"=> array(
"Data" =>array("Number"=>"AX2429561","Title"=>"オレンジ","Ireko"=> array(
"Data" =>array("Number"=>"AX221531","Title"=>"レモン",),),),),),);

$ret = array();
get_hoge($db,$ret);
var_dump($ret);

function get_hoge($arr,&$ret){

if(!isset($arr["Data"])) return true;
foreach ($arr["Data"] as $k => $v){
if("Number"==$k){
$ret[]=$v;
}
if("Ireko"==$k){
get_hoge($v,$ret);
}
}
return true;
}
0174nobodyさん2007/07/14(土) 20:05:14ID:o7OpzzBd
>>150-151
お礼が遅くなってすみません。
ありがとうございます。
0175 ◆ykYUYrisZU 2007/07/14(土) 20:15:57ID:2KBXWsYs
>>173
素晴らしいです!!!!
これでやりたかったことができます。
ありがとうございました。

0176nobodyさん2007/07/14(土) 20:34:41ID:v9du19eY
FLASH(SWF4)からgetURL()+POSTを使ってPHPでランキングを作っています。
しかし、FLASHからPHPのページへgetURL()を使って飛び、更新すると何回も重複してランキングに追加されてしまいます。
原因が分かる方がいましたら、回避する方法をお願いします。
0177nobodyさん2007/07/14(土) 20:57:20ID:???
>>176
違うページにリダイレクトすべし
0178nobodyさん2007/07/14(土) 21:14:22ID:???
文字列の置き換え(preg_replace)で
特定の規則に挟まれた文字列を変換することは出来ますか?
(挟まれた文字列は特定不可)
例えば

177 名前:nobodyさん :2007/07/14(土) 20:57:20 ID:???
     ~~~~~~~~~~

↑の名前部分は、
・数字、空白、既定文字列「名前」、コロン
と
・2007で始まる数字
の間にある、ということ以外は不規則ですが、
このようなものも変換できますか?
また可能ならば、具体的なコードを教えてもらえるとありがたいです。
宜しくお願いします。
0179nobodyさん2007/07/14(土) 21:30:54ID:???
>>178
後方参照を使う
0180nobodyさん2007/07/14(土) 21:32:13ID:v9du19eY
>>177
返答ありがとうございます。
それはランキングへ追加したあとheader("Location: http://";);で飛ばすということでしょうか?
ですが、違うページへ飛しても再び前のページ(ランキングのPHPが記述された)へ戻り、更新を押すと再びランキングに重複してしまいます。
失礼ですが他の方法は無いでしょうか?
0181nobodyさん2007/07/14(土) 21:33:17ID:???
>>178
自分で答えかいてるじゃん、そのまんま正規表現つくってみ。

ついでに答えも書いとくが、文中にこのフォーマットの引用がある場合にも引っかかるだろうから、あとはうまく調整汁

#!/usr/bin/php -q
<?php
$str = '177 名前:nobodyさん :2007/07/14(土) 20:57:20 ID:???';
$nm="ななすさん";

$ret = preg_replace('/^(\d{1,3}\s名前:)(.+)(\s:\d{4}\/\d{2}\/.+)$/',"\\1$nm\\3",$str);

echo $ret;
0182nobodyさん2007/07/14(土) 21:35:37ID:???
php -a で出すコマンドライン版PHPのインタラクティブモードで
最初に<?phpを書かずに、起動後すぐに
>phpのプロンプトを出すにはどう設定したらよいでしょうか。
0183nobodyさん2007/07/14(土) 22:32:23ID:???
>>152
リファラーみればいいだけじゃね?
実際正確かどうかなんて分からないし
直前+現在のスレにお互いカウントアップ。

もしくはセッションにスレUIDを追加していって
読み込んだ時に仮に5つくらいになっていた場合に
それらをカウントアップ&セッションクリア。
01841832007/07/14(土) 22:51:03ID:???
頭が悪いので勘違いしました。忘れてください。
0185nobodyさん2007/07/14(土) 22:54:22ID:???
>>182
cmd /k "php -a"

↑をphp.batに保存してphp.batをダブルクリック
0186nobodyさん2007/07/14(土) 23:03:35ID:???
>>185
そんな答えを求めていませんけどね^^;
引き続き回答ヨロ
0187nobodyさん2007/07/14(土) 23:45:04ID:IGNHoFx0
>>186
--with-readline つけてコンパイルした 5.1 以降をつかえばOK
最近のだと初めからなってる気もするが。

あと質問するときsageてると、釣りにみえて返答もらえないかも
01881822007/07/15(日) 00:26:17ID:???
>>185 >>186 >>187
ありがとうございます。
0189nobodyさん2007/07/15(日) 01:18:51ID:gHFsqArW
>>176
ちょっと、情報がアバウトなんで何とも言えないが、

IEって、swfファイルを一度既に読み込んでいる場合、リロードしたときにキャッシュのswfが優先される現象が確かあった気がする。
んで、リロードしたときに本来期待している初期化処理が走らない。
ちなみにFirefoxでは起こらない。
もし176の言っている現象がFirefoxで起こらないのならばたぶん原因は同じ。


面倒だから、phpでセッションつかって、投票完了時に

$_SESSION["is_vote"] = true; とかつっこんで、

投票処理始める前に
if(isset($_SESSION["is_vote"]) && $_SESSION["is_vote"]) return ;

みたいにして重複カウントアップしないとかやってみれば?
0190nobodyさん2007/07/15(日) 02:57:02ID:???
>>187ハァ?おまえうざ
>>188あんただれ?
0191nobodyさん2007/07/15(日) 03:41:41ID:???
ごめんなさい。誤爆です・・・
0192nobodyさん2007/07/15(日) 03:53:24ID:X91+gITL
>>189
返答ありがとうございます。
すみません、言い忘れていたのですが実はブラウザは携帯なんです。
ですが更新しても初期化されないことから、IEと変わらないと思いますが…
書いてくださったスクリプトを記述してみましたが、やはりランキングに追加されてしまい出来ませんでした。やはり記述が悪いのでしょうか?
0193nobodyさん2007/07/15(日) 03:54:43ID:X91+gITL
<table border="1"><tr><th>順位</th><th>お名前</th><th>距離</th></tr>
<?php
$name = htmlspecialchars($_GET['name']);
$meter = htmlspecialchars($_GET['meter']);
$rank = file("rank.txt");
if(isset($_SESSION["is_vote"]) && $_SESSION["is_vote"]) return ;
if ($meter) {
if (!$name) $name = "名無しさん";
for ($i = 0; $i < count($rank) + 1; $i++) {
if ($i < count($rank)) {
list($n, $m) = split("\t", $rank[$i]);
$m = rtrim($m);
} else $m = 0;
if ($meter > $m) {
array_splice($rank, $i, 0, "$name\t$meter\n");
break;
}}
if (count($rank) > 20) array_pop($rank);
$fp = fopen('rank.txt', 'r+');
flock($fp, LOCK_EX);
ftruncate($fp, 0);
for ($i = 0; $i < count($rank); $i++) fputs($fp, $rank[$i]);
fclose($fp);
$_SESSION["is_vote"] = true;}
for ($i = 0; $i < count($rank); $i++) {
list($n, $m) = split("\t", $rank[$i]);
$m = rtrim($m);
print "<tr><td>" . ($i + 1) . "</td><td>$n</td><td>{$m}m</td></tr>\n";
}
?>
</table>
分かる方がいましたら、お願いします。
0194nobodyさん2007/07/15(日) 04:12:30ID:gHFsqArW
>>192
とりあえずぱっと見session_start();が必要 →生成と破棄の詳細はsession周りのマニュアル参照

ただ、session(クッキー)が使えない機種もあるからなぁ。
(flash使える機種でクッキー使えない機種があるかとかは、ちょっと専門外なんでわからん。スマソ)

あと、ファイル書込よりpdo+sqliteとか使う方が良くない?とかおもった
01951942007/07/15(日) 04:33:34ID:???
>>193
ごめ、見直してみたらこれって$_GETで画面遷移してるんだね。

actionscript側のgetURL();でGETで渡してきて、(sessionの部分取り除いておいて)
リロードしたらそりゃカウントアップされるわな。リロードする度に常にURLに?name=hoge&meter=100 とかついてるんだもん。



01961942007/07/15(日) 04:39:11ID:???
追記
んで、getURL()って第三引数に"POST"、ってやればPOSTで渡せるから、そっちで何とかすれば。
PHPっていうよりASの話だね
0197nobodyさん2007/07/15(日) 10:30:18ID:X91+gITL
>>194-196
返答ありがとうございます。
session_start();をif(isset($_SESSION〜の前に書いてみましたが、やはり無理でした。
実は先程記述したランキングのPHPスクリプトは、とあるサイトに書いてあったものなんです。
私は一から記述できるようなスキルがないので、調べてみましたがpdo+sqliteは分かりませんでした。
そして言われた、GETをPOST((phpも同様)にし、URLの末尾に付加しないようにしても、更新すると重複してしまいます。
以下はFlash側の記述です。
on(press) {
 FSCommand2("Escape",name,"name");
 getURL("http://〜.php","_blank",POST);
}
0198nobodyさん2007/07/15(日) 10:50:03ID:???
>>176

index.phpの中にFlashをインクルード、セッション発行
↓
カウント用のページにジャンプ
↓
チェック
↓
条件判断→重複ならカウントしない
↓
カウントする

セッションに含める情報「リファラ、ip、ユニークid、日付、2chでいうハナモゲラなどのキーワード」この情報吟味して考えろ
0199nobodyさん2007/07/15(日) 12:45:45ID:70v71ZEE
αチャネル埋め込んであるpng(gif)をimagerotate()で回転させると黒くなる。
bgd_colorを不透明にしないと黒くなるから、何かしらリソースの背景に問題がありそうなんだが、どこをいじればいいのか見当がつかない。
ignore_transparentはphp4だから確認できない。
これがGDの限界ってやつですか/^0^\フッジッサーン

だれかおせーて
0200nobodyさん2007/07/15(日) 12:47:01ID:RgVfRGye
・
・
・
$on_array = explode(",", $string_line1);
$off_array = explode(",", $string_line2);

$op[$d]= $on_array;
$ed[$d]= $off_array;



このように配列を配列の一つの要素
つまり

1周目

$op[0]= $on_array;
$ed[0]= $off_array;

2周目
$op[1]= $on_array;
$ed[1]= $off_array;

と各$op[〜]の中に取り込みたいのですがうまくいきません
具体的にどのように記述したら動くのでしょうか
何卒ご教授宜しくお願いします。
0201nobodyさん2007/07/15(日) 13:28:53ID:???
>>199
PNGならbgd_colorを0xFF000000にすればいいんでは。
0202nobodyさん2007/07/15(日) 13:46:16ID:???
>>200
各ループの$string_line1と$string_line2はどうやって取得するのよ
毎回同じ内容じゃないんだべ?
0203nobodyさん2007/07/15(日) 14:00:02ID:RgVfRGye
>>202
$fp = fopen("$op", 'r');
$string_line1 = fgets($fp);
$fp = fopen("$en", 'r');
$string_line2 = fgets($fp);

このようになっています

ちなみに今現在、多次元配列を試しています
0204nobodyさん2007/07/15(日) 14:07:11ID:L0tNCdex
大量のデータを処理するphpのプログラムがありまして、
一回起動をかけますと、終了するまで7時間程度かかります。

しかも、このプログラムが負荷が高いため、実行して20分程度経過しますと、
CPUの温度が75度を超えBIOSから異常を知らせるメッセージが表示されっぱなしになり、
焦げ臭い嫌な臭いが部屋中に立ち込めてしまいます。

仕方なく、1000件数処理するごとにsleepコマンドで60秒自動休止するような
やり方にしているのですが、他にいい方法はないでしょうか?
スクリプト言語なのでしょうがないかもしれませんが、いいアイデアを頂けると幸いです。
宜しくお願いします。
0205nobodyさん2007/07/15(日) 14:15:01ID:???
>>203
うーん。ループさせてる範囲を{ 囲んで }みて。

$fp = fopen("$op", 'r'); $string_line1 = fgets($fp);
$fp = fopen("$en", 'r'); $string_line2 = fgets($fp);

$on_array = explode(",", $string_line1); $off_array = explode(",", $string_line2);

$op[$d]= $on_array; $ed[$d]= $off_array;
0206nobodyさん2007/07/15(日) 14:16:21ID:???
>>205
ありがとうございます、それを参考に頑張ります
0207nobodyさん2007/07/15(日) 14:17:45ID:???
安価ミス
■ このスレッドは過去ログ倉庫に格納されています