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

【PHP】下らねぇ質問はID出して書き込みやがれ 93

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/15(月) 19:23:06ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 92
http://pc11.2ch.net/test/read.cgi/php/1263035502/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0381nobodyさん2010/02/27(土) 21:21:12ID:???
そういう設計のクラスならいいんじゃね
0382nobodyさん2010/02/27(土) 21:28:15ID:???
ファイルのオープンはいくつまで出来ますか
0383nobodyさん2010/02/27(土) 21:30:36ID:???
自己解決しました
0384nobodyさん2010/02/27(土) 22:07:39ID:???
>>381
サンクス、この調子でいってみるノシ

ところで"rb+"オプション(読み書きモード)付きでファイルをオープンしたあとflock()で排他ロック。
ファイルを読み込んで処理を施したあと再度上書き保存して排他ロックを解除、
というシナリオを考えているんだけど最後にファイルを上書き保存する際に
一度ファイルをまっさらにする方法って無い?

"rb+"モードだとポインタを先頭に戻して書き込んでも以前のファイルの内容が残ってしまうんだよね。
たとえば"rb+"モードで長文開いたあと短文を保存すると短文のあとに以前の長文の残骸が残って
しまう。

書き込み前に一瞬だけ排他ロックを外して"w"オプションでファイルに書き込めばこの問題は
解決できるんだけど一瞬排他ロックを外した瞬間にそのファイルがいじられてしまう可能性だって
ゼロではない。

う〜ん・・・、どうすればいいんだろう・・・
0385nobodyさん2010/02/27(土) 22:14:17ID:???
ftruncate
0386nobodyさん2010/02/27(土) 22:25:14ID:???
>>385
ドモノシ
0387nobodyさん2010/02/27(土) 23:17:37ID:???
【OS名】レンタルサーバ(CentOS 4.6と記述されてました)
【PHPのバージョン】5.2.5 - SafeMode
【質問内容】
phpで送信されてきたidとpasswordをListファイルにあるidとpasswordで照合させたいのですが
外からListファイルを読めないようにするにはどうしたら良いのでしょうか。
0388nobodyさん2010/02/27(土) 23:20:09ID:???
>>387
普通はDB
ファイルにしたいのなら>>28あたりみてサーバ側でどうにか汁
03893882010/02/27(土) 23:21:14ID:???
と思ったけどそれだけなら普通にドキュメントルートの上におけばいいか
0390nobodyさん2010/02/27(土) 23:42:50ID:wtKSisfT
>>389
atpagesを使用してるのですが、ドキュメントルートより上におくって無理っぽい><
0391nobodyさん2010/02/28(日) 01:26:57ID:???
>>390
.htaccessで制限かければいい
0392nobodyさん2010/02/28(日) 04:50:09ID:???
リストをcgiファイルにすればいいんちゃうの
atpagesならDB使えるしそっちでも
0393nobodyさん2010/02/28(日) 10:22:57ID:???
>>391-392
サンクストンクス兄弟
.htaccessが簡単そうだったので試したらできました。
0394nobodyさん2010/02/28(日) 10:54:11ID:???
【OS名】XP
【PHPのバージョン】5.2.5
【質問内容】
借りているサバでcronが使えないのでローカルの
タスクスケジューラーを利用してhttp経由で定期的に処理させたい
タスクがあります。

<?php

$URL="http://xxx.com/index.php"
file_get_contents($URL);

?>

上のようなコードでレンタサーバ上のPHPファイルは
実行されるでしょうか?

もし駄目ならフォームを作っておいて
フォームの変数に実行の権限を与えて
JSでdocument.form.fname.onsbmit();
してやればいいのかなと考えているのですが
判然としません。

0395nobodyさん2010/02/28(日) 11:06:27ID:???
ブラウザでアクセスしたのと同じ動作するで
0396nobodyさん2010/02/28(日) 13:06:03ID:???
アクセスあったら起動すればいい。時間は5分間間隔とか
0397nobodyさん2010/02/28(日) 13:22:02ID:LiqVmvoY
配列の各値にファイル名が入っているのですが、
その配列を値のファイルの更新時間が新しい順にソートしたいのですが全く考えが浮かびません。

