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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0465nobodyさん2011/09/11(日) 07:41:17.11ID:???
文字列比較はstrcmp()を使えっていうあれは何なん?
0466nobodyさん2011/09/11(日) 07:57:18.58ID:???
>>465
strcmpはあくまで「文字列」比較だから==や===と同等ではない。
strcmpの引数に数値(int型等)を代入すると文字列型に変換して比較する。
よって比較する変数の型が文字列でなくてもtrueとなることもある。

==では逆に文字列の方が数値(intだったりfloatだったり)に型変換して比較する。
===では型キャストせず、型も同一かどうかを検査する。
用途によって使い分ければいい。
0467nobodyさん2011/09/11(日) 08:16:13.63ID:???
http://www.php.net/manual/ja/types.comparisons.php
0468nobodyさん2011/09/11(日) 08:29:38.28ID:???
しらずにif(strcmp($a,'')==0)とかやってた。
if($a=='')でいいじゃん。
ばかみたい。
0469nobodyさん2011/09/11(日) 08:37:43.98ID:???
>>468
$a=0 のときtrueでもいいならね。
0470nobodyさん2011/09/11(日) 08:50:06.12ID:???
そりゃ困る。
0と""は同じじゃねぇだろ。だれが考えても。
0471nobodyさん2011/09/11(日) 08:55:17.87ID:???
じゃぁstrcmpか===で比較しとくんだな。
0472nobodyさん2011/09/11(日) 08:59:40.77ID:???
http://www.php.net/manual/ja/types.comparisons.php#types.comparisions-loose
を見ればわかるように、""(空文字列)と==で比較してtrueになるのは、
FALSE、0、NULL、""(空文字列)の4種類もある。
===で比較すればtrueになるのは ""(空文字列)だけ。
0473nobodyさん2011/09/11(日) 08:59:42.26ID:???
>>468
じゃあemptyでいいんじゃない?
0474nobodyさん2011/09/11(日) 09:00:51.26ID:???
>>473
emptyでも $a=0 のときtrueだよ
0475nobodyさん2011/09/11(日) 09:06:04.27ID:???
empty()でも$x=0でtrueじゃん。
0と""は同じじゃねぇ。
0476nobodyさん2011/09/11(日) 09:09:13.69ID:???
まぁそれがPHPの仕様ということで。
知らずに==で比較してると意外な落とし穴があるかもだけど、
大抵の場合は比較する変数にどんな値が入り得るか自分でわかってるだろうからあまり問題ない。
0477nobodyさん2011/09/11(日) 09:13:16.26ID:???
こんなことをいちいち知ってないと一流でないというプログラマは大変な仕事じゃん。
0478nobodyさん2011/09/11(日) 09:22:39.76ID:???
あんな表を全て暗記してたら天才だろうけど、なんとなく覚えてて必要なときに見て確認すればいい
0479nobodyさん2011/09/11(日) 11:29:38.65ID:???
PHPって複数のクラス継承できないの?
クソじゃん
0480nobodyさん2011/09/11(日) 12:28:56.02ID:???
>>472
こういうのって結局、変数に型がないから
演算子の方でがんばろうかってなっちゃって
複雑になってるんだよな。

型があればこんなに演算子は必要なくなるのにね。
0481nobodyさん2011/09/11(日) 12:43:09.14ID:5ZyXBnRO
>>463
>>464
ありがとうございました。
0482nobodyさん2011/09/11(日) 12:48:12.85ID:???
>>479
Java知らないの?
言語に文句言う奴って
たいがい無知なだけだよね。
0483nobodyさん2011/09/11(日) 12:53:54.38ID:???

a) if ( $a === '' )
b) if ( '' === $a )

a) と b) の違いを教えてください。

0484nobodyさん2011/09/11(日) 13:57:30.64ID:???
くだらない質問なんですが
このスレでID出すにはどうすればいいのでしょうか。
専ブラはBathyScaheです
0485nobodyさん2011/09/11(日) 14:01:36.94ID:???
>>483
違う?
0486nobodyさん2011/09/11(日) 14:18:23.58ID:???
>>484
名前欄にfusianasanって書くと出るよ。
0487nobodyさん2011/09/11(日) 14:25:50.96ID:???
>>479
多重継承こそクソだと思うけどな
まぁPHPはそんなクソなものでも実装しかねないのが面白いところ
将来的にもしかしたら実装されるかもな
0488nobodyさん2011/09/11(日) 14:38:48.44ID:???
>>487
C++知らないの?
言語に文句言う奴って
たいがい無知なだけだよね。
0489nobodyさん2011/09/11(日) 14:59:55.23ID:???
C++でさんざん多重継承について叩かれてるだろ
人を無知呼ばわりする前に
コミュニティに参加しろよ
0490nobodyさん2011/09/11(日) 16:13:46.11ID:???
>>480
型あるよ
0491nobodyさん2011/09/11(日) 16:34:49.06ID:???
>>490
それは値に型があるのであって、
変数に型があるって話じゃないでしょ。
全く違う話。
0492nobodyさん2011/09/11(日) 16:42:50.58ID:5ZyXBnRO
php可のHPスペースって有料ならどこでも同じようなものですか?
なんか2chのおすすめはありますか?
0493nobodyさん2011/09/11(日) 16:48:46.16ID:???
>>492
2ch的にはこれ一択

