【PHP】下らねぇ質問はここに書き込みやがれ 54
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/09/09(日) 12:42:57ID:64tYOx8RPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 53
http://pc11.2ch.net/test/read.cgi/php/1188047468/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0334nobodyさん
2007/09/15(土) 23:18:41ID:Xmsi68ZJconfirm.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<a href="mail.php">戻る</a>
</body>
</html>
mail.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<form action="mail.php" method="post">
<select name="test">
<option value="あ">あ</option>
<option value="い">い</option>
<option value="う">う</option>
</select>
<br>
<input type="submit" name="submit" value="送信する">
</form>
</body>
</html>
0336nobodyさん
2007/09/15(土) 23:38:19ID:Xmsi68ZJレスどうもです。
Sessionを使う事も試してみたのですが、プルダウンメニューの場合どう記述すればよいか分かりませんでした。
例えばtextareaだと
<textarea>ここに表示したい内容を書いておく</textarea>
でページ移動しても記述内容を保存できるのは確認できたのですが。
0338nobodyさん
2007/09/15(土) 23:54:07ID:Xmsi68ZJselected属性も試したのですが、常にselectedを指定したものが表示されてしまうようになりました
(例:「あ」にselectedをつけた所、「う」を選択して送信ボタンを押し、戻るリンクで前画面に戻っても
毎回selectedが効いてしまっているようで、「あ」が選択された状態になってしまいました)。
0339nobodyさん
2007/09/15(土) 23:58:12ID:???「う」を選択したという情報は$_SESSIONに保存してあるんだよね?
$_SESSIONの情報を元にselected属性を付けないとあかんですよ。
0340nobodyさん
2007/09/15(土) 23:59:43ID:???・selectedを付けると選択される
・ある要素を選択させたい
⇒
・ある要素のところにselectedを付ければいい
0341nobodyさん
2007/09/16(日) 00:01:28ID:???ハイパーリンクにしたいのかな?
その場合はGETでmail.phpにパラメータを渡すか、JavascriptでPOSTに
してしまうか、セッション使うかになるかなあ。
submitボタンのが楽だと思うんだけど。
セッションは複数ブラウザ立ち上げたりするとアレなんで、フォームの
パラメータには使わないようにしてるなあ。
submitボタンを使う場合はhiddenでパラメータをformに埋め込み、
mail.phpにactionさせるだけ。
mail.phpには当然パラメータを受け取ってフォームに流し込む
仕組みが必要だけど、Smartyにはそのための関数やらがいろいろある。
もちっと調べなされ。
select〜optionあたりはべた書きじゃなく、↓みたいなのを使う。
http://smarty.php.net/manual/ja/language.function.html.options.php
個人的にはWebで基本かつ必須のformでの値の受け渡し方を理解していない
気がするので、まずはSmartyとか使わずにやってみた方がいいとおもう。
フレームワークやテンプレートエンジンは作業の効率化のためのものなので、
基本がなっていないと混乱すると思う。
0342nobodyさん
2007/09/16(日) 00:06:42ID:84mMghay「ttp://pc11.2ch.net/test/read.cgi/php/1189309377/」 は拡張子が消えていませんよ。
「.cgi」 という拡張子が現れています。
0344nobodyさん
2007/09/16(日) 00:16:53ID:ZprS1LjJご指摘ありがとうございます。
>>332のソースでは省いてますが、一応$_SESSIONに保存しているつもりです。
ただ、>>339>>340でご指摘されているとおり、$_SESSIONの情報を元にselectedをつけないといけないだろうなと言うのは想像が付くのですが、
記述の仕方が分かりませんでした。
>>341
ご指摘ありがとうございます。
submitボタンでは無くハイパーリンクにしたいです。
理由ですが、>>332は簡略化したものですが、実際には既存のソースを改造しています。
そしてご指摘の部分を触る権限があるか微妙なので。
どうしても無理ならsubmitボタンにする事も検討する必要があるとは思いますが。
後、ご指摘のとおりformでの値の受け渡しとか良く分かってません。
どうしても触る必要があり触っているのですが、まずはテンプレートエンジン無しで出来るようにしてみたいと思います。
0345nobodyさん
2007/09/16(日) 00:55:38ID:???IEでCTRL+Nでブラウザも1個起動した場合、同じセッションが使用され、
サーバからは区別できなくなる。
IE以外のブラウザでも同様の現象が起きたりする。
んで、ブラウザAでページAを開いてて、ブラウザBを起動。
そちらでページBを閲覧し、ページAでsubmitする。
もしページAとページBで$_SESSIONに同じ変数を格納して
いた場合、ページAで入力した値がページBのもので上書きされる。
PHPだけでなくWebプログラム全般で起こる問題。
CRSF用にワンタイムチケット発行するついでに、チケットと
関連付けて入力内容をセッションに保持させればいいのかな〜
とか回避策考えてるけど、めんどいので放置中。
有効な対策とか知ってたら教えてくださいませ。
0346nobodyさん
2007/09/16(日) 01:13:14ID:???退職者が管理してた社内システムの改修でもやることになったのかね。
PHPを勉強しつつ、ちょこちょこと機能追加や修正とか。
セッションにmail.phpでの入力値を全部格納してるなら、mail.htmlで
その値を取り出して動的に表示する仕組みを追加すればいいだけ。
confirm.phpの適当なところに
<?PHP print_r($_SESSION) ?>
って書けばセッションにちゃんと入ってるかどうかは分かるから確認。
Smartyはテンプレート(ここではmail.html)からセッションの値を
{$smarty.session.test}なんて記述で取得できる。
なんでさっきかいた{html_options}とか利用しつつ動的表示を行います。
でもま、他言語でのWebアプリ作成経験もない状態でアレモコレモは
却って習得に時間がかかると思う。
急がば回れで初心者向けPHPの本片手に基本からやった方がいいと思うよ。
フォームを利用したサンプルなんかは必ず載ってるし。
0348age
2007/09/16(日) 02:27:57ID:Ws+84egLどれをどう使えばいいかよく分からないんで
Do You PHP はてな - いつの間にかExceptionの種類が増えてた
ttp://d.hatena.ne.jp/shimooka/20070820/1187594874
0349nobodyさん
2007/09/16(日) 02:31:59ID:???あるじゃん
0351nobodyさん
2007/09/16(日) 17:57:23ID:???-html
あああああ
-html_end
の「-html」から「-html_end」を抜き出そうと思ったのですが、
preg_match('/-html\n(.+?)-html_end/', $str, $result);
としてもうまくいきません。どうすればよいのでしょうか?
0352nobodyさん
2007/09/16(日) 19:09:38ID:???0353nobodyさん
2007/09/16(日) 19:21:56ID:???それで試してみたところ、「-html」から「-html_end」が一行の場合は正常に出力したのですが、
-html
ああああああ
aaaaaa
-html_end
と、複数行になると、空のまま出力されてしまいます・・・
0354352
2007/09/16(日) 19:31:09ID:???pregはPerl互換らしいけどおれ先週末からPHPはじめたからどうだかわからん
/-html(.+?)-html_end/s
0356355
2007/09/16(日) 19:45:40ID:???何度もすみません・・・
まったく私には理解不能な挙動をしているので、お手上げですorz
$str = file_get_contents("test.txt");
preg_match('/-html\n(.+?)\n-html_end/s', $str, $result);
と、テキストをファイルから読み込むと(内容は先ほどと同じです)、何も出力されない状態となってしまいました。
どうかお助けください
0357352
2007/09/16(日) 20:41:28ID:???前者でダメならテキストファイルの改行コードが実行環境の改行コードと違うのかな?
もしsオプションが不安定なら
/-html([.\x0a\x0d]+?)-html_end/ とかでどう?
0359nobodyさん
2007/09/16(日) 21:20:08ID:???ありがとうございます。
$str = file_get_contents("test.txt");
preg_match('/-html(.+?)-html_end/s', $str, $result);
これで解決しました。
0360nobodyさん
2007/09/16(日) 22:51:54ID:4TCTiZPm具体的におしえてください
0362nobodyさん
2007/09/16(日) 23:44:45ID:oQRqCBGuUTF-8からJISにエンコードすると、一部文字化けしてしまいます。
エスケープしてからエンコードしてエスケープを解除していても同じでした。
なので、件名をJIS、本文をUTF-8、ヘッダーのcharsetをUTF-8にしているのですが、
何か問題はありまs・・・・ありますよねorz
0363nobodyさん
2007/09/16(日) 23:52:42ID:???UTF-8からJISに変換したものをテキストファイルに書き出したり
HTML上に表示させたりしても、その内容は化けてるの?
変換で化けるのかメール送信で化けるのかは切り分けた方がいいと思うけど。
0364352
2007/09/17(月) 00:18:42ID:???メールのヘッダ(件名や送信元)に漢字コードが含まれてる場合は普通はJISコードを
BASE64エンコードをして7ビット(アスキー)表現するのが普通
0365nobodyさん
2007/09/17(月) 01:12:12ID:???PHPが動作したときにある画像(例えばグーグルのロゴ画像など)
を自分のサーバに保存するようにしたいのですが、
どうしたらよいのでしょうか。
0366365
2007/09/17(月) 01:22:27ID:???0367nobodyさん
2007/09/17(月) 01:28:09ID:???まだ解決していないのに勘弁してください…
ダウンロードダイアログを開かずに自動でサーバに保存したいのです。
どなたかよろしくお願いします。
0368nobodyさん
2007/09/17(月) 01:34:39ID:AzPlrYBe> ◆質問する時の注意
> ・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
0369365
2007/09/17(月) 01:53:43ID:H7YfkkRcID表示させることを忘れていました。
0370nobodyさん
2007/09/17(月) 01:59:17ID:???php.iniでallow_url_fopenがONに設定されていることが前提だけど、
file_get_contents()で該当URLの出力を読み込んでファイルに保存すればいい。
0371365
2007/09/17(月) 02:00:06ID:e+n8gM7j0373nobodyさん
2007/09/17(月) 02:14:08ID:???cURLによる方法
http://curl.mirrors.cyberservers.net/libcurl/php/examples/resizejpg.html
0374nobodyさん
2007/09/17(月) 03:10:54ID:nPCszMjgほぼないですよね?
0377nobodyさん
2007/09/17(月) 03:40:18ID:H7YfkkRcありがとうございます。
おかげで出力できました。
0378nobodyさん
2007/09/17(月) 03:41:44ID:???0379nobodyさん
2007/09/17(月) 04:32:37ID:???0380nobodyさん
2007/09/17(月) 06:33:42ID:JQdZ1nWf>>300を教えて欲しいのですが。
0382nobodyさん
2007/09/17(月) 07:16:14ID:ySslSBrA何言っちゃているの?お前?
オブジェクトのコピーが伴う値渡しが常に遅いに決まってるだろ。
0383nobodyさん
2007/09/17(月) 11:06:30ID:???Cのような単純なポインタとは別もんだからな
0384nobodyさん
2007/09/17(月) 11:10:11ID:???データがコピーされないしな。
0386nobodyさん
2007/09/17(月) 11:39:26ID:???どちら側もベンチマークすら出してないでどっちの負けとか言う馬鹿がいるんだな
0387nobodyさん
2007/09/17(月) 12:32:21ID:???0388nobodyさん
2007/09/17(月) 12:47:59ID:iCPVuNeRipはクライアント側で自由に文字列を書き換えられませんよね。
0389nobodyさん
2007/09/17(月) 12:49:29ID:???0390nobodyさん
2007/09/17(月) 12:53:10ID:iCPVuNeR0391nobodyさん
2007/09/17(月) 12:59:10ID:???0392nobodyさん
2007/09/17(月) 13:06:11ID:???0393nobodyさん
2007/09/17(月) 13:23:40ID:W3Fsfqr5http://takagi-hiromitsu.jp/diary/20051227.html#p02
0394nobodyさん
2007/09/17(月) 13:27:31ID:???ttp://blog.libssh2.org/index.php?/archives/51-Youre-being-lied-to..html
0395nobodyさん
2007/09/17(月) 13:41:38ID:RU4hBw1O0396nobodyさん
2007/09/17(月) 13:44:23ID:???0397nobodyさん
2007/09/17(月) 14:02:04ID:???1.文法や書式が違う。でも基本がC言語からの発展なので似てるとこは多い。
2.PHPはサーバー側で動作する。JavaScriptはブラウザ側で動作する。
0399nobodyさん
2007/09/17(月) 14:10:20ID:???PHP技術者の平均時給 2,700円(PG)
JavaScript技術者の平均時給 1,100円(PG/DN)
0400nobodyさん
2007/09/17(月) 14:19:56ID:???0401nobodyさん
2007/09/17(月) 14:56:44ID:ySslSBrAいるだろ普通に、っていうか、それは思っていても言ってはいけないことだろ。
天皇陛下は贅沢三昧の税金どろぼう、とか
長嶋はもう廃人で外にでしゃばって出てくるな、とか
拉致なんかの小さいことにこだわるよりも国益を優先されろ、とか
思っていても言ってはいけないことがある事くらい察しろ。
0402nobodyさん
2007/09/17(月) 15:10:50ID:???0403nobodyさん
2007/09/17(月) 15:12:38ID:RU4hBw1OPHPだとクライアント側はいっさいさわれないってこと?
0404nobodyさん
2007/09/17(月) 15:14:59ID:???0405nobodyさん
2007/09/17(月) 15:24:49ID:kIYZsn2K返信遅くなり申し訳ありません。
作業内容としてはそんな所です。
もっともPHPを勉強してという所はすっ飛ばして、いきなり本番といった所ですが。
あの後、いろいろ調べたのですが、>>332よりはマシになったのですが、
まだ解決していません。
それと、教えていただいたセッションに入っているか確認する方法で、
問題なさそうな事を確認しました。
後は、>>341のアドバイスに従い、テンプレート無しで試してみました。
また>>339>>340のアドバイスを元に、$_SESSIONの情報を元にselected属性を付けてみたつもりです。
上記の状態で、Javascriptで戻った場合は大丈夫なのですが、普通にハイパーリンクで戻ると
設定項目は保持してません。
下記にソースを添付しますので、普通にハイパーリンクでも設定項目が保持できる方法をアドバイスいただけると助かります。
0406nobodyさん
2007/09/17(月) 15:25:22ID:kIYZsn2K<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="confirm2.php" method="post">
<select name="toshi">
<option <? if($_SESSION['toshi'] == "あ")echo "selected " ;?>value="あ">あ</option>
<option <? if($_SESSION['toshi'] == "い")echo "selected " ;?>value="い">い</option>
<option <? if($_SESSION['toshi'] == "う")echo "selected " ;?>value="う">う</option>
</select><br /><input type="submit" name="submit" value="送信する" />
</form>
</body>
</html>
confirm2.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$_SESSION['toshi'] = $_POST['toshi'];
print($_SESSION['toshi']);
?>
<br /><a href="mail2.php">普通に戻る(NG)</a><br />
<a href="javascript:history.back()">JavaScriptで戻る(OK)</a>
</body>
</html>
0407nobodyさん
2007/09/17(月) 15:46:12ID:???0408nobodyさん
2007/09/17(月) 15:59:15ID:kIYZsn2Kアドバイスどうもありがとうございます。
最初は使用していたのですが、途中から下記のwarningが出てしまったので取り外しました。
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by
上記ソース内でセッションを切ってないのが原因かとも思いましたが、
切るタイミングがなさそうだったのでそのままにしてました。
なのでsession_start();を入れても設定項目を保持できない事にはかわりなかったりします。
0410nobodyさん
2007/09/17(月) 16:10:32ID:kIYZsn2Kすいません、日本語すら怪しかったりします・・・
今試したら、Warningが出なくなっていました。
そして選択項目も保持していました。
アドバイスを頂いた皆様どうもありがとうございました。
また何かありましたらよろしくお願いします。
0411nobodyさん
2007/09/17(月) 17:57:19ID:???0412nobodyさん
2007/09/17(月) 18:46:11ID:iCPVuNeRたかぎさんのおっしゃることはわかるのですが・・・う〜ん
0413nobodyさん
2007/09/17(月) 19:31:07ID:???0414nobodyさん
2007/09/17(月) 20:01:55ID:???doxygenあたりでできないかなと思ってやってみたがincludeのグラフは無かった。
クラスのグラフは生成してくれた。
graphvizとPerl等のスクリプトで生成するのはどうよ?
0415nobodyさん
2007/09/17(月) 20:10:35ID:YADbl6mNたかぎさんはWEBプログラマではないと診た
0418nobodyさん
2007/09/17(月) 21:08:35ID:kIYZsn2Kそのとおりです。
最初はbodyの下に入れてて、warningは出なかったのですが(ただし選択項目は不保持)、
何が原因かは分からないのですが、途中からwarningが出た為一度取り外しました。
その後>>409のアドバイスを元に、一番上に挿入した所、warinigがでなくなり選択項目も保持するようになりました。
後は本番に移植して動けば良いのですが、本番はソースが複雑だったので怪しい所ではありますが。
0419nobodyさん
2007/09/17(月) 21:46:41ID:Pxt8ssvbもう比較レベルにならないぐらいPDOが速いし、prepareとかすごく便利だお。
でも、PEARライブラリは、PEAR::DB、PEAR::MDB2に対応してるのしかないお。
PHP5に移行考える人はどうした感じ?
1. PERA使いまくり、PDOはまだ封印。
2. PEAR封印、PDOで1から書きまくる。
3. PEARに、PDO用のコンテナ書きまくる。
4. PEAR、PDOなんかいらね。フレームワークと運命共同体
5. MySQL関数やPostgreSQL関数使ってるからどうでもいい
0420nobodyさん
2007/09/17(月) 22:01:51ID:???SQLなんてものはどうしても必要なとき以外書かないので
どうでもいい。
0421nobodyさん
2007/09/17(月) 22:47:06ID:???0422nobodyさん
2007/09/17(月) 23:09:07ID:???なんでフレームワーク、拡張ライブラリともに利用する気になれない
#私見ですよ、私見。 悪意はありませんです、ハイ。
0423nobodyさん
2007/09/18(火) 03:10:57ID:???とにかく速度重視ならSQL関数べた書き
特に案件さえ通ればおkならPDOやFWのO/Rマッパーで楽をする
洋梨は好かん
0424nobodyさん
2007/09/18(火) 03:21:07ID:???自分のサーバでどちらのモードが有効なのか判断する方法はありますでしょうか?
また、意識的にどちらで動くか設定する方法があれば教えてください。
0425nobodyさん
2007/09/18(火) 05:07:56ID:???つphp_sapi_name()
ttp://www.php.net/manual/ja/function.php-sapi-name.php
0429nobodyさん
2007/09/18(火) 14:04:24ID:FMVGiEK2膨大な量のCSVデータをMySQLに全て格納したいんですが、
何か手っ取り早い方法はないでしょうか。
phpMyAdminのインポートでは、ファイルサイズがオーバーしているらしくて読み込めません。
ちなみに、100MBくらいあります。
0430nobodyさん
2007/09/18(火) 14:09:01ID:???手っ取り早いのはmyimportユーティリティ
>phpMyAdminのインポートでは、ファイルサイズがオーバーしているらしくて
単なるスクリプトの実行タイムアウトでは?
0431nobodyさん
2007/09/18(火) 14:11:24ID:FMVGiEK2phpMyAdminでインポートさせようとすると
「エラー
アップロードしようとしたファイルが大きすぎるようです。対策については ドキュメント をご覧ください」
との表示が出ます。
(ドキュメントが英語でわからないですorz)
0432nobodyさん
2007/09/18(火) 14:15:19ID:FMVGiEK2ttp://www.eshima.info/archives/2006/11/xamppphpmyadmin.php
ちとこの方法でやってみます。有難うございました。
0433nobodyさん
2007/09/18(火) 14:30:50ID:LV1060jKテキストファイルに何か一文字でも入力して保存しておくとOKと表示されました。
このテキストファイルには掲示板のログとして、csv形式で保存するのに利用したいのですが、
空でも読み込んでOKと出すにはどうしたらよろしいでしょうか?
$textfile = "test.txt";
if ($file = file($textfile)){
echo "OK";
} else {
echo "NG";
}
■ このスレッドは過去ログ倉庫に格納されています