何か方法がありましたらお答え頂けると嬉しいです。
0398nobodyさん2010/02/28(日) 13:24:39ID:???
sort関数というものがあってだな
0399nobodyさん2010/02/28(日) 13:24:42ID:???
{ファイル名、更新日時}か、{番号、更新日時}をソート。
0400nobodyさん2010/02/28(日) 13:28:01ID:LiqVmvoY
配列の各値にファイルの更新時間を付加するしかありませんか・・・。
ありがとうございました。やってみます。
0401nobodyさん2010/02/28(日) 13:33:10ID:???
それ以外でどういう風にできると思ってたんだw
0402nobodyさん2010/02/28(日) 13:34:15ID:???
比較関数を呼び出すときだけでもいい。
しかし、同じのを複数回呼び出すので効率悪い。
確定した値つかうのを推奨。
0403nobodyさん2010/02/28(日) 13:36:13ID:???
今までずっとphpには実行権限与えなきゃいけないのかと思ってたけど、いらねーんじゃねーか!入門サイトのうそつき!
0404nobodyさん2010/02/28(日) 13:38:36ID:???
どこのサイトだよ
晒せや
0405nobodyさん2010/02/28(日) 14:16:58ID:LiqVmvoY
mod_phpににはいらない。cgiにはいる
0406nobodyさん2010/02/28(日) 15:01:13ID:???
$ip = getenv('REMOTE_ADDR');

でビジターのIPアドレスを取得できると思いますが
たとえばノートンとか入れていてIPアドレスが表示
されないようにした人がアクセスしてきた場合は
$ipにはどんな値が代入されますか?
0407nobodyさん2010/02/28(日) 15:03:07ID:???
>>1
0408nobodyさん2010/02/28(日) 15:15:57ID:???
ノートン恐るべしやな
0409nobodyさん2010/02/28(日) 15:17:23ID:VtmQa4ku
PHPでつかえて、バイナリデータとテキストの変換が可能で高効率のものはなんですか。
base64とかナスリエンコードとか。
0410nobodyさん2010/02/28(日) 15:18:32ID:VtmQa4ku
訂正。
ナスリ=URL

バイナリの長文をソースコードに埋め込みたいのですが
0411nobodyさん2010/02/28(日) 15:22:28ID:???
そりゃあ16進ダンプとかだろ
0412nobodyさん2010/02/28(日) 15:34:02ID:VtmQa4ku
16進では16文字しか使わないですが。
base64にしときます。asciiで使える文字はもっとありそうですが実績と手間削減から。
0413nobodyさん2010/02/28(日) 15:41:30ID:???
お前女だな
0414nobodyさん2010/02/28(日) 16:22:48ID:???
書き込まなくても自己解決してたな
0415nobodyさん2010/02/28(日) 16:24:31ID:???
受託で引継ぎ請け負ったアプリがPHP5で動いてるのにバリバリPHP4の書き方になってる。
たぶんオプジェクトのオの字も知らない人が書いたと思われる。

こういうのを改修する場合って既存の書き方に習った方がいいのだろうか?
あるいはリスク覚悟で書き直した方がいいのかな?
お客さんは任せるって言ってるんだけど。
0416nobodyさん2010/02/28(日) 16:28:26ID:???
どちらがいいか分からない段階で無理しないほうがいい
0417nobodyさん2010/02/28(日) 16:34:01ID:???
なるほど…確かにそうですね。必要に迫られてるわけじゃないからとりあえず前例に習うことにします。
しかし酷いソースに合わせて機能拡張するって本当に苦痛だ
04184092010/02/28(日) 16:45:39ID:VtmQa4ku
バイナリ、アスキー化プログラムです。
実行ファイルでサイズが半分くらいになりなかなか効率良いですよ。

<?php
function bin2ascii( $bin ) { return base64_encode( gzcompress( $bin, 9) ); }
function ascii2bin( $asc ) { return gzuncompress (base64_decode( $asc) ); }

function bin2ascii_file( $infile, $outfile ){
$fp = fopen( $infile, 'rb');
$data=fread( $fp, 10*1024*1024);
fclose($fp);
$data=bin2ascii($data);
$fp = fopen( $outfile, 'wb');
fwrite( $fp, $data);
fclose($fp); }

function ascii2bin_file( $infile, $outfile ){
$fp = fopen( $infile, 'rb');
$data=fread( $fp, 10*1024*1024);
fclose($fp);
$data=ascii2bin($data);
$fp = fopen( $outfile, 'wb');
fwrite( $fp, $data);
fclose($fp); }