ttp://www.maido3.com/server/
0494nobodyさん2011/09/11(日) 17:00:58.60ID:???
>>493
自分が使ったことがあるのだけ
おすすめしてくださいね。
0495nobodyさん2011/09/11(日) 17:05:58.94ID:5ZyXBnRO
>>493
とりあえず、金がないのでFC2のライトプラン月250円
にしようと考えてまがBig-severの方がいいのでしょうか?
0496nobodyさん2011/09/11(日) 17:28:02.91ID:???
先に、何を使うとか決めてからサーバー決めた方がいいんじゃね?
CMSのコミュ見てっと、サーバー借りたけど、○○CMSがうまく動かせません、っつよーな質問が結構ある。
0497nobodyさん2011/09/11(日) 17:34:56.65ID:TcayCkxL
if ($result = $mysqli->query("SELECT title FROM tbReview WHERE seq = ".$_GET['seq_review'])) {

if ($result->num_rows > 0) {
$row = $result->fetch_array(MYSQLI_NUM);
$result->close();
}
}

この文の一行目で
Fatal error: Call to a member function query() on a non-object in
というエラーが出ます。

mysqlにSELECT title FROM tbReview WHERE seq = 903;などで
打ち込むとちゃんと値が取れるのですが、
エラーはどうすれば解消されるでしょうか?
0498nobodyさん2011/09/11(日) 17:47:04.80ID:???
ロリポップ最強伝説
0499nobodyさん2011/09/11(日) 17:50:08.82ID:???
ユーザーエージェントで判別してiPhone、Android、ipod用に広告を出力したいのですがどうすればいいのでしょうか?

旧携帯のdocomo用は下のような感じで出力しています。

