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

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

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

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

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0358nobodyさん2012/08/02(木) 14:09:08.14ID:???
>>343
暗号化の種類によるが、
例えば共有PCにそんな重要な情報が保存されると危険
0359nobodyさん2012/08/02(木) 14:11:42.14ID:???
>>357
よくぞおわかりで
ちょっとセッションの勉強からは離れてたんすよ
今日から再開しまっす
一応さっき完成したんすけどね
0360nobodyさん2012/08/02(木) 14:39:22.48ID:???
今セッションのテストをローカルでやってるんですが、
PHPSESSIDのクッキーの有効期限がブラウザ終了時になってるのに、
ブラウザ閉じてもクッキーが消えません
何ででしょうか?
0361nobodyさん2012/08/02(木) 14:57:22.07ID:???
別画面かどっかでブラウザ生きてない?
0362nobodyさん2012/08/02(木) 15:14:31.37ID:???
>>361
生きてません
chromeですが残ってます。
何でだろう・・
0363nobodyさん2012/08/02(木) 15:23:53.90ID:???
何度も質問してすみません。
PHPのマニュアルにセッションの正しい破棄の方法として、

<?php
// セッション変数を全て解除する
$_SESSION = array();

// セッションを切断するにはセッションクッキーも削除する。
// Note: セッション情報だけでなくセッションを破壊する。
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}

// 最終的に、セッションを破壊する
session_destroy();
?>

が載ってました。

この最初にsession_startが無いんですが必要ないんでしょうか?
またそれはなぜでしょうか?

よろしくお願いします。
0364nobodyさん2012/08/02(木) 16:03:59.77ID:???
残ってるという判断方法が間違ってるキガス
0365nobodyさん2012/08/02(木) 16:14:31.19ID:???
>>364
実際にクッキーが生きてないとアクセスできないページにアクセスできてしまってるので、
残ってることは間違いないと思います。
0366nobodyさん2012/08/02(木) 16:26:56.65ID:???
なりすましなのか本人なのか
0367nobodyさん2012/08/02(木) 16:30:36.93ID:???
あ〜よくわからなくなってきた
もうちょっと頑張って見ます
0368nobodyさん2012/08/02(木) 16:54:37.50ID:eVnSiRlb
ページの段組でのメニューやタブを別ページと使いまわすのは
やっぱ include が一般て的ですか?
include しすぎると あとから、どれがどれかわからなくなってくるんですが・・・。
0369nobodyさん2012/08/02(木) 18:12:54.45ID:???
目的別にファイル名でしっかり分かるようにしなよ
ヘッダーならheader.incとかフッターならfooter.incって名前にして
0370nobodyさん2012/08/02(木) 19:25:46.51ID:???
訳が分からなくなるぐらい include する時点で問題
フレームワーク使うか、訳が分かる程度の include で済ませるようにするかの二択
0371nobodyさん2012/08/02(木) 19:51:02.77ID:???
includeすると全体を見渡しにくくなるよ

フォルダ分けと同様
やたら細かくフォルダ分けすると、ファイルをたどるのがめんどくさくなる
0372いむ2012/08/02(木) 20:36:15.85ID:???
ゲームを作って自分のサイトやブログで公開しよう。
面白ければ人が集まります。途中経過も載せようね。

「ウ〜ディ〜タ」とは? 
・完全無料のゲーム作成ツールです。
・初心者には難しいですがwikiや講座や情報やブログも充実してるので安心。
 ツクールでは物足りないけどプログラミングは苦手という方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
 もちろん作ったゲームを販売して儲けをだしてもOK。
■作り方しだいでなんでも作れます。
■他人が作成した「コモンイベント」を利用すれば、自分では開発が難しい
 ゲームシステムも容易に実現できます。
0373nobodyさん2012/08/03(金) 07:51:56.55ID://9jIPAP
$a=null;$b="hoge";
echo ($a||$b);
これで$aがnull(false)の時にhogeが出ればいいのですがPHPだと無理なようです

三項演算子を使えば
echo (($a)?$a:$b);
と言った具合に書けますがしっくりきません
php5.3だと
echo (($a)?:$b);
と書けるようですが
php5.2で同様に無駄なく表現する方法ありますか?
0374nobodyさん2012/08/03(金) 08:26:57.95ID:???
無い
0375nobodyさん2012/08/03(金) 08:41:36.59ID://9jIPAP
ないですか
ありがとう
0376nobodyさん2012/08/03(金) 11:20:17.41ID:Hh2j4CgB
たまにPHPのコードで、
別にエラーが出たから強制終了させるわけじゃないのに、
コードの最後にexitで終了させている人がいました。

