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

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

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

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

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

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0793nobodyさん2009/03/03(火) 22:50:46ID:???
>>730
やや変態ちっくかも知れないけど

$a[ $_REQUEST['s'] ] = 'checked="checked"' ;

<input type="radio" name="s" value="0" <?php echo $a[0] ?> />ページ1
<input type="radio" name="s" value="1" <?php echo $a[1] ?> />ページ2
<input type="radio" name="s" value="2" <?php echo $a[2] ?> />ページ3

なんてしてみたり。
0794nobodyさん2009/03/03(火) 22:51:52ID:???
'checked="checked
なんじゃこりゃ
0795nobodyさん2009/03/03(火) 22:54:57ID:???
>>794
xhtmlを一から勉強してこい
0796nobodyさん2009/03/03(火) 22:56:53ID:???
なんでそんな無駄な記述なのwww
0797nobodyさん2009/03/03(火) 23:01:08ID:???
>>794
うん?
xHTMLで書いてあったから従ったんだけどなんかヘン?
↓
< input .... />
0798nobodyさん2009/03/03(火) 23:03:27ID:???
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
796 名前:nobodyさん[sage] 投稿日:2009/03/03(火) 22:56:53 ID:???
なんでそんな無駄な記述なのwww
0799nobodyさん2009/03/03(火) 23:03:56ID:???
>>796
馬鹿丸出しワロタw
0800nobodyさん2009/03/03(火) 23:10:56ID:???
じゃなぜchecked="1"でも"on"でも"yes"でも"true"でもなくてchecked="checked"なのか説明してみろよ
0801nobodyさん2009/03/03(火) 23:18:39ID:???
「何故」なのかの説明は無理だな。
どういう経緯でそうなったのかは資料を漁れば可能だろうが。
0802nobodyさん2009/03/03(火) 23:20:43ID:???
>>786
それ$tax取れるんか?

class keisan
{
  var $tax=1.05;
  function shouhizei($okane) {
    return $okane * $this->tax;
  }
}
にするべき
0803nobodyさん2009/03/03(火) 23:22:15ID:???
>>800
なにか勘違いしてる気がするなぁ。。

例えば,optionタグなら
<option selected="selected">
だよ。

0804nobodyさん2009/03/03(火) 23:26:33ID:???
あ、そうか。
何故かって言われたら、XMLの決まりだからとしか答えられないかなぁ。。

http://www.w3.org/TR/xhtml1/#h-4.5
0805nobodyさん2009/03/03(火) 23:29:28ID:???
>>800
HTML なら checked だけでいいんだけど、XHTML はそういう仕様になってるだけのこと

「なんじゃこりゃ」って単に知らなかっただけでしょ
そんで記述に無駄があると後付けしてくるなんてかっこ悪いよ^^;;;;
0806nobodyさん2009/03/03(火) 23:30:40ID:???
>786
動かすだけなら、3行目を>787、5行目はreturn $okane * $this->tax;