$agent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("/^DoCoMo/i", $agent)) {
srand((double)microtime()*1000000);
$ad_list1 = file("ファイル);
$ad_key1 = array_rand($ad_list1, 2);
$ad1 = $ad_list1[$ad_key1[0]];
// 表示
echo $ad1;

>if (preg_match("/^DoCoMo/i", $agent)) {
ここのユーザーエージェント部分を変えればいいだけなのかと
単純にif (preg_match("iPhone|Android|iPod", $agent)) { と入力しても出力されませんでした。

わかる方お願いします。
0500nobodyさん2011/09/11(日) 18:01:06.48ID:???
iif (preg_match("/iPhone|Android|iPod/", $agent))
にすればいいんじゃない?
0501nobodyさん2011/09/11(日) 18:07:33.94ID:???
>>497
$mysqliってどこで宣言してんの?
0502nobodyさん2011/09/11(日) 18:10:38.23ID:rcvtLkju
>497

$mysqli変数がnullになってるよん。
queryメソッドを呼び出す前を辿っていって、ちゃんと$mysqli変数にオブジェクトがセットされているかを確認すべし。
0503nobodyさん2011/09/11(日) 18:13:45.68ID:???
>>499

>>500さんが指摘してる様に、パターンの構文がおかしい。

ここ読んでみて↓

正規表現 (Perl 互換) 導入
ttp://www.php.net/manual/ja/intro.pcre.php
正規表現 (Perl 互換) 例
ttp://www.php.net/manual/ja/pcre.examples.php
0504nobodyさん2011/09/11(日) 18:15:33.75ID:rcvtLkju
>479

php5.4からだけど、trait(scalaのぱくりかな?)が使えるようになる。
ようするにmix-in。
まぁそれがいいか悪いかは別として、便利だから使うと思う。
0505nobodyさん2011/09/11(日) 18:24:22.24ID:???
>>500
できました。ありがとうございます。
0506nobodyさん2011/09/11(日) 18:25:17.64ID:???
>>503
勉強になります。ありがとうございます。
0507nobodyさん2011/09/11(日) 20:06:35.97ID:H0qzNaRx
simplexml_load_file関数で複数のサイトのxmlを読み込む方法を教えて下さい。
0508nobodyさん2011/09/11(日) 20:24:14.74ID:???
>>498
その名前、恥ずかしいから却下
0509nobodyさん2011/09/11(日) 20:33:21.53ID:???
たしかに改名したほうがいいよなw
0510nobodyさん2011/09/11(日) 20:39:54.30ID:???
$a=simplexml_load_file('site1');
$b=simplexml_load_file('site2');
0511nobodyさん2011/09/11(日) 20:43:49.71ID:vvss0p+f
【OS名】FreeBSD 7.1
【PHPのバージョン】5.2.17
【連携ソフトウェア】MySQL
【質問内容】
実行に15分くらいかかるphpを一日一回定期実行させたいのですがどのような方法がいいでしょうか
・phpファイルはさくらのレンサバにある
・cron使ったら当然のごとくkillされた
・ブラウザ上でなら普通に完走する
・使用PCはOS X Lion
あと,別の軽いphpもcronで動かしてみたのですが稀にkillされます
こっちもいい方法ないでしょうか?

よろしくお願いします
0512nobodyさん2011/09/11(日) 20:50:54.33ID:???
さくらに直接聞けよ。
0513nobodyさん2011/09/11(日) 22:14:07.35ID:???
>511
>・cron使ったら当然のごとくkillされた
>あと,別の軽いphpもcronで動かしてみたのですが稀にkillされます

さくらでcronでkillされるなんて聞いたことないな。
killされたことをどうやって判断してるの?
0514nobodyさん2011/09/11(日) 22:18:00.84ID:vvss0p+f
>>513
killされる度にCron Daemonさんからメールが来るよ
どっかに1分以上動かしてたら怒るよって書いてあったと思う
0515nobodyさん2011/09/11(日) 22:24:17.53ID:???
手動で毎日アクセスする
金払って第三者に毎日アクセスするように頼む

後者がおすすめです
0516nobodyさん2011/09/11(日) 22:53:58.04ID:???
俺も事情あってcron使えないところはUWSCで自動ブラウザ起動してアクセスしてる
0517nobodyさん2011/09/11(日) 22:56:48.94ID:???
Android持ってたらtaskerでやる
0518nobodyさん2011/09/11(日) 23:11:17.52ID:???
>>513
金があれば上位プランに変える
金がないなら怒られない範囲に処理を分割する
0519nobodyさん2011/09/11(日) 23:24:30.70ID:fFrzDoDT
インストールオプションで
--with-intl=shared
としてもそれらしきshared objectが作られないのですが
intlはsharedにすることはできないのでしょうか?
0520nobodyさん2011/09/11(日) 23:31:32.04ID:???
CRONでプログラムを直接キックするんじゃなくて
file_get_contentsとか使ってURL経由でキックすれば
ブラウザ出動作させたときと同じ条件にならないかな
0521nobodyさん2011/09/11(日) 23:33:23.48ID:???
>>520
file_get_contentsが終了するまで結局cronのプログラムが実行されたままにならないか?
0522nobodyさん2011/09/12(月) 00:05:10.62ID:???
>>521
あーそうか
結局は1分縛りの無い別サーバから叩かないといけないか
デスクトップやAndroidから叩くよりはいいと思うけど、いまいちやね。
0523nobodyさん2011/09/12(月) 00:52:23.33ID:???
いまいちつーか、単に自分の技術力がないだけじゃね?

今は月500円以下でroot権限もてるVPSが
借りられるんだからさ。
0524nobodyさん2011/09/12(月) 01:12:55.81ID:???
他のサーバーを借りる前提ならいくらでも方法はあるだろ。
現在のサーバーの制約内でどう解決するかって話じゃないのか。
0525nobodyさん2011/09/12(月) 01:22:30.85ID:???
月500円は技術力なんだよw
0526nobodyさん2011/09/12(月) 01:37:02.27ID:???
Twitterbotを作りたくて勉強しようと思うのですが、完全な初心者にもわかり易いサイトってどこでしょうか?
05275262011/09/12(月) 01:54:51.04ID:uM4EX7+a
あ、IDが出てなかった・・・
0528nobodyさん2011/09/12(月) 02:27:45.01ID:???
「php twitter bot」でググれ
05295192011/09/12(月) 04:19:30.32ID:???
見る場所が間違ってただけでありました
てゆうかpeclでインストールした方がはやかった
ピックルピックル
05305112011/09/12(月) 08:50:24.72ID:kBzzbu41
結局自PCからルーティンワークさせるのが現実な手段か
root権付きVPSに乗り変えるのも面白そう。他にも出来ること増えるし

サンクス
0531nobodyさん2011/09/12(月) 11:10:47.12ID:???
お安い御用です。
0532nobodyさん2011/09/12(月) 15:02:49.71ID:WoFdKos4
正規表現というかちょっとわからない所が

$hoge ="abcdefgijk"

を正規表現で"de"がマッチしたら"<br>「defg」が含まれています"を追加して
$hoge ="abcdefg"."<br>「defg」が含まれています"

と$hogeに追加されるようにしたいのですがいい方法とかありますでしょうか?
0533nobodyさん2011/09/12(月) 15:04:18.29ID:???
>>532
もう一度冷静にレスをしてくれ
0534nobodyさん2011/09/12(月) 15:05:23.41ID:???
意味がよくわかんないけど、
検索して見つかった位置から検索文字数+2文字分とりだすのと
先頭からその位置まで取り出せればいいんじゃない?
0535nobodyさん2011/09/12(月) 15:30:27.25ID:WoFdKos4
preg_matchとかpreg_replaceとかはわかるんですが
検索して、マッチしたらマッチした部分を取り出すというのがどうも見当たらなくて
それにreplaceじゃ置き換えてしまうので、追加するという形にはできませんし、もう何が何やら
0536nobodyさん2011/09/12(月) 15:37:03.67ID:???
>>535
http://php.net/manual/ja/function.preg-match.php
matches辺り
例題4のようにprint_rしてみればなんとなくわかるんでない
0537nobodyさん2011/09/12(月) 15:37:13.40ID:???
>>535
$hoge ="abcdefgijk";
if(preg_match("/(de)/",$hoge,$match)){
$hoge .= "<br>「".$match[1]."」が含まれています";
}
0538nobodyさん2011/09/12(月) 15:39:02.18ID:WoFdKos4
>>536>>537
ありがとうございます
$matchに格納するやり方もあるんですね、助かりました!
0539nobodyさん2011/09/12(月) 15:42:09.04ID:???
replaceで() マッチしたのは \1で使えるよ
0540nobodyさん2011/09/12(月) 15:54:00.55ID:+PNH4AO0
お小遣いサイトやASPの自動認証ってどういう仕組みですか?
0541nobodyさん2011/09/12(月) 15:59:19.78ID:???
>>540
ASPと契約すればユーザーを識別できる情報を貰えるよ


05425392011/09/12(月) 16:15:12.18ID:+PNH4AO0
>>541
その先の話です

サイト訪問者がASPからもらったURLを踏んで広告主のサイトに行って登録した場合、
広告主からASPになにかデータを送って成果が反映されるのか
ASP側が追跡プログラムでも作って登録されたのを確認するのかってのがしりたいです
05435402011/09/12(月) 16:15:52.24ID:+PNH4AO0
>>542

ミス540だった
0544nobodyさん2011/09/12(月) 16:29:19.06ID:???
>>543
当然、広告主しかわからないので広告主が承認/非承認を選択する
悪質な競馬とかの広告主は全部非承認にしたりする問題もあるけどねw
0545nobodyさん2011/09/12(月) 17:03:50.51ID:???
>>542
このスレには素人しか居ないからここで聞いても無駄。
05465402011/09/12(月) 17:05:13.75ID:+PNH4AO0
>>544

ありがとうございました

0547nobodyさん2011/09/12(月) 17:10:38.77ID:???
お安い御用です。
0548nobodyさん2011/09/12(月) 17:12:05.33ID:???
>>545
じゃぁお前が答えてやればよかったのに。
どうして答えてあげないの?ねぇ?ねぇ?
0549nobodyさん2011/09/12(月) 17:38:10.07ID:???
>>548
>>545 も素人ということが分からないならプログラマ向いていない。
0550nobodyさん2011/09/12(月) 17:53:01.75ID:???
>>549
小学校の国語の勉強からやり直せw
0551nobodyさん2011/09/12(月) 17:53:38.45ID:???
サイトによるだろ、OAuthとかの話?
0552nobodyさん2011/09/12(月) 18:59:43.32ID:pRrcUQ0Y
他人からアクセスされないようにログファイルのディレクトリを
public_html(公開ディレクトリ)よりも上位のディレクトリの直下に置こうとしていて、
PHP側でそのディレクトリがない場合はmkdirするようなコードを書いたら
Warning: mkdir() [function.mkdir]: Permission denied in /path/file.php on line N
と言われました
どうすればいいですか?普通はどうするものですか?
あらかじめ作っておくものですか?PHP側で作ることは無理ですか?

https://forums.ubuntulinux.jp/viewtopic.php?id=5744
の回答者が言っているような
> 遅い返信ですが、ユーザディレクトリ以下に何かファイルを書き出すとかしたい場合には apache2-suexec-custom パッケージを入れて mod_suexec を有効にしないとダメかと。
ですか?
0553nobodyさん2011/09/12(月) 21:55:18.97ID:???
PHPでアクセスして予め作れるようならOKだが、それが出来ないからPermissionなんたら言われるんやと思うけど。
とりあえず、そのPHPファイルを置いているディレクトリにさえPHPからファイルを作れないのか?を調べてみると何か分かるかもしれん。
そのディレクトリには書けるってーのなら、最悪mod_rewriteでそのディレクトリを隠しちまえば要件は足りるし。
0554nobodyさん2011/09/12(月) 21:59:10.02ID:???
//以下は毎時0分〜2分の間に実行(3分未満の範囲で遅い場合)
if(date("i") <= 2){
$response = $eb->postRandom("data.txt");
}
//以下は毎時58分〜0分に実行(3分未満の範囲で早い場合)
if(date("i") == 0 || date("i") == 59) 0 || date("i") == 58){
$response = $eb->postRandom("data.txt");
}

これを一つの文でまとめるにはどうしたらいいんでしょうか?
05555542011/09/12(月) 22:07:49.42ID:uM4EX7+a
IDが出てなかったです、すいませんよろしくお願いします
0556nobodyさん2011/09/12(月) 22:16:22.58ID:???
if(date("i") <= 2 || date("i") >= 58 ) {
0557nobodyさん2011/09/12(月) 22:17:25.76ID:uM4EX7+a
ありがとうございます!
0558nobodyさん2011/09/12(月) 22:31:22.39ID:???
>>552
そもそもディレクトリのアクセス権がないとかないよね
chmod 777でもダメかチェックな

あとは、ルートディレクトリ以下じゃないと、ディレクトリ生成できない設定になっているサーバもあるので、そのときはphp.iniとかいじって設定帰る必要がある
よくあるところでは、Plesk使ったサーバだとデフォルトでこの設定
php.iniいじる権限が無いなら、553のいうとおり、ディレクトリ毎に設定書いて対応
05595522011/09/12(月) 23:21:02.69ID:???
>>553,558
レスどうもありがとうございます

「/public_html/foo.php」から
「/」に「bar」ディレクトリを作ろうとしています
「/bar」みたいな感じです

自分で「/bar」ディレクトリを作って適切なパーミッションにすれば
そこにphp側からファイルを作成できることは確認しました
「/public_html」以下ならPHP側からディレクトリの作成もできます

設定を変更するphp.iniのディレクティブはなんて名前でしょうか
05605522011/09/12(月) 23:35:26.33ID:???
doc_root・・・ですか?
0561nobodyさん2011/09/13(火) 00:05:09.40ID:BoQFAc7C
http://d.hatena.ne.jp/ockeghem/20081110/p1
この記事の、
> やはり、ソースコードはEUC-JPかUTF-8で記述すべきだったと思う。
という部分ですが、
これはエディタで保存する時に指定する文字コードをEUC-JPかUTF-8にすべきということでしょうか?
0562nobodyさん2011/09/13(火) 01:06:22.70ID:???
>>561
うん、そう
Shift JISとかBOM付きUTF-8でハマるのはFAQ
あと、テンプレみろって
0563nobodyさん2011/09/13(火) 03:46:26.75ID:???
>>559
「/」に「bar」ディレクトリを作るってことは、「/」ディレクトリにPHPからの書き込み権限がないと駄目ってことですよ。
自分で「/bar」ディレクトリを作る場合は自分のログイン権限で作るわけだけど、
PHPから作る場合はnobody(other)とかに書き込み権限を付与しとかないといかんね。
0564nobodyさん2011/09/13(火) 09:03:56.54ID:OYhF5wpw
例えば、数字を入力して計算をしてくれるcalc.phpがあって、それにAさんとBさんが同時にアクセスしていて、
$aに結果を代入するようにしているとして、Aさんが結果を出力しようとした寸前にBさんの計算結果
が$aに代入され、Aさんの結果がBさんの結果になるのでしょうか?
$aはAさんもBさんも同じアドレス空間?の$aを使っているのでしょうか?
0565nobodyさん2011/09/13(火) 09:23:56.11ID:???
>>564
そんなことが起こったらまぁ大変。
銀行の口座取引もオンラインゲームも使えませんね。
PHP以前にコンピュータのプロセスについて勉強しましょう。
■ このスレッドは過去ログ倉庫に格納されています