【PHP】下らねぇ質問はここに書き込みやがれpart14
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/18(日) 10:10:12ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0752nobodyさん
2006/01/08(日) 01:44:03ID:???0754nobodyさん
2006/01/08(日) 05:03:26ID:???指定したサイズより大きい画像をリサイズする処理は完成しているのですが、
それ以下のサイズの画像もimagejpeg()の段階で画像が劣化してしまいます。
何かうまく回避する方法はないでしょうか?
0757754
2006/01/08(日) 05:20:48ID:???ありがとうございます。
サイズ判定はやっています。
ブラウザにjpgを出力するにはimagejpeg()使う以外に無いですよね?
私の勘違いでしょうか?
>そのまま出力する
とは画像ファイルにリダイレクトするということでしょうか?
なるべくなら、それは避けたいのです。
0758nobodyさん
2006/01/08(日) 05:40:18ID:???バイナリで出力できるやつならなんだって構わないと思うんだけど。
0759754
2006/01/08(日) 05:48:57ID:???画像処理にばかり気を取られて頭が固くなってました。
0761nobodyさん
2006/01/08(日) 15:05:00ID:???<html>
<head>
<title>SaveCookie</title>
<?php
mb_language('Japanese');
mb_detect_order('sjis-win,eucjp-win');
mb_internal_encoding("UTF-8");
?>
</head>
<body>
<?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?>
SAVED COOKIE "email"
</body>
</html>
を表示してみたところ下のようなメッセージが返ってきたなり。
Warning: Cannot modify header information - headers already sent by
(output started at /home/happylife/public/www/cookie_rec.php:4)
in /home/happylife/public/www/cookie_rec.php on line 13
SAVED COOKIE "email"
セキュリティの設定をすべてのクッキーを有効にしても、
ファイヤーウオールを無効にしてもこのメッセージが出続けます。
どうしたら良いのでしょう?
0762nobodyさん
2006/01/08(日) 15:10:32ID:???警告: (HTTP)ヘッダー情報を修正することができません
- だって、ヘッダーは既に送信されていたんだもん。
0763nobodyさん
2006/01/08(日) 15:16:20ID:???setcookieは、"<?php"の前に何かがあっては送信できませんし、
setcookieより前にecho等があっても送信できません。
"<?php"の前は、たとえ空行でも、入れちゃだめよ。
0764nobodyさん
2006/01/08(日) 21:57:56ID:???ありがとうございます。
動きました♪
0765nobodyさん
2006/01/08(日) 22:37:56ID:???flock($fp, LOCK_EX);
こんな感じでファイルロックを行うと、ファイルをオープンしてからロックするまでの間に他のプロセスがファイルをオープンすることはないのでしょうか?
0768nobodyさん
2006/01/08(日) 23:12:10ID:???0769nobodyさん
2006/01/08(日) 23:15:37ID:???というか、意外とまともに説明されてることって少なくね? < flock
0770765
2006/01/08(日) 23:30:43ID:???ロック用のファイルを作っておいてそれをロックするようにすればいいでしょうか?
0771nobodyさん
2006/01/08(日) 23:34:36ID:???0772nobodyさん
2006/01/08(日) 23:48:15ID:???↓よろ
0773nobodyさん
2006/01/08(日) 23:51:54ID:???パターン的には2通り。
1つは複数のプロセスでopenはできることを前提に、flockが解除されて
順番が回ってきたプロセスは「まずrewindして中身を読み直す」ことから始める。
ファイルのオープンモードがw系以外であることが条件。
もう1つは対象ファイル以外にロック専用のファイルを用意しといて
それがロック中は以降の処理全体を止める。いわゆるプロセスロック。
ファイルをいきなり消しちゃう場合や、複数のファイルを扱う場合などはこれ。
この種の「ロックの粒度」の話はRDBMSの試験にも出ますよw
0774nobodyさん
2006/01/09(月) 00:01:04ID:???するのがいちばんやね。ファイルが増えて邪魔くさいって欠点はあるけど
0776nobodyさん
2006/01/09(月) 00:08:18ID:???0777nobodyさん
2006/01/09(月) 00:15:19ID:???rewind が何をするものなのか考えてみよう
0778nobodyさん
2006/01/09(月) 00:20:19ID:???0780php developer teams
2006/01/09(月) 13:07:16ID:r4dXJ2hkどうすれば改行できるようになるのでしょうか?
0782nobodyさん
2006/01/09(月) 18:06:26ID:???[0]にfile()で読み込んだソース全部を入れることは出来ないんでしょうか?
0784nobodyさん
2006/01/09(月) 18:15:21ID:???>>783のでいいと思うがPHPのバージョンが古くて(4.2.x以前)使えない場合は
join("",file(〜))で同じことができる。(が、file_get_contents()の方が速い)
0787nobodyさん
2006/01/09(月) 18:46:35ID:???fopen して fread( filehandle, filesize( filename ) )
って手もあるな
0788nobodyさん
2006/01/09(月) 20:03:42ID:???は1バイトですが、
あ
は3バイトですか?
0789nobodyさん
2006/01/09(月) 20:13:30ID:???は
あ
は
0792nobodyさん
2006/01/09(月) 22:34:46ID:+5WHmeqfどなたか簡単なプログラムを作成してください。お願いします。
0793nobodyさん
2006/01/09(月) 23:12:01ID:???preg_replaceで正規表現を使うのが筋だが、嫌なら
$str = stripslashes($str); とか
つか少し頭使うなり調べるなりせんと上達しないよ?
0794nobodyさん
2006/01/09(月) 23:26:06ID:???HTML_QuickFormを利用していますが、なんか面倒で。
0795723
2006/01/10(火) 12:55:21ID:s2ru7jHC遅くなってすいません、ありがとうございました。
0796nobodyさん
2006/01/10(火) 13:11:23ID:???一つのディレクトリに納まっている複数のファイルをまとめ、一つのファイルにし、
これを圧縮するにはどうしたら良いのでしょうか。
圧縮はさておきまとめるというとtarを使うと思うのですが、
$aaa = system('tar -cf ./after.tar ./before', $bbb);
なんてことをしてもできないようなのです。
system関数が使えないとなると、他に手はないでしょうか。
0797nobodyさん
2006/01/10(火) 13:55:20ID:???特にさくらの鯖とか、CGI版だって知らないで聞いてるアホも多いんだから。
「system関数が使えない」ってのは、「関数が」使えないの?
それとも、`ls`なんかは出来るわけ?
パスが通ってない可能性も踏まえ、which tarしたフルパスにするとかしてみれ。
tarが使えないようになっている以外なら多分出来るはずだ。
0799nobodyさん
2006/01/10(火) 15:34:18ID:???var $str1 なんだから本来 $str1 と比較してマッチするはずがない
ereg に日本語を突っ込んでも信用できない
スクリプトを sjis で書いてると他にもおかしなこと起きやすい
以上から、たぶん晒した以外のところもかなりおかしなことになってるはず
結論としてはもっと勉強してくれ
0800nobodyさん
2006/01/10(火) 16:04:59ID:hzjvsGhO\が1つ以上ある場合はすべて消去したいのですがエラーが表示され機能してくれません。
0801nobodyさん
2006/01/10(火) 16:08:12ID:???判断に迷う質問だから放置してた。
ふつーに考えたら$str1と$this->str1を入れ替えるなんてこと自体がありえないので、
一体何をやろうとして何に引っかかってしまったんだか想像がつかない感じ。
結論:かなり大ボケかましてない?
というか多分、$this->str1は中身が空っぽになってて、
それで何にでもマッチしちゃうだけじゃないの?という気がする。
0802nobodyさん
2006/01/10(火) 16:09:17ID:???"/\\\\+\/" は "/\\\\+/" の間違いじゃないのか。
最後の \ は何に対しての \ なんだよ。
0803nobodyさん
2006/01/10(火) 16:24:04ID:???ありえないというか意味不明でレスのつけようがない
<?php
class test {
var $str1 = "テスト";
function view($str1) {
echo "\$this->str1=".$this->str1;
echo "<br>\n";
echo "\$str1=".$str1;
}
}
$a = new test;
$a->view("ホゲ");
?>
0804nobodyさん
2006/01/10(火) 16:55:37ID:Gn5rV4CT\と入力すると\\になったりして入力と異なるのでそれを直したいです。
0805nobodyさん
2006/01/10(火) 17:29:27ID:???申し訳ございません。XREAにてmod_phpで動かしています。
仰るとおり $aaa = system('which tar', $bbb); を試みましたが、
>>796のコード同様、$bbbには127という値が入っているのみでした。
0806nobodyさん
2006/01/10(火) 17:55:04ID:???入力元をコピーして残しとけば?
普通、mysql_escape_stringなんてDBに書き込む直前以外には実行しないだろー
0807nobodyさん
2006/01/10(火) 17:55:41ID:???0808nobodyさん
2006/01/10(火) 18:38:31ID:???さくっとPEAR使ったら?
http://pear.php.net/package/PHP_Archive/
http://pear.php.net/package/Archive_Tar/
圧縮は要lib
0811nobodyさん
2006/01/10(火) 21:57:13ID:Gn5rV4CT0812nobodyさん
2006/01/10(火) 22:02:39ID:???0813nobodyさん
2006/01/10(火) 22:20:29ID:V6LwtE82setcookie()する場合、適用ドメインを「.example.com」で発行すると、
それを「hoge.example.com」で上書きすることはできないんですね?
逆は可能なようですが・・・。
この仕様?って普通の感覚とは逆な気がするのですが、どんなもんでしょう?
0814813
2006/01/10(火) 22:27:18ID:???ブラウザが、「.example.com」と「hoge.example.com」
でクッキーを持っていると、
PHPの$_COOKIEは「.example.com」の方を優先して読み込むようです。
0815nobodyさん
2006/01/10(火) 22:46:58ID:???0816nobodyさん
2006/01/10(火) 22:54:11ID:???0817nobodyさん
2006/01/10(火) 23:29:28ID:???どうもありがとう!!
>>814-815 の続きですが、IEで調べたところ、
「example.com」と「hoge.example.com」で同じ名前のCookieがある時、
hoge.example.com にアクセスすると、
IEは、「example.com」のクッキー、「hoge.example.com」のクッキーの
順番で同時に送信してくるようです。
これをPHPの$_COOKIE['XXX']で取得すると、「example.com」の方の
クッキーが返されます。
広域指定が局所指定よりも優先されているわけですが、
これってクッキーの仕様に合致しているのかなぁ…。
0818nobodyさん
2006/01/11(水) 00:00:43ID:???0819nobodyさん
2006/01/11(水) 00:02:19ID:fOyKkotG>>803
レスありがとうございます。
確かにちょっと状況が説明不足ですね。
実は、レッツPHP!にあるTree BBS
http://php.s3.to/bbs/bbs6.php
に書き込み禁止処理を追加しようと思ったのです。
$comに納められたコメントの内容にNGワードが
入っていたらエラーが出るようにしようとしました。
それで最初
if(eregi($bad_word, $com))
としたのですが、うまくいかなくて
if(eregi($this->bad_word, $com))
または
if(mb_eregi($bad_word, $com))
にしたら、うまく動いたんです。ちゃんと動いているので
中身空っぽになって何でもマッチしているわけではないようです。
なお、このif分を追加したのは、function add_chkの中の
ifがずらっと並んでいるところです。
最初からスクリプト中にある
if($com=="" || ereg("^( | |[¥r¥n])*$",$com))
というところは、そのままで全角スペースにちゃんと
マッチしているので、ますますわけがわかないのです。
なので、もしかしたら文字エンコーディングに起因する問題?とか
いろいろ考えたのですがよくわかりません…。
0820nobodyさん
2006/01/11(水) 07:42:19ID:???スクリプトの先頭に
ini_set("display_errors", 1);
error_reporting(E_ALL);
と書け。
if(mb_eregi($bad_word, $com))
は$bad_wordが未定義なのにうまくいくはずない。
0821nobodyさん
2006/01/11(水) 09:29:54ID:???エスパー的には、mysql_escape_stringの問題ではなく、
マジッククォートの問題だと思う。
つ php.ini
初心者は問題の本質を捕らえる努力と伝える努力をすべきだと思う。
0822nobodyさん
2006/01/11(水) 10:32:50ID:???0823nobodyさん
2006/01/11(水) 12:26:46ID:???for ($i = 0; $i < $max; $i++)
より
for ($i = $max; $i > 0; $i--)
の方が早いって聞いたんですけどマジですか?
0824nobodyさん
2006/01/11(水) 12:29:42ID:???for($i = $max; $i ; -- $i)
じゃないのか?
でも微々たるもんだと思うけどね。
0826824
2006/01/11(水) 12:59:20ID:???1.for($i = 0; $i < $max; $i ++) {print ""}
と
2.for($i = $max; $i > 0; $i --) {print ""}
と
3.for($i = $max; $i; -- $i) {print ""}
をそれぞれ$max=1000000;で実行した結果、
おおよそ
1.0.50〜0.52秒
2.0.39〜0.40秒
3.0.31〜0.32秒
という結果になった。(複数回、順番入れ替えも行った上での結果)
環境:WinXP PHP4.3.10 CLI版
おまけ。
4.for($i = 0; $i < 1000000; $i ++) {print ""}
にするだけで
4.0.39秒
になる。
…PHPの変数参照っておせー
0827nobodyさん
2006/01/11(水) 13:22:09ID:???0830nobodyさん
2006/01/11(水) 13:51:56ID:???0832nobodyさん
2006/01/11(水) 14:22:10ID:h33/EqTj確認もないままに消してしまう。
同じスクリプト内に消去するまえの確認メッセージを表示してOKボタンをクリックした場合のみ消去させるにはどうしたらいいのでしょうか?
0833nobodyさん
2006/01/11(水) 14:27:23ID:qDYFXRNq0834nobodyさん
2006/01/11(水) 14:29:52ID:???OKボタンのFORM入力が無ければOKボタンを表示して終了、
FORM入力があれば実際にdelete実行、ってだけ。
0835nobodyさん
2006/01/11(水) 15:19:07ID:???$aa[0][0] = 1;
などとCみたいに扱えないんですか?
0837nobodyさん
2006/01/11(水) 15:32:16ID:???$aa[0][0] = 1;
として、これの中身を
echo "$aa[0][0]";とかすると
1[0]
って表示されるのですが・・
表示方法がまずいとか?
0838nobodyさん
2006/01/11(水) 15:37:00ID:???どうやら表示方法がまずかったみたいな
$aa[0][0]をいったん別の変数にとって
$bb = $aa[0][0];
として、$bbを表示したらうまくいきました。
0839nobodyさん
2006/01/11(水) 15:40:09ID:???"〜"の中で添え字([〜])やメンバ変数参照(->)みたいな記述はそのままでは使えない。
"{$env[0][1]}" みたいに {} で括る必要あり。
参考
【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/4
0841nobodyさん
2006/01/11(水) 15:50:27ID:CQ4aDWhiこのデータベース型CGIを
http://www.breeze.jp/s02_faq_01.php#q23
ここに設置しようと思っています
$datpath = "./";
$binpath = "./";
$BinUrl = "http://www.***.com/~user/";
↑
これらの変更すべき部分に何を書けばいいのかよく分かりません
どなたかお願いします
0843675
2006/01/11(水) 16:06:44ID:???おー、理解しました(多分)。スコープの問題?
if(mb_eregi($bad_word, $com))
が動いていたような気がするのは気のせいですよね、きっと…。
0844nobodyさん
2006/01/11(水) 16:07:55ID:???842の言うとおりだが、
何より
http://www.hero.ne.jp/~db/herodb-othersite.shtml
に説明が書いてあるだろ。
それで分からないなら使わない方がいいだろう。
0845nobodyさん
2006/01/11(水) 16:09:09ID:???if文の前に
echo $bad_word;
echo $com;
とでもして変数の中身確認すれば分かることでは?
0846nobodyさん
2006/01/11(水) 16:14:50ID:CQ4aDWhiまたスレ違いでしたか;;
失礼しました
他をあたります
レスありがとうございました
0848nobodyさん
2006/01/11(水) 18:08:12ID:h33/EqTjしかし意味が分かりません。Shift-JISを使わないってどこをどうすればいいのですか?
0849nobodyさん
2006/01/11(水) 18:11:15ID:???0850nobodyさん
2006/01/11(水) 18:25:34ID:h33/EqTj0851nobodyさん
2006/01/11(水) 18:38:15ID:???■ このスレッドは過去ログ倉庫に格納されています