【PHP】下らねぇ質問はここに書き込みやがれ 26
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/08/07(月) 13:11:50ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0176nobodyさん
2006/08/09(水) 23:27:13ID:???もう一度こちらに書き込みさせていただきます。(マルチになって申し訳ありません)
399 名前:デフォルトの名無しさん[sage] 投稿日:2006/08/09(水) 23:17:17
こんなことを質問できる場がここしかないので、どうかご教授願いたいです。
実験でHTMLのテキストフィールドから直接SQL文を入力させてDB(MySQL)を操作したいんですが、、
例えばHTMLの入力フォームから
select * from [テーブル名] where ID='06A00012'
などと入力すると、phpで受け取った値は
select * from [テーブル名] where ID=\'06A00012\'
となってしまい、SQL文に余計なものがついてSQLの構文エラーとなってしまいます。
phpのstrtr関数で文字を置き換えようとしても上手くいきません。
(\をなんとか消しても、今度は "(ダブルコーテーション)に置き換わってしまいます。)
どなたか、¥の消し方をご存知の方がいましたら、お願いします。。。
0178176
2006/08/09(水) 23:41:17ID:???0179109
2006/08/09(水) 23:53:52ID:XkNwEDtZなるほど。。
ありがとうございます。
0180176
2006/08/10(木) 00:18:11ID:???if($inpo==1){
$okki = stripslashes ($inpo);
}
print $okki. "マンセー";
↓こんなスマートなやりかたもありました。
if (get_magic_quotes_gps()){
$comment = stripslashes ($comment);
}
本当にありがとうございました。
0181nobodyさん
2006/08/10(木) 00:20:57ID:???gpc()←訂正
まだまだ、先は長そうだ。
0182nobodyさん
2006/08/10(木) 00:32:47ID:9+xl79/rブラウザで表示したいんですけど、それが載っているサイトや
書籍ってありますか?例えば、ffftpの左半面のようなものを
イメージしています。用途が幅広いので、どこかに公開されている
と思うのですが・・・。どなたか、お教え下さい。
0184nobodyさん
2006/08/10(木) 01:18:40ID:???いや、出来るんじゃないか?
まぁ、その表示したものを消したりとかってなると無理な部分があまりにも多い
だろうけど。
見るだけならある程度できそう
0187nobodyさん
2006/08/10(木) 01:29:43ID:???できるんじゃないか?
0188nobodyさん
2006/08/10(木) 01:34:04ID:???Client側のファイル一覧どうやって取るんだってことだよ。
0189nobodyさん
2006/08/10(木) 01:35:13ID:???0191nobodyさん
2006/08/10(木) 01:48:26ID:DcRBPcvMサーバ側から、クライアント側のディレクトリ構造を・・・という話です。
phpで、サーバにクライアントのファイルをアップロードするシステムが
あるくらいだから、何とかできないものかと思ったのですが・・・。
0193nobodyさん
2006/08/10(木) 02:04:48ID:???そうなっちゃうとPHPだけじゃ無理だな〜
でも、その着眼点は良いんじゃない?今PHPでは実現不可能って分かったんだから
じゃあ、ほかの言語で代用しちゃえってなもんだ。
今ならpythonが熱いぞ!PHPみたいなスクリプト言語だがデスクトップアプリも作れる。
下手したらVBよりも簡単だしな
0194nobodyさん
2006/08/10(木) 02:07:12ID:???ファイルのアップロードはブラウザの機能。
しかもHTMLレベルじゃセキュリティ上アップロードはかなり制限されてる。
クライアントサイドでActiveX走らすとかそういった手しか無いだろうね。一言で言うと>>183
0195nobodyさん
2006/08/10(木) 02:08:31ID:???クライアントがサーバなら出来るなw
お前のサーバからクライアント(サーバ)にリクエスト投げて、クライアントが
PHPとかでデータを取得してXMLなりなんなりでお前のサーバに結果を返す。
で、お前側サーバでそれをCSSで綺麗に整えれ幸せになれます。
0196nobodyさん
2006/08/10(木) 02:11:46ID:???無い。
アップロードはブラウザにファイルから送信データを生成させる仕組みが規定されてるが、
セキュリティ的に危険なためそれ以上のクライアントファイル操作は全て禁止が原則。
クライアント上で動くJavaScriptでも基本的にはクライアントのファイルには触れない。
回避手段があるとすればActiveXを使う手だろうね。パソコン側に半自動でプログラムを
ダウンロード・インストールさせ、それを実行するような仕組みが必要。PHPだけではどうしようもない。
ActiveXならがんばりゃオンラインウイルススキャンなんて仕組みも作れるのでかなり色々できる。
ただし、WEBの標準的な機能ではなくWindowsの機能を利用する形になるため、
使えるOSとブラウザが著しく制限される。
また、セキュリティ的に非常に危険な仕組みなので、クライアントの設定によっては拒否される。
0197nobodyさん
2006/08/10(木) 09:00:08ID:???smartyというものは使った方がいいんでしょうか?
PHPやってるならsmartyくらいは使えないとって感じなら勉強するつもりなんですが
そうでもないなら回避しようかなと思ってるんですが
0199nobodyさん
2006/08/10(木) 09:38:53ID:???Smartyみたいな汎用志向のテンプレート機能は
デザイナーとプログラマーが分業してる場合など
多人数で開発する際に大きな効果を発揮する。
逆に言うと、個人でやってる分には意義を見出しにくいものでもある。
(規模が大きくなってきたり、同じプログラムでデザインの差し替えを
多用するようになったりすると便利さを感じる場面も出てくると思うけど)
ってことで、とりあえずは無くてもいいものだと思う。
今後、プロになりたいと思ってるならスキルの1つとして覚えといてもいいけど。
0200nobodyさん
2006/08/10(木) 10:18:56ID:???PerlのHTML::Templateのような、単純なテンプレートを知りませんか?
Smartyほどの機能は不要なのですが。
0201nobodyさん
2006/08/10(木) 10:33:24ID:???簡単なテンプレなら自作が一番。
デザイン済みのHTMLソースに変数をはめこんで、
それをヒアドキュメントにして拡張子.phpにしてincludeすればいい。
0204nobodyさん
2006/08/10(木) 11:08:20ID:ftKUYt4P見つからないので多目に見てください。
MySQLのフイールド「unko」に
こんなのが入ってるとします(1行を1レコードとしてください)
1_123
10_376
4_432
11_543
5_982
これを
1_123
4_432
5_982
10_376
11_543
のようにソートしたいのですが
order by unko
だと、
1_123
10_376
11_543
4_432
5_982
となってしまいます。
設計から見直せと言われそうですが、なにかいい方法はありませんか?
0206nobodyさん
2006/08/10(木) 11:13:59ID:???0208nobodyさん
2006/08/10(木) 11:27:55ID:???0209nobodyさん
2006/08/10(木) 11:56:07ID:Zt0pUlM3スレ違い以前に板違いでしたか、すいませんでした。
>>208
どうもです、完璧ですた。
助かりました。
0210nobodyさん
2006/08/10(木) 12:10:55ID:???いや、なんかスレの内容が随分レベル高いなぁーっと思いまして。
それと質問なんですが、ECサイトの構築を覚えたいとずっと考えていまして、言語はPHPに決めました。
PHPと組み合わせるDBで特に易しいもの等はあるんでしょうか?
どれでも一緒ならPHP+MySQLで勉強を始めようと思っています。
0211nobodyさん
2006/08/10(木) 12:19:25ID:???> いや、なんかスレの内容が随分レベル高いなぁーっと思いまして。
いや…ちょー低いだろ…_| ̄|○
> PHPと組み合わせるDBで特に易しいもの等はあるんでしょうか?
MySQLは特に易しいよ。機能少なめでかつ高速で。あんまり悩む必要がない。
0212nobodyさん
2006/08/10(木) 12:33:05ID:83OIGtylすると、本文の最初に
mime-version:1.0
content-type:text/plane;carset-ISO-2022-jp
content-transfer-encoding: 7bit
という文字列が付加されました。
これを取り除くにはどうしたらいいでしょうか?
$to = 携帯のアドレス
$subject = "タイトルです。";
$msg = "内容内容内容";
$header = "From: PCのアドレス";
みたいな感じになっています。上の文字列は内容内容内容の前に付いてしまいます。
携帯はdocomoでしか確認していませんが、mova、fomaとも同じ結果です。
0213nobodyさん
2006/08/10(木) 12:37:32ID:???関数へ渡してる部分も含めてもう少し全体を見せれ。
多分、どっかに余分な改行がある。
メールのヘッダーと本文は1行の空行で区切られてるが、
ヘッダーの途中に空行が余分に入ったことでヘッダー後半が
本文扱いになってしまってるわけだ。
0214nobodyさん
2006/08/10(木) 12:38:11ID:???ソース中によくreturn文を使っているのを見るのですが、
どういうときに使っているのか、何をしているのかがよく理解できません。
マニュアルを見てもいまいちピンとこないのですが、
これはPHPを学ぶ上で必須となるものでしょうか?
0215nobodyさん
2006/08/10(木) 12:46:16ID:???クラス以前の問題
0219nobodyさん
2006/08/10(木) 13:04:06ID:83OIGtylレスありがとうございます。
試しに必要な部分だけ抜き出して実行してみましたが、結果は同じです。
<?php
mb_language("ja");
mb_internal_encoding("SJIS");
$to = "携帯のアドレス";
$from = "PCのアドレス";
$subject = "お問い合わせがありました。\n";
$header = $from."\n";
$msg = $header."さんからお問い合わせがありました。";
mb_send_mail($to, $subject, $msg, $header);
?>
どうでしょうか?
0220nobodyさん
2006/08/10(木) 13:05:03ID:???文字コードをEUCにすると他の文字が文字化けする。
どうすればいいの?
0222nobodyさん
2006/08/10(木) 13:10:35ID:oKJYDnYFどうやって?
0223nobodyさん
2006/08/10(木) 13:15:11ID:???mb_internal_encoding("SJIS");
これがまずいんじゃない?
たしか内部エンコードSJISは使えなかったはず。
UTF-8かEUC-JPでやるとうまくいくと思う。
0225nobodyさん
2006/08/10(木) 13:21:15ID:???PHPで動作しないと思われる文字エンコーディングの例を以下に示します。
JIS, SJIS, ISO-2022-JP, BIG-5
これらのエンコーディングで書かれたPHPスクリプトは、 特に符号化された文字列がスクリプトで記述子やリテラルに使用される場合には、 動作しない可能性がありますが、
入力されるHTTPクエリに関して mbstringの透過的なエンコーディングフィルタを 設定することでこれらのエンコーディングをほとんど使用しないようにすることが できます。
SJIS使いたければ、内部エンコードUTF-8とかにして出力時に自動変換がお勧め
0226nobodyさん
2006/08/10(木) 13:27:35ID:???-------- .htaccess --------
php_flag output_buffering On
php_value output_handler mb_output_handler
php_value default_charset UTF-8
php_flag mbstring.encoding_translation Off
php_value mbstring.http_input auto
php_value mbstring.http_input UTF-8,SJIS,EUC-JP,JIS,ASCII
php_value mbstring.substitute_character none
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_output UTF-8
php_value mbstring.language Japanese
---------------------------
出力をSJISにしたいときは
php_value mbstring.http_output SJIS
とする
0227nobodyさん
2006/08/10(木) 13:33:18ID:???> $subject = "お問い合わせがありました。\n";
の."\n"を外せ。
「改行コードが余分だ」と言ったのに何を聞いてたんだ。
ttp://www.php.net/manual/ja/function.mail.php
> subject
> 送信するメールの表題。
> 注意
> 改行を含んではいけません。含めてしまうとメールが正しく送信できません。
0229nobodyさん
2006/08/10(木) 14:15:48ID:83OIGtylレスありがとうございます。
教えて頂いた内容を試しましたが、だめっぽいですorz
mb_internal_encoding("UTF8");としてみましたが、
あいかわらずヘッダー情報のようなものは出力されます。
\nはあまり関係が無いようでした。
以下のようエンコードをUTFにして各変数の中身を空っぽにして
送信したところ、そのいらないヘッダー情報だけが本文として送られてきてしましました。
<?php
mb_language("ja");
mb_internal_encoding("UTF8");
$to = "携帯のアドレス";
$from = "PCのアドレス";
$subject = "";
$header = "";
$msg = $header."";
mb_send_mail($to, $subject, $msg, $header);
?>
上から2行のmb関数の行を削除して送信してみたら、
mime-version:1.0
content-type:text/plane;carset=utf8
content-transfer-encoding: base64
これの最後の行がbace64になったという以外、大きな変化はありませんでした。
0230nobodyさん
2006/08/10(木) 14:16:46ID:83OIGtyl0231nobodyさん
2006/08/10(木) 14:25:41ID:???どのような関数で取得できるでしょうか?
下らない質問で申し訳ありませんがお願い致します
0232nobodyさん
2006/08/10(木) 14:26:53ID:83OIGtylttp://blog.itoy.jp/archives/20050108_0133.php
本家のURLは移動したっぽくて確認できませんでしたが、ドコモ的な仕様っぽいです。どうにもならないでしょうか?
0233nobodyさん
2006/08/10(木) 14:28:34ID:???<?php
mb_language("ja");
mb_internal_encoding("UTF8");
$to = "hogehoge@hoge.hoge";
$from = "hogehogehoge@hoge.hoge";
$subject = "てすとサブジェクト";
$header = "From: " . $from;
$msg = "本文";
mb_send_mail($to, $subject, $msg, $header);
?>
0234nobodyさん
2006/08/10(木) 14:37:03ID:83OIGtylありがとうございます。
ドコモ以外のキャリアをお使いですか?
ttp://www.nttdocomo.co.jp/info/spam_mail/if/index06.html
オフィシャルな情報をみつけました。
携帯に通知するようなサービスは結構あると思うのですが、どうやってやっているのでしょうか。
0237nobodyさん
2006/08/10(木) 15:30:32ID:???サブスクライバIDって書いていることはAU限定だろうから
>>236 の方法か getenv() を使えばいいよ
0238nobodyさん
2006/08/10(木) 15:37:30ID:???山ほど例が出そうな気がするが
0240hage
2006/08/10(木) 15:47:18ID:GpwygKMQどうしても"''"になってしまう。回避法ご存知のかたいらっしゃいます?
$apo = mb_convert_encoding("'",'UTF-8','EUC-JP');
0243nobodyさん
2006/08/10(木) 16:45:42ID:???松田さん、こんにちは。
こちらの環境(php4.4.2)でも確認できませんでした。
そもそも、半角の ' に文字コードが関連するとも思えませんし。
0244nobodyさん
2006/08/10(木) 16:54:41ID:kXNrpO55HTMLファイルを取得したいと思います。
ソケットオープン
↓
ヘッダー送信
↓
データ受信
という流れになるんですが、
その際に、
ユーザーエージェントを携帯端末にしたいと思います。
たぶんheaderで指定する必要があるんだと思うんですが、
誰かサンプルソース持ってないでしょうか?
0245nobodyさん
2006/08/10(木) 17:11:12ID:???0246hage
2006/08/10(木) 17:13:02ID:GpwygKMQどうも、すみません。私の勘違いでした。前処理で、余計なことしてて
気づかなく、ハマッました^^;
0247nobodyさん
2006/08/10(木) 17:17:46ID:???php の公式にサンプルがあるよ
http://jp2.php.net/manual/ja/function.fsockopen.php
0248nobodyさん
2006/08/10(木) 17:21:56ID:???0249nobodyさん
2006/08/10(木) 17:31:33ID:???0250nobodyさん
2006/08/10(木) 22:05:54ID:???上記のページ(W3C勧告私的日本語訳)で、「1つのフォームで複数のチェックボックスが同じコントロール名を共有してよい。こうしたチェックボックスは、例えば、ユーザが1つのプロパティについて複数の値を選ぶことを許容する。」とありますが、
例えば以下のようなformを作って送信すると、
<input type="checkbox" name="q" value="1">
<input type="checkbox" name="q" value="2">
<input type="checkbox" name="q" value="3">
確かに「q=1&q=2&q=3」というリクエストが送信されます(IE、Firefoxともに確認済み)。しかし、これをサーバサイドでPHPで受け取って print_r($_POST) とかで表示すると、
Array
(
[q] => 3
)
のように q の値は 3 のみになっています。これはPHPの仕様がW3Cの勧告に即していないということでしょうか?
0251nobodyさん
2006/08/10(木) 22:10:12ID:???<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
でお願いします。
0252nobodyさん
2006/08/10(木) 22:17:30ID:???一応こうならば何とか動くけど。
<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
0253252
2006/08/10(木) 22:19:59ID:???0254nobodyさん
2006/08/10(木) 22:20:09ID:???0256nobodyさん
2006/08/10(木) 22:42:35ID:???なぜでしょうか?
0258nobodyさん
2006/08/11(金) 01:07:57ID:???文字コードはちゃんと判別してると思います。(たまに?になるだけですので)
mbstring.substitute_character はnone,long,12307と変更してみましたが
やはり1文字で検索するとたまに?になってしまいます。
0259nobodyさん
2006/08/11(金) 01:13:14ID:???1文字だと誤判別しやすいんだよ。>>257の言ってるのはそういう指摘だと思う。
文字コード自動判別にはある程度の字数がないと正確に判定できないのだ。
0260nobodyさん
2006/08/11(金) 01:39:59ID:???0261164
2006/08/11(金) 03:07:29ID:???すいません、そこはここで質問する時にキーを打ち間違えたんです。
「function」ですね、お恥ずかしい。
やりたいことはようはXMLで読み込んだオブジェクト?($xml->itemみたいな)
を引数にして関数に渡して、そっちで処理したい、ってことなんですが、
まだできません。
引き続きどなたかアドバイスなどいただけたらと。
0263nobodyさん
2006/08/11(金) 04:36:07ID:???試したことないのであてずっぽだけど、引数をリファレンスで渡してみたらどうよ?
$xmlを丸ごと渡すなら分かるけど、$xml->itemとかいう渡し方をした場合、
$xml->itemの中で$thisとして$xmlのメンバ変数を参照しようとしたとき
$itemしかコピーされてないと正常動作しようがないんじゃないか?って気がした。
0264nobodyさん
2006/08/11(金) 05:20:15ID:???間で処理が遅れる事があるだろうと思うので、少し増えたりするのはうなずけるんですが、
試してみたところ、ある環境では引数に指定した値のの約3倍ずつ待っていたり
またある環境では引数に指定した値より待ち時間が少なかったりしました。
どなたかご存知でしたら教えてください。
0265nobodyさん
2006/08/11(金) 07:28:05ID:???<?php
$time1 = microtime();
usleep(3);
$time2 = microtime();
list($m1, $s1) = explode(" ", $time1);
list($m2, $s2) = explode(" ", $time2);
echo $m2 - $m1;
?>
これを繰り返したけど0.003〜0.01程度とばらばら(Win32, PHP5.1.4, Pentium D 930)
CPUのスペックや同時に動いているプロセスの数や種類などでかなり差が出るとは思われる
0266nobodyさん
2006/08/11(金) 09:36:05ID:???$time1 = microtime();
$time2 = microtime();
というふうに連続でやってもマイクロ秒付近の偏差はでるんだから、usleepのせいってわけじゃなくね?
0267nobodyさん
2006/08/11(金) 11:15:29ID:???0268nobodyさん
2006/08/11(金) 12:11:15ID:???The usleep() function suspends execution of the calling process for (at least) usec microseconds.
The sleep may be lengthened slightly by any system activity or by the time spent processing the call or by the granularity of system timers.
>>264
最低、引数の時間は止まるので少なくなることはない
0269nobodyさん
2006/08/11(金) 12:14:53ID:???$a = array(1,2,3,);
この最後のカンマってあってもいいのでしょうか?
echo count($a);
とすると 4 になるかと思ったら 3 になりました。
マニュアルのどこかに載ってますでしょうか?
0272nobodyさん
2006/08/11(金) 15:53:56ID:???0273nobodyさん
2006/08/11(金) 16:21:47ID:???0274nobodyさん
2006/08/11(金) 17:20:55ID:???エラーでなかったよ
int main(void)
{
char a[] = {1, 2, 3, };
return 0;
}
0275nobodyさん
2006/08/11(金) 17:47:27ID:???http://jp.php.net/manual/ja/function.array.php
一般的ではないですが、 最後に定義された配列エントリの後に
続くカンマがある場合、 これは有効な構文です。
配列要素を修正した時とかに最後のカンマの消し忘れても
エラーにはならない対応なんだろうけど
一般的じゃないと書かれている以上、消し忘れでない限りは
つけない方が個人的にはいいと思う
■ このスレッドは過去ログ倉庫に格納されています