【PHP】下らねぇ質問はID出して書き込みやがれ 76
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/11/13(木) 04:15:32ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0638nobodyさん
2008/11/26(水) 11:40:21ID:???文字コードは全てUTF-8で統一しています。
$s = mb_convert_encoding( mb_convert_kana( $str, "K", "UTF-8" ), "ISO-2022-JP", "UTF-8" );
って感じで半角カナを全角カナに変換してから文字コード変換を行ったんですが
その変換した文字列をmail()で送信をしたら特定の文字が化けてしまいました。
文字化けした文字
全角半角のウ、全半角のゥ、全半角のェ
この文字化けって普通は起こらないんでしょうか?
同じようなことがあった人教えてください。
0639nobodyさん
2008/11/26(水) 11:52:34ID:???それによって何が起きたかわかるかもしれない。
0640nobodyさん
2008/11/26(水) 12:19:28ID:???文字化けしたあとは
ウとゥは、
ウ瘢雹
のように末尾に不思議な文字が追加されて
ェは、
0街札・・w)・
という風に変換されてしまいます。
mb_convert_kana()で変換し、メールに合わせてエンコードした文字列は
smartyでfetchしたテンプレートにassignするように使っています。
0641nobodyさん
2008/11/26(水) 12:37:05ID:???0642nobodyさん
2008/11/26(水) 12:43:18ID:???mb_convert_kanaの結果も見てみて。
0643nobodyさん
2008/11/26(水) 12:43:38ID:???subjectが7文字までなら正常に送信できるのですが、
subjectが全角8文字以上を超えるとLFが送信するメールのどこかに含まれてしまい
RFCに準拠してないからSMTPエラーとなるので、mail()で送信するように変えました。
0644nobodyさん
2008/11/26(水) 13:08:30ID:???そういう現象にはなったことないけど、mailを使うんであれば、
エンコードは自前で?それともmb_encode_mimeheader?
その部分はチェック済みなのかな。
0645nobodyさん
2008/11/26(水) 13:24:59ID:???エンコードについてはmb_convert_encoding()とmb_encode_mimeheader()
でエンコードしました。
mb_send_mail()のsubjectの件についてはなぜ8文字以上だと
SMTPエエラーが起こるのかは詳しくわかりませんでしたが。
mail()で対処できたのでそれ以降はまだ調べていません。
文字化けについては、
assignするデータ、fetchしたデータにエンコードをしていて
2重でエンコードしたことが原因のようでした。
お騒がせしました。
0646nobodyさん
2008/11/26(水) 14:56:01ID:???0647nobodyさん
2008/11/26(水) 15:02:08ID:b+UaHm9e60 仕様書無しさん :2008/09/21(日) 22:34:33
Perler「Cとか古すぎwwwwwwメモリ管理やらせるとか何サマwwwwww」
Perler「MSの犬乙でありますwwwww」
Perler「ハッシュと配列の区別もつかねー糞言語が喋るんじゃねーよwwwwww」
Perler「ちょっとイテレーターとか使えるからって調子に乗ってんじゃねーよwwwwwendとかいちいちきもいんだよwwwww」
Perler「Javaとおんぶに抱っこなくせに出てくんなwwwwww」
俺の中だとPerlerはこのように極悪非道なやつらということになっている。
0648nobodyさん
2008/11/26(水) 23:40:10ID:uu4IqJDf(特にエラーとかでませんでした)
ttp://www.ritsumei.ac.jp/~inabam/class/dd1_07/11th/
かれこれ3時間にらめっこしてるんですが、自力で解決することができませんでした。
是非ヒントだけでも教えていただけると幸いです。
0650nobodyさん
2008/11/26(水) 23:57:19ID:uu4IqJDf0652nobodyさん
2008/11/27(木) 00:08:08ID:Y4lx+bCYhttp://www.phppro.jp/school/phpschool/vol2/3
このサイトに、
>XAMPP上で動くPHPでは初期設定で
>EUC-JP文字コードで動くようになって
>いるので、文字コードはEUC-JPに設定しよう
って書いてあるのだが、普通はUTF-8にする
ものではないのか?
0653nobodyさん
2008/11/27(木) 00:28:40ID:???ありがとうございます。
Undefined variable: PHP_SELF in C:********csvdb.php on line 8
$myself = basename($PHP_SELF); これが原因だったみたいです!
これはファイルの名前を取得するみたいなので要らないと思い削除したんですが
解決することができませんでした(汗
0654nobodyさん
2008/11/27(木) 00:30:29ID:???0655nobodyさん
2008/11/27(木) 00:30:33ID:???( ゚д゚) ・・・
(つд⊂)ゴシゴシ
(;゚д゚) ・・・
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
とりあえずregister_globals=Onにしてみたら?
0657nobodyさん
2008/11/27(木) 07:01:16ID:QDCpWLvTs200辺りからUTF-8に変わったぞ
今は全部UTF-8かも?
0658nobodyさん
2008/11/27(木) 09:57:53ID:???0659nobodyさん
2008/11/27(木) 10:14:36ID:???0660nobodyさん
2008/11/27(木) 13:27:44ID:7SaHUKLWhogehogeテーブルのpriceフィールドに格納したいのですが、
文字化けしてしまって困っています。
文字コードはSJISで
文字化けするのは"予"とか"ソ"といったいわゆる5Cを含む文字です。
1、a.phpのフォームからPOSTしてhogeテーブルに格納
2、b.phpでhogeから取得しhogehogeに格納
3、c.phpでhogehogeの内容を表示
といった動作なのですが、
1で予とPOSTしてもhogeには文字化けせずに格納されるのに
2でhogeから取得→hogehogeにINSERTすると文字化けしてしまいます。
つづく
0661nobodyさん
2008/11/27(木) 13:28:31ID:7SaHUKLWb.phpは
$sql = "select * from hoge";
$res = mysql_query($sql, $conn) or die("エラー");
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
$move_price[] = $row["price"];
}
$price_count=count($move_price);
for($i=0; $i<$price_count; $i++){
$move_price = $move_price[$i];
$sql = "INSERT INTO hogehoge(price)";
$sql .= "VALUES(";
$sql .= "'" . $move_price . "'";
$sql .= ")";
$res = mysql_query($sql, $conn) or die("エラー");
}
こんな感じなのですが、、、
どなたか解決のヒントだけでもお願いしますm(__)m
0662nobodyさん
2008/11/27(木) 13:33:56ID:???0663nobodyさん
2008/11/27(木) 13:38:12ID:???エスケープ、理解してる?
0664nobodyさん
2008/11/27(木) 13:39:04ID:???0665nobodyさん
2008/11/27(木) 13:40:43ID:???INSERT INTO hogehoge(price) SELECT price FROM hoge;
とかでコピーできる。
0666nobodyさん
2008/11/27(木) 13:42:38ID:7SaHUKLWレスありがとうございます。
副問い合わせ
調べてみます。
>>663
エスケープ、、、いまいち理解していないと思います。
$move_price = stripslashes($move_price[$i]);
と試してみたのですが、文字化けは直りませんでした。。。
0667nobodyさん
2008/11/27(木) 13:56:46ID:???0668nobodyさん
2008/11/27(木) 13:56:51ID:VS9OEG/Zhttp://nonn-et-twk.net/twk/why-set-names-in-php-is-bad
のようなことではないでしょうか。
0669660
2008/11/27(木) 14:12:12ID:7SaHUKLWありがとうございます。
この方法では化けずにコピーできました。
>>667
どこで化けたか正確にわからないのですが、
b.phpのINSERT直前で var_dump($move_price); としても
化けていませんでした。
b.phpを走らせhogehogeに格納されたデータを
phpmyadminで確認したところ化けています。
c.phpでも化けて表示されてしまいます。
>>660
そのページはググって見つけました。
b.phpに
mysql_set_charset("sjis");
と記述してみたけど使い方が悪いのか文字化けは直りませんでした。
0670nobodyさん
2008/11/27(木) 14:27:38ID:???たとえば、mysql_escape_string等で。
文字化けが起きないというa.phpでもやっとくべき。
それで化けるならむしろDBとの文字コード変換部分をチェックする必要がある。
このとき、内部エンコーディングとかが影響するので、
詳細な情報がないとエスパーするにも限界がある。
0671660
2008/11/27(木) 15:40:26ID:7SaHUKLWmysql_escape_stringを調べてみて
mysql_real_escape_stringを使ってみたところ
見事文字化けは解消されました。
まだまだ基本的な事がわかっていないので、
コツコツと勉強します!!
大変勉強になりました。
皆さまどうもありがとうございました。
0672nobodyさん
2008/11/27(木) 16:15:12ID:nVMghs4xサッカー,2
テニス.3
という内容がテキストファイルに書き込まれていたとします。
例えば、野球の行の数字を2に変えたい時、どうすればいいのでしょうか?
イメージとしては、行を取得してその行の数字の部分を新しい数字に置換
すればいいのだと思っていますが、特定の行だけ取得する事って出来るのでしょうか?
0673nobodyさん
2008/11/27(木) 16:20:51ID:???0675672
2008/11/27(木) 16:26:55ID:nVMghs4xと言う事は、全部読み込んで一行ずつ処理し、
strstrなどでその行に「野球」という文字が含まれていたら
野球,2 という文字列に置換するという考え方でよろしいのでしょうか?
0676nobodyさん
2008/11/27(木) 16:29:11ID:???長さが違うと不可能だし。
0677nobodyさん
2008/11/27(木) 16:50:13ID:nsjkEY4z$output = "foo\nbar";
preg_match('/.+/m', $output, $matches);
print_r($matches); //foo
しか出力されないのですが
なんか方法ありましたっけ?
なければ行ごとに分解するか、逆に改行を何かに置換するか・・・
お願いします。
0678nobodyさん
2008/11/27(木) 16:53:03ID:???0679677
2008/11/27(木) 16:56:30ID:???0680nobodyさん
2008/11/27(木) 17:20:51ID:???そのために文字列とURLを抜き出したいのですがどうすればいいでしょうか
[[ ]]の中だけは抜き出せるようになったのですが
\[\[([^\[]+)\]\]
0681nobodyさん
2008/11/27(木) 17:50:09ID:???っていうかID出せやコラ
ていうかPukiWikiの真似ならPukiWikiのソース見れやコラ
0682672
2008/11/27(木) 18:59:09ID:nVMghs4xなるほど。
じゃ、読み込んで新規ファイルに追加し、元ファイルを削除。
って流れが一番良さそうですね。
2ちゃんのログ検索とかどうしてるんでしょうね。
たぶんDBは使って無さそうだし。でも、結構速いし。
0685nobodyさん
2008/11/27(木) 21:53:53ID:???ただ催促すると放置される可能性があるので注意して下さいね。
基本、回答者に対して命令口調はやめてください。気分が悪いです。あなたは何様ですか?
回答者はいわば神です。一方、あなたは単なる質問者です。
神に対してはみんな、お願いをするものです。
平民以下の単なる質問者のくせして、神に命令するなんておかしいと思いませんか?
回答者はボランティアです。
自分の気分次第で嫌いな質問をスルーしたりすることに対しては何の問題もありません。
私は基本的に、自分の好きな時間に、自分が嫌いな質問や自分の嫌いなコテが書き込んだ質問を思う存分、集中的に叩きます。
自分勝手に私利私欲で叩きまくるのが基本です(笑)
私がPHP板の神ということを忘れないで下さい。
神を怒らせるととんでもないことになりますよ。
ヤスヒロや穴子という方をご存知ですか?彼は私を怒らせたのでまともな質問でも見つけ次第罵詈雑言浴びせまくっています。
その態度なんなんですか?
とても気に入らない質問の仕方です
0686nobodyさん
2008/11/27(木) 21:57:06ID:???0688nobodyさん
2008/11/27(木) 22:15:45ID:Y4lx+bCY自分が使ってるレンタルサーバーは
sendmailが停止されてるんだが、
この状態でもサーバーからメールを送ったりできるの?
PHPに独自に組み込まれたメール送信関数等を使って。
0689nobodyさん
2008/11/27(木) 22:18:51ID:exzeZtETドコモユーザなど判別しているんですが
もっと詳しくドコモ関東、ドコモ九州など地域まで
判別するのは不可能なんでしょうか?
0690nobodyさん
2008/11/27(木) 22:23:45ID:Y4lx+bCYIPアドレスの範囲で調べるとか?
0000−1111なら関東
4444−7777なら九州
とか、あらかじめ調べておいて、きめうち。
0693nobodyさん
2008/11/27(木) 23:08:09ID:???phpのバージョンは?
php.ini等でSMTPに自前のSMTPサーバーを指定してやればできる可能性はある。
ポートが塞がれていたらちょっと工夫が必要になるだろうけど。
0694nobodyさん
2008/11/27(木) 23:14:36ID:xeQLOWxL0695nobodyさん
2008/11/27(木) 23:25:32ID:???http://jp.youtube.com/watch?v=C5Kp4VL77b8&feature=related
0696nobodyさん
2008/11/28(金) 01:35:36ID:dY3rvFPa「ボタンを押したら、文字列が表示される」
ってプログラムを書こうとして、その予習として、
<form action = "1.php" method="POST">
<input type="submit" value="a">
</form>
<?PHP
print $_POST;
?>
こういうプログラムを書いたんだけど、これを実行すると
ARRAY
って出るんだけど、どういうこと?
素人目には、理解不能は仕様なんだけど?
0697nobodyさん
2008/11/28(金) 01:39:49ID:HHS1We1t695>>そうだね。
696>>エラーなんだが
0698nobodyさん
2008/11/28(金) 01:54:20ID:???0699nobodyさん
2008/11/28(金) 01:58:46ID:dY3rvFPa<input type="submit" name="a" >
</form>
<?PHP
if (isset($_POST["a"])) {
print "hello";
}
?>
これで、できたわ。
0700nobodyさん
2008/11/28(金) 02:08:14ID:???PHPでどうやってそんな風に教えればいいんだ
この関数は再帰だから〜、とか、関数力つけておきましょう、とか?
0701nobodyさん
2008/11/28(金) 02:26:28ID:dY3rvFPaただコードを「ベタッ」とはりつけてきて
補助的な解説が皆無なのがムカツクの。
0703nobodyさん
2008/11/28(金) 03:07:13ID:???再帰とか頭がこんがらがってしまうから、
フローチャートを使いながら説明するとか。
0704nobodyさん
2008/11/28(金) 03:18:35ID:???0705nobodyさん
2008/11/28(金) 03:48:54ID:???0706nobodyさん
2008/11/28(金) 07:54:41ID:???まあこの程度しかできないとおもうけど・・・
http://jp.youtube.com/watch?v=P9cLDqHfyoc&feature=related
0707nobodyさん
2008/11/28(金) 09:17:02ID:???0708nobodyさん
2008/11/28(金) 09:39:51ID:eL/0HM2wなんでお前ら馬鹿なの?
0709nobodyさん
2008/11/28(金) 10:06:45ID:???これはあまりよろしくないな
こんなこと頑張って覚えても実際の業務に何の役にも立たないし
このような概念的なことは教本見れ自分で勉強すれば済むこと
0710nobodyさん
2008/11/28(金) 11:37:08ID:skXTPrJy//code here
}
このとき、functionについている「&」はどういう役割をしているのでしょうか?
0711nobodyさん
2008/11/28(金) 12:13:10ID:???調べてみた
http://d.hatena.ne.jp/cloned/20060510
0712nobodyさん
2008/11/28(金) 13:54:03ID:???http://jp2.php.net/manual/ja/functions.returning-values.php
http://jp2.php.net/manual/ja/language.references.return.php
0713nobodyさん
2008/11/28(金) 15:51:04ID:skXTPrJyありがとうございます。
よくわかりました。
>>712
なるほど、マニュアルに書いてあったんですね。
ありがとうございました
0714nobodyさん
2008/11/28(金) 21:21:59ID:fzzy5FaA0715nobodyさん
2008/11/28(金) 21:24:16ID:???ウェブで見てもエディタで見ても改行されて見えるからやがな
0716nobodyさん
2008/11/28(金) 21:35:12ID:fzzy5FaA意味がわかりませんが
0717nobodyさん
2008/11/28(金) 22:02:12ID:???<br>\n<br>\nってやれば
出力されるhtmlのソースは
<br>
<br>
という具合に改行されるが、
<br><br>とやれば
そのまま<br><br>と改行されずに出力される
ソースの見た目であってhtmlの見た目上は問題ない
0718nobodyさん
2008/11/28(金) 22:27:32ID:dY3rvFPa最強、定番のって、どれ?
自動スクリプトで5000通とか送信されて
ぶっこわれたりしない、対策がちゃんと考えられてるやつ。
0719nobodyさん
2008/11/28(金) 22:41:20ID:dY3rvFPaアホが作るとこういう悲惨なことになるから。
最初からちゃんと聞いたほうがいい。
0720nobodyさん
2008/11/28(金) 22:46:47ID:dY3rvFPaもしかして、サーバー側で
sendmailが停止されている場合、
メール送信フォームを設置しても
動かない可能性が高いのか?
0721nobodyさん
2008/11/28(金) 23:04:13ID:???0722nobodyさん
2008/11/28(金) 23:06:34ID:???コンパイル時にsendmailのパスを含んでないと駄目。
サーバ管理者がメール送らせたくないって思ってんだから諦めろ。
0723nobodyさん
2008/11/28(金) 23:10:48ID:HHS1We1tqmailとかで送れってか?
0724nobodyさん
2008/11/28(金) 23:37:30ID:???PHPにあるのはmail関数。
mail関数を使っても、送られてきた情報を
そのままアパッチのsendmailに丸投げするだけだけど。
0725nobodyさん
2008/11/28(金) 23:56:55ID:???0726nobodyさん
2008/11/29(土) 00:00:45ID:???sendmail_path = /usr/sbin/sendmail
と
SMTP = localhost
smtp_port = 25
っていう設定があるけど、mail関数を使った時は、sendmailコマンドに
送られるのかね、それとも、SMTPを直接叩いてくれるんだろうか
0728nobodyさん
2008/11/29(土) 01:35:49ID:???0729nobodyさん
2008/11/29(土) 01:52:20ID:Zwy93qXL0730nobodyさん
2008/11/29(土) 08:12:28ID:Q7h0AD5bやっぱりZendFWやPearの本に載ってるような簡単なサンプルじゃ
大量の送信とかでエラー起こすものなんですか?
0731nobodyさん
2008/11/29(土) 08:19:35ID:???0732nobodyさん
2008/11/29(土) 09:19:26ID:???その簡単なサンプルがどの程度のものか知らんが、
スパムメール配信システムでも作るの?
メールサーバーによっては同時配信数に制限をかけているものがあるから、
その最大数に合わせて分割配送とか独自のキューを実装する必要があるかもね。
Web経由でやるんなら、タイムアウトとかもケアするとか。
0733nobodyさん
2008/11/29(土) 09:20:37ID:???放置放置
0734nobodyさん
2008/11/29(土) 10:14:58ID:Q7h0AD5bいや、そんなの作る気ないよ>スパム
せっかくサーバ借りるからやってみようって好奇心だけなんだけど
変なものできてトラブりたくないから聞いてみた 気に障ったならごめんね
0735nobodyさん
2008/11/29(土) 14:10:37ID:???とかの or die の使い方がのっているマニュアル該当部分てありますか?
探したんですが、orじゃ検索できないしいまいち動作がはっきりしないので情報を探しています。
論理演算子の or と同じ意味でしょうか。
0737735
2008/11/29(土) 14:27:57ID:khza+QN5function test(){
print "in test()!!";
return true;
}
とか色々やってみてやっぱり演算子なんですね。
しかも、die以外もprintなら使えるけど、date()は使えない。
でも、自作関数使えるみたいで
test() and test();
は出来た。
dateは駄目で、自作関数は駄目って基準が分からないw
0738nobodyさん
2008/11/29(土) 14:29:57ID:???■ このスレッドは過去ログ倉庫に格納されています