【PHP】下らねぇ質問はここに書き込みやがれpart16
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/02/05(日) 22:35:34ID:sf8bx52Dここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
過去スレは>>2
0904nobodyさん
2006/02/22(水) 23:15:23ID:???それだと
HOGE('<strong>ここは<強調>したいんです</strong>');
はダメだからわけるしか無い
0905nobodyさん
2006/02/23(木) 01:36:14ID:???そこらへんは評価してあげないと。
今となっては穴だらけのスクリプトでも、
当時は感動したもんだ。
0906nobodyさん
2006/02/23(木) 02:01:43ID:???chmodコマンドは、借りている鯖側の処理で禁止されているのかな?
ファイル生成段階で属性って決めて保存ってできるか教えてください。
0907nobodyさん
2006/02/23(木) 03:07:02ID:???普通、PHPで出力したものは自分自身がそのオーナーなんだから
特にパーミッションなんて変更しなくても再読み書きできるもんだが、
そこのサーバーで何かおかしな真似されてるんじゃないか?
で、chmod以外でパーミッション設定は無理かと。
0908nobodyさん
2006/02/23(木) 10:25:22ID:???マニュアル見ても
define ("CONSTANT", "Hello");
echo CONSTANT; // "Hello"を出力します。
としか書いてないんですけど、
echo CONSTANT World!!;
といれたらエラーが出ますし、
echo "CONSTANT World!!";としたらそのままの文字列が出力されてしまいます。
変数の場合は、
echo $a;でもecho "$a";でもecho "{$a}";とかでも出力されますよね?
定数もecho "{CONSTANT}"みたいに何かで囲むことで、
出力されるようになるということはないですか?
それともこういう使い方の場合は変数を使えということでしょうか?
0909nobodyさん
2006/02/23(木) 10:44:59ID:???定数を "" で括って使う事自体定数の使い方がおかしい。
定数はその内容を意識しないで使うモンだ。
fopen( "example.dat", LOCK_EX ); の LOCK_EX みたいに普通は引数に使うだけ。
ライブラリや組み込み関数で使う定数の内容なんか意識しないで使うだろ?
そういう使い方をするものは変数が適している。
0910909
2006/02/23(木) 10:48:11ID:???flock( $resource, LOCK_EX ) と思ってくれ
0911nobodyさん
2006/02/23(木) 10:52:40ID:???0912nobodyさん
2006/02/23(木) 11:01:07ID:HLa5KG/+{ ? ? ? ( ) などを置換したくて[{???()]と書いてもパースエラー
[\{???\(\)]と書いても同様にパースエラーがでます。
Parse error: parse error, unexpected '[', expecting ')'
たぶん ) がエスケープできていないと思うのですがどうすれば ) を
エスケープできるのでしょうか。
0913nobodyさん
2006/02/23(木) 11:02:30ID:HLa5KG/+そこは気にしないでください。
0917nobodyさん
2006/02/23(木) 13:22:18ID:???phpの他のスレを関連として書いとくとかFAQとか
0919nobodyさん
2006/02/23(木) 14:11:48ID:HLa5KG/+だめみたいです。
勘違いしているだけかもしれませんが、
$text = '(abc)'
$text = mb_ereg_replace("[\(\)]*","",$text));
というふうに原因追及のため簡単に書き直して試してみましたが
やっぱりパースエラーが出ちゃいます。
parse error, unexpected ')'
var_dump($text)でabcと出したいのですが、
どこを間違えているのでしょうか。
PHP Version 4.4.1です。
0922nobodyさん
2006/02/23(木) 14:36:59ID:???助かりました、マジでありがとうございます。
こんなことに何時間も悩んで、
なんかすごくバカらしくて涙が出てきました。
0923nobodyさん
2006/02/23(木) 15:30:20ID:???mb_ereg_replace errorとか関数名がきちんと出てくるしな。
>>922
そうやって成長してくもんさ。
オメデトウ。
0926nobodyさん
2006/02/23(木) 16:08:03ID:???自ホストを取得するには
どうしたらよいでしょうか?
0927nobodyさん
2006/02/23(木) 16:13:05ID:???PHPeclipse
CVSとエディタしか使ってないから使いこなせてるとは言い難いんだけどね('A`)
ロースペックマシンだと動作の重さで涙が増えるかも。
統合開発環境スレだともっといろいろ教えてくれるんでないでしょか。
0928nobodyさん
2006/02/23(木) 16:49:23ID:???個人的にあるとうれしいのはHTMLのタグ間ジャンプ。
閉じタグを確認するというより編集範囲を探し出すのに重宝するって感じだけどね。
0929nobodyさん
2006/02/23(木) 17:00:38ID:???0931nobodyさん
2006/02/23(木) 17:12:12ID:???<form action="index.php">
<input type="text" name="moji" size="40" value="<?echo "<a href="database.cgi?keys2=" . $moji . "">" . $moji . "</a>" ?>">
<input type=submit value=sub>
</form>
こんな感じでフォームに文字を入れてsubmitすると
$moji の部分が置き換わるようにしてるんですが、
これを
<input type="text" name="moji" size="40" value="<?echo "<a href="database.cgi?keys2=" . $moji . "">" . $moji2 . "</a>" ?>">
として、
「$moji」は入力した通りの文字, 「$moji2」は全角カナがある場合は半角カナに置き換えて表示するようにしたいのですが。
0932nobodyさん
2006/02/23(木) 17:17:40ID:???<?echo "&lt;A href=&quot;database.cgi?keys2=" . $moji . "&quot;&gt;" . $moji . "&lt;/A&gt;" ?>">
↓
<?echo "&lt;A href=&quot;database.cgi?keys2=" . $moji . "&quot;&gt;" . $moji2 . "&lt;/A&gt;" ?>">
0933nobodyさん
2006/02/23(木) 17:22:24ID:???まぁカタカナなんて50種類ぐらいしかないんだから、
悩むより全通りやったほうがはやいとおもう^^;
0934nobodyさん
2006/02/23(木) 17:22:32ID:???preg_replaceで地道に
$zenkaku = array ("ア", "イ", "ウ"...);
$hankaku = array ("ア", "イ", "ウ"...);
とやる。
0937nobodyさん
2006/02/23(木) 18:00:27ID:???0939nobodyさん
2006/02/23(木) 20:11:35ID:???CLIからWebとかftpのバーチャルホストかどうかなんて判んないから取得できないよ。
CGIのI/Fのように環境情報が渡されてないから。
0941nobodyさん
2006/02/23(木) 20:16:24ID:???0942nobodyさん
2006/02/23(木) 20:30:32ID:???で、そのCLIってのはどうやって起動されるんだ?
Web上のPHPやCGIからsystemで呼び出し?
それとも手動またはcronで実行?
前者なら子プロセスに環境変数が継承されるかもしれないが、
後者なら「ホスト名というもの自体が存在しない」よ。
無い物は取得不可能。
0943nobodyさん
2006/02/23(木) 20:52:38ID:aYPvtFuR$fp = @fsockopen('www.example.xxx', 80, $errno, $errstr, $timeout);
ってやっています。
できるだけ素早く判別してもらいたいんですが$timeoutの値の目安ってありますか?
0944nobodyさん
2006/02/23(木) 20:55:27ID:???0945nobodyさん
2006/02/23(木) 21:23:39ID:???それ以上は死んでいるも同然
0949nobodyさん
2006/02/23(木) 23:04:53ID:???0950nobodyさん
2006/02/23(木) 23:29:27ID:???0951nobodyさん
2006/02/23(木) 23:53:06ID:???0952nobodyさん
2006/02/24(金) 00:42:35ID:???0953nobodyさん
2006/02/24(金) 02:01:19ID:???$hoge = $_POST['hoge'];
をextractを使って表現するとどのように書けばいいのでしょうか?
特に何もしないとXSSの原因になるそうなので、
わからないうちは使うつもりはありませんが、気になるので・・・
0955nobodyさん
2006/02/24(金) 02:30:53ID:???extract($_POST, EXTR_SKIP);
か
extract($_POST, EXTR_PREFIX_ALL, "post");
のどっちかかな。
$hoge = $_POST['hoge'];相当なのは前者。
後者は$post_hoge = $_POST['hoge'];相当。
0956nobodyさん
2006/02/24(金) 02:36:19ID:???どうもありがとうございます。
早速実行してみたところ、
ちゃんと$hoge = $_POST['hoge'];と同じになりますね。
便利ですねえ。
どういう危険性があるか理解できるまで使わないことにします。
ひとつ謎が解けました。ありがとうございました。
0957nobodyさん
2006/02/24(金) 02:38:49ID:???レスしてる間にレスがorz
詳しくありがとうございます。
値もいろいろと指定できるんですねー
早速値に関してどういったものか調べてまいります。
0958nobodyさん
2006/02/24(金) 03:44:05ID:???extractで展開していると
予期しない変数を書き換えられる危険がある。
例えばパスワードを$passに設定している場合に
hogehoge.com?pass=〜
でアクセスされ、これをextractで展開すると…。
↑はgetの場合だけれど
ローカルでフォームを書けばpostだって送りつけられるし。
0960nobodyさん
2006/02/24(金) 04:00:42ID:???見たいに
example.com?pass=5
しか想定しないでextractすると、下のURLみたいなアクセスをされた場合に大量に変な変数作られるのが危険て事?
example.com?pass=5&user=hoge&db=example.com
予期しない変数を大量に作られるのは気持ち悪いね
でも、プログラムの一番最初にextractすれば変数の内容は上書きされないような気もするけど・・
0961nobodyさん
2006/02/24(金) 04:24:48ID:???0962nobodyさん
2006/02/24(金) 06:38:31ID:???http://jp2.php.net/manual/ja/function.extract.php
警告
extract() をユーザー入力 ($_GET, ...) のような信頼できないデータについて使用しないでください。
もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、
EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。そして php.ini の
variables_order で定義されたものと同じ順で展開すべきであることに留意してください。
ま、他人のサーバがどうなろうが知ったこっちゃ無いが
0964nobodyさん
2006/02/24(金) 08:35:07ID:???$data=$_POST['data'];にしとけばいいってこと?
他人のスクリプト見ると、
extractを使うのが一般的だとか思っちゃうけど…
0967nobodyさん
2006/02/24(金) 10:24:28ID:???0968nobodyさん
2006/02/24(金) 12:03:24ID:???それは過去の遺物。
大昔(と言ってしまおう)のPHPがデフォルトでextractと同等のことを自動的にする仕様だったんで、
その頃からPHPで物作ってる人は互換性のためにextract使っちゃうのよ。
で、そういうプログラムって過去の実績は多数あるんで、さらに巷で大量に流布しちゃって
それを真似する素人プログラマがまた問題があるままパクって傷を広げてしまうんだな。
0969nobodyさん
2006/02/24(金) 12:05:01ID:???別にextract関数自体が問題あるって話ではないわな。
でもクエリーの展開以外にextractを使う人ってほとんどいないけどなw
0973nobodyさん
2006/02/24(金) 12:52:58ID:VruGZZOM解析って出来ないのでしょうか?
0976nobodyさん
2006/02/24(金) 14:56:56ID:j/2+6+fN取得できなくて困っています。GETは取得できます。
<input type="submit">だと、POST/GET両方普通に取得できます。
0980973
2006/02/24(金) 15:32:05ID:???おお、なるほど。本当にソースダウンロードしてって感じですね。
大きいサイトでソースを公開しているところって殆どないですよね?
SNSなどでソース公開しているところってご存知?
0981nobodyさん
2006/02/24(金) 15:40:10ID:???実行処理の後にwindow.closeとか書いても電卓が消されないと下の処理に移動しません。
system("calc.exe > /dev/null &")
とかもやったのですがこっちは電卓が画面に表示されませんでした。
どうすればよいのでしょうか?
0983nobodyさん
2006/02/24(金) 17:15:42ID:aTqN8USg外部のサイトを読み込み、文字コードを変換して出力したいのですが
どうしてもエラーの表示が出てしまいます。
多分、とてつもなく馬鹿な事をしているのだと思いますが…
この場合、どのようにしたら良いのでしょうか?
ヒントだけでも頂けたら幸いです。
下記、エラーが出たもの
<?php
$max =30;//MAX件数
$arr = file("http://pc8.2ch.net/php/subback.html");
$lines = $arr;
$lines = mb_convert_encoding($lines, "UTF-8");
for($i = 0; $i < $max; $i++)
echo $lines[$i];
?>
0985983
2006/02/24(金) 17:20:12ID:???実際のものは<html><head><meta>系タグを抜いた、
<li><a>テキスト</a></li>\n
といった固定の形式のものが並んでいるのみです。(読み込み先はSJIS)
>>984
すみません。
phpのエラー表示ではなく、
なぜか一言、白い画面に「Array」と出るのみです
0986nobodyさん
2006/02/24(金) 17:33:56ID:???$lines[$i]が配列なだけ
変数がどういう値もってるのかいろんなとこでvar_dump()してみろよ
0987nobodyさん
2006/02/24(金) 17:58:16ID:???>$lines = mb_convert_encoding($lines, "UTF-8");
ここがおかしい。 mb_convert_encoding()がパラメータに
どのような型を取りうるのか確認。
0988nobodyさん
2006/02/24(金) 18:05:03ID:???2時間も何を検索してたん
<?php
$max =30;//MAX件数
$lines = file("http://pc8.2ch.net/php/subback.html");
//$lines = $arr;
//$lines = mb_convert_encoding($lines, "UTF-8");
for($i = 0; $i < $max; $i++)
echo mb_convert_encoding($lines[$i], "UTF-8", "sjis");
?>
0990nobodyさん
2006/02/24(金) 20:11:38ID:???確かにNoticeがでるな
$lines = mb_convert_encoding($lines, "UTF-8");
Notice: Array to string conversion in ****.php on line *
0991nobodyさん
2006/02/24(金) 20:13:31ID:???1行目に、
error_reporting(E_ALL);
を記述しておきましょう。デバッグに役立ちます。
0993nobodyさん
2006/02/24(金) 21:03:11ID:???他にいい資料置いてるとこない?
0994nobodyさん
2006/02/24(金) 21:29:00ID:???こことか・・・
0996nobodyさん
2006/02/24(金) 21:55:52ID:???0997983
2006/02/24(金) 22:04:04ID:???>>986-991
皆さん本当にありがとうございます。
自分はまだforの扱いすらあやふやな所があり論外なレベルなので
皆さんのレス保存して、根っこから勉強しつつやってみます。
ありがとうございました。
0998983
2006/02/24(金) 22:07:26ID:???どこか間違ってたらごめんなさいね
【PHP】下らねぇ質問はここに書き込みやがれpart17
http://pc8.2ch.net/test/read.cgi/php/1140786348/l50
1000nobodyさん
2006/02/24(金) 22:13:27ID:???本当にありがとうございました。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。