【PHP】下らねぇ質問はここに書き込みやがれ 55
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/09/29(土) 18:35:56ID:YlkpEUW6PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 54
http://pc11.2ch.net/test/read.cgi/php/1189309377/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0183nobodyさん
2007/10/02(火) 18:42:20ID:???全然問題なく化けないぜ
>>179
とりあえずお前はググる能力を身につけような
EUC-JPなんかじゃ、SoftBank(3G, SH系除く)は絵文字送信ができないぜ
0184nobodyさん
2007/10/02(火) 19:12:06ID:???includeする際の検索順序、ファイル分割する事によるメモリへの貢献、OS自身のディスクキャッシュ、HDD自体のキャッシュ etc.
色んな影響があるので、実際に試してみるのが一番いい。
0185nobodyさん
2007/10/02(火) 19:21:42ID:???179だけど、PCと同じページを作ってるから特殊記号入れられないように排除してるんだよ
だから絵文字の処理なんかは必要ない
ググってもShift_JISでないとキャリアが対応してないとか、絵文字がどうのとかしか
出てこないけど、今の時代Shift_JISでなくても閲覧できるし、絵文字とかわざと排除してるから
他に叩かれるような覚えはないんだよねぇ
それ以外でEUC_JPで作ってたら真性バカの烙印押される理由が知りたい
0186nobodyさん
2007/10/02(火) 19:33:59ID:???それでどこにも存在しないファイルを検索すると重くなると思うけど、
最初の方のパスで大半が検索Hitしてる分には特に重くならないかと。
でもパス6つくらいなら全然普通のレベルだと思うけどね。
0187nobodyさん
2007/10/02(火) 19:35:32ID:???とりあえずEUC-JP非対応のキャリア、機種くらいは判定して
そこだけSJIS出力に切り替えてやれば?
それしないで「一部機種が対応してるからそれで通す」はバカだと思うけど。
0188nobodyさん
2007/10/02(火) 19:40:14ID:???functionにするかしないかはシステムの規模によるかな。
あんまりにも小規模ならわざわざfunctionにしない。
でも中規模以上なら関数化しといた方が後で楽。
0189nobodyさん
2007/10/02(火) 20:13:22ID:???なるほど
つまりまともに閲覧できてない機種があるってことなんだね
docomoもvodaphoneも知人の持ってるauもいけてたから
見れてないのはないもんだと思ってたわ
html生成方式だからSJISにするのは簡単なんだけど、そういうことだったのね
でも本当に見れてないんだろうか?・・・
0190nobodyさん
2007/10/02(火) 20:38:39ID:???0192nobodyさん
2007/10/02(火) 21:26:27ID:???0193nobodyさん
2007/10/02(火) 21:31:10ID:???0195nobodyさん
2007/10/02(火) 22:47:05ID:???UTF-8からISO-2022-JPに変換すると半角カナが??なる
ってんで電子メイル絡みの話題かと思っていた
唐突に>>165がEUC-JPとか1日に50万アクセスとか言い出した
「なに言ってるんだ、こいつ?」
現れる必然性が俺には理解できねえ
まるで鈍器で頭を強打されたくらいの衝撃を受けた
で…ここはPHP絡みの雑談するスレだっけか?
どうも認知症の進行著しく自分がどこにいるのかもわからねえ
0196nobodyさん
2007/10/02(火) 22:54:37ID:???perlではShift_JIS使ってうまくいってたけど、phpではそんな不具合があって
ちょうどphpの文字コードの話が出たからなんかの足しになればと思って書き込んだだけだけど
それがみんなの気分を悪くしたみたいだね
もう書き込まないから安心してください、でわでわ
0197nobodyさん
2007/10/02(火) 23:06:23ID:???いや気分悪くなんてしてないから
釣りと間違われないよう華麗にリードすればいいから
では次の患者さん どうぞ
0198nobodyさん
2007/10/03(水) 01:44:33ID:???0200nobodyさん
2007/10/03(水) 02:00:16ID:???0201198
2007/10/03(水) 04:20:36ID:???echo mklover("美代ちゃん");
?>
上記のコードを実行させてみると以下のようなエラーがでました。
Fatal error: Cherry boy cannot use function mklover() in /var/www/html/cretateGirlFriend.php on line 2
どうすれば良いでしょうか?
0203nobodyさん
2007/10/03(水) 04:35:16ID:???トリミングしてくれるライブラリや関数は無いだろうか?
一応、gdやImagick、MagickWandの関数を調べたり実際に試したりしてみたんだが、どうも見当がつかない・・・・・・
いったんjpgに分割してトリミング後に再結合とかはできるみたいだけど、
それだと結局、delay値取得するためにヘッダを解析しなきゃならなそうでなあ。
もし何か良い方法知っていれば教えて欲しい。
0205nobodyさん
2007/10/03(水) 09:35:05ID:I/i9laybを入れないとValidは通るのですが入れろといわれるので、入れると
エラーがでるのでechoに入れてみるとページすべてでエラーになります。
<?xml version = "1.0" encoding = "utf-8"?>の部分をヒアドキュメントに入れても
同じようにエラーが出ます。
phpページでValidを通す時みなさんはどうしてますか?
本体のページはTransitionalで
<?xml version = "1.0" encoding = "utf-8"?>はいれずに通ります。
問題があるのがCompact HTMLの携帯ようサイトです。
0207nobodyさん
2007/10/03(水) 10:02:24ID:???でダメだったって事?
0208nobodyさん
2007/10/03(水) 10:10:37ID:???xml宣言の<?とphp宣言の<?がかぶってしまうため起こる問題でしょ?
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; ?>
とviewの1行目に入れればいいんじゃない
0209nobodyさん
2007/10/03(水) 10:26:22ID:???それならechoやヒアドキュメントではエラー出ないだろ。
根本的にどっかPHPの構文間違ってるんだよ、多分。
0210nobodyさん
2007/10/03(水) 10:37:07ID:xx+cFlmVPHPのmb_send_mail関数を使ってメール送信をしているのですが、届くドメインと届かないドメインが
あり困っています。
サーバーはロリポップを使っているのですが、
お聞きしたいのはメールサーバのログの見方です。
ググってみたりしたんですが、方法が良くわかりませんでした。。。
OSは、macOSX 10.4.10です。
どなたか、宜しくお願い致します
0212nobodyさん
2007/10/03(水) 10:45:07ID:???macってクライアントが?
クライアントは関係ないんじゃないの?
ロリポのメールサーバが何使ってるか知らないけど
サーバ側のシステムログなんてサーバ管理者しか普通見れないよ
0213nobodyさん
2007/10/03(水) 10:53:12ID:xx+cFlmVそうなんですね。ありがとうございます。
できればmail()の利点をご教示頂けますでしょうか。。。
>>212
クライアントがmacです。
ロリポップはqmailというメールサーバを使っている様です。
色々調べてみたら、メールが届かない時はとりあえず
メールログを見ろと書いてあるところが多かったもので。。。
0214nobodyさん
2007/10/03(水) 11:06:01ID:???オッパッピ?
0215nobodyさん
2007/10/03(水) 11:36:14ID:zZ6Mc9LXたとえばメニューを登録するプログラムがあって、 menu と priceの2種類のフィールドを
DBが持ってるとします(それと自動インクリメントのID)。
これに対して、登録用フォームで3つのメニューを一度に登録したい時、
どういう処理をしたらいいんでしょう?
メニュー1:<input type="text" name="menu"> <input type="text" name="price">
メニュー2:<input type="text" name="menu"> <input type="text" name="price">
メニュー3:<input type="text" name="menu"> <input type="text" name="price">
これじゃダメですよね?
それぞれにユニークのフィールドを持たせるのが一番無難かもしれないですが、
なんかイヤなので…(実際には3つでなく任意の数にしたいんです)
1メニューずつ追加登録してくのがいいんでしょうか?
それとも、上記のやり方でも解決できるPHPのくみ方があれば
教えて欲しいです。
よろしくお願いします。
0217215
2007/10/03(水) 12:33:24ID:zZ6Mc9LXごめんなさい どういうことでしょう?
HTML側は上に書いた通りでよくて、PHPで用意したmenu配列とprice配列に
入れるってことですか?
DBへの登録はmenu[0]〜menu[N]までループで処理??
そんなことできるのかな? 大雑把にでも教えてもらえれば嬉しいです。
0218nobodyさん
2007/10/03(水) 12:41:59ID:???menu[0]〜[2]
price[0]〜[2]
みたいに振り分ければ?
>そんなことできるのかな?
プログラムは「できるかな?」じゃなくやってみるんだ
やるまえに「できるかな?」と尋ねると進歩しない
0219nobodyさん
2007/10/03(水) 12:43:16ID:???mb_send_mail()はmail()のwrapperだよ
mail()にマルチバイト文字変換処理を付加したもの=mb_send_mail()
よってメイル送信前の処理は全て自前で行わなければならない
0221nobodyさん
2007/10/03(水) 12:47:42ID:???レンタルサーバを利用している時点で貴方が掌握できるのは
PHPで作ったプログラム(フロントエンド)の部分だけ
バックグランドで何が起きているのか知る術は無いから諦めろ
0222nobodyさん
2007/10/03(水) 12:58:51ID:???そうだねぇ、自分で全て面倒みれる人ならmail()の方が良いかも
mb_send_mail()はSubjectと本文しか処理しないしね
例えば"おいら<[email protected]>"ってヘッダにつけると
"おいら"が化けるから予めMIME処理しなけりゃならん
結局、手間はたいして変わらなくなる
0223nobodyさん
2007/10/03(水) 13:03:01ID:???0224213
2007/10/03(水) 13:59:15ID:xx+cFlmV>>221さん
ありがとうございます。大変勉強になります。
今ロリポップのサーバーからテスト運用しているのですが、
独自ドメインとgmeilの方へは送信できるのですが、
yahooアドレスや携帯のアドレスへ送信しようとすると
デーモンよりfailure noticeとして帰ってきます。
<=?ISO-2022-JP?B?省略[email protected]>:
Sorry, no mailbox here by that name. (#5.1.1)
と、宛先が文字化けしている様です。
0225213
2007/10/03(水) 14:02:17ID:xx+cFlmV以下にコード晒します。
mb_language("Ja");
mb_internal_encoding("UTF-8");
$mailfrom = mb_encode_mimeheader($name)."<".$email.">";
$mailto = mb_encode_mimeheader("[email protected]");
$subject = "WEBサイトよりお問い合わせです。";
$content = wordwrap($content, 70);
$header = "To: <{$mailto}>\r\n" .
"From: {$mailfrom}\r\n" .
"X-Mailer: PHP/" . phpversion();
$param = "-f" . $email;
if (mb_send_mail($mailto, $subject, $content, $header, $param))
{
echo("メール送信完了しました。");
} else {
echo("メール送信に失敗しました。");
}
$email,$nameはフォームからの入力値になります。
サーバーのphpはver.4.4.6となります。
宜しくご教示お願い致します。
0226nobodyさん
2007/10/03(水) 14:21:34ID:???ヘッダーで文字コード指定してやれば?
0227213
2007/10/03(水) 14:25:09ID:xx+cFlmVありがとうございます。
おっしゃるとおりで、コピペです。。。
ヘッダーで文字コード指定試してみます!
0228nobodyさん
2007/10/03(水) 14:35:21ID:???$mailto = mb_encode_mimeheader("[email protected]");
こいつはMIMEエンコードをしないで$mailto = "[email protected]";
$header変数にこいつ→ "To: <{$mailto}>\r\n" を含めない
ヘッダにTo:句が重複して現れてないか?
0229213
2007/10/03(水) 14:47:29ID:xx+cFlmV>>$mailto = mb_encode_mimeheader("[email protected]");
>>こいつはMIMEエンコードをしないで$mailto = "[email protected]";
これを試したら届きました!
本当にありがとうございます。
よく分からずにWEBで拾ったコードを信用していたのが原因でした。
やはりPHPマニュアル以外はあまり参考にならないのですね。
To:が重複していたのもおっしゃるとおりで、解決しました。
皆様ありがとうございました。
0230nobodyさん
2007/10/03(水) 15:00:48ID:???http://jp.php.net/html#faq.html.arrays
0231205
2007/10/03(水) 15:39:42ID:I/i9laybindex.phpの内容は
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>test</title>
</head>
<body>
test
</body>
</html>
です。このままだと、
Line 1, Column 0: end of document in prolog.
とでるので、<? echo '<?xml version = "1.0" encoding = "utf-8"?>'; ?>と修正すると
Line 1, Column 104: no system id specified.や
Line 3, Column 5: element "head" undefined.
などすべての行でエラーがでます。レスいただいた
<? echo "<"."?xml version = \"1.0\" encoding = \"utf-8\"?".">"; ?>
も試しましたが全く同じエラーです。
0233nobodyさん
2007/10/03(水) 15:43:55ID:???0234nobodyさん
2007/10/03(水) 15:55:44ID:???普通にこれで通らないか?
<?php
echo "<?xml version = \"1.0\" encoding = \"utf-8\" ?>\n";
?>
0235nobodyさん
2007/10/03(水) 16:00:37ID:???0236205
2007/10/03(水) 16:36:11ID:I/i9laybそれにしても、みんなどうやって通してるんだろ。
失礼しました!
0240nobodyさん
2007/10/03(水) 17:37:30ID:???0242nobodyさん
2007/10/03(水) 18:00:30ID:e5ck+SXs配列Aだけにある値と配列Bだけにある値をとりたいのですが
どのように処理すればよいでしょうか?
0243nobodyさん
2007/10/03(水) 18:07:51ID:???0245242
2007/10/03(水) 18:13:11ID:???どうもありがとうございました!!
0246nobodyさん
2007/10/03(水) 18:32:30ID:oSSk/nfV改ページなどはGETで行いますよね?
その際、以下のようにして検索対象となるWHEREの内容を、作成しています。
if($_POST["name"] ){
$name =htmlspecialchars($_POST["name"]) ;
}elseif($_GET["name"]){
$name = htmlspecialchars($_GET["name"]) ;
}
$search_set ="name='$name'"; //検索用のSQLを作成
$where = "WHERE $search_set"; //MySQLのWHEREに当てはめる
見たいな感じでやっているのですが、上記だとコードが長すぎますし、
正直無駄に感じます。みなさんはどのようにしているのでしょうか?
0247nobodyさん
2007/10/03(水) 19:04:28ID:???abcdefg
全角
ABCDEF
0248nobodyさん
2007/10/03(水) 20:02:08ID:???HTMLエンティティ化はHTML出力に対して行うものであって入力値にかけるものではない。
それから初めのうちはコードの長さなんか気にするな。ロジックを気にしろ。
0250246
2007/10/03(水) 20:07:41ID:???入力値にかけないと余計なコードを入力された場合、
対処出来ないのではないでしょうか?
>>249
REQUESTでも問題ないですかね。リファレンスでは「あまり使われていない」
って書かれていたので、上のようなコードにしていました。
0251nobodyさん
2007/10/03(水) 20:12:04ID:???htmlspecialcharsは「HTML表示の際」に必要なエスケープであって
SQLを組み立てる場合に必要なエスケープではないでしょ。
この場合は例えばmysql_escape_stringとかを使うわけだけど、
逆にSQL用にエスケープしたものをHTML表示に使えるわけでもない。
つまり、入力値はいきなりエスケープするものではなく(汎用のエスケープというのは無い)
何かの用途に使う時点で、それぞれの目的にあった形にエスケープしなきゃダメなのよ。
0252nobodyさん
2007/10/03(水) 20:34:58ID:???0253nobodyさん
2007/10/03(水) 20:44:52ID:L+I4Rl+L最近、PHPを勉強し始めました。
もし、アドバイスしてくださる方が居れば、こちらへ宜しくお願いします。
http://php121.blog121.fc2.com/
0255nobodyさん
2007/10/03(水) 20:47:44ID:???0257nobodyさん
2007/10/03(水) 21:21:37ID:???GET、POSTのどちらで来てもいいなら$_REQUESTだけど
どちらかしか認めないような場合(特にPOST)なら分けた方がいい。
>>246の場合ならDB用にSQLエスケープでいいけど
入力値によっては妥当な(期待している)値かのチェックは必須(数値や日付等)
0261nobodyさん
2007/10/03(水) 22:01:19ID:???気をつけろ! $_REQUESTには$_COOKIEも入ってくる。orz
あと$_FILESも
0262nobodyさん
2007/10/03(水) 22:13:05ID:???げ、マジですか! ジェットストリームアタックだw
優先順位はどうなってるのだろ? 当然高い方に上書きされるよね?
0263262
2007/10/03(水) 22:16:54ID:???0264nobodyさん
2007/10/03(水) 22:19:10ID:???バグ生む原因になるだけ。
0265nobodyさん
2007/10/03(水) 22:40:04ID:gbZJiSoXinclude_once("A.php");
include_once("B.php");
とやってしまうと function hoge が二度呼び出されたことによりエラーが返されます。
なんとかうまくエラーが出ないようにする方法は無いでしょうか?
ちなみにA.phpかB.phpのどちらかから function hoge を消してしまうと他の部分で
エラーが生じてしまうのでできるだけA.phpとB.phpの中身には大幅な変更は
加えたくありません。
0266nobodyさん
2007/10/03(水) 22:49:49ID:???二重定義のエラーは回避できない。
つ[function-exists()]
http://jp.php.net/manual/ja/function.function-exists.php
0268nobodyさん
2007/10/03(水) 23:18:29ID:???0269nobodyさん
2007/10/03(水) 23:26:48ID:???0270265
2007/10/03(水) 23:31:05ID:gbZJiSoX二重定義は回避不能でしたか・・・
>>267-269
今後プログラムするときは気をつけたいのですが>>267さんの言うとおり
関数は一つにつき一つのphpファイルの中で定義して使い回すのが
正しい作り方になるのでしょうか?
0271nobodyさん
2007/10/03(水) 23:40:21ID:???0273nobodyさん
2007/10/03(水) 23:47:35ID:???0274nobodyさん
2007/10/04(木) 00:36:17ID:2S6z8FqVecho 1+2がなぜ3になるのですか?
echoは引数を評価する関数なんですか?
0275nobodyさん
2007/10/04(木) 00:45:23ID:???すまん。include_once(C.php)だ (だと大丈夫だよね?)
C.php -------------------------
function hoge(){}
A.php -------------------------
include_once("C.php");
B.php -------------------------
include_once("C.php");
Main.php -------------------------
include_once("A.php");
include_once("B.php");
$foo = hoge();
0278nobodyさん
2007/10/04(木) 01:09:13ID:???俺も$_REQUEST使ってた...。
じゃやっぱり$_POSTと$_GETを書いて、どちらか入力されているか
チェックして変数に入れる方がいいみたいだな。
0279nobodyさん
2007/10/04(木) 01:27:57ID:???0280nobodyさん
2007/10/04(木) 02:02:54ID:???0281nobodyさん
2007/10/04(木) 02:03:28ID:???URLをそのまま他人に教えたりできるし
POST なら前ページと次ページのみのフォームボタンにする
0282nobody
2007/10/04(木) 02:08:25ID:wWWlpRkK早速質問ですが・・・
http://aki.adam.ne.jp/php/script/thumb.php
のサムネイルモジュールを使っているのですが・・・
thumb.phpで画像へのパスが設定されていませんとなってしまってサムネイル画像が×になってしまいます。
thumb.phpで画像へのパス設定って何行目ぐらいに書いてありますか?
ご回答よろしくおねがいします。
■ このスレッドは過去ログ倉庫に格納されています