【PHP】下らねぇ質問はここに書き込みやがれpart12
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/01(火) 17:56:36ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
0202nobodyさん
2005/11/06(日) 21:49:02ID:???mail()関数のマニュアルに書いてあることなんだが、
>注意: to引数には "Something <someone@example.com>" の形式のメールアドレスを与えることはできません。 MTA(特にWindows環境下の)と通信する際にmail関数はこれを適切にパースできません。
mb_send_mail()関数はmail()関数のラッパー関数なので、当然この制限がmb_send_mail()関数にも絡んでくる
toに"送信先<example@example.com>"形式で渡しているのが悪い。ヘッダーに含めるべき。
ただ、この辺の扱いはMTAによって違っているらしく、その辺は試行錯誤するしかないかも。
0204nobodyさん
2005/11/06(日) 21:58:37ID:vNGrg//Iむりでした・・・(泣)
>>200
POSTで送られてきた全ての画像(数が不明)を、POSTメソッドで別PGに転送する
処理で必要なんです。
どんな項目名で送られてくるか分からないので、
$_FILES[$koumokumei]
みたいにしたかったんです。
0206nobodyさん
2005/11/06(日) 22:06:28ID:???0207nobodyさん
2005/11/06(日) 22:11:04ID:???foreach($_FILES as $key => $files_arr) {
$key がほにゃら
}
0208207
2005/11/06(日) 22:12:12ID:???そっちをなんとかしたほうがいいかもな
0209196
2005/11/06(日) 22:22:49ID:???mb_language( 'Japanese' );
mb_internal_encoding( 'EUC-JP' );
してます。
>>202
toにはその形式できないんですね。
知らなかった。。教えてくれて有難うございます。
ちなみに subject はちゃんと JIS+MIMEしてくれていて、
additional_headers の中身に
From: "送信者" <user@domain> やら
Reply-To: "返信先" <user@domain> やらを含めましたが、
JIS変換しかしてくれませんでした。
ということは、
to:日本語可(JIS変換のみしてくれる)
subject:日本語可(JIS変換+MIMEエンコードしてくれる)
additional_headers:日本語可(JIS変換のみしてくれる)
でFAですかね?
0210nobodyさん
2005/11/06(日) 22:23:08ID:???てな感じにすれば、ええんでないの?
それはまぁ置いておくとして、別のプログラムに転送する時に
わざわざ元のnameを保持する必要は無いべ。
0211nobodyさん
2005/11/06(日) 22:28:04ID:???mb_send_mail() はPHPのバージョンによって挙動不審になることがあるので
自前でコード変換、ヘッダを追加して mail() の方が安心だと思う。
0212nobodyさん
2005/11/06(日) 22:43:10ID:vNGrg//Iこれはproxyのプログラムなんで、利用者側のプログラムをいじれなかったんです。
>別のプログラムに転送する時にわざわざ元のnameを保持する必要は無いべ
ごもっともです。でもコードを綺麗にしたかったので。
>>207
解決です。凄く助かりました。
ありがとう!!
0214nobodyさん
2005/11/07(月) 02:18:53ID:???今までwgetを使っていたのですがxreaでphpバージョンアップされてから動かなくなってしまいました
ブラウザでアクセスすると正常に動作するのでプログラム自体には問題ないと思われます
よろしくお願いします
0215nobodyさん
2005/11/07(月) 02:22:07ID:???0216nobodyさん
2005/11/07(月) 08:52:46ID:???0218nobodyさん
2005/11/07(月) 11:58:58ID:B941PQ6R現在は以下を代用していますが、換わりになるPHP関数はないでしょうか?
$com = "ls -1 ".$path." > temp.csv"
exec($com);
$db = fopen ("temp.csv", "r");
while ($list = fgets($db, 1024)) {
$list= trim($list);
if(is_dir($path.$list)){echo $list."<br>"};
}
0222nobodyさん
2005/11/07(月) 12:10:50ID:B941PQ6Rありがとうございます
早速試してみます
0224nobodyさん
2005/11/07(月) 19:42:04ID:???たとえば
<?php
$name = 〜;
$num = 〜;
$goukei = $name . "," . $num ;
?>
このようなプログラムで$goukeiをCSVに保存すると、$nameと$numが別々
保存される。
しかし、$nameに,,,,と入力すると、勝手に4列空白ができてしまうけど
どうすればそれを回避できる?
0226224
2005/11/07(月) 19:48:56ID:???//*****カンマ区切りで変数代入
$z = $name . "," . $mail . "," . $naiyou . "," . $today . "," . $id . "\n";
//*****hatsu.csvにHNとメルアドと内容を保存
if($naiyou != Null){
$fp = fopen('hatsu.csv','a');
flock($fp, LOCK_EX);//書き込み時に排他ロック
fputs($fp,$z);
fclose($fp);
}
0229nobodyさん
2005/11/07(月) 20:33:50ID:???定義済みの変数にあったかな?
0231nobodyさん
2005/11/07(月) 20:54:45ID:???ちなみに直前の URL (リファラ) はセキュリティソフトが消したり,
クライアントが任意の値を設定できるから信用できないデータであることをお忘れなく.
参考程度にしか使えない.
0232nobodyさん
2005/11/07(月) 21:00:29ID:F6uZDwtF227がいいたいのは"でくくれと。
$z = '"'.$name . '",'....
じゃないかいな?
0233nobodyさん
2005/11/07(月) 21:13:18ID:???サーバは2000proでmysqlを使っているんですが
test.phpに書くマルチバイト文字は表示されるんですが
mysqlから取得したデータのマルチバイト文字はすべて?に変わってしまいます。
何が悪いんでしょうか。
0234nobodyさん
2005/11/07(月) 21:22:43ID:???ありがとう
$url = $_SERVER['HTTP_REFERER'];
echo $url;
これで表示可能?
0236nobodyさん
2005/11/07(月) 22:15:50ID:???バージョンも設定も何も無いと答えようがないし板違い
データベース>MySQL総合Part5
過去ログ読んでから質問すっぺ
0237nobodyさん
2005/11/07(月) 22:42:27ID:mBmWY1oAMySQLのマルチバイト関連ってバージョン毎にえらく違う・・・と言うか、
4.0系と4.1以降で全然違うから
0240nobodyさん
2005/11/07(月) 23:48:31ID:???0242nobodyさん
2005/11/08(火) 00:02:21ID:???「ただ"〜"みたいになるだけだった」 ファイルを当然のことながら
fgetcsvかなにかで読んでみて確認したんだよな?
結果どうだったか書けよ。その上で疑問を書けば会話が継続する。
0244nobodyさん
2005/11/08(火) 01:21:32ID:???>>228 >>238 とかのカキコを見るとただの独り言としか思えない。
少し >>239 の気分が判る気がする。
0245nobodyさん
2005/11/08(火) 01:29:47ID:???でファイルパスを出したんだけど
・・・・/hoge/giko/index.html
の様に最後に必ずファイル名が入ってしまう。
そうではなく
・・・・/hoge/giko/
の様に出力させる変数ってある?
0248nobodyさん
2005/11/08(火) 09:43:04ID:Tw4XCGRO俺的エスパー解釈によると彼はこう言いたい。
「フォームから来たデータをカンマ区切りで保存して、それを表示するのに、カンマ毎に分割して表示するスクリプトなんですが、入力した文字列にカンマが入ってしまうと、表示するときにそこで分割されてしまいます。どう対処すればいいですか?」
カンマを全角にでもしとけゴルァ(゚Д゚)
0249nobodyさん
2005/11/08(火) 11:16:15ID:???なるほど.把握.さすがエスパー.
例えば,\1,000 っていう文字列なら \\1\,000 にして,
使うときに \1,000 に戻す.
0250249
2005/11/08(火) 11:21:08ID:???0252nobodyさん
2005/11/08(火) 11:36:36ID:???キーボードから入力できないような文字コードで区切ればいいじゃん。
0253nobodyさん
2005/11/08(火) 16:56:52ID:???1.行は改行で区切る
2.列(項目)は,(カンマ)で区切る
3.列に,(カンマ)や改行を含める場合は"〜"でくくる
4."〜"内に"を含める場合は""と記述する
だと思うんだけど、どうだ?
0254nobodyさん
2005/11/08(火) 17:21:27ID:???存在しているはずのどんなファイルでも絶対パスで通すと存在しないと言われる。
0256254
2005/11/08(火) 18:23:25ID:???原因が分かった。OSはWindows2000でPHPを動かしているんだが
その場合絶対パスは
C:\tmp\hoge\hoge.txt
みたいな形式になるんだ。
サーバーの絶対パス形式
/hoge/hoge.txt
をfile_exists()に通しても反応が返ってくるわけが無いよな。
C:\tmp\hoge\hoge.txt
を通したらちゃんと反応があった。
しかしややこしいな。OSの絶対パスか、HTTPサーバーの絶対パスか、どちらかで
統一してくれれば混乱しないのに。
0257nobodyさん
2005/11/08(火) 18:32:33ID:SOO2TAAd何に対して、OSの絶対パスか、HTTPサーバーの絶対パスを統一して欲しいの?
各関数の引数?
0259256
2005/11/08(火) 18:39:47ID:??????
例えば、file_exists() が、HTTPサーバーの絶対パスしか受け付けなければ
URLで参照できる位置にないファイルは存在チェックできなくなるんだが、それでいいの?
後、Windows系でもパス区切りは / で問題はないはず。
先の例でいれば、file_exists('C:/tmp/hoge/hoge.txt') でも動くと思うけど。
0260nobodyさん
2005/11/08(火) 18:42:38ID:???つーかwinでもunix式のパスで大丈夫だと思うが。
まあPHPのバージョンも晒してない奴に何とも言いようがない罠。
ちなみに手元の4.3と5.0ではfile_exists("/program files")でもtrue返す。
スクリプトがDドライブにあればD:をルートとした結果になる。
0261254
2005/11/08(火) 18:43:29ID:???$_SERVER['SCRIPT_NAME']
で帰ってきた値を引数にするとfile_exists()もis_file()も正常に動作しない。
これってうまく対処できないかな?
0263257
2005/11/08(火) 18:55:00ID:???$_SERVER['SCRIPT_NAME'] はURLパスで、それがどのローカルパスに対応しているかを
知っているのはWEBサーバーだけだから変換するのは無理。
スクリプトのファイル名なら __FILE__ で取得できるけど。。。
本当にやりたいことはそれでいいの?
>>259のコテハン間違えた。>>257 だったよ。ごめんね。
0264nobodyさん
2005/11/08(火) 18:58:00ID:???まあincludeとか何もしてないなら__FILE__と変わらんけど。
0265nobodyさん
2005/11/08(火) 19:12:34ID:???phpをブラウザ表示
↓
php表示と関係無くDB内容が更新(他の人が作業等)
↓
phpをブラウザ再読み込み(更新)
↓
キャッシュが効いていて変更が反映されない
今困っているのはhtmlソースの記述部分でそうなっています。
このhtmlに変数を入れている部分がキャッシュされているんじゃないかと思う部分です。
変数部分が"selected"に1つだけなり初期選択になって欲しいのですが、firefoxでは駄目です。
<option value=\"0\" $michaku>未着手</option>
<option value=\"1\" $chakushu>着手</option>
<option value=\"2\" $kanryo>完了</option>
<option value=\"3\" $saigen>再現待ち</option>
<option value=\"4\" $etc>その他</option>
httpヘッダは下記のようにもしてみましたが駄目です・・
header("Cache-Control: no-cache,must-revalidate");
header("Pragma: no-cache");
metaヘッダも書いてみました・・
print '<meta http-equiv="Pragma" content="no-cache">';
print '<meta http-equiv="Cache-Control" content="no-cache">';
と思ったらIEは大丈夫でした・・
firefoxでは駄目ですね・・
狐のバグ?
0266254
2005/11/08(火) 19:17:22ID:???> $_SERVER['SCRIPT_NAME'] はURLパスで、それがどのローカルパスに対応しているかを
> 知っているのはWEBサーバーだけだから変換するのは無理。
なるほど(´・ω・`)ショボーン
> スクリプトのファイル名なら __FILE__ で取得できるけど。。。
> 本当にやりたいことはそれでいいの?
ファイルのやりとりは
./hoge/hoge.txt
のような感じでやりとりしたかった。
__FILE__だと
C:\tmp\hoge\hoge.txt
という様に表記されるからそれに合わせてファイル指定も変更しなきゃならないか・・・
0267265
2005/11/08(火) 19:43:14ID:???すいませんちょっと分かりにくい書き方しました。
<option value=\"0\" $michaku>未着手</option>
って部分はフォームのセレクトメニューのオプションです。
ここを別のメニュー選択をして再読み込みすると、firefoxではselectedが効かず読み込み前に選択していたものがそのまま選択されます。
なのでDBが絡まなくても起きる現象のようです。
他のセレクトメニューがあるwebサイトでも試しましたがfirefoxの仕様?
0268254
2005/11/08(火) 19:54:08ID:???に対して
dirname()
をかけると
C:\tmp\hoge
が帰ってくる。だができればそうではなく
C:\tmp\hoge\
のように\もしくは/まで含めたい。$_SERVER['SCRIPT_NAME']で帰ってくる値の場合
パス区切り文字は常に/だったが、__FILE__の場合パス区切り文字はUNIX系かWindows系
で/と\と違うから別々に対応しなければならない。そこが__FILE__の面倒なところかな・・・
0269nobodyさん
2005/11/08(火) 20:01:50ID:???Firefoxだとselectedにかかわらず、ユーザが直前に選択していたものがそのまま残る。
キャッシュが残っているためではなく、Firefoxの仕様だと思われ。
再読み込みすれば、生成されたHTML自体(=selectedの場所)の変化は反映されてるよ。
ただ、表示上は前回のユーザの選択が残ってるだけ。
>>268
お前はまずレスを全部嫁。
独り言はチラシの裏に書け。
0270254
2005/11/08(火) 20:12:17ID:???> お前はまずレスを全部嫁。
> 独り言はチラシの裏に書け。
ちょ、ま・・・
でも環境によって\か/みたいに違えばそれに合わせてプログラム組む必要があるだろ。
0272254
2005/11/08(火) 20:16:13ID:???0273nobodyさん
2005/11/08(火) 20:23:08ID:???ちょっとやってみたけど、以下のヘッダすべてを送出すると大丈夫っぽい。
Firefox1.0.7(Windows)で確認。
header('Thu, 01 Dec 1994 16:00:00 GMT'); //過去の日付
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
0275254
2005/11/08(火) 20:37:41ID:???DIRECTORY_SEPARATOR
0276nobodyさん
2005/11/08(火) 20:42:22ID:???$_SERVER['SCRIPT_FILENAME']が返すパスのセパレータは/。
>>265
Cache-Control: no-storeさえあればいけるみたいね。
0277nobodyさん
2005/11/08(火) 20:45:05ID:???自分で頑張っているところをアレだけど。
file_exists('C:\tmp\hoge\hoge.txt') でも
file_exists('C:\tmp\hoge/hoge.txt') でもOKなんだが。
0280273
2005/11/08(火) 21:11:22ID:???あれれ、本当だ。もう一度やってみたら仰せの通りだった orz
しかも、>>273 で書いたの間違ってるし… 重ね重ね orz
header('Thu, 01 Dec 1994 16:00:00 GMT'); → header('Expires: Thu, 01 Dec 1994 16:00:00 GMT');
というわけで、整理して書き直します。
以下を送ればOKです。
header('Expires: Thu, 01 Dec 1994 16:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
>>276氏の指摘により、再度確認したところ実は以下だけでOKでした。
header('Cache-Control: no-store');
0281265
2005/11/09(水) 09:48:39ID:???細かいところですが挙動が気持ち悪くてスタックしていたので助かりました。
firefoxはサーバに従うってポリシーが多くなっているような気がしますね。
それがRFC準拠なのかしら?
0282nobodyさん
2005/11/09(水) 11:48:20ID:qQrEl19O0284nobodyさん
2005/11/09(水) 13:26:06ID:???(1) セッションを使って以下のような画面遷移をします(クッキーではなくURL埋め込み)。
http://localhost/logon.php
↓
http://localhost/main.php?PHPSESSID=12345
(2) 別のブラウザを起動して (1) の URL をコピーして開きます。
http://localhost/main.php?PHPSESSID=12345
(3) (1) と (2) で同じセッションを複数のブラウザが共用してしまいます。
実際に問題がある、ない、あった場合はどのような問題が?というのは
アプリの作りによるでしょうけど、できれば (2) の段階で不正チェックを
したいのですが、可能でしょうか?
よろしくお願いいたします。
0285nobodyさん
2005/11/09(水) 13:49:12ID:???多分無理。1つのパソコンで1人のユーザーが同時に起動した同じソフトを
サーバー側から区別する方法がないと思う
JavaScriptとかと組み合わせれば何とかなるカモ知れんけど。
0286nobodyさん
2005/11/09(水) 14:04:30ID:???0287284
2005/11/09(水) 15:18:16ID:???なるほど。
毎回セッションIDを変更してあげると、URLバーに表示されているセッションIDは
古いセッションIDで、実際のセッションIDとは既に異なっているからOKってことですね。
目からウロコです。
実際にやってみた所、古いセッションIDがすぐに破棄されなかったので、
(古いセッションIDでも開けてしまう)以下の様な流れで期待通りになりました。
session_start();
$savevalue = $_SESSION;
session_destory();
session_start();
session_regenerate_id();
$_SESSION = $savevalue;
助かりました。ありがとうございました。
0288nobodyさん
2005/11/09(水) 16:52:56ID:???は正常に動作するのに
echo "$_SESSION['TEMP']";
はエラーが返されます。
何かまずい記述でもありますか?
ちなみにちゃんと$_SESSION['TEMP']は変数登録してますよ。
0290nobodyさん
2005/11/09(水) 17:14:37ID:???echo "{$_SESSION['TEMP']}";
0292nobodyさん
2005/11/09(水) 20:00:59ID:???urlとして使える文字ってわかります?
0293nobodyさん
2005/11/09(水) 20:04:02ID:???見えやすいように全角で書きます。
英数字+−.%&=?/〜
他にあります?
0294nobodyさん
2005/11/09(水) 20:05:25ID:???ドメインじゃなくてURLに使える文字? スペース以外は何でも使えるけど。
正規表現の書き方を知りたいなら↓
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/
0295nobodyさん
2005/11/09(水) 20:06:19ID:???0296nobodyさん
2005/11/09(水) 20:07:16ID:???0297nobodyさん
2005/11/09(水) 20:13:56ID:???RFC 3986の Reserved Characters と Unreserved Characters
0298nobodyさん
2005/11/09(水) 23:16:26ID:MgDRn7NQ処理が終わった後,POSTを書き換えたいのですが,できません.
例えば,
if(StrNatCmp($_POST["a"], "1") == 0) {
〜処理1〜
$_POST["a"] = "2"; //$_POST["a"]を書き換える
} else {
〜処理2〜
}
最初に$_POST["a"]が"1"を持ってきたときだけ処理1を行い,
それ以外,データがなかったり,処理1をした後,更新ボタンを押したりしたときなどは,
処理1を行わないようにしたいです.
上記のやり方では,更新ボタンを押したら$_POST["a"]は"1"のままで処理1を行います.
POSTを書き換えるか,初期化するにはどうすれば良いでしょうか.
教えて下さい.よろしくお願いします.
0299nobodyさん
2005/11/09(水) 23:29:04ID:???根本的に何かが間違っている希ガス…
更新されたらされたで別の処理が並行して走るだけだから、
初回の実行の中で更新(二度押し?)を監視しても意味が無い…
Javascriptとかセッションとかクッキーとか使うべ。
もし一回の処理の中で、条件式以降に式結果を評価したいなら、
$_POSTなんかいじろうとせずに、$flag = 1とかしておけば?
0300nobodyさん
2005/11/09(水) 23:42:25ID:???ファイルを開き中の内容を読み込む処理ってどうかいたらいいでつか?
■ このスレッドは過去ログ倉庫に格納されています