これは何か意味があるんですか?
それともただのアホなんですか?

よろしくお願いいたします。
0377nobodyさん2012/08/03(金) 11:22:29.09ID:???
ただのアホです
0378nobodyさん2012/08/03(金) 11:23:51.29ID:Hh2j4CgB
ありがとうございました
0379nobodyさん2012/08/03(金) 11:47:07.54ID:???
せんちゃん「PHPのコードで、別にエラーが出たから強制終了させるわけじゃないのに、
        コードの最後にexitで終了させている人がいたんですよー」
小野    「な〜にぃ〜!? やっちまったな!!」
0380nobodyさん2012/08/03(金) 14:15:46.55ID:Is3KIFa5
形式変換で
Before:2012-08-03 12:32:25
After :Fri Aug 03 2012 12:32:25 GMT
としたいのですが
Beforeを分解してAfterにあてはめつつ、月と日付は別途アルファベットで求める
という風にするしかないでしょうか?
0381nobodyさん2012/08/03(金) 14:17:50.36ID:???
http://php.net/manual/ja/ref.datetime.php
0382nobodyさん2012/08/03(金) 14:20:52.60ID:Hh2j4CgB
session_regenerate_idを実行したら、
有効期限ってリセットされたりしますか?
0383nobodyさん2012/08/03(金) 14:36:35.22ID:???
試せば?
0384nobodyさん2012/08/03(金) 14:39:57.64ID:Hh2j4CgB
チッ
0385nobodyさん2012/08/03(金) 14:48:37.04ID:???
死ねば?
0386nobodyさん2012/08/03(金) 15:02:55.39ID:???
お前ら試せばって回答やめろよ
そんぐらい答えてやんなよ
0387nobodyさん2012/08/03(金) 15:30:08.52ID:???
俺は誰の指図も受けない
0388nobodyさん2012/08/03(金) 16:56:28.33ID:???
PHPの構文でこんな書き方↓ってできるんですか?
return $step <= $this->getStep();
0389nobodyさん2012/08/03(金) 16:58:15.58ID:Hh2j4CgB
失せろ
0390nobodyさん2012/08/03(金) 17:00:32.82ID:???
できる
0391nobodyさん2012/08/03(金) 17:01:04.17ID:???
>>389
答えてもらえなかったからって黙ってろハゲ
0392nobodyさん2012/08/03(金) 17:01:35.44ID:Hh2j4CgB
>>391
うっせハゲ
死ね
0393nobodyさん2012/08/03(金) 17:02:44.33ID:???
<=ってどういう意味?
0394nobodyさん2012/08/03(金) 17:21:03.68ID:???
>>390
え?!マジで?!
アロー演算子みたいに名前があるの?
0395nobodyさん2012/08/03(金) 17:34:11.80ID:???
演算子<=は存在する
0396nobodyさん2012/08/03(金) 17:35:15.50ID:???
>>380
preg_matchあたりで数値取得して、
mktimeぶっこみながらDATE関数で出すとか出来るけど
>という風にするしかないでしょうか?
これ何を指して言っているのかわからない。
0397nobodyさん2012/08/03(金) 18:25:38.11ID:???
>>396
という風にするしかないでしょうか?



なにかやりかたはないでしょうか?教えてくださいという意味だと思う。
まさに>>396の1〜2行目の部分
0398nobodyさん2012/08/03(金) 19:03:30.86ID:???
sprintf("select * from test where id = '%s'",$test);

ってしてもなぜか%sに値が入ってくれません
何か間違ってますでしょうか?
0399nobodyさん2012/08/03(金) 19:25:42.89ID:???
>>397
いや、5行目でなんか言ってるから
もっと簡易な方法でも求めているのかなと。
0400nobodyさん2012/08/03(金) 19:30:14.57ID:???
>>398
printfしてみろ
0401nobodyさん2012/08/03(金) 19:45:15.22ID:???
IDなしに答えてやンのwwww
0402nobodyさん2012/08/03(金) 19:49:51.71ID:S+tv8I6e
google api を試しています。

言語コードに hl=ja を指定してsimplexml_load_file関数を実行すると
エラーが発生してしまいます。何が原因なのでしょうか?

同じURLをブラウザから指定してアクセスするとXMLは正常に取得出来ています。
※スクリプトはutf-8です。