勉強中のようなので少しだけ高めのボールで返す。俺ならこういうクラスにする。
class Item{
 private $tax_rate = 1.05;
 private $price;
 private $name;
 function __construct($name, $price){
  $this->name = $name;
  $this->price = $price;
 }
 function taxedPrice(){
  return $this->price * $this->tax_rate;
 }
}
$i_phone = new Item('IPhone', 30000);
$x_box = new Item('XBOX', 40000);
echo $i_phone->taxedPrice(); // 31500
echo $x_box->taxedPrice(); // 42000
0807nobodyさん2009/03/03(火) 23:31:51ID:???
checked="on"じゃダメなの?
08087862009/03/03(火) 23:42:14ID:???
たくさん回答いただき助かりました
どれも勉強になります
ありがとうございます
0809nobodyさん2009/03/03(火) 23:42:41ID:???
そろそろ通報されそうだなww
0810nobodyさん2009/03/03(火) 23:48:56ID:???
いまクラスについてわかりやすく教えてるサイトがあんまりないから
今ならアフィリエイトつけても許すから誰か講座サイトやってください
0811nobodyさん2009/03/04(水) 00:52:53ID:TJHoC0pm
リダイレクトのヘッダー吐いて別のサイト(URLも当然別)に飛ばしたいのですが
自分のサーバーからだと別のページに飛んでくれます。
しかし外部のPCからそのページにアクセスすると、別のサイトには飛ばずにうちのサーバーのルートに飛びます。
何でですか?
0812nobodyさん2009/03/04(水) 01:01:52ID:???
>>811
絶対URLで指定してみ
0813nobodyさん2009/03/04(水) 03:50:16ID:pWv0VEvt
phpで画面を初期化するにはどうしたらいいですか?
0814nobodyさん2009/03/04(水) 03:51:03ID:???
初期化って?
08158132009/03/04(水) 03:54:02ID:pWv0VEvt
>>814
画面をクリア、真っ白にしたいのです。
0816nobodyさん2009/03/04(水) 04:16:39ID:???
BASICと間違えているのでは?
0817nobodyさん2009/03/04(水) 04:18:34ID:???
displays_error = offにしてfatal errorを出す
08188132009/03/04(水) 04:24:16ID:pWv0VEvt
エラーを消したいのではなく、printやechoで画面に表示させたものを消したいのです。
0819nobodyさん2009/03/04(水) 04:28:27ID:???
ob_*系の出力バッファリングを使う
0820nobodyさん2009/03/04(水) 04:29:25ID:???
送った後なら、JSで処理だろうな
08218132009/03/04(水) 04:39:39ID:pWv0VEvt
>>819-820
具体的にどうすればいいのか教えて下さい。
0822nobodyさん2009/03/04(水) 05:11:41ID:???
断る
0823nobodyさん2009/03/04(水) 05:57:21ID:???
>>821
具体的にどうしたいのか分からんから答えようがない
0824nobodyさん2009/03/04(水) 06:42:13ID:???
<?php
/*
$hoge = "hoge";
・・・
・・・
・・・
*/
?>
0825nobodyさん2009/03/04(水) 07:42:58ID:???
【豆知識】

<?php

$a=get_defined_constants();

foreach($a as $a=>$b){

print "[$a] => [$b]";
print "<br>";

}
?>

を実行すると大変なことになる
0826nobodyさん2009/03/04(水) 11:21:01ID:fYg53wem
出力はSJIS、DBはUTF8で運用しています
SJIS-winをUTF8に変換した時に
W932+とかBAD+とかJIS+とかで始まる文字列になる場合がありますが、
そういう時どう処理していますか?
0827nobodyさん2009/03/04(水) 11:30:23ID:???
UTF−8は使わないようにしてる
0828nobodyさん2009/03/04(水) 13:02:05ID:???
SJISを使うな
0829nobodyさん2009/03/04(水) 13:14:42ID:???
SJIS(笑)
0830nobodyさん2009/03/04(水) 13:17:13ID:???
PC版しか開発しないやつらはラクでいいな
0831nobodyさん2009/03/04(水) 13:30:50ID:???
携帯(笑)
0832nobodyさん2009/03/04(水) 13:38:25ID:???
というか、今時携帯でも見れないサイト開発するとか終わってるな
0833nobodyさん2009/03/04(水) 13:44:27ID:???
くだらない煽り合いはどうでもいいです
経験者のみ回答して下さい
0834nobodyさん2009/03/04(水) 13:54:05ID:???
encoding_translation
0835nobodyさん2009/03/04(水) 16:21:34ID:???
encodeing_mobile
0836nobodyさん2009/03/04(水) 16:33:55ID:???
間違えて書き込んだの消すのってどうやってやるか教えてください
0837nobodyさん2009/03/04(水) 16:38:37ID:???
┌──-┐
|Back |
|space|
└──-┘
0838nobodyさん2009/03/04(水) 19:20:19ID:F5lJueso
php5.2.8使ってます
phpはc:\php5にインストールしてます
このディレクトリの中にphp.exeがあります

コンソールでphpを使って「こんにちは」と表示させたいのですがパースエラーになってしまいます