bin2ascii_file("exploler.exe", "000");
ascii2bin_file( "000", "exploler.ex_");
?>
0419nobodyさん2010/02/28(日) 16:54:11ID:???
ウイルス乙
0420nobodyさん2010/02/28(日) 16:54:22ID:???
10MB決め打ちですか
0421nobodyさん2010/02/28(日) 16:55:14ID:VtmQa4ku
"と'を除くと93文字のアスキー使えて、4バイトは93の5乗で表せます。
BASE64はデータ量は4/3になります。
BASE93だとデータ量は5/4になります。

元が120Kだと、160Kと150Kの差になります。93文字でもあまり減らせません。
0422nobodyさん2010/02/28(日) 16:58:21ID:???
普通に圧縮した文字列をテキストに書き込めばいいんじゃね
0423nobodyさん2010/02/28(日) 17:00:23ID:???
phpでやることじゃなくね
0424nobodyさん2010/02/28(日) 17:13:20ID:U94IcC74
コマンドラインで使えるデバッガを教えてください
0425nobodyさん2010/02/28(日) 17:27:22ID:???
        ノ´⌒ヽ,,
    γ⌒´      ヽ,
   // ""⌒⌒\  )  PHPか・・ 懐かしいな
    i /   ⌒  ⌒ ヽ )   
    !゙   (・ )` ´( ・) i/         
    |     (__人_)  |⌒ヽ/⌒\     
  (''ヽ    `ー'  / 〉 〉 ,、  ) 
  / /         (__ノ └‐ー<. 
  〈_/\_________ノ    
0426nobodyさん2010/02/28(日) 17:44:22ID:???
>>424
XDebug

詳細は公式サイトを見てくだされ
ttp://www.xdebug.org/

この辺にやり方が書いてある
ttp://www.xdebug.org/docs/remote
0427nobodyさん2010/02/28(日) 17:54:12ID:???
>>426
xdebugってコマンドライン対応してたの知りませんでした
ありがとうございます
0428nobodyさん2010/02/28(日) 19:11:37ID:VtmQa4ku
wordpressなどCMSをアップロードするのに、こまかく圧縮して転送と展開すれば
速くなると思うが、PHPでそういうツールあったりしますか。
0429nobodyさん2010/02/28(日) 19:14:31ID:VtmQa4ku
アップロードに限らず、ダウンロード (= 鯖データから自PCへのアップロード)もですが。
無料の所だとサイズ300K以下とか制限もあり、細かく分ける必要あります。
0430nobodyさん2010/02/28(日) 23:37:24ID:6S1D3k9m
flock()関数で排他的ロックをかけてあるファイル$fpに他のプロセスが

fopen($fp, "r+");
flock($fp, LOCK_EX);

というアクセスをしてきたとき、どのように振る舞いますか?

fopenの段階で一時停止して先にかけられた排他的ロックが解除されるまで
待ってから再開するんでしょうか?もし待つとしたら何秒くらい待ってくれますか?
0431nobodyさん2010/02/28(日) 23:39:23ID:???
lock話はやめよう。データベースに任せっきりでよい、。
0432nobodyさん2010/02/28(日) 23:45:38ID:???
Sqliteつかうなら、スクリプトを動作させる側にとって手順は増えない。
mysqlは導入がいるが。
sqliteが動かない所は入れるべき
0433nobodyさん2010/02/28(日) 23:52:51ID:???
SQLiteなくてもPosqlでいける。ロックも兼ねて。
俺はCakeで使ってるけど
0434nobodyさん2010/03/01(月) 00:10:02ID:???
phpにはaspのapplication("hoge").lockって無いの?
0435nobodyさん2010/03/01(月) 04:04:00ID:???
>>430
むげんにまつ
0436nobodyさん2010/03/01(月) 08:12:56ID:???
未経験で入社したらいきなりプロジェクトに放り込まれた
4社ぐらいで共同作業?してるらしい所に何故か自分が1人で行くことになった
毎朝ミーティングがあるのだが何言ってるのかさっぱり分からん
見とけとだけ言われて渡された資料が膨大で何がなにやら。
0437nobodyさん2010/03/01(月) 08:38:07ID:???
実力に見合わないところなら早くやめたほうがいい
デスマの根源になって空気が重くなる
そのうち鬱病になるよ
0438nobodyさん2010/03/01(月) 10:36:19ID:GAV4pXCg
>>430
みんな散々やったんだ
で、結論は>>431
ファイルロックは気休めでしかない
0439nobodyさん2010/03/01(月) 15:33:32ID:H5wSRALn
2次元の連想配列で
array(
array(
'col1' => 1,
'col2' => 1,
'col4' => 1
),
array(
'col1' => 1,
'col2' => 1,
'col4' => 2
),
array(
'col1' => 1,
'col2' => 2,
'col4' => 1
),
array(
'col1' => 1,
'col2' => 2,
'col4' => 2
)
)
みたいになっているやつを、縦方向に串刺しして出力したいのですが
ループで回していくしかないでしょうか?
イメージで言うと
$test[]['col1']
みたいな感じで、縦方向で配列として出力したのですが。
0440nobodyさん2010/03/01(月) 15:53:39ID:z47ZxXxQ
> lock話はやめよう。データベースに任せっきりでよい、。

データベースでファイルロック?!
あの・・・、どうゆうことでしょうか?
0441nobodyさん2010/03/01(月) 16:08:28ID:???
ファイルシステムはB木とか使ってるし普通にデータベースだよなw
0442nobodyさん2010/03/01(月) 16:40:59ID:???
普通にデータベースですね
0443nobodyさん2010/03/01(月) 17:12:19ID:???
>>439
なんでcol3がないんだ?
0444nobodyさん2010/03/01(月) 17:56:41ID:???
simplexml_load_file();
使うとfatal errorってなってphp固まっちゃうけど、なんで?
0445nobodyさん2010/03/01(月) 17:58:17ID:???
スレタイを読まないから
0446nobodyさん2010/03/02(火) 22:13:52ID:???
PHPや!
PHPつこてないから2chは落ちたんや!
0447nobodyさん2010/03/02(火) 22:40:55ID:???
そうかそうか
0448nobodyさん2010/03/02(火) 23:08:02ID:???
2ちゃんのせいでうちのサーバーにも影響出たわ
0449nobodyさん2010/03/02(火) 23:11:02ID:???
人少ない板だから見えないスレがまだ多いのぅ
どんどん書き込んでや
0450nobodyさん2010/03/02(火) 23:55:52ID:???
もうPHPスレだけでいいよ
0451nobodyさん2010/03/03(水) 00:13:49ID:???
スレがないw
0452nobodyさん2010/03/03(水) 01:49:31ID:OC7p3okf
スレ復活age
0453nobodyさん2010/03/03(水) 01:53:24ID:???
ちょっと私事になるがサイトを作る上でphpファイルを沢山読み込んでたのだが、
何をどうやっても変な改行が含まれてデザインがガタガタになってた。
締め切りは迫るし分からなくてもう血の気が引いてた。
そこでなんとなくバイナリを使ったら
単にテキストにbomが入ってたせいでした。
これは初歩的な事だったのだろうか。こんなの聞いた事無いよ・・
0454nobodyさん2010/03/03(水) 02:07:51ID:???
質問なのですが
ソースコード専用のアップローダーを考えていて
ハイライトさせたいのですが、アクセス毎にハイライトさせると負荷やばいですか?
0455nobodyさん2010/03/03(水) 02:09:43ID:???
>>454
んなもんアクセス数によるだろう
あとスレタイ嫁
04564542010/03/03(水) 02:13:00ID:???
>>455
すみません;; ありがとうこざいました。
0457nobodyさん2010/03/03(水) 09:47:11ID:qB0rz8y7
ループに連番をふる方法を教えてください
今こんな感じになってます

foreach($open as $read) {

$element = split(",", $read);

echo "ここに連番";
echo $element[0] ." " .$element[1] ."<br>";

}
0458nobodyさん2010/03/03(水) 10:19:15ID:???
>>457
for
0459nobodyさん2010/03/03(水) 10:32:05ID:???
foreach ($open as $i => $read) {
$element = explode(',', $read);
echo $i .'<br />';
echo $element[0] .' '. $element[1] .'<br />';
}
0460nobodyさん2010/03/03(水) 10:32:56ID:???
連想配列だったらどうすんだよwww
0461nobodyさん2010/03/03(水) 10:42:22ID:???
$renban = 0
foreach($open as $read) {
 $element = split(",", $read);
 echo $renban;
 echo $element[0] ." " .$element[1] ."<br>";
 $renban++;
}

だせぇw
0462nobodyさん2010/03/03(水) 11:10:31ID:???
連番は0からでなく1からはじまるんdすが
0463nobodyさん2010/03/03(水) 11:18:19ID:qB0rz8y7
>>459>>461
できました
わかりやすくて良かったです
ありがとうございました
0464nobodyさん2010/03/03(水) 14:12:42ID:0y5py4rs
CSVファイルにフォームからの内容を保存しています。

submitボタンを押した後、サーバの読み込み中にF5を押したり、
別のページを見ようとするとファイルの内容が壊れてしまう事があります。

fwriteの前にflockを指定してもそうなるのですが、
読み込み中で他の処理をした場合、こうなるのは仕方ないのでしょうか?
0465nobodyさん2010/03/03(水) 14:16:51ID:???
書き込まなければ壊れないです
0466nobodyさん2010/03/03(水) 14:37:46ID:???
正しく書かないと ねっ
0467nobodyさん2010/03/03(水) 14:42:55ID:tlrE5Eoo
【OS名】vista
【PHPのバージョン】php5.3.1
【質問内容】
expression web3を使用してサイトを作っております。

画像をランダムに数枚表示し、その表示された画像にリンクとaltが付くようにするにはどうしたら良いでしょうか。
下のサイトのようにしたいのですが、全然分かりません。。
ttp://www.zakkaz.com/archives/002702.php

どう書けばこんなふうになるのですか。
調べてみて以下のサイトのやり方が良いのか?と思い試しましたがエラー表示。
何が何だかパニックです。どなたかお願いします(土下座)
04684672010/03/03(水) 14:44:13ID:tlrE5Eoo
参考にしたサイト貼り忘れましたすみません。
ttp://kome-suki.net/archives/2628
0469nobodyさん2010/03/03(水) 14:58:17ID:???
まずはJavaScriptでやりたいのかPHPでやりたいのかを決めてください(平謝り)
0470素人2010/03/03(水) 15:03:42ID:???
これから本格的にPHPの勉強を始めようと思ってます。

何か初心者向けの本なるものを購入しようかと考えているんですが、みなさんが初心者だった頃

どの本を読まれてましたでしょうか?オススメがあれば教えて頂きたい。

初心者用でなくてもオススメの本があれば教えてほしいです。
0471nobodyさん2010/03/03(水) 15:05:08ID:???
php.net
お薦め
0472nobodyさん2010/03/03(水) 15:11:53ID:???
調べながら作ってればそのうち身につく
0473nobodyさん2010/03/03(水) 15:18:23ID:uqAdaiUc
すんませんすごい初歩的な質問ですが

echo "<html>";
echo "hoge";
echo "</html>";

と、既に書いてる状態で
また最初から書き直したい場合はどうしたらいいですか?

echo "<html>";
echo "hogehogehoge";
echo "</html>";
0474nobodyさん2010/03/03(水) 15:20:51ID:???
>>464
ignore_user_abort(1);
は駄目かな
ttp://php.plus-server.net/function.ignore-user-abort.html
0475nobodyさん2010/03/03(水) 15:27:28ID:???
>>473
0476nobodyさん2010/03/03(水) 15:28:11ID:???
>>473

http://jp2.php.net/manual/ja/ref.outcontrol.php
ここらへん見てみ
0477nobodyさん2010/03/03(水) 15:29:30ID:???
エスパー乙
0478nobodyさん2010/03/03(水) 15:41:35ID:???
>>473
echoを1カ所にまとめたらいい
<?php
$echo = "";

$echo = "<html>";
$echo .= "hoge";
$echo .= "</html>";

$echo = "";

$echo .= "<html>";
$echo .= "hogehogehoge";
$echo .= "</html>";

echo $echo;

?>
0479nobodyさん2010/03/03(水) 15:47:35ID:uqAdaiUc
あ、いろいろレスとかありがとうです。

ひょっとして、
$echo ="";
で、既にブラウザに表示されてるhtmlはクリアされて
$echo ="";からまた書き直せば以前のブラウザにかかれてたhtmlはあれして
最初からっぽいですかねこれ
ためしてみますありがちゅー
0480nobodyさん2010/03/03(水) 15:50:47ID:???
>>479
既に送信されたデータを消すなんて出来るわけがない
>>478は変数に保存しておいて最後に一度に出力するようになってるだけ
0481nobodyさん2010/03/03(水) 15:57:22ID:uqAdaiUc
ああ、そうなんですかそうだったんですか
とりあえずさっきのとは意味合いが違うですが今んとこ、
echo "<meta http-equiv='Refresh' content='0;url=hoge.php'>";
これでまた最初からやり直してるあれです
ブラウザに書いたあれをリフレッシュしつつ
コードは途中からとかってそんな馬鹿な話はないってことでFAですかね?
■ このスレッドは過去ログ倉庫に格納されています