■コード
$data = "さんま";
$req = 'http://google.co.jp/complete/search?output=toolbar&q=' . urlencode($data);
//$req = 'http://google.co.jp/complete/search?hl=ja&output=toolbar&q=' . urlencode($data); ← hl=ja を入れるとエラー
$xml = simplexml_load_file($req);


■エラーメッセージ
Warning: simplexml_load_file() [function.simplexml-load-file]:
http://google.co.jp/complete/search?output=toolbar&hl=ja&q=xxxxxxxx
:1: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0x83 0x7B 0x83 0x43 in /home/ore_user/www/ore_user.jp/ore.php on line 103
0403nobodyさん2012/08/03(金) 20:03:06.15ID:???
>>402
ShiftJISで返ってきてるんじゃない?
04044022012/08/03(金) 20:06:25.85ID:S+tv8I6e
>>403
ブラウザの方だとエラーが出ませんので
ブラウザで表示した後で

Control + S > デスクトップに保存 > ファイルをさくらエディタで開く

で確認すると、さくらの右下エリアに utf-8 と表示されていましたので
APIの戻値はutf-8なはずです。

PHPからapiを呼び出す際には、 hl=ja を入れるとエラーが発生し
入れないとエラーにならないのかな?

うーん、謎過ぎる。

0405nobodyさん2012/08/03(金) 20:14:56.02ID:???
>>404
charset=Shift_JIS
04064022012/08/03(金) 20:24:51.72ID:S+tv8I6e
>>405
XMLファイルの中の文字コード宣言箇所を確認してみましたが、

<?xml version="1.0"?><toplevel>・・・

となっており、文字コードとしてharset=Shift_JIS の指定はありませんでした。
0407nobodyさん2012/08/03(金) 21:51:30.50ID:???
>>406
cURLでレスポンスヘッダ確認したら、UAの送信をしない場合は Shift_JIS がかえってきてるぜ。
Mozilla/5 を送ってやると UTF-8 が返ってくるけど。

simplexml_load_file は UserAgentを送信してないから Shift_JIS のレスポンスヘッダを受け取ってエラーになってるんだな。
処置しようあるのかなぁ。
0408nobodyさん2012/08/03(金) 21:56:33.70ID:S+tv8I6e
>>407
ありがとうございます。。。
参りましたねぇ。

お手上げだぁ。ゲーセン行ってきます。
0409nobodyさん2012/08/03(金) 22:08:47.67ID:GC50jGVe
配列をループ処理する場合、forよりもforeachのほうが効率が良いと聞いたんですが、
$array = array("aaa", "bbb", "ccc"....); とキーが0から始まる整数値だけの
一元配列をループ処理する場合、forとforeach、どちらのほうが処理速度が
速いもんなんでしょうか?
以下のようなコードで処理速度をPHPを動かしているサーバーで何度か実行し
比較してみたのですが、forのほうが速いこともforeachが速いことも
同じくらいの割合でありました。

<?php

$num = 100000; $a = $b = array();
for ($i = 0; $i < $num; $i++) {
$a[$i] = $b[$i] = $i;
}

$size = count($a); $start = microtime(true);
for ($i = 0; $i < $size; $i++) { $c[$i] = $a[$i]; }
echo "(for) Completed in ", microtime(true) - $start, " Seconds\n";

$start = microtime(true);
foreach ($b as $k => $v) { $d[$k] = $v; }
echo "(foreach) Completed in ", microtime(true) - $start, " Seconds\n";