c:\php5>php.exe -r echo "こんにちは";

どのように書き直したらよろしいでしょうか?
0839nobodyさん2009/03/04(水) 19:26:35ID:???
c:\php5>php.exe -r "echo \"こんにちは\";"
08408382009/03/04(水) 19:35:43ID:???
できました、ありがとうございます
コード自体を囲まないといけないのですね勉強になりました
0841nobodyさん2009/03/04(水) 19:48:31ID:???
>>826
UnicodeのPrivate Use Areaと相互変換したり
mbstring.substitute_character = none にしてばっさり切り落としてしまうなり
要求次第
0842nobodyさん2009/03/04(水) 20:55:52ID:P0bBQCst
phpとajaxの組み合わせのとき、データファイルはJSONが一番簡単ですか?
0843nobodyさん2009/03/04(水) 21:15:34ID:???
まあ、JSONでいいんじゃないか?バランス取れてるし。

送出するデータによるし、どっちが得意かにもよる。
例えばJavaScriptの比重を極限まで減らしたいなら、PHPでHTMLまで生成して送りつけたほうが当然JSでやる事が減る。

それと、変更が入った場合の修正の手間だな。
JSONだと、データが追加になったらJSとPHP両方修正が必要になる。
PHPでHTMLを書き出すと、画面表示の変更の際にPHPに手を入れないといけなくなる。
0844nobodyさん2009/03/05(木) 09:51:15ID:HLFGjq1S
ifから抜ける方法についての質問です。
ifの中で、デバッグ時、意図的に以降のコードを残したいとき等にifから抜けさせる方法はどうしたらいいでしょうか?
具体的には(実際にはbreakが通りませんが)下記のようなコードを書きたいです。
コメントアウトだとながーいif文の時に困りそうなので他の手段を考えています。


if(true){
echo "if no naka fuck ass\n";
break;
echo "mada naka my godness\n";
}
echo "detayo holy shit\n";
0845nobodyさん2009/03/05(木) 10:04:29ID:???
ネタ乙ww
後藤に聞け
0846nobodyさん2009/03/05(木) 10:06:31ID:???
>>844
これでいいやん・・・

echo "if no naka fuck ass\n";
if(false){
echo "mada naka my godness\n";
}
echo "detayo holy shit\n";
08478442009/03/05(木) 10:17:06ID:HLFGjq1S
>>846
すみません、コメントアウトだとって書きましたが、ifで囲うのも同様に辛いです><
処理させないのではなくて抜けさせるコードが無いかなぁ、と思ったんです。
0848nobodyさん2009/03/05(木) 10:17:43ID:???
>>844
汚いコードだな
0849nobodyさん2009/03/05(木) 10:29:40ID:???
条件制御をコメント代わりにすんなや
0850nobodyさん2009/03/05(木) 10:39:14ID:???
え?もしかしてただコメントアウトしたいだけとか・・・?

/*
* コメントアウト
*/

// コメントアウト

# コメントアウト

これでいいの?それとも別の何か?


0851nobodyさん2009/03/05(木) 10:44:30ID:???
<?php

for ($i=1;$i<10;$i++){
print microtime();
print "<br>";

}
?>


このコードを実行すると、

0.97075300 1236217379
0.97083700 1236217379
0.97084800 1236217379
0.97085700 1236217379
0.97086500 1236217379
0.97087300 1236217379
0.97088200 1236217379
0.97089000 1236217379
0.97089800 1236217379

ってなるんだけど、結局、1個のループ処理をするのに、
何マイクロ秒かかってるの?
0852nobodyさん2009/03/05(木) 10:50:37ID:u8y4hmKR
>>851
リファレンス読んだら分かるけど
0.97089800 1236217379
 ↑秒      ↑現在のPCの時間

半角スペースの前後で意味が違う
0853nobodyさん2009/03/05(木) 10:58:03ID:???
質問とは関係はないけど
マイクロ秒とミリ秒って世間的に同じ意味なの?
10^-6と10^-3だと思っていたが
原語マニュアル見たりぐぐったりしてみるとどうも混同して扱われてる気がする
0854nobodyさん2009/03/05(木) 11:02:47ID:???
>>853
マニュアルのどこで混同してるの?
0855nobodyさん2009/03/05(木) 11:12:14ID:???
<?php

