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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 99
http://hibari.2ch.net/test/read.cgi/php/1286938893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0399nobodyさん2010/11/04(木) 13:19:55ID:zPbOOHCy
>>397
調べられる範囲で経由してきたプロキシが分かればよいです。最悪、2つ前のIPを調べられる方法でもよいです。

やりたいことは、PHPにIPでのアクセスを設けたいのですが、
プロキシ経由でWEBサーバにアクセスしてるので、プロキシのIPが制限の対象になってしまいます。
0400nobodyさん2010/11/04(木) 13:24:48ID:???
出来ない。
制限しなければいいじゃん。
0401nobodyさん2010/11/04(木) 13:35:48ID:???
公開プロキシでのアクセスをどうにかしたい
っていう事かなと思って話しをするけど
公開プロキシなんてどこかのリストから
使えるものを使うって感じなんだろうから

それを拒否リストかなんかに登録すればいいんじゃねーの?

0402nobodyさん2010/11/04(木) 13:36:50ID:R2ciutWb
http://www.ne.jp/asahi/setuna/multi-factory/index/env.html
このへん見て調べては?
0403nobodyさん2010/11/04(木) 13:42:14ID:???
>プロキシ経由でWEBサーバにアクセスしてるので、
誰が?あなたが?

>プロキシのIPが制限の対象になってしまいます
プロキシを拒否りたいというわけではないということか
0404nobodyさん2010/11/04(木) 13:45:05ID:???
プロキシ経由してるやつをプロキシのIP制限以外で制限するのは無理だから。
0405nobodyさん2010/11/04(木) 13:49:46ID:???
たぶんやりたいのはプロキシIPみて拒否じゃなくて、
大元のIPを見て拒否りたいということだろう
匿名プロキシじゃなくて、わざと環境変数に元のIPを漏らしてるプロキシ使ってる場合は分かるけどそれ以外は無理

刑事事件になるようなものならプロキシ運営側に情報開示させてプロキシを逆に辿るようなこともできるだろうけど
0406nobodyさん2010/11/04(木) 13:53:37ID:nDeItJ+n
PHPの質問としていいのか微妙なところなんですが、
ini_set()でも.htaccessでもshort_open_tagだけがOffにできません
ほかの設定は反映されるのですが・・
これは何が原因だと考えられるでしょうか?
04074062010/11/04(木) 14:44:39ID:nDeItJ+n
自己解決しました
もう一度.htaccessをアップロードしなおしたら反映されました
(さっき反映されなかったのはなぜだろう..ブラウザ側でキャッシュ見てたのかな)

あと、もともとini_set()ではshort_open_tagは設定できないようですね
0408nobodyさん2010/11/04(木) 18:07:14ID:En7f4Y+6
【OS名】CentOS5.5
【PHPのバージョン】5.1.6
【連携ソフトウェア】特になし
【質問内容】
社内の既存のシステムでmail関数を使用してメールを送信してます。
内容はログやエラー内容なんですが、ネットワークの変更に伴い社内のSMTPを使用することになりました。
そこで現状のソースを崩さすにmail関数でSMTPを指定出来ればと考えてますが可能でしょうか?
0409nobodyさん2010/11/04(木) 18:12:52ID:R2ciutWb
>>302
04104082010/11/04(木) 18:28:52ID:En7f4Y+6
>>409
そちらのアドレスについては確認しているのですが、やはりSMTPの指定は無理ということでしょうか?
0411nobodyさん2010/11/04(木) 18:31:18ID:???
iniで設定できなかったっけ?
デフォルトがlocalhostのになってるとは思うけど
0412nobodyさん2010/11/04(木) 18:38:50ID:???
あぁごめん設定できるのはwinか
会社のSMTP次第だとは思うけど
リレーでなんとかならないかな?
MTU何使ってるか知らないけどそっちのスレで聞いたほうが良いと思う
0413nobodyさん2010/11/04(木) 18:40:25ID:???
MTU→MTA
なんかぐだぐだで死にたい
0414nobodyさん2010/11/04(木) 18:51:06ID:???
全国ロードショー 映画「イッペンシンデミル 7日間のデス・ゲーム」
04154082010/11/04(木) 18:53:48ID:En7f4Y+6
>>412
MTAに何を使っているかは不明だったのですが、社内から使用するには制限は特にないといわれました。
mail()でリレーとか出来るということでしょうか?
0416nobodyさん2010/11/04(木) 19:04:24ID:???
>>415
いや、そのphpが動作するサーバのMTAの設定で
社内のSMTPサーバへリレーさせるって意味だよ

MTAの設定変更が無理なら、mail()では無理なので
SMTP指定ができる、PEAR:mailとかQdmailとかを使う事になる
0417nobodyさん2010/11/04(木) 19:08:17ID:QBk0rcZE
>>398