?>
0410nobodyさん2012/08/03(金) 22:27:13.64ID:???
>>400
ええええ!
printfでしたらちゃんと出ました。
でもsprintfじゃ%sの部分が出てくれません。。
何が原因なんでしょうか?
0411nobodyさん2012/08/03(金) 22:36:03.88ID:???
sprintfで出ないと困るんですけど、誰か原因わかりませんか?
0412nobodyさん2012/08/03(金) 22:49:05.03ID:???
ごめん。。
sprintfの件忘れて
俺様の凡ミス
0413nobodyさん2012/08/03(金) 23:29:19.28ID:???
>>412
解決したんなら原因を書けよ
こっちは検証してるんだからさ
0414nobodyさん2012/08/03(金) 23:36:46.01ID:???
ごめん
ただ単純に変数に値が入ってなかっただけ
認証系のコード書いてたから数分アクセスがないとタイムアウトして値が取れてなかったんだよ
それに気づかずsprintfのせいだと勘違いしてた
アホでしょ?
0415nobodyさん2012/08/03(金) 23:38:23.67ID:???
アホかどうかはどうでもよくて
printfで出た理由は?
0416nobodyさん2012/08/03(金) 23:38:43.33ID:???
つまりsprintfでうまくいかずprintfでうまくいったのは、ただの偶然のタイミングの問題だったって事か
自分で言ってるしアホなのは否定しないが顛末はちゃんと書こうな
0417nobodyさん2012/08/03(金) 23:41:46.57ID://9jIPAP
PHPでバックアップをしたいのですが
OSや外部ライブラリに依存しないで特定のディレクトリや複数のファイルを
まとめる(compressする)ことって出来ますか?
http://www.php.net/manual/ja/class.ziparchive.php
これが一番おしいとおもうのですがPECL zipなるものが必要みたいなので
root権がなくてもデフォルトで使えるようなものがあったら教えて下さい
バージョンは5.2以上でお願いします
0418nobodyさん2012/08/03(金) 23:42:01.99ID:???
そうそういうこと
まさかこんな真剣に検証してくれてる人がいるとは思ってませんでした。
次からは気をつけます
ありがとうございました
0419nobodyさん2012/08/03(金) 23:47:20.97ID:???
>>418
$testに何が入ってるか知らんがSQLインジェクションには気をつけろよ
0420nobodyさん2012/08/03(金) 23:50:30.67ID:???
>>419
おっと・・・
ご指摘ありがとうございます
0421nobodyさん2012/08/03(金) 23:56:50.47ID:???
>>417
無い
0422nobodyさん2012/08/03(金) 23:58:36.15ID://9jIPAP
ないですか
ありがとう

ってあれ?デジャブ・・・
0423nobodyさん2012/08/04(土) 00:47:09.43ID:???
>>422
無いものはないw
http://php.net/manual/ja/function.exec.php
これで我慢してくれ

権限さえあれば何だってできる
0424nobodyさん2012/08/04(土) 00:48:15.20ID:???
あ、root権ないのね
失礼しました・・・
0425nobodyさん2012/08/04(土) 00:50:35.07ID:???
PHPが遅い場合、このスレではオーバークロックを推奨されていますが、
VPS環境でも大丈夫でしょうか?
0426nobodyさん2012/08/04(土) 00:52:12.54ID:???
はい。権限が必要ですが
VPSでも問題ありません。
0427nobodyさん2012/08/04(土) 01:08:00.56ID:???
>>426
やはりPHPが遅い場合はオーバークロックですね。
ありがとうございます。
0428nobodyさん2012/08/04(土) 02:59:51.25ID:???
場合によってはうるう秒の導入で
地球の時間を少し遅らせることも視野に入れるべき
0429nobodyさん2012/08/04(土) 05:55:09.20ID:???
どこからどこまでがネタなの・・・
0430nobodyさん2012/08/04(土) 06:39:55.77ID:UobMSBYd
switch($hoge){
 case 1:
  echo "Hello";
  break;
 case 2:
  echo "HelloWorld";
  break;
 case 3:
  echo "World";
  break;
}
これを簡素化しようと
switch($hoge){
 case 1:
 case 2:
  echo "Hello";
 case 2:
 case 3:
  echo "World";
}
こんな風に書いてみたのですが
$hogeを3にするとWorldのみが出るのですが
$hogeを1にするとHelloWorldまで出てしまいます
どう書くのが正しいのでしょうか?
0431nobodyさん2012/08/04(土) 06:42:13.60ID:???
break;書けよ break;が何なのかマニュアル読めphp.net調べろ
0432nobodyさん2012/08/04(土) 06:47:42.19ID:???
あえて書くならこうかな
switch($hoge){
 case 1:
  echo "Hello";
  break;
 case 2:
  echo "Hello";
 case 3:
  echo "World";
  break;
}
1と2の挙動(Helloで終わるかどうか)が違うのに、1か2かを判断する機構がない うまくいくわけがない
こんなところを簡素化するより、素直に>>430の上のほうのを使った方が可読性も下がらないし良いと思うな
0433nobodyさん2012/08/04(土) 06:52:56.02ID:UobMSBYd
>>431-432
ありがとうございます

swithはif-else文に対応すると聞いたので
てっきりbreakがあればif-else文になって
breakしなければif文のみで
if( ($hoge == 1) || ($hoge == 2) ) echo "Hello";
if( ($hoge == 2) || ($hoge == 3) ) echo "World";
こんな感じに対応されるのかと思ってました