$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
$d=sprintf("%.f", $c);
print $d;



?>

これを実行すると、
0.000084
ってなるんだけど、
0.000084秒
かかった、って理解でいいの?
0856nobodyさん2009/03/05(木) 11:13:48ID:???
>>855
>>1
0857nobodyさん2009/03/05(木) 11:48:05ID:QryPG+0b
PHPでアクセスログを取得したいと思っています。
以下の質問者のような状況なのですが
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1223035602

それに対する回答では「じゃ、どうすればいいのか」
と言う答えが書かれて無くて、自分でも解決策がわかりません。

どうすれば上記URLの方法で、リンク元を取得できるのでしょうか?
0858nobodyさん2009/03/05(木) 11:49:32ID:???
>>857
どうすればの前にお前はどうしたんだ?
0859nobodyさん2009/03/05(木) 11:50:35ID:???
aaa.jpで取得したリファラをaccesslog.phpのGETにでもつけてやったら?
0860nobodyさん2009/03/05(木) 11:51:59ID:???
ああすまんaaa.jpのほうは静的htmlなのか
どっかの既存スクリプトのソースでも見てみればいいんでないかね
08618572009/03/05(木) 11:55:26ID:???
>>860
WEBサービスなどの既存スクリプトを見ると
<script type="text/javascript" src="アクセス解析のURL">

となっているだけ、それでどうやって取得しているのか予測できないんです。。

0862nobodyさん2009/03/05(木) 11:59:23ID:???
いやだからその中身です
0863nobodyさん2009/03/05(木) 12:13:20ID:???
>>861
"アクセス解析のURL"をアドレスバーにぶっこめばソース見れるでしょ
0864nobodyさん2009/03/05(木) 12:36:30ID:???
解析対象のページに直接貼り付ければおk
08658572009/03/05(木) 12:37:02ID:???
見れました。Javascriptのソースが出ます。
処理を予測すると、

Javascriptでアクセス情報を取得→PHPで受け取って→DBなどに保存

だと思います。
Javascriptでアクセス情報を取得する方法はわかりますが、
PHPに渡す方法がわかりません。AJAXで通信するというのは聞いたことありますが。。

かなり規模が大きくなりそうなので、別の方法を考えます。
0866nobodyさん2009/03/05(木) 12:40:39ID:???
なんでソース見れてるのに渡す方法がわからないの?jsが膨大なのか?
0867nobodyさん2009/03/05(木) 12:44:57ID:Ai8YQiii
http://www.example.com/index.php/test/100

上記でアクセスし$_SERVER['PATH_INFO']を使って以下のようにします

$path1 // testを代入
$path2 //100を代入

1.この値をhtmlに出力するときにhtmlspecialcharsをするべきでしょうか?
2.この値を<a href="get.html?mode=<?php echo $path1;?>"?>のようにソースに書くときもhtmlspecialcharsは必要でしょうか?
3.この値を利用して$file=file($path1.".log") or die("エラー");とするとき、$path1をhtmlspecialcharsをするべきでしょうか?
0868nobodyさん2009/03/05(木) 12:49:09ID:???
>>867
XSSでぐぐれ
0869nobodyさん2009/03/05(木) 13:13:08ID:7kExiJxs
kokugo.logをfile関数で開くとき、以下のようにしました
$file=file("kokugo.log");

もしファイルが存在しなかった場合ワーニングになるのですが
file関数で開く前にkokugo.logが存在して読み込み可能かチェックしたほうがいいのでしょうか?
0870nobodyさん2009/03/05(木) 13:16:09ID:???
>>867
上2つは XSSになりえる。
html..でおk

残り1つは DirectoryTraserval になりえる。
これは html.. じゃ防げない。
パスに関する文字を消す処理を挟むべき。
08718702009/03/05(木) 13:18:10ID:???
すまん、スペルに自信がない。

