【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/
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:???ファイルを開き中の内容を読み込む処理ってどうかいたらいいでつか?
0302nobodyさん
2005/11/09(水) 23:55:50ID:???<form name="x" id="x" enctype="multipart/form-data" method="post" action="test.php">
<INPUT TYPE="file" name="upfile" size="40" />
そこでtest.phpで受け取ってファイルの中身を読むというようにしたいのですが、
$file = get_file_contents($_FILES['upfile']);
ではいかんとですか?
0303nobodyさん
2005/11/10(木) 00:26:32ID:???ttp://jp.php.net/manual/ja/features.file-upload.php
0304nobodyさん
2005/11/10(木) 00:54:25ID:???0305nobodyさん
2005/11/10(木) 01:18:11ID:iJI+8Gw+返信ありがとうございます.
>>299
$_POSTをいじりたくなかったのですが,サーバ側にあるテキストファイルを
送られてきたデータで書き換える処理をするため,
何度も処理を行うことは避けたかったのです.
>>301
おっしゃるように,
テキストファイルを書き換える画面はフォームで作成し,
PHPで受け取るようにしています.
今のところ,例えば,x行の後ろに***を挿入するというデータを送信すると,
1回目は良いのですが,更新ボタンを押すたびにどんどん挿入されていきます.
画面のアドレス欄に,普通のアドレスの後ろに送信データが表示されているので,
それがある限りデータは送信されそうです.
検索したところ同じような事例で,処理をした後,リダイレクトするようにして,
更新を防いでいる人がいました.
POSTなどを消せればすぐ済むように思ったのですが,そうする方が良いようです.
今回はファイル処理を行った後,リダイレクトして送信データを初期化しようと思います.
どうもありがとうございました.
0306nobodyさん
2005/11/10(木) 01:32:14ID:5CC9pdYJdocomo や一般のアドレスは正常に送信できます。
どなたか似たような現象の方居ませんかー
0308nobodyさん
2005/11/10(木) 03:34:57ID:7WIsLqP6http://blog.livedoor.jp/isida789/
0310nobodyさん
2005/11/10(木) 11:55:50ID:???0311nobodyさん
2005/11/10(木) 12:05:28ID:???0312nobodyさん
2005/11/10(木) 14:27:23ID:bMeJl5+L既存のページにログインしたあと、そのユーザー情報(入力されたIDやPassなど)をハイパーリンク先にもっていきたいのです。
良い方法ありましたら教えてください。
0313nobodyさん
2005/11/10(木) 14:46:15ID:???つ[GET]
つ[COOKIE]
つ[SESSION]
0314nobodyさん
2005/11/10(木) 14:46:43ID:???0317nobodyさん
2005/11/10(木) 15:03:16ID:???1. 実は、ハイパーリンク先と自分とは無関係なサイトであることをカミングアウト
2. 成り済ましサイトではない事を一所懸命にアピール
3. 理由を聞かれて、特許申請するので言えないっス
4. 夜中になったので人がいなくなる&次の質問に話題が移る
5. 数日後に他所で質問
6. ヲチ情報が報告される
0318nobodyさん
2005/11/10(木) 15:20:12ID:bMeJl5+L>>314
>>315
ありがとうございました。リンク先に埋め込むというのが分からないので、
セッションについて勉強してみます。
0320nobodyさん
2005/11/10(木) 15:38:58ID:???0321軟式PHP
2005/11/10(木) 15:39:07ID:???0323nobodyさん
2005/11/10(木) 16:02:46ID:???セッション情報を使って「何かする」部分の影響の方が大きいと思われ。
セッションそのものは、一つのファイル(DBかも知れんが)に対して
ちょびっと書いたり消したりするだけなので、
言ってみりゃサイトにカウンタをつけるみたいなもんよ。
まぁ、規模がでかくなりゃ話は変わってくる。
0324nobodyさん
2005/11/10(木) 19:35:30ID:mwYfHXSm<?
$name = test;
$test_number = array("aaaa","bbbb","cccc");
echo "${$name}_number[1]";
?>
結果 _number[1]
bbbbって表示されないよーなんでー?
0325nobodyさん
2005/11/10(木) 19:40:25ID:???0326nobodyさん
2005/11/10(木) 19:48:14ID:???PHPしらないけど勘で答えてみる。
$name='test_number';
echo ${$name}[1];
0328324
2005/11/10(木) 20:03:30ID:???あぁ言葉足らずでしたごめんなさい
<?
$name = test;
$name = test2;
$test_number = array("aaaa","bbbb","cccc");
$test2_number = array("111","222","333");
if($name == test1){
echo "${$name}_number[1]";
}
?>
結果 _number[1]
bbbbって表示されないよーなんでー?
です
0329324
2005/11/10(木) 20:09:05ID:???リロードし忘れちゃいました
そこんところ詳しくお願いパパン
いろんな所に入れてみたけど駄目だったお(´・Д・`)
0330nobodyさん
2005/11/10(木) 20:14:18ID:???test1 が何処にも存在しないのと、各部で文字列の前後の ' (または ")がないんだが。。。
それはさておき echo "{${$name . '_number'}[1]}"; ではダメなのか?
0331nobodyさん
2005/11/10(木) 20:22:03ID:???\
NUL
0x01
'
の4つで合っていますか?他にありますか?
0332324
2005/11/10(木) 20:31:08ID:???>test1 が何処にも存在しないのと
質問用に書き換えた時のミスです・・・
{${$name . '_number'}[1]}
でできましたー
マニュアルのどこら辺に書いてありますか?
もっと勉強しないと・・・
できた事はできたけど全く理解できていないっぽい・・・(´・Д・`)
0333nobodyさん
2005/11/10(木) 20:46:36ID:???そのものズバリはどこにも書いていないと思うけど。。。
可変変数と文字列の組み合わせればいいのかな?と考えただけだし。
>できた事はできたけど全く理解できていないっぽい・・・(´・Д・`)
理解しづらいのなら、いっそのこと可変変数をやめたら?
頭の体操としてはおもしろいかもしれないが、読みにくいし、
こう書く方がスッキリするとは思わないか?
<?
$name = 'test';
$name = 'test2';
$test_number = array(
'test' => array("aaaa","bbbb","cccc"),
'test2' => array("111","222","333"),
);
if($name == 'test'){
echo $test_number[$name][1];
}
?>
0334nobodyさん
2005/11/10(木) 20:50:09ID:???ttp://www.php.net/manual/ja/language.variables.variable.php
ここ。
ユーザコメントのAnonymous 13-Mar-2005 10:25 とか。
0336nobodyさん
2005/11/10(木) 20:52:00ID:???>>324 の一行目に、$test = 'hoge'; って追加して、実行してみな。
何が起きてたか判るから。
0339nobodyさん
2005/11/10(木) 21:16:42ID:???$hoge = 'hage';
$var_name = 'hoge';
echo $$var_name;
0342nobodyさん
2005/11/10(木) 21:38:30ID:???0343nobodyさん
2005/11/10(木) 21:44:32ID:???$$を使わなければ出来ない処理って、そもそもデータの持ち方が
おかしいんじゃないか
漏れは>>333に一票だな
0344nobodyさん
2005/11/10(木) 21:45:31ID:???いやね、>>324 の質問は、実は
<?php
$test = "hoge";
$test_test = "fuga";
echo "${test}_test";
echo "$test_test";
?>
こういう質問だと言うことね。
0345nobodyさん
2005/11/11(金) 01:40:20ID:???具体的にはメールのスレッド表示を再現したいです
メーラーでのスレッド表示みたいなのを・
message-idを各メールが持っている
子は親のmessage-idを知っている
親子関係は永遠に続く可能性がある
phpのオブジェクト機能でできるかなぁと、xmlみたいな感じ?
変数の入れ子構造はどうやったら出来ますか?
0346nobodyさん
2005/11/11(金) 01:54:03ID:???0347nobodyさん
2005/11/11(金) 02:59:54ID:???連想配列を使って
root+ a1
+ a2
+ a3
| + b1
| + b2
| + c1
| | + d1
| | + d2
| + c2
+ a4
こんな感じのツリーは
$root = array();
$root["a1"] = 1;
$root["a2"] = 1;
$root["a3"]["b1"] = 1;
$root["a3"]["b2"]["c1"]["d1"] = 1;
$root["a3"]["b2"]["c1"]["d2"] = 1;
$root["a3"]["b2"]["c2"] = 1;
$root["a4"] = 1;
print_r($root);
でどないや。
0348nobodyさん
2005/11/11(金) 09:42:26ID:???確認画面から「戻る」のボタンを押した時に、入力していたデータが消えます。
これをSESSIONを使わずに、ブラウザの戻るを押しても入力内容が消えない
ようにする方法は無いでしょうか?
0350nobodyさん
2005/11/11(金) 09:46:20ID:???0351nobodyさん
2005/11/11(金) 10:17:48ID:???会員サイトつー言葉からセッションを使ってログイン管理してるんだと推測し、
その際に cache-control: no-cacheなんかでキャッシュが無効化されていると思われ。
なので、それ、消えてるんじゃなくて鯖へ新しいページをリクエストしてんの。
0352nobodyさん
2005/11/11(金) 10:21:57ID:???それをどうにかして「戻る」を押した時に前に入力したものを表示させる
事は出来ないでしょうか?掲示板などのフォーム処理の場合、
戻った時にすべて消えると入れ直しになるので、使いづらいです。
0353nobodyさん
2005/11/11(金) 10:27:02ID:???header('cache-control: no-cache'); を送って「いない」のなら、session_start の前に
session_cache_limiterを呼んでみたら?
送っているのなら、どうしようもないけど。
session_cache_limiter(''); //追加
session_start();
0354nobodyさん
2005/11/11(金) 10:27:04ID:???>>348
だとIEの戻るボタンぽいけど、そしたらSESSIONとか関係ないし。
自分がソース書いてる会員サイトなの?
そうじゃなけりゃ、このスレに書く理由も不明。
0355nobodyさん
2005/11/11(金) 10:36:56ID:???これで一発で行けました!目から鱗でした。ありがとうございます。
>>354
フォームの戻るボタンです。ただ、テストはほとんどIE6.0でしていますが・・。
あと、自分がログインフォームとログイン後に簡単なメールフォームを作成したんです。
そこまでは大丈夫だったのですが、「戻る」のボタンを押した時にデータが消えるので
どうしたらよいかずっと悩んでいました。
とりあえず、これで解決出来そうです。ありがとうございました。
0356nobodyさん
2005/11/11(金) 10:55:02ID:???受け取った情報を送信して
セットしなおせばいいだけの話なのにな…
0357nobodyさん
2005/11/11(金) 11:10:17ID:???オブジェクトに関しても勉強不足なのですが試してみようと思います。
あつかましいとは思いますが具体的な方法や情報を頂けるとありがたいです。
>>347さん、ありがとうございます
すぐに試してみようと思います。
オブジェクトも連想配列も面倒がって避けてきましたが、やっぱり必要ですねw
0358nobodyさん
2005/11/11(金) 11:41:20ID:nRnpdBSX入れて出したら最小値(又は最大値)が高速で返ってくるコンテナが必要なのです。
よろしくお願いします。
0360358
2005/11/11(金) 12:28:16ID:???レスどうもです。
PHPの配列自体を使わないにしても、どこかに拡張モジュールでもライブラリでも、利用可能なものはないものでしょうか?
できれば通常のキューもあって欲しいです。(push/popとshift/unshiftで出来るかと思ったら無理なようです)
さすがにググっただけではそういったものが見つからないもので・・・。
0361nobodyさん
2005/11/11(金) 13:20:14ID:???ログにWeb上から直接アクセスするとIP情報が第三者に見れてしまいます。
かといってパーミションを606以下にすると、ログが開けなくて
エラーが出るし、困っています。
IP取得部分だけログを分離するというやり方は知識不足の為自分にはできません。
IP情報を取得したまま第三者に見れなくなるようにしたいのですが、
何か簡単な方法はありませんでしょうか?
個人的にIP情報なんてどうでもいいのですが、
IP情報=個人情報と思ってる方もいるようで、書き込みが減る恐れと、
荒らされた時の対処がHPのアクセスログだけだと困難なので、
何かよい方法があったら教えてください。
0363nobodyさん
2005/11/11(金) 13:34:30ID:???0364nobodyさん
2005/11/11(金) 13:35:08ID:???アクセスできない場所に置く(public_htmlの上とか)
.htaccessで<Files filename>deny from all</Files>。
ログファイル名を.htで始まる名前に変える。
ログの拡張子をcgiにする。
ログを暗号化する。
0365nobodyさん
2005/11/11(金) 13:37:39ID:???>ログにWeb上から直接アクセスすると...略...
ログにWeb上から直接アクセスできないようにすればいいだけのこと。
1) Webサーバーの設定で、ログファイルへのアクセスを禁止する
2) ログを保存するディレクトリをURLでは参照できない位置にする
1) はWebサーバーの設定をミスると見えてしまうので 2) がいいかもね。
保険的に両方やっておくのもいいけれど。
1) の設定方法は個々のWebサーバーによるので、ここでは聞かぬように。
PHPの話はなく画像ファイルの直リン禁止、とかで普通に行われているので
探せばすぐ見つかるはずだし。
0367nobodyさん
2005/11/11(金) 13:47:35ID:???> ログファイルの拡張子をphpやcgiにする
そういう話はよく聞くけど本当にphpやcgiにすれば見られないのか寝?
0368nobodyさん
2005/11/11(金) 13:57:02ID:???拡張子をcgiやphp(CGI版のみ)にするのは、
shupang(一行目の#!〜ってやつ)が無くてエラーになって、
結果的にログの内容は表示されない事を期待してる。
phpがmoduleの時に拡張子phpにしたら、HTMLモードで開かれるので意味無いね。
0369nobodyさん
2005/11/11(金) 14:04:57ID:???0370nobodyさん
2005/11/11(金) 14:16:09ID:???CGIの場合はとにかくエラーになる
#!がなくてもパーミッションがない
実行権つけても結局ヘッダー吐けないから500エラー
0371nobodyさん
2005/11/11(金) 15:41:55ID:???できればフリーで使えるやつが良いです。
0372nobodyさん
2005/11/11(金) 15:59:57ID:???http://www.opensource.co.jp/solution/lamp2/
0373nobodyさん
2005/11/11(金) 17:35:42ID:FEod7B4Tみたいな感じでメニュー部分を各ページで読み込むようにしてるんですが、
このメニュー部分も検索エンジンにキャッシュされてるんでしょうか…?
動的に読み込んでるわけだからキャッシュはされないのかな…?
0374nobodyさん
2005/11/11(金) 17:36:42ID:???どのような方法でページを生成していようと同じ
■ このスレッドは過去ログ倉庫に格納されています