ちゃんとマニュアル読んできます
すみません
0434nobodyさん2012/08/04(土) 10:15:25.47ID:???
まぁこれも経験だよね

でも簡素化もいいけどなにより
見やすいコード書いたほうがいいと思うぞ

簡素化が見やすいコードに繋がることもあるけどgf
0435nobodyさん2012/08/04(土) 11:23:09.21ID:???
switch文内のbreakを書いたり消したり順序を変えたりして
行数を減らす作業をするのはある程度楽しいが、
あとで編集しづらかったり流れを把握しづらかったりする
0436nobodyさん2012/08/04(土) 11:32:25.83ID:???
フォールスルーはバグの元だから推奨できないけどな
0437nobodyさん2012/08/04(土) 11:40:05.40ID:???
皆PHPでヒアドキュメントでhtmlを出力するとき、
改行タグの<br>を毎回手で書いてるんですか?
0438nobodyさん2012/08/04(土) 11:40:56.96ID:???
嫌なら\nを置換すればいい
0439nobodyさん2012/08/04(土) 11:41:56.16ID:???
え?
ヒアドキュメント内の改行って文字コードの\nとして書き込まれてるんですか?
0440nobodyさん2012/08/04(土) 11:42:22.18ID:???
nl2brという下手糞な関数がありはする
http://php.net/manual/ja/function.nl2br.php
0441nobodyさん2012/08/04(土) 11:43:24.08ID:???
ヒアドキュメントの話か
ヒアドキュメントは素人向けだから使わない
0442nobodyさん2012/08/04(土) 11:44:17.89ID:???
一回ヒアドキュメント使ってHTML吐き出して、ブラウザでソース見てこいよ・・・
0443nobodyさん2012/08/04(土) 11:48:27.93ID:???
>>440
こんなクソ関数あったんですね
これでヒアドキュメント内の改行がちゃんと改行コードとして書き込まれていれば使えるってわけか
ありがとうございます。

>>441
ではプロ向けというのはどういう方法なのでしょうか?
0444nobodyさん2012/08/04(土) 12:35:34.17ID:???
PHP自体が素人御用達言語だよ。
0445nobodyさん2012/08/04(土) 12:36:13.84ID:???
悔しいからひがんでるw
0446nobodyさん2012/08/04(土) 12:37:20.05ID:???
PHPは、素人の中でも特にセキュリティ意識が低いやつ向け
04474372012/08/04(土) 13:12:41.63ID:???
黙れよ糞野郎
0448nobodyさん2012/08/04(土) 13:33:55.94ID:???
馬鹿にされてばかりで悔しいので、
将来はPHPで有人宇宙船の制御プログラムを書いてみようと思います。
0449nobodyさん2012/08/04(土) 13:35:11.03ID:???
>>448
それをやるための障害は、
有人宇宙船を用意するところだなw
0450nobodyさん2012/08/04(土) 13:44:44.62ID:???
有人宇宙船の制御プログラムをとんちで書いてみせますので、
将軍様、有人宇宙船を用意してください!
0451nobodyさん2012/08/04(土) 13:47:25.21ID:???
>>450
その用意してもらった宇宙船ぜったい宇宙まで飛ばないよ爆発するよそういう運命
0452nobodyさん2012/08/04(土) 13:49:46.20ID:???
なんか必死だなw

ちょっかい出してくる奴が本当の素人って法則か
0453nobodyさん2012/08/04(土) 13:52:03.80ID:???
将軍様って足利義満じゃなくて金正恩なのかw
0454nobodyさん2012/08/04(土) 20:31:27.69ID:4uIUJ0Fo
Eclipse 4.2 Juno 64bit

PHP JRE あり

って現在ダウンロード出来ないのでしょうか?



クリックすると↓この様なエラーメッセージが表示されてしまいます。

Not Found
The requested URL /pub/mergedoc/pleiades/4.2/pleiades-e4.2-php-jre_20120803.zip was not found on this server.

0455nobodyさん2012/08/04(土) 20:56:20.53ID:???
本当ですね
そのうち復帰すると思う
0456nobodyさん2012/08/04(土) 21:44:49.99ID:jcEu7WCC
PHPでMailを扱うモジュールはないでしょうか?
既存のSMTPサーバーを使いたいのですが
新たにモジュールが追加できない環境のためPearが使えません。

SMTPサーバーが使えるPHPのモジュールがあれば教えてください。
0457nobodyさん2012/08/04(土) 22:08:19.23ID:???
qdmail
■ このスレッドは過去ログ倉庫に格納されています