日本語だと ディレクトリ遡り攻撃ね。
0872nobodyさん2009/03/05(木) 13:39:41ID:2sUk8Kdm
3のほうを検証してみたのですが
http://www.example.com/index.php/../test/100とすると
ページがNot Foundになります


以下のようにしてみたのですがこれは対策になってますでしょうか?
$path = split("/",$_SERVER['PATH_INFO']);
print_r($path);
08738672009/03/05(木) 13:40:24ID:2sUk8Kdm
すいません電話回線なので再接続でID変わってしまいました
すみません
0874nobodyさん2009/03/05(木) 13:49:36ID:???
最近になって思い始めた
ヒアドキュメントはSQLを書くためにあるものじゃないのかと
0875nobodyさん2009/03/05(木) 14:16:58ID:???
PEAR::MDB2のexecuteで
Call to a member function execute() on a non-object
とエラーが出ます。

クエリミスや引数ミスでこのエラーが出るのですが、
実行前にデバッグしたいのですが、クエリを参照する方法がわかりません。

$sth->execute($data);の段階でエラーが出るのですが、
それ以前にダンプしてもクエリが作成されてなく、確認ができません。

何か方法はないでしょうか
0876nobodyさん2009/03/05(木) 14:17:30ID:???
ごめんなさい、ID忘れました
08778752009/03/05(木) 14:18:27ID:u8y4hmKR
また忘れました><。
0878nobodyさん2009/03/05(木) 14:35:56ID:UILw4QgF
定義した関数を$kansuに代入して、呼び出したいところで定義した関数を実行したいのですが
$kansu = hello();の時点で実行されてしまいます
どのようにしたらよろしいでしょうか?

function hello() {return "こんにちは";}
$kansu = hello();
〜他の処理〜
echo $kansu;
0879nobodyさん2009/03/05(木) 14:39:01ID:???
>>878
$kansu = function {return "こんにちは";};
0880nobodyさん2009/03/05(木) 14:54:19ID:???
>>879
php5.3限定かよ
0881nobodyさん2009/03/05(木) 14:58:09ID:???
$kansu = create_function('', 'return "こんにちは";');
0882nobodyさん2009/03/05(木) 16:47:02ID:hzERq96A
if (substr($var, 0, 1) != '#') { ... }
という、先輩が書いたコードがあるんですけど、これって
if ($var[0] != '#') { ... }
と等価でしょうか。
なにか違う点がありましたら教えてください。
0883nobodyさん2009/03/05(木) 16:55:02ID:???
上は1文字目を取り出してる
下は配列の一つ目を取り出してる
意味は全く違う
0884nobodyさん2009/03/05(木) 16:57:21ID:???
$varが数値だと違いは出るけど。

$var = 123;
echo substr($var,0,1); #=> 1
echo $var[0]; #=> NULL
0885先輩2009/03/05(木) 16:57:35ID:???
>>882
おいおい仕事中になにやってんだてめえ
0886nobodyさん2009/03/05(木) 16:58:05ID:???
$varが文字列なら等価だと思いたいんだろうが、
$varが配列や、ダブルバイトなら使えん。
素人はこれだから困るという先輩の顔が目に浮かぶw
0887nobodyさん2009/03/05(木) 17:01:58ID:???
言語仕様がスカラーも配列も連想配列も見た目同じ$始まりだから違和感あるのは解かるよ
0888nobodyさん2009/03/05(木) 17:03:54ID:???
デターwwww
0889nobodyさん2009/03/05(木) 17:25:19ID:???
mb_substrでないから同じジャン
0890nobodyさん2009/03/05(木) 17:37:55ID:???
そろそろ闘技場でも行こうか
0891nobodyさん2009/03/05(木) 17:57:10ID:???
まぁ、
$var = array("#", "any");
で、>>882は終了してるけどな。
0892nobodyさん2009/03/05(木) 17:58:45ID:???
>>882
上記は文字列として比較
下記は配列として比較
■ このスレッドは過去ログ倉庫に格納されています