【PHP】下らねぇ質問はID出して書き込みやがれ 94
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/17(水) 23:17:41ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 93
http://pc11.2ch.net/test/read.cgi/php/1266229386/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0652nobodyさん
2010/04/08(木) 12:22:38ID:???htmlに余計な改行が入ってソースが気になるなら、そもそもがhiddenなんかに持たせずにphpのsessionに保存すれば?
どうせ、確認画面で表示だけだと値をpost出来ないからhiddenに持たせようとかそんな程度の話でしょう?(勝手な妄想だから、違っても気にするな)
textareaタグを使って、見た目をただの表示っぽく調整するとか、方法はいろいろあると思うけどね。
やりたい事の実現方法案を自分で決めてしまって、その案に対しての技術的な質問をしてもなかなか解決しない場合があるよ。
何のためにhiddenで値を保持しようとしているのか、まずはそこから話さないとアドバイスしにくいんじゃね?
0653nobodyさん
2010/04/08(木) 12:25:35ID:???たぶんやりたいのは投稿内容の確認画面ではないかとエスパー。
0654nobodyさん
2010/04/08(木) 12:27:24ID:???640じゃないが、機械翻訳したうえで、オリジナルサイトと両方見ながら読む努力しろよ。
コンピュータ用語なんてまともに翻訳できなくて当たり前なんだから。
そもそも、コードが翻訳された部分なんて、
>これを画像URLを入れ替えて勝手に自分のサイトで使うと怒られたりしますか?
こんなことを知るうえでは無関係な場所だから読む必要ないだろ。
0655nobodyさん
2010/04/08(木) 12:59:45ID:bQ9+sypi要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?
プログラミングのプロのみなさんのコンプライアンス・ガバナンスの見地に基づいた意見を求めております
0656nobodyさん
2010/04/08(木) 13:01:53ID:???>要約するとグーグルのリソースだからつかってもオッケイと言う解釈でオッケイですか?
こう解釈する奴では、何を教えて貰っても無駄だろ。
0657nobodyさん
2010/04/08(木) 13:06:01ID:???0658nobodyさん
2010/04/08(木) 13:06:24ID:bQ9+sypi0660nobodyさん
2010/04/08(木) 13:09:35ID:bQ9+sypiこれは良いサイト教えてもらったわ
俺も使っちゃおうとか思ってないか?
とんでもない奴らだな・・・
0662654
2010/04/08(木) 13:17:40ID:???すげーガッカリです。
> コンプライアンス・ガバナンス
こんな言葉を使ってるくせに、ソースに使用条件が書かれてると思ってるやつの相手をした自分が馬鹿だったね。
>>657
それは開発とは言わん・・・けど
昔後輩として入ってきたやつもそんなことやってたな・・・・
で、一つの関数内で、一つの値を異なった変数名で扱って、まともな動作をしなかったり・・・・
プログラムに向いてない頭としか思わなかったけど。
0663nobodyさん
2010/04/08(木) 13:23:27ID:fqmdAirfとあるPHPファイルをincludeして、その中で停止してあるクラスのインスタンスを取得したいとします。
(それを、2〜3回行います)
$name = 'hoge';
require_once($name . ".php");
$c = new $name; // ファイル名と、そのファイルで定義されているクラス名が同じというルールとします。
ただ、こうするとファイル名がかぶった時(別フォルダに、同じ名前のPHPファイルがある)に、クラス名が二重定義になってしまいます。
そこで次は、パスも含めるとします。
$name = 'hoge/are';
require_once($name . ".php");
$c = new str_replace('/', '_', $name); // スラッシュをアンダーバーに置換したものを、クラス名とします。
ただ、これをするとPHPファイルの配置場所が変わった時に、クラス名も変更する必要があり面倒です。
また、そもそもクラス名をいちいちルールにのっとって書かせるのも面倒くさがられるでしょう。
・無名クラスはつくれないのでしょうか?(調べた限り発見できず)
-------$name .php の中身---------
return class{
function hoge(){}
};
---こんな感じでインスタンスを返す---
・一度定義したクラスを、無効にすることはできないでしょうか?
クラス名を全て統一し、2度目、3度目のrequireの前に以前のクラス定義を無効化する
・クラス名を、ファイルパスなどから自動的に生成することはできないでしょうか?
class str_replace('/', '_', __FILE__){} のようなことはできませんでした
0664nobodyさん
2010/04/08(木) 13:24:07ID:bQ9+sypi>他サイトキャプチャなんて過去スレで既出
外部画像リサイズです。全然違います。
>ライセンスにはGPLって書いてあるだろ
それはコードのライセンスでしょ。
0665nobodyさん
2010/04/08(木) 13:25:27ID:fqmdAirf{
require($name . ".php");
$c = new $name;
$name = $c->run(); // 正常終了したら "" を返す。他のクラスに処理をおまかせしたかったら、そのクラス名を返す
}
こんな感じで使うことを想定しています。
0666nobodyさん
2010/04/08(木) 13:26:04ID:???お前の知識が乏しすぎるだけ。
そもそも、誰も上から目線じゃねーだろ。
お前が努力していないのを指摘してるだけ。
普通にそういうの理解してる連中は、読む努力、理解する努力をしてるの。
お前みたいに「英語嫁ねー」「機械翻訳よみずれー」なんて程度で「教えて」って騒ぐやつに細かく答えてたらきりがないんだよ。
0667nobodyさん
2010/04/08(木) 13:28:43ID:bQ9+sypiリソースとソースを勘違いしてないか?
俺が言ったのは「グーグルのリソース」でソースコードの事じゃないよ
0668nobodyさん
2010/04/08(木) 13:29:06ID:???>・ 質問者として、態度をわきまえること。
これが読めない奴は消えろ
0669nobodyさん
2010/04/08(木) 13:36:41ID:???そもそもがPHPの質問でもない
0670nobodyさん
2010/04/08(木) 13:37:48ID:bQ9+sypi663さんを一致団結して支えてください
それまでに俺の答えを用意しとくように
0671661
2010/04/08(木) 13:42:48ID:???>>670
コード読んで無かった、すまんね。
http://image-resize.appspot.com/?url=http://image.gsfc.nasa.gov/image/image_launch_a5.jpg&width=200&height=200
このurl=の部分を変えてimage-resize.appspot.com上で動かすって意味か
そのURLはあくまでもサンプルで、それ用のAPIを公開しているわけではないから一般的にNG。
使い続けても平気かもしれないけど、そもそもそのサイトが存続する保証はないからやめとけ
他サイトの画像を取得してリサイズなんてphpで簡単にできる。
file_get_contentsで画像とってきてGDかimagemagickでリサイズかければいい
リサイズ部分は「class.image.php」とか使うとさらに楽
0672nobodyさん
2010/04/08(木) 13:56:29ID:???0673nobodyさん
2010/04/08(木) 16:15:03ID:???0674nobodyさん
2010/04/08(木) 16:38:25ID:???クラスの名前とクラスのファイル名を結ぶところと
実際のクラスのインクルードしてインスタンスを返すクラスを作ったらどうですか。
あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
0675nobodyさん
2010/04/08(木) 17:18:57ID:fqmdAirfレスありがとうございます。
ちょっとおっしゃっていることが理解できないのですが…。推測で。
ファクトリークラスを作ればよい。ということでしょうか。
それでも結局クラス名をユニークにする必要がありませんか?
どんな階層(includeした中でincludeされたファイルとか)でクラスが定義されても、結局グローバル空間で定義したのと同じ扱いになってしまうようなので。
>あと、クラス名がダブる問題は、パス含めれば解決するというのは間違いだと思うけどな。
a/b_c.php
a_b/c.php
が同じになってしまうので、厳密には解決しませんね。
(ということですよね?)
0676nobodyさん
2010/04/08(木) 17:21:47ID:???そういや、return new require class();でnew require($path);とか出来ないのだろうか、
あとで試してみよっと。
0677nobodyさん
2010/04/08(木) 19:19:04ID:QzEBA4Atmysql関数を使用し、使いやすく穴もないライブラリを作成したとします。
この状態でpdo_mysqlを使用する利点はありますでしょうか?
DBはpgsqlなどに変更せず、mysql一択とします。
0679nobodyさん
2010/04/08(木) 21:36:49ID:i++uHGbD登録用フォームを作っていて、入力欄が空の時に入力を促すために
if文の中でexit("〜を入力して下さい。<a href=hoge.php<戻る</a>";としています。
ブラウザでは特別問題なく表示されていますが、ソースを見ると、当然exitのところで終了しているので、
ヘッダ部分</body></html>などはごっそり抜けてしまいます。
対象が携帯向けなのですが、exitを使用した場合なにか支障が起きますでしょうか?
0680nobodyさん
2010/04/08(木) 23:29:39ID:Ypj7nZm8ためしに作った以下のカウントスクリプトが動きません。何ででしょうか?
<?php
session_start();
if(!isset($count)) $count=0;
session_register("count");
$count++;
?>
<html>
<body>
セッション名は<?php echo session_name() ?> です。<br>
セッションIDは<?php echo session_id() ?> です。<br>
あなたは <?php echo $count ?> 回目の訪問です。
<a href="<?php echo $PHP_SELF ."?PHPSESSID=".$PHPSESSID ?>">カウントを増やす</a>
</body>
</html>
0681nobodyさん
2010/04/08(木) 23:57:17ID:???ただしsession_registerが先々使えなくなるので使わないのが吉。
検索してマニュアルに目を通せば1分で解決する。
0682nobodyさん
2010/04/09(金) 00:19:32ID:???不安なら
ob_start('footer');
function footer(){
echo '</body></html>';
}
0683677
2010/04/09(金) 00:54:25ID:2yEYSOQoプリペアド・ステートメントのキャッシュは盲点でした。
が、1コネクション毎のようなので、今のところ使う機会がほとんどなさそうです…
あえてpdo_mysqlを使う必要はないということですね。
ありがとうございました。
0685
2010/04/09(金) 02:43:58ID:CD4rw/LK$code = mb_detect_encoding($str);
$str_out = mb_convert_encoding($str,"UTF-8",$code);
とすると「」「」があるところで
Warning: mb_convert_encoding() [function.mb-convert-encoding]: Illegal character encoding specified in
となります。見た目同じなんですがコピペ検索すると互いに一方はヒットしないです。
FireFoxのアドレスバーにコピペすると□になります。
何なん?なぁ何なん?もう分からへんわ
です。教えてください。
0686nobodyさん
2010/04/09(金) 05:43:46ID:???リクエストで複数行のcookieを送ることはできないんでしょうか?
会員サイトで一度ログインしたセッションを使って再度内容を取得したいのですが、
レスポンスはcookieが2行で返ってくるのにリクエストでは1行しか送れないようでセッションが継続できず困っています。
0687nobodyさん
2010/04/09(金) 05:44:38ID:q/M4MThCリクエストで複数行のcookieを送ることはできないんでしょうか?
会員サイトで一度ログインしたセッションを使って再度内容を取得したいのですが、
レスポンスはcookieが2行で返ってくるのにリクエストでは1行しか送れないようでセッションが継続できず困っています。
age忘れたのでageます
0688nobodyさん
2010/04/09(金) 06:26:28ID:???エラーはエンコーディングの検出に失敗してるせい
毎行 mb_detect_encoding() をする意味が分からないが…
>>686
HTTP_Request2#addCookie() を2回呼ぶだけで良さそうよ
http://pear.php.net/package/HTTP_Request2/docs/0.5.1/__filesource/fsource_HTTP_Request2__HTTP_Request2-0.5.1Request2.php.html#a505
0689nobodyさん
2010/04/09(金) 06:36:59ID:q/M4MThC言葉足りず申し訳ないんですがそれだと
set-cookie: name=value; name=value
になってしまうんです
0690nobodyさん
2010/04/09(金) 06:50:36ID:???なぜHTTPリクエストに Set-Cookie が出てくる
Cookie: name1=value; name2=value なら仕様通りの動きだが
0691nobodyさん
2010/04/09(金) 06:54:45ID:q/M4MThC0692nobodyさん
2010/04/09(金) 08:12:43ID:???リクエストの際も2行で送りたいのです
現状のaddCookieに2行分を詰め込む方法などはあるのでしょうか?
0693nobodyさん
2010/04/09(金) 08:54:04ID:???nameがcookienameの話ならならname=valueを独自変換して取り扱えばいい
0694nobodyさん
2010/04/09(金) 10:20:04ID:???0695680
2010/04/09(金) 11:11:26ID:1iWtWM0xエスパー先生有難うございます。
3分かかっちゃいましたけど解決しました〜;;
0697nobodyさん
2010/04/09(金) 13:48:56ID:???0698nobodyさん
2010/04/09(金) 14:13:35ID:???えらいぞ俺
0699nobodyさん
2010/04/09(金) 15:29:21ID:Mp0D6Mthif($_SERVER['REQUEST_METHOD'] == "POST" && $_POST["text"] != "")
みたいな方法を知り合いから「するべき」と言われたのですが、
これって別にREQUEST_METHODを付けなくても良いのではないでしょうか?
if($_POST["text"] != "")
だけあれば、十分「POST[text]に値が存在するか)を調べられると思うのですが・・・
なにか理由があってREQUEST_METHODを付ける場合は、その理由を教えてください。
0700nobodyさん
2010/04/09(金) 18:35:51ID:???0701nobodyさん
2010/04/09(金) 18:40:19ID:???if( isset($_POST['example'][1]) ){
}
0703nobodyさん
2010/04/09(金) 19:35:30ID:???ほんと自由な言語だわ
0704699
2010/04/09(金) 20:04:18ID:Mp0D6Mth少し疑問に思ったのですが、>>700のってどういう場合に起こりえるのでしょうか?
外部フォームからPOSTされたとしても通らないと思うし。
「POSTされてないとき」の場面が想像できません。
0705nobodyさん
2010/04/09(金) 20:15:57ID:???0706nobodyさん
2010/04/09(金) 20:22:33ID:???クライアントからどういうデータがくるかなんてわからない
メソッドなんて自由に変えられるし、
HTML改ざんして$_POST["text"]に該当するフォームを消すこともできる
0707nobodyさん
2010/04/09(金) 20:33:09ID:???0708nobodyさん
2010/04/10(土) 09:26:10ID:3YvP476Nand でつなげられる場合、出来る限りネストを使わないほうが
処理は速くなるのでしょうか?
0709nobodyさん
2010/04/10(土) 10:14:52ID:???0710nobodyさん
2010/04/10(土) 14:30:13ID:???http://gimpo.2ch.net/test/read.cgi/nendai/1269784099/
0711nobodyさん
2010/04/10(土) 14:54:51ID:3YvP476Nありがとうございます。
同じだったとは。。
ループは重くなりやすいけど、ifのネストは関係ないのですね。
0712nobodyさん
2010/04/10(土) 15:02:37ID:3YvP476Nmb_strpos($allInfo, $key) !== FALSE
mb_strpos($allInfo, $key) == TRUE
上と下は同じと考えてよいでしょうか?
可視性から下にしたいのですが、サンプルコードが上のやり方で
書いてあることがよくあるのです。
0713nobodyさん
2010/04/10(土) 15:09:07ID:???0714nobodyさん
2010/04/10(土) 15:14:07ID:???関数の戻り値を調べれば何故そう書いているのかわかると思うんだがな
TRUEと同等値が戻ってきた時とFALSE以外が戻ってきた時
0715nobodyさん
2010/04/10(土) 15:32:22ID:3YvP476Nありがとうございます。
mb_strpos
文字列 haystack の中で needle が最初に現れる位置を数字で返します。 needle が見付からなかった場合、FALSE を返します。
と書いてあるので、trueを返すのはでく、数字で返すからこのような書き方じゃないといけないわけですね。
勉強になりました。
0716nobodyさん
2010/04/10(土) 16:58:06ID:+kV5bvKp無いならこのまま使うんですが元々あるならそっち使いたいと思いまして。
function test($arr,$str){
foreach ($arr as $a){
if( strpos($str,$a) !== FALSE )
return TRUE;
}
return FALSE;
}
0717nobodyさん
2010/04/10(土) 17:20:07ID:Q/DxsTmSWarning: 〜 in /home/aaaa/aaaa.php on line 337
みたいにエラーが表示されますが、これを隠すことは出来ますか?
例えば、「エラーが発生しております」のような別の文言にカエルのでもOKです。
0718nobodyさん
2010/04/10(土) 17:29:37ID:???strpos(implode($arr), $a)
でいいんじゃない?
>>717
エラー制御演算子
error_reporting
display_errors
trigger_error
とか
0719nobodyさん
2010/04/10(土) 17:31:25ID:???0720nobodyさん
2010/04/10(土) 17:41:00ID:Q/DxsTmSエラー制御演算子初めて知りました
ありがとうございます
0721nobodyさん
2010/04/10(土) 19:18:53ID:+kV5bvKpそれは結果が違ってくると思います。
おそらく preg_match('/'.implode('|',$arr).'/',$str) > 0 もできないことはないですが
正規表現使わず配列で解釈させたいので>>716のような関数がないのならあのまま使うことにします。
0723nobodyさん
2010/04/11(日) 02:16:00ID:???function test($arr,$str){
foreach ($arr as $a){
if( strpos(implode($arr),$a) !== FALSE )
return TRUE;
}
return FALSE;
}
じゃわけわからんし
function test($arr,$str){
if( strpos(implode($arr), $str) !== FALSE )
return TRUE;
return FALSE;
}
のつもりだったとしてもおかしいだろう
0725nobodyさん
2010/04/11(日) 02:29:55ID:???0726nobodyさん
2010/04/11(日) 02:37:29ID:???$arr[0] = 'ab'
$arr[1] = 'bc'
で、abを検索するとマッチしちゃうようになると思うよ。
0728nobodyさん
2010/04/11(日) 02:49:16ID:???$arr = array('AA','AB','AC');
var_dump(
// AA,AB,ACのどれかが ABC内にあれば真→○
test($arr, $str),
// AAABAC が ABC内にあれば真→×
strpos(implode('',$arr),$str)!==FALSE
);
function test($arr,$str){
foreach ($arr as $a){
if( strpos($str,$a) !== FALSE )
return TRUE;
}
return FALSE;
}
求めてるのは上の機能であって下のではないんでないの。
配列の値から文字列探索すんなら in_array array_search 使えばいいだけだし。
0729nobodyさん
2010/04/11(日) 03:45:47ID:???配列の中身を全部連結したものに対して検索すればいいんでない?っていう。
0730nobodyさん
2010/04/11(日) 07:03:55ID:???パラメータが逆だし
strpos(implode($arr), $str)だと境界がなくなるので結果が変わるっていうことでしょ
絶対に使いそうもない文字をはさんで文字列を作ればOK
strposはバイナリデータOKなので例えば
strpos(implode(0x00,$arr), $str)
0731nobodyさん
2010/04/11(日) 08:06:03ID:???注意: implode()は、歴史的な理由により、引数をどちら の順番でも受けつけることが可能です。
0732nobodyさん
2010/04/11(日) 10:01:49ID:3X2bc6FOいちいち設定ファイル以外のメインスクリプトでdefinedで定数をチェックして、
なかったら定義したりしてますが、
あれはユーザーが定数を設定するとき削除したりコメントアウトしたり、
予期せぬことをしたときの対策にやっているのでしょうか?
もしそうなら個人的にはそんな勝手にいじるなら動かなくて当たり前ですよ的なスタンスでいいと思うのですが、
何か他に意味はあるのでしょうか?
0734nobodyさん
2010/04/11(日) 10:39:38ID:???DB基礎本読んで正規化を学んだんですが、
PHPのサイトや最近流行のPHP+MYSQL本を読んでも、外部キーや参照の話って全くありません。
重複した値があるフィールドは別テーブルにするとか、正規化しても
外部キーとかつかった実例が紹介されてないので、実装していいものか悩みます。
PHP+MYSQLで外部キーや参照を使わない理由ってあるのでしょうか?
0735nobodyさん
2010/04/11(日) 10:40:06ID:xQs0jEVq0736nobodyさん
2010/04/11(日) 11:25:37ID:???0737nobodyさん
2010/04/11(日) 11:49:58ID:xQs0jEVqたぶんわかってません。
0738nobodyさん
2010/04/11(日) 12:36:15ID:???0739nobodyさん
2010/04/11(日) 12:58:23ID:???MySQLのデフォルトストレージエンジンMyISAMが外部キー制約をサポートしなかったり、
制約自体がデータの不整合を減らすための仕組みなだけなので
面倒くさがりな入門書なら省いちゃうかもね
パフォーマンスのためにあえて使わないケースもあるけど
よく分からないから使わない、はNGだねぇ
0740nobodyさん
2010/04/11(日) 13:11:36ID:???0741nobodyさん
2010/04/11(日) 14:11:50ID:8e9aaJ3F0742nobodyさん
2010/04/11(日) 14:12:44ID:???0743nobodyさん
2010/04/11(日) 14:13:09ID:???0744nobodyさん
2010/04/11(日) 14:20:27ID:???0745nobodyさん
2010/04/11(日) 14:33:37ID:xQs0jEVq10年手ばっかり動かして学んでこなかった結果、場当たり的なプログラミングしかできない奴に育ってしまったので
基礎学んでます。
>>739
RDBなのに全然リレーショナルしない話ばっかで、なんか使わない理由あるのかな?ってすごい不思議です。
DB本だとかならず正規化するといいよ!って話がでるのに。
入門書だけでなく、本屋にあるPHP本全部みても話題にでてないし、ぐぐっても解説してるところがほとんどないもので・・・
参照してるやつは消せないとか、具体的な実装例とかそういうのみたかったのですが、自分で試すしかない感じです。
>>741
strposとかpreg_matchとか
0746nobodyさん
2010/04/11(日) 14:43:20ID:???DB本で正規化のこと学んで、PHP本でAPIの使い方学べば、あとは自分で正規形のDBを操作するPHPアプリ作れるだろ
0747nobodyさん
2010/04/11(日) 14:47:32ID:xQs0jEVq0748nobodyさん
2010/04/11(日) 14:51:14ID:???ここの連中はバカとはさみは使いようって感じで情報聞き出せればおk程度に思っといたらいいよ
丁寧に聞いてるとなかなか言わないからな、天邪鬼だから。
例えば間違いをわざと誇張するとかオススメ。
自信満々なアホが釣られて正しく答えてくれる。
0749nobodyさん
2010/04/11(日) 14:53:59ID:???0750nobodyさん
2010/04/11(日) 14:57:52ID:???自分で調べた方が速いよ。
>>746とかいい例。
質問の意味を理解してない。
0751nobodyさん
2010/04/11(日) 15:01:52ID:???■ このスレッドは過去ログ倉庫に格納されています