【PHP】くだらねぇ質問はここに書き込みやがれpart4
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/13 16:08:32ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
0053nobodyさん
05/03/16 00:03:01ID:oQ3Q5gEXPHPのバージョンは4.3.10です。
if(getenv("HTTP_USER_AGENT")=="Pockey-GetHTML"){exit;} うーん?
005447
05/03/16 00:14:43ID:???レスどうもです。postfixのログには関連するものがなかったのですが、
apacheのログを再度見直してみたら、
sendmail.postfix: fatal: chdir /var/spool/postfix: Permission denied
というエラーを見つけました。これが原因でしょうか。
で、/var/spool/postfixのアクセス権を調べたところ、
所有者はrootで、アクセス権は755に設定されていました。
所有者以外のユーザーも読めるわけですが、何が問題なんでしょう。
試しに上記ディレクトリのアクセス権を777にしてみましたが、
結果は変わらず、エラーログも同じものでした。
あと、せっかくスクリプトを書いていただいたのに恐縮ですが、
後半のアドバイスは私にはちょっとわかりません。すみません。
0055nobodyさん
05/03/16 00:14:45ID:???Web制作板から来た人かいな。
UA名はきちんと申告するらしいのでhtaccessで弾くのが手っ取り早いんだが。
「うーん?」つーのはどういう意味で書いているんだ?
005653
05/03/16 00:49:42ID:???はい、移動してきました。
htaccessは使えないのでPHPでなんとかできないかと思ったんですが無理ですか?
うーん?というのは読み飛ばしてかまいません。深い意味はないです。
0057nobodyさん
05/03/16 01:28:17ID:???Pocky-GetHTMLのUser-Agent名は、「Pockey-GetHTML/4.12.0 (Win32; GUI; ix86)」
ってな感じらしいので、>>53の書き方の「 == (等しい)」だとそこを通らない。
strstrやstrposのような文字列の中を検索する関数を使う。
ttp://www.php.net/manual/ja/tutorial.useful.php
0058nobodyさん
05/03/16 07:58:31ID:qOWGuaAh<? echo '<?xml version="1.0" encoding="Shift_JIS"?>'; ?>
とやるのはどうでしょうか?
ご意見をいただけると嬉しいです。
0059nobodyさん
05/03/16 07:59:01ID:qOWGuaAh0061nobodyさん
05/03/16 10:11:58ID:???なんかググってみたけどモノ自体は判らなかったが
(今は配布されてないみたいだ)
相当に行儀が悪い振る舞いをするモノということだけは判った。
現物ないので、UAを偽装できてしまうのか判らんが。
>>57みたいに文字列検索で、正規表現で引っ掛けるか。
あとデフォルトのUA表示は「Pocky/〜」というのもあるみたい。
0062nobodyさん
05/03/16 12:26:14ID:???GETHTML 4.13は持ってるよ
UAを変更する機能はないのでPockey-GetHTMLを含むものを拒否するだけでOKでしょう
それかrobots.txtを読み込むのでrobots.txtでも拒否できますよ。
一応4.13からは
(1) 同一サーバ(ホスト)への同時取得数が 1 に固定されました
(2) 同一サーバ(ホスト)への連続取得に対し、1秒の wait をデフォルトで入れました
という変更がされてるようです
006353
05/03/16 13:14:18ID:???モノが無いので挙動を確かめられんのですが
多分これでいけるんでしょう。次回の爆撃を楽しみにまっときます。
if(strpos($_SERVER['HTTP_USER_AGENT'],'Pockey-GetHTML')==true){exit;}
0064nobodyさん
05/03/16 14:19:24ID:???まてまて、strposは先頭の文字の位置は0を返すぞ。
!==false じゃないかな。
UA偽装してアクセスするくらいのテストをした方が爆撃が楽しみになると思う。
0066nobodyさん
05/03/16 17:00:56ID:???Webで翻訳してみたら「変数だけは、参照によって超えられることができます」と・・・
変数自体は$a[1]=array()しか存在していないはずなのです
意味がわからない
print_r($a);
Array ( [1] => Array())
Fatal error: Only variables can be passed by reference
0067nobodyさん
05/03/16 17:14:15ID:???エラーの原因はわからないがプログラムするんならpass by valueとpass by referenceぐらい知っとけ
知らなければ調べとけ
0068nobodyさん
05/03/16 17:28:28ID:???こんなエラーは私としては初めてみるのですが皆さんはエラーが発生する前にエラーの
文脈を理解されているのですね。流石にプロは違いますね。
文字が出る前に予測し意味を理解されているなんて!。
と煽ってみる^^。
0069nobodyさん
05/03/16 17:41:54ID:???007066
05/03/16 17:53:51ID:???count($a)は1ですし成立しているはずなのに致命的エラーで中止されてしまう
配列の作り方に問題があるのか・・・
print_r($a)
Array ( [1] => Array())
Fatal error: Only variables can be passed by reference
isset($rel[1]);
Fatal error: Only variables can be passed by reference
007266
05/03/16 18:09:10ID:???変数名を変更したら直りました・・・が、あぁ〜書き込む途中で何となく分かりました。
使っている変数名を初期化してなかった為に何処かで使っていた変数と被っていたのかも知れません。
しょぼい・・逝ってくる;;
0073nobodyさん
05/03/16 18:18:13ID:???を出したくてチャレンジしてるのですができません。。 orz
よほど革新的なやり方に違いない。。
007466
05/03/16 18:39:26ID:???使っている形跡がなかった。グローバルなんて使っていないし、わけがわからない・・。
007566
05/03/16 18:47:16ID:???出来るかもしれないな
ちなみにPHP Version 4.3.9です
0076nobodyさん
05/03/16 22:45:43ID:???ローカルルール申請をする前に
知識のある方に確認して欲しいのですが
どちらで聞けばよろしいでしょうか?
0077nobodyさん
05/03/17 00:18:17ID:???http://qb5.2ch.net/operate/
0079nobodyさん
05/03/17 02:32:38ID:pEdxtvRGMYSQLとかだと一行消して間をつめるみたいに軽い処理でできるのでしょうか?
2、最近のサーバーなら5000行を超えるテーブルでも比較的軽く操作できますでしょうか?
3、カンマ区切りのテキストファイルをたくさん作るくらいならMYSQLにすべきでしょうか?
4、MS-ACCESSのようにテーブル作るたびにファイルができるのでしょうか?
webアプリを作っていて、できたのはいいもののデータファイルが1000行とか超えてくるとさすがに心配です。
ファイルロックをしてはいますがfrockでは完璧ではないようで・・
どなたかY/Nで結構ですので1〜4答えてください。
0082nobodyさん
05/03/17 12:31:19ID:JSWrWrWk現在PHPにPOSTでバイナリ画像データを投げています。
ところが、$ret = $_POST['ret'];
にした時にすでに、$retはデータに\0があった場合に切り詰められてしまいます。
これを回避してバイナリ画像データを
画像ファイル形式で保存するにはどうしたらいいでしょうか?
0083nobodyさん
05/03/17 12:31:45ID:JSWrWrWk0085nobodyさん
05/03/17 12:54:39ID:???POSTでバイナリを投げる?
フォームからファイルアップロード?
だったら、普通にmultipart/form-data使えば?
それより、IDに感動した。
0086nobodyさん
05/03/17 13:12:57ID:???フォームからではなくて、Iアプリから投げています。
Iアプリからはきちっと投げれているんですが、
PHP側で$ret=$_POST['ret'];
と、やろうものならもう文字がめちゃめちゃになっています。
なんとか回避できないでしょうか?
$HTTP_POST_FILESというのを試したのですが、うまくいきませんでした。
(FORMからファイルのアップはできました)
0087nobodyさん
05/03/17 13:19:19ID:???0089nobodyさん
05/03/17 13:24:46ID:???0090nobodyさん
05/03/17 13:25:08ID:JSWrWrWkヘッダはこんな感じで出力してます。
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
試しにmultipart/form-dataにしてみたんですが駄目でした。
ちなみに、ret='画像バイナリデータ'という感じでPOSTで渡しております。
文字が認識できないというのは、バイナリデータに\0が在った場合切り詰められてしまうことです。
$ret=$_POST['ret']; ←この時点で取得するときには勝手に切り詰めてくれます(涙
0091nobodyさん
05/03/17 13:54:02ID:???$HTTP_RAW_POST_DATAをググったら解決できました♪
//うちの鯖では$HTTP_RAW_POST_DATAが使えませんでしたので
//ググって出てきたメーリングリストから転載します。
$buffer = "";
$stdin = fopen( "php://input", "r" );
if( !$stdin ){ die( "stdin open error!!" ); }
while( !feof( $stdin ) )
{
$buffer .= fgets( $stdin, 10000 );
}
fclose( $stdin );
これでPOSTデータを取得できました。
但し、もともと"ret=画像バイナリ"で送信していたので、
retをはずして"画像バイナリ"のみで送信しました。
折角、ハッシュになっていて便利なのですが、この際諦めます。
009279
05/03/17 14:12:39ID:???webprogの質問のほういきますね。
0093nobodyさん
05/03/17 15:41:55ID:???Content-typeをapplication/octet-streamとかにすればalways_populate_raw_post_dataの設定にかかわらず
$HTTP_RAW_POST_DATAにPOSTデータがそのまま残ると思う。
0094nobodyさん
05/03/17 15:59:35ID:???i-appli側も作ってるならi-appliのほうでmaltipart/form-dataの形式にして送ればバイナリデータもちゃんと遅れるでしょう。
application/x-www-form-urlencodedは文字通りurlエンコードして送るものですから
0095nobodyさん
05/03/17 17:09:51ID:???http://foo.bar/index.php/20050401
って感じでindex.phpに日付っぽい文字列渡してるんですけど、
Hatenaみたく
http://foo.var/20050401
って感じで日付をスクリプトに渡すにはどうすればいいでしょうか。
やっぱApache側でなんとかしないとダメ?
0096nobodyさん
05/03/17 17:40:17ID:???PHP以前の問題でapacheがどうするかつー話。
上のURLが使えるつーのもapache側でなんとかしてるよ。
自分が管理してる鯖なら「なんとかした」時のドキュメントを再度確認。
他人が管理してる鯖ならその人に相談してみれ
0097nobodyさん
05/03/17 18:34:04ID:???うへぇ。やっぱApache側ですか。
> 自分が管理してる鯖なら「なんとかした」時のドキュメントを再度確認。
Apache側の設定はデフォのままです。
上のURLみたいにやってるサイト見て、試しに自分とこのでも似たようなURL入れて飛んでみたらありゃアクセス出来んじゃんって。
じゃあ$_SERVER['PHP_SELF']から文字列取得すりゃどうにでもなるじゃん、って感じで適当に書いただけなんで。
んー、mod_rewriteあたりでなんとかなりますかね・・調べてみます。
0098nobodyさん
05/03/17 19:12:45ID:???パスワードの比較をしたいのですが
半角の英数のみの文字列を比較する場合
== === strcmp などどれがよいのでしょう?
009998
05/03/17 19:13:20ID:???0100nobodyさん
05/03/18 01:16:38ID:???ホスティングのレンタルサーバで、自分のディレクトリ以下にhoge.phpファイルを置いた場合に、
同階層のinc.phpを読み込むには、
require_once($_SERVER['DOCUMENT_ROOT'].'/inc.php');
これで行けてるんですが、
自分でサーバ動かして、ユーザ/public_html/以下のディレクトリにhoge.phpを置いた場合は、
パス的に違うところ(ドキュメントルートの方)を見に行ってしまってinc.phpが無いという
エラーになってしまいます。
当たり前と言えば当たり前な気がするんですが、こういう場合、今いる位置を取得するような記述に変えるものでしょうか?
(そんなものがあれば、ですが。)
もしくは、apacheの設定でどうにかする問題でしょうか?
0102nobodyさん
05/03/18 02:04:42ID:???0103100
05/03/18 02:11:52ID:???ちょっと調べてみます。使い方がよくわからんので。
>>102
まじすか?じゃあ元から
require_once('./inc.php');
ってやっとけば良かったのかなぁ。後でやってみます。
0104nobodyさん
05/03/18 13:36:47ID:???require_once('inc.php');
はだめなのかな
0105nobodyさん
05/03/18 15:45:07ID:???携帯サイトで画像に文字を入れるサイトを作っています。
imagefttext ($im, $size, $angle, $x, $y, $col, $font_file, $text)
を全て変数にしてformを使った選択式にしています。
PCからアクセスするとすんなり行き、画像に文字が入って表示されます。サイズ、位置、色、フォントの種類も全てOKです。
しかし携帯(auのA3012CA)からアクセスすると画像は表示されますが、文字が描画されていません。
これは無理なんでしょうか?
0106nobodyさん
05/03/18 16:08:50ID:???ここで聞く前に色々出来る事があるだろう?
$textに文字列がちゃんと入ってるのかとかさぁ。
携帯の時の画像をファイルに落としてそれをPCで確認してみるとかさぁ。
0107nobodyさん
05/03/18 17:02:27ID:???0108nobodyさん
05/03/18 17:37:43ID:???+--+--------+-----+------+
| id | leader | sub_l | sub_l2 |
+--+--------+-----+------+
| 01 | 山田 | 本田 | 上田 |
| 02 | 上田 | 藤本 | 山本 |
| 03 | 山田 | 藤本 | 田中 |
+--+--------+-----+------+
こんなテーブルで、各列の名前をひとつの配列に格納したいのですが、
つまづいてしまったので質問させてください。
$result = mysql_query (SELECT leader FROM table, $conn);
$leader = mysql_fetch_array ($result);
これだと、
Array( [0] => 山田 )
Array( [0] => 上田 )
Array( [0] => 山田 )
の様に、行ごとの配列になってしまいます。
これを、Array ([0] =>山田 [1] => 上田 [3] => 山田)
の様にしたいのですが、どうすれば良いでしょうか?
0109nobodyさん
05/03/18 17:52:34ID:???while ($row = mysql_fetch_row($result)) {
$leader[] = $row[0];
}
mysql_resultでもいいけど。
mysql_fetch_array()した後で新しい配列を作るのもありかな。
0110108
05/03/18 18:00:14ID:???うおー!できました!
whileが浮かばなかったです。。。
こんな短時間に答えてもらってめっちゃ嬉しいっす。
�dクス!
0111nobodyさん
05/03/18 18:13:55ID:???0112nobodyさん
05/03/18 18:54:53ID:???0113100
05/03/18 21:41:06ID:???今いるページ(動的)を表示させるにはどうしたもんでしょうか?
$_SERVER['PHP_SELF'];
や、
$_SERVER['PATH_TRANSLATED'];
だと、そのファイル自体が出てしまいますが、
http://xxx.com/hoge.php?huga=1&hage=2とか、
.htaccessでちょっと違う渡し方(http://xxx.com/1/2/みたいな感じ)をしてたりするので、
つまりは、アドレスバーに出ているパスがわかる手法なんてありませんですか?
0114100
05/03/18 21:42:08ID:???0115nobodyさん
05/03/18 22:01:03ID:???0117nobodyさん
05/03/18 22:42:36ID:???最後ギガワロスwwwwwwwwwwwwwwwww
義兄さんいいやつカッコイイwwwwwwwwww
↓の1とは大違いだwwwwwww
http://ex10.2ch.net/test/read.cgi/news4vip/1111083418/
0119nobodyさん
05/03/19 20:15:14ID:+syTbEnIPHPスクリプトからパスワード入力が必要なページにアクセスするのはどうやればいいんでしょうか?
[パスワード認証ページ]
pass.php ($_POST['pass']に対応した入力ボックスがある)
0122119
05/03/19 21:31:07ID:+syTbEnI教えて頂いたcURLを使用して以下の様なコードを作成して実行したのですが
「ERROR!」が表示されてしまい、どうも上手く行きません…
スクリプトで指定したパスワードをコピー&ペーストで手動でボックスに入力して
ログインすると問題ないので、パスワードは間違ってないはずなのですが…
どこが悪いのでしょう??
-------------------------------
[access.php]
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.******.***.login.php');
curl_setopt($ch, CURLOPT_POST, 'test_pass');
curl_exec($ch);
curl_close($ch);
-------------------------------
[login.php]
if($_POST['password'] == 'test_pass'){
print("OK!\n");
}else{
print("ERROR!\n");
}
-------------------------------
0123nobodyさん
05/03/19 21:42:05ID:???curlは使ったこと無いからぱっと見の印象だけど、
passwordという文字がどこにも無いのにそれがPOSTで割り当てられるとは到底思えない。
そう思って本家のマニュアルを見てみれば、user notesにサンプルまであったよ。
0124119
05/03/19 22:04:12ID:???そうですよね… アホなコード書いてしまってた…
以下で問題なくアクセス出来る様になりました。
どうもありがとうございました!
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.******.***.login.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'password=test_pass');
curl_exec($ch);
curl_close($ch);
0125nobodyさん
05/03/20 00:17:39ID:Agj+ehs1ポインタのみ返される(=配列が巨大になってもコストは変わらない)
のでしょうか?
それともまるまるコピーされるのでしょうか?
0126nobodyさん
05/03/20 01:09:28ID:???0127nobodyさん
05/03/20 01:42:16ID:HpwY0q6P鯖管理のスクリプトとして使ってました。
このたびphpを勉強しようと思うのですが、お勧めの書籍などあれば
教えていただきたいのですが。
0128nobodyさん
05/03/20 01:53:14ID:???不安になったら既存のスクリプトを読むとか。
あとは何がしたいかによるけど。
0129nobodyさん
05/03/20 01:58:29ID:HpwY0q6P0130nobodyさん
05/03/20 02:17:44ID:???なんだったら、こっちで訊いて
PHP関連の書籍(但しPHP出版系お断り)
http://pc5.2ch.net/test/read.cgi/php/985315574/893-
バカが沸いて最後変になってるけど。
0131nobodyさん
05/03/20 04:41:31ID:06hYr4Ff書き出すのは上手くいったのですが、
もっとスマートな書き方があるかもしれないと思い、質問です。
自身のファイルに書き出す場合なら
echo = 'hoge';
echo = 'hage';
のところを、一番最初に $kakikomi = ""; とした上で
$kakikomi .= "hoge";
$kakikomi .= "hage";
と$kakikomiに追記を繰り返し、最後に
fputs ( "test.html", $kakikomi );
で出力しています。
変数に追記していく点が、どうかなぁと思うのですが
いかがでしょうか???
0132nobodyさん
05/03/20 05:54:38ID:???そんなんで良いんでね。
行間がどれ位離れてるのか隣接してるの判らんし。
他には隣接してるならヒアドキュメント使うとか、
array_push()使って溜めて、最後にjoin()して書き出しとか。
0133131
05/03/20 10:11:25ID:otGG2Eg1ありがとう。
ヒアドキュメントは使えるところには使ってみました。
なるほど、array_pushも使えますね。。。メモメモ
0134nobodyさん
05/03/20 11:35:21ID:???htmlspecialchars()を使ったのですが\nと\rを<br>に置き換えているためか
改行されず、そのまま<br>と表示されてしまいます。
うまく表示するためにはどうしたらよいのでしょうか?
0135nobodyさん
05/03/20 12:33:41ID:???0136nobodyさん
05/03/20 12:54:44ID:???$comment = str_replace("\r\n", "\r", $post['comment']);
$comment = str_replace("\r", "\n", $comment);//改行文字統一
$comment = preg_replace("/\n{2,}/", "\n\n", $comment);//2行以上の改行を2行に
if (substr_count($comment, "\n") > MAXBR) error("えら!");
$comment = eregi_replace("&([0-9a-z#]+);", "&\\1;", $comment);
$post['comment'] = str_replace("\n", "<br>", $comment);//\nをbrに
0137nobodyさん
05/03/20 13:28:23ID:???array_push()は、$array[]='hoge';でも等価。
あと結果用の自前のクラス作って、そこにpushとwriteってメソッド付けるとか。
(関数でもいいけど。巷のログ出力用のクラスを参考に)
0138nobodyさん
05/03/20 17:08:29ID:MmiCb60Cどこかにありますか?
0139papupapu
05/03/20 17:11:22ID:???0143nobodyさん
05/03/20 17:34:03ID:???0144nobodyさん
05/03/20 21:32:17ID:???イメージディレクトリからファイル名を指定して探し出しURLとして表示させたいのです。
img.phpで以下を保存し、ファイル名の指定はimg.php?aaa.jpg等としたいです。
このときのOOOOをどう表現すればいいのでしょうか?
$dir = "./img/";
$file = strstr(OOOO, '?');
glob("$dir/$file");
0147nobodyさん
05/03/20 23:29:17ID:???洗ってから食べなさい。
0148nobodyさん
05/03/20 23:45:27ID:???0150149
05/03/20 23:59:40ID:???0152nobodyさん
05/03/21 01:46:48ID:???eregで判別するのと「.」をトークンとして分割しその値を==で判別するのでは
どちらが効率が良いですか?
0153nobodyさん
05/03/21 01:55:46ID:???「.」区切りを整数になおす関数もあるぞ。んで、サブネット指定できる。
その辺をうまくやりくりしてくれる関数は前に誰かに質問されて、
こっちかホンスレに書いた。DAT落ちしててみれないかもだけど。
あと、逆引きできるならリモートホストの後方一致って手もある。
■ このスレッドは過去ログ倉庫に格納されています