selectやwhereはできました
プレースホルダ使っても駄目でした
0418nobodyさん2010/11/04(木) 19:53:10ID:???
>>414
こんなのでわろてしまうなんてっ・・・くやしいっ
0419nobodyさん2010/11/04(木) 20:24:35ID:???
>>417
シングルクオートだと展開されないよ
$sqlの中身をチェック
0420nobodyさん2010/11/04(木) 20:28:45ID:???
>>417
できましたってwhereにシングルコーテーションってこと?
`foo` = '$bar'みたいな
0421nobodyさん2010/11/04(木) 20:34:35ID:???
展開されないでしょって突っ込まれてるのに気付かないってどんだけ
04224152010/11/04(木) 20:52:00ID:beLXGvet
>>416
すいません。
サーバーで使ってるのはsendmailです。
0423nobodyさん2010/11/04(木) 21:10:02ID:???
>>422
これ以上は板違いになるが
単純な転送ならSMART_HOSTに設定すればいける
サーバの管理者に相談してみて
0424nobodyさん2010/11/04(木) 23:14:59ID:cN2tw34c
new \A\B\C()->Start();

PHPはこういう書き方させてくれないのがムカつく!
0425nobodyさん2010/11/04(木) 23:18:23ID:???
\てなんだよ
0426nobodyさん2010/11/04(木) 23:19:31ID:???
もしかしてnamespaceなのか
0427nobodyさん2010/11/04(木) 23:20:15ID:???
>>425
バックスラッシュ!
0428nobodyさん2010/11/04(木) 23:21:49ID:???
Start()で何返ってくるの?インスタンス?文字列?
0429nobodyさん2010/11/04(木) 23:24:59ID:???
>>428
文字列

::だとclass内で$this->が使えないので見通し悪くて仕方ない
0430nobodyさん2010/11/04(木) 23:31:59ID:???
Startを呼び出したんならStartしろよw
0431nobodyさん2010/11/04(木) 23:35:28ID:???
ああそういうことじゃなくて、Cクラスのインスタンスを作って、同時にStartメソッドを呼び出したいのか
0432nobodyさん2010/11/04(木) 23:36:30ID:tQnLbdgi
Webサイトをダウンロードするようなフリーソフトとかがありますが、
ああいった感じの機能のPHPライブラリとかってありませんか?
0433nobodyさん2010/11/04(木) 23:37:50ID:???
file_get_contents
0434nobodyさん2010/11/04(木) 23:46:14ID:???
>>433
何となくそれが返ってくるような気がしてたw
複数ページ丸ごと落としてくるフリーライブラリは意外とないものなのかな
0435nobodyさん2010/11/04(木) 23:56:50ID:???
>>424
function r($o) { return $o; }
r(new Klass())->foo();

