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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0611nobodyさん2006/01/04(水) 15:25:21ID:???
偽装される確立を議論するなんて何考えてるの?
0612nobodyさん2006/01/04(水) 15:26:33ID:???
>>606
「偽装される」ってのが何を意味しているかは知らないけど、
echo $_SERVER['PHP_SELF];
とか
echo $_SERVER['QUERY_STRING'];
とかすると、クロスサイトスクリプティング脆弱性が出来上がるよ。
'
>>610
セキュリティを考える場合確率は関係ないだろ。
06136122006/01/04(水) 15:27:07ID:???
echo $_SERVER['PHP_SELF'];
ねorz
0614nobodyさん2006/01/04(水) 15:28:34ID:???
なんで
echo $_SERVER['PHP_SELF];
がクロスサイトスクリプティングになるの
0615nobodyさん2006/01/04(水) 15:31:33ID:???
>>614
パスインフォが通るサーバ設定だと
/hoge.php/">
とかを$_SERVER['PHP_SELF']に入れられるから。
0616nobodyさん2006/01/04(水) 15:35:50ID:???
入力側を偽装する意味がわからん・・・
action属性を誤魔化すぐらいならwebサーバに直接叩きにいくだろうし。
0617nobodyさん2006/01/04(水) 15:39:08ID:???
>>616
クロスサイトスクリプティングをしらないのか!?
0618nobodyさん2006/01/04(水) 15:51:58ID:LqFUITlR
class Hoge{
var $hoge;
}
と、var宣言するのとしないのとで、機能的な違いは何かありますか?
0619nobodyさん2006/01/04(水) 15:53:36ID:???
Hoge->hogeで参照できん
0620nobodyさん2006/01/04(水) 15:54:58ID:???
俺もよく$_SERVER['PHP_SELF']つかうけど、
チェックボックスと、プルダウン選択だけなら問題ないよね?
セキュリティ考慮は全然してなかったからそろそろ考えないといかんな・・・
0621nobodyさん2006/01/04(水) 15:59:06ID:???
>>620
htmlspecialcharsを噛ませろ。

http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
http://takagi-hiromitsu.jp/diary/20051227.html#p01
0622nobodyさん2006/01/04(水) 15:59:10ID:???
トラックバック送るのまんどくせ
0623nobodyさん2006/01/04(水) 16:15:05ID:???
>>621
これはいい参考サイトを・・THX!
0624nobodyさん2006/01/04(水) 16:18:46ID:???
http://pear.php.net/package/Services_Trackback/
0625nobodyさん2006/01/04(水) 16:20:39ID:???
キーワードから関連するトラックバックURLやらpingurlやらを
自動で収集するプログラムないかな?
0626nobodyさん2006/01/04(水) 16:42:21ID:???
>>625
自分で探すか作るかしろよ。
06276182006/01/04(水) 16:42:38ID:LqFUITlR
>>619
宣言しなくても、値を入れれば参照できますよね?
0628nobodyさん2006/01/04(水) 16:58:59ID:???
>>627
public、protected、privateとか設定汁
ooするならあったほうがよし。
0629nobodyさん2006/01/04(水) 17:04:28ID:???
pearとpeclってどういう関係なんでしょう?
久しぶりにWindowsにPHP 5.1.1をインストールしてgo-pear.batで
PEARをインストールしたのですが、pear.batは拡張子の後ろに
[_old]が付いていました。[_old]をとるとUNIX上と同じくpearコマンドが
使えますが、もう一つあるpecl.batを使うべきなんでしょうか?

pecl list-all と pear list-all した結果では表示される内容も異なるのですが
このままpearコマンドを使用しても良いのでしょうか???
0630nobodyさん2006/01/04(水) 17:06:38ID:???
>>629
PEARはPHPで書かれた拡張
PECLはバイナリ形式の拡張
0631nobodyさん2006/01/04(水) 17:09:39ID:???
peclってどう読んでる?
pearはペアで間違いないと思うのだけど
06326292006/01/04(水) 17:16:41ID:???
>>630
速レスありがとうございます。
ではpearは推奨されないということではないのですね。
安心しました。

>>631
"pick・le"と読んでます。
ピクルス(漬物)だったかと。
0633nobodyさん2006/01/04(水) 17:20:14ID:???
>>625
マルチうざ
0634nobodyさん2006/01/04(水) 17:22:10ID:???
ttp://pear.php.net/manual/en/introduction.php
PEAR 〜 is pronounced just like the fruit
PECL (pronounced "pickle") used to be a sub-repository of PEAR for C extensions
0635nobodyさん2006/01/04(水) 20:14:13ID:???
>>632
中身違うがな。推奨されないとかだれもいっとらんがな。
0636nobodyさん2006/01/05(木) 00:06:39ID:???
phpとmysql使うつもりですが扱う言語を気にする必要はないですよね?
てかphpはutf8扱えるんですよね?
0637nobodyさん2006/01/05(木) 00:50:34ID:???
>>636
>扱う言語を気にする必要はないですよね?
ある

>てかphpはutf8扱えるんですよね?
別にphpに限らずperlでもrubyでも扱える。
0638nobodyさん2006/01/05(木) 01:41:35ID:???
PHPとMySQLでそれぞれUTF-8使ってれば
言語(日本語でもロシア語でもアラビア語でも)は
気にする必要ないですよね、って質問じゃなかったのか
0639nobodyさん2006/01/05(木) 02:16:10ID:???
>>638
仮にそうだとして>>636の文面だけで「おっけー」とは言えないなぁ
0640nobodyさん2006/01/05(木) 03:12:55ID:???
だね。
0641nobodyさん2006/01/05(木) 10:53:48ID:JFblkuhc
PHP4.3環境
日本語を含むヘッダーでメール送信をしたいのですが、
MACOSX10.4の付属メーラーで受信したとき送信者の日本語部分が文字化けしてしまいます。
本文、件名は文字化けしません。
WINでは問題ありませんでした。
まだ勉強中で、参考書の通りに書いているようなレベルですので
根本的に解っていないのかも知れませんが、

$header = "From: ROBO-ONE事務局 <info@robo-one.com>"として

メッセージや件名はmb_convert_encodingでエンコードしていたので
同じように
$header = mb_convert_encoding($header,"EUC-JP","auto")
と書いても文字化けしてしまい

$header = mb_encode_mimeheader($header,"ISO-2022-JP")
では送信すらされませんでした。

OSX10.4環境でも問題なく表示するにはどのようにしたらよいのでしょうか。
0642nobodyさん2006/01/05(木) 11:40:43ID:GYuqexB9
MySQLのtextフィールドに5%とinsertできるけど、
それをphpで表示しようとすると printfでエラーとなってしまう。
%が問題だとおもうのだけど、いい方法ない?
0643nobodyさん2006/01/05(木) 11:46:11ID:???
>>642
%を%%に変換
06446422006/01/05(木) 12:34:14ID:GYuqexB9
>>643
助かった〜、ありがと
0645nobodyさん2006/01/05(木) 13:01:14ID:???
>>644
マニュアル読もうな
http://php.s3.to/man/function.sprintf.html
0646nobodyさん2006/01/05(木) 17:07:24ID:Bm50yWip
perlのgrep関数を使いたいときって、
phpではどうやってますか?
foreachで回してifで判定して新配列にpushしかないんですかね。
0647nobodyさん2006/01/05(木) 17:30:32ID:???
>>646
preg_grep() ?
06486462006/01/05(木) 17:38:41ID:???
すいません、自己解決しました。
array_filterで何とかなりそうです。

>>647
ありがとうございます。
正規表現のときはpreg_grepなんですね。
array_grepにすればいいのに・・・。
0649nobodyさん2006/01/05(木) 18:22:30ID:???
Perl互換の正規表現をコンパイルオプションでON/OFFしたときに
ごっそり利用可否が切り替わるんだから、関数名で識別できた方が分かりやすいよ
0650nobodyさん2006/01/05(木) 18:49:49ID:???
2ちゃんのトリップはcrypt関数を使うとおもうのですが
これに何を与えると2ちゃんと同じトリップになりますか?
0651nobodyさん2006/01/05(木) 19:21:46ID:???
FOXに聞け
0652nobodyさん2006/01/05(木) 19:58:29ID:???
ググればすぐでてくるのに
0653nobodyさん2006/01/05(木) 20:16:34ID:???
function Trip($name){
if(strpos($name,"#")){
$names = explode("#", $name);
$name = $names[0];
$passwd = $names[1];
$salt = substr($passwd."H.", 1, 2);
$salt = ereg_replace("[^\.-z]", "\.", $salt);
$salt = ereg_replace(":;<=>?@[\\]^_`", "ABCDEFGabcdefg", $salt);
$trip = substr(crypt($passwd, $salt),-10);
$name = "$name</b> ◆$trip <b>";
}
return $name;
}

Trip関数。
0654nobodyさん2006/01/05(木) 20:21:26ID:???
>>651
でもプログラムを作ったのはひろゆき氏じゃなくて?
0655nobodyさん2006/01/06(金) 02:27:52ID:???
>>653
見難い。

function Trip($name = '名無しさん'){
 list($name, $passwd) = explode('#', $name, 2);
 if($passwd) {
  $salt = substr($passwd."H.", 1, 2);
  $salt = ereg_replace("[^\.-z]", "\.", $salt);
  $salt = ereg_replace(":;<=>?@[\\]^_`", "ABCDEFGabcdefg", $salt);
  $trip = substr(crypt($passwd, $salt),-10);
  $name = $name.'</b> ◆'.$trip.' <b>';
 }
 return $name;
}
0656nobodyさん2006/01/06(金) 03:22:58ID:???
PEARのHTML_QuickForm QuickForm.phpのコードなのだが、エラーを吐く
この中の$thisってどういうこと?

function accept(&$renderer)
{
$renderer->startForm($this);
foreach (array_keys($this->_elements) as $key) {
$element =& $this->_elements[$key];
$elementName = $element->getName();
$required = ($this->isElementRequired($elementName) && !$element->isFrozen());
$error = $this->getElementError($elementName);
$element->accept($renderer, $required, $error);
}
$renderer->finishForm($this);
} // end func accept
0657nobodyさん2006/01/06(金) 05:26:31ID:???
>>656
自己解決しますた
ただ$rendererの中身がないからエラーとなっていただけでした
すまそ
0658nobodyさん2006/01/06(金) 09:24:43ID:???
>>624
pear install Services_Trackback
とかしてもDLできないんだけどなんで?
というかlist-allしてもサービス関連のやつ出てこないし。
自動で探してきてくれるもんじゃなかったんだっけ。
0659nobodyさん2006/01/06(金) 09:41:07ID:???
>>658
α版だからじゃないか?

pear install Services_Trackback-alpha

としてみたらどうなる?
0660nobodyさん2006/01/06(金) 13:58:57ID:???
POSTするものを複数変数にいれているんですが、
$a=$_POST['a'];$b=$_POST['b'];...
掲示板のスクリプトを見ると、このような書き方はしていないようです。
しかしどのように書いたらいいかわからないんですけど、
スマートに書く方法ありませんでしょうか?
0661nobodyさん2006/01/06(金) 13:59:14ID:???
ユーザ関数の返値で$test[color]と$test[size]と$test[depth]の3つを返したい場合はどうすればいいですか?
0662nobodyさん2006/01/06(金) 14:22:02ID:???
2006-01-06T13:13:00+09:00
という形式を
Y-m-d H:i:s
という形式に変換するにはどうすればいいでしょうか…?
0663nobodyさん2006/01/06(金) 14:25:54ID:???
>>660

register_globals = on というオチか?

>>661

return $test; // $test:Array

0664nobodyさん2006/01/06(金) 14:37:29ID:???
>>663
660はextractでいいんじゃねーの?
0665nobodyさん2006/01/06(金) 15:35:10ID:???
>>660
そのままでええやん
0666nobodyさん2006/01/06(金) 15:40:43ID:???
>>661
function a() {
  return array("color"=>$color,"size"=>$size,"depth"=>$depth);
}

$test = a();
0667nobodyさん2006/01/06(金) 15:43:02ID:???
スマートに書かなくても動けばいいと思う。
0668nobodyさん2006/01/06(金) 15:51:01ID:???
>>667
保守性は重要
0669nobodyさん2006/01/06(金) 15:56:22ID:???
>>667
君は明日交通事故に遭う
0670nobodyさん2006/01/06(金) 16:20:20ID:???
富豪的プログラミング
0671nobodyさん2006/01/06(金) 16:25:38ID:???
>>667
スパゲッティが大好きで毎日食べてると見た。
0672nobodyさん2006/01/06(金) 16:30:20ID:???
セッションで質問ですが
$name = "aaa bbb";
$_SESSION['name'] = $name;
$name = $_SESSION['name'];
こんな感じで登録してから中身を取り出すと$nameがaaaになってしまいます。
これはスペース切られてるとおもうんですが、スペースごと登録する方法を教えてください
0673nobodyさん2006/01/06(金) 16:40:23ID:???
>>672
無理
0674nobodyさん2006/01/06(金) 16:45:45ID:???
あ、無理なんですか・・・
ちなみに、色々HPをみていると
$_SESSION['name'] = $name;
↑みたいにシングルクォーテーションを使ってたり
$_SESSION["name"] = $name;
ダブルクォーテーションを使ってたりするのですが
これの違いってなんでしょうか?
0675nobodyさん2006/01/06(金) 16:49:04ID:???
PHP初心者で本を片手に、ダウンロードしてきた
プログラムをテストしたりしているのですが、
(初心者的に)理解できない振る舞いがあったので
誰か教えていただけないかと…

サーバ:ロリポップのレンタルサーバ
PHPのバージョン:4.3.11
スクリプトのエンコーディング:SJIS

という環境なんですが、

var $str1 = "テスト";

$str2 はフォームからテストと入力すると

ereg($str1, $str2) ⇒ 偽

になるので、はまっていました。
色々ためしたら、下の2つの書き方では真になるのが
判明したのですが、その理由がよくわかりません。

mb_ereg($str1, $str2) ⇒ 真
ereg($this->str1, $str2) ⇒ 真


mb_eregで正しく動くようになったのは
日本語の処理絡みなんだと思うのですが、
$this->str1にしたら、eregのままでも
だいじょうぶになったのは、なぜなんでしょうか…。
0676nobodyさん2006/01/06(金) 16:52:55ID:???
>>674
単なる文字列の表現の違い。つかシングルとダブルの違いわかってるよな?
0677nobodyさん2006/01/06(金) 16:53:00ID:???
>>641
受信したメールのFrom:部分のソース貼ってみれば?
これだけの情報じゃ、原因が特定できない。
他で起こらないからMail.appのせいっぽいけど。
0678nobodyさん2006/01/06(金) 16:54:46ID:???
>>672
URLEncodeとか
0679nobodyさん2006/01/06(金) 17:01:40ID:???
>>676
PHPでの違いは知らね、Cなら文字と文字列だがな。
0680nobodyさん2006/01/06(金) 17:18:44ID:???
URLをフォームに入力してfopenなどで開いてfgetsなどで配列に一行ずつ格納した場合、<a href="http://〜/">のhttp://〜/を変数に格納するにはどうすればいいんでしょうか。
0681nobodyさん2006/01/06(金) 17:41:04ID:???
正規表現で取り出すのがいいと思うけど、
<a href="http://〜/">って形に絶対なっている(ダブルクォートされている)なら、

$array = explode("\"", $query);
$result = $array[1];

みたいな感じでいいかなぁ。
#変数名は適当、$queryは<a href="http://〜/">が入ってるもの。
0682nobodyさん2006/01/06(金) 17:47:09ID:???
>>679
なんでそんなに偉そうなんだろう
06836812006/01/06(金) 17:48:18ID:???
あー意味取り違えました。

この場合、explodeは使えないですね。
正規表現がいいとはおもいますが、そのURLによってはアンカータグの書式が違うので、
結構難しいかもです。

<a href="URL">TEXT</a>
<a href=URL>TEXT</a>
<a href="URL" MOREATTR="MOREVALUE">TEXT</a>
などなど。
0684nobodyさん2006/01/06(金) 18:03:54ID:???
>>682
その前の奴が偉そうに言ってるからじゃね?
0685nobodyさん2006/01/06(金) 18:07:00ID:???
>>680
>URLをフォームに入力してfopenなどで開いてfgetsなどで配列に一行ずつ格納した場合
の流れの繋がりが端折り過ぎで良く判らんが。

><a href="http://〜/">のhttp://〜/を変数に格納するには
正規表現関数を使うのが一般的だと思う。
preg_match('/<a href="([^"]*)/i',$line,$ary); var_dump($ary);
とかでどう?

>>683
><a href=URL>TEXT</a>
これって、ありなの?
0686nobodyさん2006/01/06(金) 18:24:52ID:???
>>685
683じゃないけれど、"を省略して書いている記述はママある。
もちろんHTML的には正しくないけど、
たいていのブラウザはちゃんと認識する。
0687軟式PHP2006/01/06(金) 18:30:24ID:???
DreamWeaverとかで作ると""で括らないタグを生成するときがあるからイラつくよな。
0688nobodyさん2006/01/06(金) 18:32:50ID:???
>>685
HTML4(てかSGMLかな)の仕様では、特定の文字のみで構成される場合は省略可能な場合もある。
URLに使える文字より範囲が狭いので、" か ' を付けておく方が無難。
0689nobodyさん2006/01/06(金) 18:54:36ID:Zg0ssy+R
$a = array(0, 1, 2);
$b = array(0=>0, 1=>1, 2=>2);

$aと$bを見分ける方法はありますか?
0690nobodyさん2006/01/06(金) 18:58:55ID:???
>>689
変数名
0691nobodyさん2006/01/06(金) 19:02:27ID:???
変数名以外で
0692nobodyさん2006/01/06(金) 19:06:21ID:???
>>691
何がしたいのかよくわからんが、中身的には一緒だから
見分けも何もないよ。
0693nobodyさん2006/01/06(金) 19:13:06ID:???
見分ける必要があるのなら、最初から見分けが付くように作りましょう。
0694nobodyさん2006/01/06(金) 19:42:04ID:???
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING inはどうやったら解決できる?
0695nobodyさん2006/01/06(金) 19:45:13ID:???
syntax error は全体を見ないとな
まーがんばれ
どこかが間違っている
0696nobodyさん2006/01/06(金) 19:45:35ID:???
>>694
しょぼいエラーだしてる癖に態度がでかいな。
単なるコーディングミスだ。よくみれ
0697nobodyさん2006/01/06(金) 19:50:57ID:???
単純なミスほど探すのに苦労するってことない?
0698nobodyさん2006/01/06(金) 19:51:56ID:???
そうやって苦労を重ねた分だけ人は強くなる
0699nobodyさん2006/01/06(金) 20:01:58ID:???
>>694
PHPの構文を理解するエディタ(PHP用のエディタ・開発環境スレもあった希ガス)を使うと、
パースエラーはほとんど防げるかと。

そういうものを利用できない場合は、
・じっくりソースを見る
・show_source()等を使って色がおかしい所を探す。
・エラーが出るあたりを適当に削除しながら、エラーになる/ならないポイントを探す。
0700nobodyさん2006/01/06(金) 20:38:37ID:???
たまにfunction名のつけかたで文句言われるけど、IDEは便利だね。
0701nobodyさん2006/01/06(金) 20:59:16ID:???
>>685
配列を一行一行読み込んで↓
if(preg_match('/<a href="([^"]*)/i',$line[1],$link))
やってるんですが参照した$line[1]に$linkを挿入して表示したいのですがどうしてもArrayになってしまいます。
0702nobodyさん2006/01/06(金) 23:15:36ID:oWzCmWic
$list=file("./ldat.log");
$listr=file("./sdat.log");

foreach($listr as $listrs){
list($s0,$s1,$s2,$s3,$s4)=explode("<>",$listrs);
foreach($list as $lines){
list($p0,$p1,$p2,$p3,$p4,$p5,$p6,$p7)=explode("<>",$lines);
if($s0==$p0){処理が入ります}
}
}
のような2つのファイルのp0とs0が同じ値の場合のみ処理を実行するようにしたいのですが
このままだと何も表示されないです。解決の手段をどなた様かお願い致します。
0703nobodyさん2006/01/06(金) 23:38:47ID:???
>>702
echoするなりdump取るなりして中身を確認してみては?
0704nobodyさん2006/01/06(金) 23:42:04ID:wWI7IcSM
外部JavaScriptをHTMLファイルに読み込む感覚で、HTMLファイルとは別に作成したPHPファイルを複数のHTMLファイルに読み込んで実行することはできますか?
0705nobodyさん2006/01/07(土) 00:51:43ID:???
>>704
require()
0706nobodyさん2006/01/07(土) 00:52:14ID:???
>>704
PHPファイルに外部のPHPファイルを読み込ませて実行させることはできる。
HTMLファイルに外部のPHPファイルを読み込ませても、(通常は)サーバ側で処理してくれないので実行させることはできない。
やりたいことは当然前者だと思うので、詳しくはマニュアルでincludeなりrequireなりを調べるがよろし。
0707nobodyさん2006/01/07(土) 00:55:47ID:???
>>702
$listrの行の数だけ$listの行を毎回explodeし直しとは糞重そうな書き方だな。
まー、それと動かないのは全然別問題だからいいけどさ。

ifの直前で$s0と$p0をvar_dumpでもしてみりゃ原因は分かるでしょ。
0708nobodyさん2006/01/07(土) 02:08:32ID:???
PHP+MySQLでPHPのソースはUTF8でプログラミングしています。

MySQLのデータの中身もUTF8にするべきと思うのですが、ブラウザから来るデータは
全てUTF8に一回変換してからデータベースに入れなくてはいけない

という認識であっていますでしょうか?

MySQLは、4.0系です。
0709nobodyさん2006/01/07(土) 02:18:37ID:???
別にデータの中身をUTF-8にした方がいい理由なんて全然ないと思うけど。
ちなみに表示されるHTMLもUTF-8なの?だったら変換は無くてもいいんじゃない?
たまに変なブラウザもあるから変換した方がいいけど。
0710nobodyさん2006/01/07(土) 02:24:03ID:???
>>708
>ブラウザから来るデータは全てUTF8に一回変換してから
>データベースに入れなくてはいけない
いや、別に飛んできたままでも良いよ。
それがMySQLでサポートされてるエンコードならば。
仮にサポートされてなくてもbinaryとして扱っても良い
"文字"として扱えないデメリットがあるけど。

でも、現状でもスクリプトの中で扱いやすいように
ブラウザから来るデータをUTF-8に手動なり自動で
変換してるんじゃないの?ならばそのままUTF-8で
データべースに突っ込んだ方が良いよね。

0711nobodyさん2006/01/07(土) 02:27:01ID:???
>>709
そうですね。
変換しなくて良さそうなのでUTF8がいいのかなという位に考えてました。

> ちなみに表示されるHTMLもUTF-8なの?だったら変換は無くてもいいんじゃない?
> たまに変なブラウザもあるから変換した方がいいけど。

これは出力という意味でしょうか?出力は、UTF8と携帯用にSJISを想定しています。
入力は、色んな文字コードで送ってくると思われるので、どちらにしても統一の
文字コードに変換する必要があるような気がするのですが、自信がありません。

perlの掲示板ではそんな作業をしたと思いますが、
PHP+MySQLではどうかが良くわからないのです…
■ このスレッドは過去ログ倉庫に格納されています