autoboxing パッチが受け入れられるまでこれで我慢
0436nobodyさん2010/11/05(金) 00:23:08ID:???
>>434
foreach ($urls as $url) {
$results[] = file_get_contents($url);
}
0437nobodyさん2010/11/05(金) 00:25:20ID:FUZYrjbX
>>417ですが 展開されます その上で言ってます
0438nobodyさん2010/11/05(金) 00:27:04ID:???
>>437
シングルでされるならそりゃPHPじゃないよ
0439nobodyさん2010/11/05(金) 01:15:09ID:FUZYrjbX
できたもん
0440nobodyさん2010/11/05(金) 01:19:22ID:???
ああそう、せっかく解決方法知ってるけどじゃあいいよ
0441nobodyさん2010/11/05(金) 01:21:38ID:FUZYrjbX
え...(´・ω・`)
0442nobodyさん2010/11/05(金) 01:26:38ID:???
PHPでシングルクォート(')内では変数展開されない
俺々PHPとかでPHP本体自体を改造してるなら別だけどね

実際発行されてるクエリは
update tab1 set tag1 = $tag1 where dirpass = $returnpass
のままっていう可能性しかない
0443nobodyさん2010/11/05(金) 01:55:08ID:XnKoTrfJ
たとえば、"ff" って文字を取得して、それを 255 に変換できる組み込み関数ってありました?
あるいは、言語構造でもいいです。
お願いします m(__)m
0444nobodyさん2010/11/05(金) 01:57:44ID:FUZYrjbX
ダブルにしたお 1 no such column ってでたお..
0445nobodyさん2010/11/05(金) 01:58:56ID:???
>>443
hexdec
0446nobodyさん2010/11/05(金) 01:59:15ID:???
あぁ、hexdec ってのがあるんでした。
すいません
04474432010/11/05(金) 02:00:17ID:???
>>445
ありがとうございました (^^)/
0448nobodyさん2010/11/05(金) 02:00:31ID:???
>>443
「16進数 10進数 PHP」あたりでググればすぐにわかることを・・・
0449nobodyさん2010/11/05(金) 02:25:42ID:???
>>444
"update tab1 set `tag1` = '$tag1' where `dirpass` = '$returnpass'"
こんな感じに書き換えてみると良い
まぁ本当はPDOなんだからプレースホルダ使えってのが本音

$sql = 'update tab1 set tag1 = :tag where dirpass = :returnpass ';
$stmt = $dbh->prepare($sql);
$stmt->execute(array(':tag'=>$tag1,':returnpass'=>$returnpass));
0450nobodyさん2010/11/05(金) 02:28:47ID:xucJQOJ5
短縮URLなんかで使われている
0-9a-zA-Zのuniqueなkeyってどうやってつくるのん?
ライブラリがあると思うんだけどキーワードが思いつかない…
0451nobodyさん2010/11/05(金) 02:30:57ID:FUZYrjbX
>>449
書き換えさせていただきました
Connection failed: SQLSTATE[HY000]: General error: 1 SQL logic error or missing database
を吐いたんですけど
0452nobodyさん2010/11/05(金) 09:14:48ID:???
fsockopenでいけると思う
多分。
やったことないけど。
0453nobodyさん2010/11/05(金) 09:48:11ID:???
sqliteでそのエラーでupdate出来ないんでしょ?
パーミッションでしょ。ファイルとフォルダの権限チェック
0454nobodyさん2010/11/05(金) 14:23:13ID:???
>>450
uniqidでどうすか
0455nobodyさん2010/11/05(金) 14:34:50ID:???
>>450
短縮URLは短さが命でしょ
uniqidはちと長いね
0-9a-zA-Zをただ単にランダムにして重複チェックするだけでしょ
長さがどうでもいいとか、0-9a-fまででいいなら>>454の言うようにuniqidでいい
0456nobodyさん2010/11/05(金) 14:49:04ID:FUZYrjbX
>>452>>453
できますた どもでした
0457nobodyさん2010/11/05(金) 15:22:26ID:FUZYrjbX
DBの質問なんですが

id 1 name 伊藤 age 23
id 2 name 田中 age 24
id 3 name 山田 age 33
id 4 name 桜庭 age 43
id 5 name 中村 age 23
を「age」の数値が多い順にソートしたいんですが良い方法ありますか?
あと「伊藤」と「中村」は「age」が一緒なんですけど
その場合はどうなりますか?
0458nobodyさん2010/11/05(金) 15:25:12ID:FUZYrjbX
すいませんDBはsqliteです phpを使います
0459nobodyさん2010/11/05(金) 15:42:36ID:n8qMHMgb
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0460nobodyさん2010/11/05(金) 15:43:17ID:FUZYrjbX
さーせん 誘導どうも
0461nobodyさん2010/11/05(金) 16:13:24ID:???
>>460
DBスレは動きが少なくて死んでるようにもみえるけど質問がないだけで、質問があれば丁寧に答えてくれるよ
0462nobodyさん2010/11/05(金) 16:24:04ID:???
>>461
人任せにせず、自分で該当スレへ行って答えるように。
0463nobodyさん2010/11/05(金) 16:30:43ID:???
>>462
答えるために行くよう後押ししたんだよ
つか今時キリッとか流行んないよ
0464nobodyさん2010/11/05(金) 17:23:00ID:???

          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <「つか今時キリッとか流行んないよ」
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

0465nobodyさん2010/11/05(金) 17:27:41ID:???
>>462-465までは駄目なレス例
0466nobodyさん2010/11/05(金) 17:34:14ID:???
眠い
0467nobodyさん2010/11/05(金) 18:17:15ID:???
書き方きもい・・・

$inst = new Task();
$inst->Run();
$html[] = $instance->m_html;
$data[] = $instance->m_data;
0468nobodyさん2010/11/05(金) 18:26:09ID:???
なにそれ
0469nobodyさん2010/11/05(金) 18:29:29ID:???
はいはい、我慢ですよ。ガマン。
0470nobodyさん2010/11/05(金) 19:24:03ID:???
$div = 1;
isset($div["format"]) ← trueになるんだけどこんな動作してたっけ?
var_dump($div);
0471nobodyさん2010/11/05(金) 19:27:04ID:???
ならん
0472nobodyさん2010/11/05(金) 19:36:50ID:???
「こっちにくるなー」が表示されるんだけど・・・
どうしてだろ?

$div = "sss";
if (isset($div["format"])){
echo "こっちにくるなー";

}else{

echo $div;
}
0473nobodyさん2010/11/05(金) 19:39:34ID:???
>左から順に評価を行い、セットされていない変数があった時点で処理を終了します。

まさか$divがあった時点でtrueなのか、それとも間抜けな勘違いしてる?
0474nobodyさん2010/11/05(金) 19:41:20ID:???
$div = 1;
if (isset($div["format"])) {
echo "こっちにくるなー";
}
0475nobodyさん2010/11/05(金) 19:44:05ID:???
$divがStringだとtrue
$divが空文字だとfalse
$divがnullだとfalse
$divがintだとfalse
$divがfloatだとfalse
$divがbooleanだとfalse
0476nobodyさん2010/11/05(金) 19:44:52ID:???
謎は深まるばかりである
0477nobodyさん2010/11/05(金) 19:47:11ID:???
上のとちがうやん。
文字列で[]やったときは違う。
さらにその[]の中を文字列にしたときは、文字列を数値としてみる。
"0"なら0 "1"なら"1" "format"なら なんと 0だ。
04784722010/11/05(金) 19:49:19ID:???
意味わかんね・・・
つまりelseの場合に挙動がおかしのかな


>>474
それはfalseになる
0479nobodyさん2010/11/05(金) 19:50:38ID:???
だからな、
$div = "abc";

$div[0] は "a"
$div[1] は "b"
$div["1"] は "b"

$div["format"] は "a" なのだよ。
04804722010/11/05(金) 19:53:47ID:???
>>479
>$div["format"] は "a" なのだよ。

これがわからない。
どうして$div["format"]が$div[0]になってしまうの?。
0481nobodyさん2010/11/05(金) 19:56:42ID:???
俺は仕様のことは知らないんであれだけどよ、添字が文字列だったら数字にする処理で
失敗したら0にする処理になってんじゃねーの?
04824722010/11/05(金) 19:57:04ID:???
あ、PHPはkeyをハッシュ値にしてあるはずだからハッシュ値が一緒になるとかいう話なのかな
0483nobodyさん2010/11/05(金) 20:03:19ID:???
PHPマニュアル 文字列より、
文字列のオフセット指定で整数型以外の型は整数型に変換されるとのこと。
print (int)"format"; は 0だよ。
04844722010/11/05(金) 20:03:36ID:???
あらー、他のキーにしてもformatと同じ症状がでるわ。
もしかしてPHP関連のファイルが壊れたかな、それともスクリプトの構造によってそうなるバグかな。
0485nobodyさん2010/11/05(金) 20:07:50ID:???
>>484
1こ上をみろ文字列を数値にキャストすると0になるだろ
04864722010/11/05(金) 20:08:41ID:???
>>483
>print (int)"format"; は 0だよ。

色々と文字を入れてみたけど全部0になる・・・

みんな、PHPのバージョンいくつ?

0487nobodyさん2010/11/05(金) 20:09:02ID:???
なんでハッシュを数値にキャストするとかミラクルなことしてんの
0488nobodyさん2010/11/05(金) 20:09:07ID:???
流れ読まずに申し訳ないが、なんでそんなことやってんの?
0489nobodyさん2010/11/05(金) 20:10:40ID:???
>>486
それは挙動として正しい
"12abc"とかやってみ
0490nobodyさん2010/11/05(金) 20:11:44ID:???
ハッシュじゃないから。 文字列の[]は特殊だから、仕様だから。
気持ち悪いとかそういうのはともかく、こうなってるから。PHPのバージョンとか関係ないし。
0491nobodyさん2010/11/05(金) 20:13:36ID:???
ハッシュテーブル$div["format"]のキーformatが内部でintにキャストされてるというのがそもそもおかしい訳だが・・・
0492nobodyさん2010/11/05(金) 20:15:21ID:???
だから文字列の入った変数への[]のアクセス時は違うんだって。 ハッシュテーブルじゃない。
整数でのアクセスのみ。整数でなかったらむりやり整数にしますってこと。
04934722010/11/05(金) 20:15:26ID:???
理解したかも
こういうことらしい

$dat = "string";
if (isset($dat["key"]){
echo "datがstringなら表示できます";
}
0494nobodyさん2010/11/05(金) 20:17:15ID:???
$div = array();
にしとけってことか
0495nobodyさん2010/11/05(金) 20:17:19ID:???
理解してないような気がする・・・
0496nobodyさん2010/11/05(金) 20:21:10ID:???
次期PHPでは文字列への文字単位へのアクセスで[]使うの廃止してもらおう。
$dat{1}でアクセスすればいいんだし。
0497nobodyさん2010/11/05(金) 20:24:02ID:???
他言語のcharAtに相当する関数(メソッド)を用意すればいいのにな
04984722010/11/05(金) 20:26:20ID:???
みんな、ありがと

>>492
夕食の準備であたふたしてたけど今それを読んで理解した!
そういう仕様だったのね

全く気付かなかった・・・
■ このスレッドは過去ログ倉庫に格納されています