トップページ⇒php
1001コメント358KB

【PHP】下らねぇ質問はここに書き込みやがれ 29

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/09/17(日) 04:26:39ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0116nobodyさん2006/09/19(火) 15:15:43ID:???
^^;
0117nobodyさん2006/09/19(火) 15:17:36ID:j2rsOfI9
配列の一番最初の値は[0]で参照出来るのですが、一番最後の値は
どうやって参照するんでしょうか?

最初にカウント取らないと無理?
0118nobodyさん2006/09/19(火) 15:27:51ID:???
>>117
配列の添え字は1とか2とかから始まる場合もあるし
添え字にマイナスも使えるから0が先頭とは限らないよ。

$last = end($arr);
で最後の値は取得できる。
0119nobodyさん2006/09/19(火) 15:29:53ID:???
>>113
自殺イクナイ
0120nobodyさん2006/09/19(火) 15:31:45ID:???
>>110
$name = '';
if(isset($_POST['name'])) $name = $_POST['name'];
が望ましいです。
0121nobodyさん2006/09/19(火) 15:41:30ID:j2rsOfI9
>>118
ありがとうございます。end()なんてあるんですね。

> 添え字にマイナスも使えるから0が先頭とは限らないよ。

つことは、今、[0]で取ってるので、いくないですね。
end()があるなら、ファーストもと思って調べたら、なかったですorz
0122nobodyさん2006/09/19(火) 15:50:14ID:???
>>121
reset()
0123nobodyさん2006/09/19(火) 15:52:26ID:???
>>121
何使って関数探してるの?
公式のオンラインリファレンス(>>1)使えば
関連する関数が説明文の下に参考として書かれてるから
その種の問題はすぐに解決できるよ。
0124nobodyさん2006/09/19(火) 15:56:20ID:???
>>121-122

ありがとうございます。

画面ちっちゃいから、本で調べてるんですけど、PHP(ポケットリファレンス)
オレンジのやつ。対義語が載ってないくさい。
※2ch開く余裕はあるってつっこみはなしで。

>>123 のサイトをチェック致します。

ありがとうございました!
0125nobodyさん2006/09/19(火) 16:09:49ID:???
>>121
変なことしてなければ0からだから問題ないけど
0126nobodyさん2006/09/19(火) 16:17:08ID:???
>>125
変なことしてないなら最終要素も
$last = $arr[count($arr) - 1];
で取れるけどな。
0127nobodyさん2006/09/19(火) 16:17:38ID:???
>>106
表記方法が16進数になっても null の意味は変わらないから一緒だと思う。
実際に確かめてみると、ちゃんとNULL バイトが取り除かれているのがわかる。
0128nobodyさん2006/09/19(火) 16:28:33ID:???
おまいらsafety firstだぞ。
無防備なのはイクナイ!!
0129nobodyさん2006/09/19(火) 16:38:10ID:Uo5rUHBV
FORMから受け取ったデータを削除するにはどうしたらいいのでしょうか?
たとえば、
A.php入力フォームから受け取ったデータを
B.phpへ持っていき、書込み処理を終えたらデータ削除
が行いたいと思っております。

何かヒントがあればご教授願います。
0130nobodyさん2006/09/19(火) 16:54:30ID:???
>>129
意味がわからない
0131nobodyさん2006/09/19(火) 16:57:49ID:???
>>129
FORMで送信されたデータなんて、どこにも保存しなければ勝手に消えると思う。
0132nobodyさん2006/09/19(火) 17:02:24ID:???
>>129
消すのなら unset ($_POST['hoge']); でいけるけど・・何故データを消す必要があるんだ?

それにB.phpに持って行くと言っても、
FORMから送られたデータはスーパーグローバルだから、
特別な事をやらなくてもA・B双方から参照できるしねぇ

何が言いたいかって言うと、意味がわからn(ry
0133nobodyさん2006/09/19(火) 17:06:28ID:Uo5rUHBV
formからのデータを拾うのと書込みを同一ページで処理しているのですが、
リロードするとformから受け取ったデータが残ってまして、
同じ内容が書き込まれてしまうんです。
0134nobodyさん2006/09/19(火) 17:17:14ID:???
>>133
それは変数の$_POSTの中身を消した所でどうにもならない。
クッキーなりセッションなり使ってリロード対策するしかない。
0135nobodyさん2006/09/19(火) 17:25:09ID:???
>>124
お前バカか? どういう本の読み方してんだ。
『PHPポケットリファレンス』のendのページの下の部分に
関連関数としてresetがしっかり載ってるじゃないか。

これで「対義語が載ってないくさい」などとよく言えるな、この能無しチンカスが。
0136nobodyさん2006/09/19(火) 17:26:37ID:???
>>133
>リロードするとformから受け取ったデータが残ってまして
受け取ったデータが残っているのではなく、
送る側が同じデータを送信している
消したいなら、クライアント側を工夫する+処理後に表示するページを別ページにする
0137nobodyさん2006/09/19(火) 17:51:03ID:???
>>133
書き込み完了後にLocationで別ページに飛ばしちゃうのが簡単な対策。
0138nobodyさん2006/09/19(火) 18:20:55ID:4NYt81r/
構成について質問です。
登録したファイルの拡張子を記録したいのですが、
例えば
$upfile="test.jpeg" //JPEGファイルをアップしたと過程

if(ereg(".jpeg",$upfile)){
echo"これはJPEGファイルです";
}

っと識別出来るかと思うのですが、必ずしも特定のファイルじゃないと思うし
さまざまな拡張子があると思います。
その場合も事前に「これは○○ファイルです」というようにIFを用意しておくのでしょうか?
それとも、もっと便利な方法・構造があるのでしょうか?
0139nobodyさん2006/09/19(火) 18:34:38ID:???
>>138
まず第一に拡張子はいくらでも変更出来るので実際のファイルが何かは分からない。
これは多分理解してると思うから・・。

あとは正規表現なり、 . でsplitするなりである程度出来るんじゃん。
0140nobodyさん2006/09/19(火) 18:49:58ID:???
>>138
目的と頻度次第でお好きなように、ってのが正直なとこ。

システムの目的として拡張子登録が重要な機能で
可能な限り全ての拡張子を網羅しなければいけなくて
必要時にすぐ新規の拡張子が登録できなければ…
みたいな話ならメンテナンス性が重要になると思うんで、
「拡張子文字列」→「ファイル種別文字列」
みたいな対応ファイルを別途用意してそれを読み込んで
処理するような仕組みを採用した方がいいかもしれないし、
判別が画像ファイルだけとか数が少ないならif並べた方が早いし、
追加が緊急では無いが数は多いとかなら配列データとして
includeファイルにリストアップしとくのがベストかもしれない。

配列データからの判定は例えば
$ext_list = array(
"jpeg" => "JPEGファイル",
"jpg" => "JPEGファイル",
"gif" => "GIFファイル",
);
$pathinfo = pathinfo($upfile);
$ext = $pathinfo['extension'];
if(isset($ext_list[$ext])) {
echo "これは{$ext_list[$ext]}です";
}
みたいな感じで処理する。
01411382006/09/19(火) 19:01:03ID:???
>>139-140
アドバイスありがとうございます。
目的としては登録リストを拡張子で並べ替え出来る程度で良いのですが、
140さんが書かれているソースの方法だと汎用性も高いと思うし、
私自身も意味が理解出来るので、良いですね。勉強になりました。
0142nobodyさん2006/09/19(火) 19:03:04ID:Uo5rUHBV
同時に複数のファイルをロックして書き込み、ロック解除を
処理する記述は大丈夫でしょうか?
0143nobodyさん2006/09/19(火) 19:09:55ID:???
>>142
別に問題はないよ。それでロックという目的が果たされてるかは知らんけど。

複数ファイルを一斉にロックする場合、ロック状態を示すロック専用ファイルを
1個だけ用意しておいてロックはそれだけで行うという「プロセスロック」という
考えの方が適切な場合もある。
0144nobodyさん2006/09/19(火) 19:32:46ID:???
>>115
返事が送れてごめんなさい。
その方法でうまくいきました。
ありがとうございます。
0145nobodyさん2006/09/19(火) 19:35:11ID:???
なんですとー
0146nobodyさん2006/09/19(火) 20:16:12ID:???
mysqlで
INSERT INTO `tbl` (`key1`, `key2`, `key3`) VALUES ($val1, $val2, $val3)
って書き方っていつも面倒くさいと思ってたけど
INSERT INTO `tbl` SET `key1` = '$val1', `key2` = '$val2', `key3` = '$val3'
って書き方もあるんだね?いままで知らなかった。
この書き方ってなにか問題ありますかね?
0147nobodyさん2006/09/19(火) 20:25:52ID:???
`←これどうやって入力するの?どこおせばでるの?
0148nobodyさん2006/09/19(火) 20:26:17ID:???
preg_match_allの正規表現が長くなり、
みづらくてしょうがありません。

しかし改行を入れると正規表現が変わってしまい
見やすく整理できません。

どういうふうに整形していけば良いのでしょうか?
現在こんな感じです。

preg_match_all("(<\/TABLE>[^a-z]{15,15}(.+)[^a-z]{15,15}<TABLE border=\"1\"><TR><TD>|<font color=.+>...(.*)...<\/font>.*(http.*)\">(.*)</a>)U",$content,$content);

0149nobodyさん2006/09/19(火) 20:36:13ID:???
$reg = "/toooooooooooooo " .
 "loooooooooooooooong " .
 "regular expression/";
preg_match($reg, $str);
01501422006/09/19(火) 20:37:03ID:???
>>143さんのおかげで安心しました。ところが、
日付時間を二つのファイルに書く場合、時間がずれてしまうことはありますか?
0151nobodyさん2006/09/19(火) 20:37:38ID:???
>>147
おれは左上端
0152nobodyさん2006/09/19(火) 20:48:26ID:???
おれは左官大臣Zx
0153nobodyさん2006/09/19(火) 20:57:21ID:???
>>150
あると思う
0154nobodyさん2006/09/19(火) 21:10:53ID:???
>>146
無いよ。ふつーだろ。
0155nobodyさん2006/09/19(火) 21:43:09ID:???
>>147
日本語キーボードならSHIFT+@
0156nobodyさん2006/09/19(火) 22:18:35ID:???
>>155
インドウズが再起動しました(><)
0157nobodyさん2006/09/19(火) 22:21:08ID:sKqysrv5
あるページにパスワードをかける場合、IDとpassの埋め込み型のphpファイルは
安全といえるのでしょうか?

また、htaccessを使わずにディレクトリごとロックすることは可能でしょうか?
たとえば・・・
public_html-----[abc]←このディレクトリ中のファイルへのアクセスを拒否するのは可能ですか?
0158nobodyさん2006/09/19(火) 22:27:11ID:???
>>149
ありがとうございます
0159nobodyさん2006/09/19(火) 22:59:26ID:???
>>157
>IDとpassの埋め込み型のphpファイルは安全といえるのでしょうか?
心配なら生Pass記述ではなく、cryptした値で比較すれば?

>htaccessを使わずにディレクトリごとロックすることは可能でしょうか?
httpd.confが弄れるなら可能。
0160nobodyさん2006/09/19(火) 23:25:08ID:???
>>157
まあ普通に使ってる限り、拡張子がphpのファイルはソースが見えることはありえないが、
設定ミスなどが怖いのなら、パスワードを書いたファイルはDocumentRoot外に置いて
includeすれば良い。
0161nobodyさん2006/09/19(火) 23:35:24ID:???
>>154
あんまり後者の書き方は見かけないんですが・・・
mysql書き始めて2年にもなろうというのに初めてみましたよ>後者の書き方
01621572006/09/19(火) 23:36:21ID:???
ありがとうございます。夕方からいろいろ調べてコード書いてみたんですが、
<<159さんや<<160さんみたいのは新しい発見です。

cryptで暗号化も考えたのですが、結局生のパスワードを書きますから
先輩方のアドバイスを参考にさせていただきまして、もうすこし調べてみます。
ありがとうございます。
0163nobodyさん2006/09/19(火) 23:43:31ID:???
>>161
お前がへたれなだけだから心配すんな
0164nobodyさん2006/09/19(火) 23:51:04ID:???
気づかないうちにxmlに書き出されたモロ三重コードたまに見るけどな〜
0165nobodyさん2006/09/20(水) 00:11:51ID:???
質問です。UML(クラス図)を描いたら、PHPのソースに落としてくれるエディタってありますか?
0166nobodyさん2006/09/20(水) 00:12:23ID:???
>>162
>cryptで暗号化も考えたのですが、結局生のパスワードを書きますから

なんで、暗号化するのに生のパスワードを書く必要があるの?
PHP内にはcryptで暗号化した文字列だけ書いておいて、
入力されたパスを同じcrypt化して比較すればいいじゃん。
0167nobodyさん2006/09/20(水) 00:15:56ID:???
PHPというか数学的な質問かもしれませんが、、
アクセス数に対し、可変する横棒グラフを作成しています。
例えば、1日(30)、2日(15)、3日(40) ※()内はアクセス数です。
とした場合、どういう風に構築するのが良いのでしょうか?
単純に<img src="bar.gif" width="<?=$access?>">とすると、横に伸びきるし。。

質問内容がまとまっていないかもしれませんが、ご教授いただければと思います。
0168nobodyさん2006/09/20(水) 00:27:02ID:???
>>167
アクセス1個分の長さの画像を用意してアクセス数分並べれば?
0169nobodyさん2006/09/20(水) 00:34:33ID:???
>>167
とりあえずメール欄は空白も何も無しが正解。努力は買うが。

仕様として、横バーの最大を固定にするか可変にするかでも変わる。
1日(30)、2日(15)、3日(40)のときで40のグラフが横幅いっぱいになるようにするなら
$acc = array(1 => 30, 2 => 15, 3=> 40); //アクセス数のリスト
$maxwidth = 400; //バーの横幅最大
$max = max($acc);
$rat = $maxwidth / $max;
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
という感じだろう。

それに対して、アクセス数100のときに横幅いっぱいになるようにするなら
$acc = array(1 => 30, 2 => 15, 3=> 40); //アクセス数のリスト
$maxwidth = 400; //バーの横幅最大
$rat = $maxwidth / 100;
?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
になるかと。
01701672006/09/20(水) 00:48:26ID:???
>>169
ありがとうございます。ただ、説明不足で申し訳ないのですが、
1日とかは日付が入っているので実際は”2006年9月20日”になります。
それをDBで管理しているので
day | count
2006-09-18 | 30
2006-09-19 | 15
2006-09-20 | 40

というような表から抽出して表示させるわけです。
その場合、arrayで配列に代入する方法は使用出来ないかと思いまして。
説明不足で申し訳ないのですが、もう少しお願い出来ないでしょうか。
0171nobodyさん2006/09/20(水) 00:54:40ID:???
>>170
そのくらい、変換して配列に格納すればいいじゃん。
0172nobodyさん2006/09/20(水) 00:57:19ID:???
オブジェクト内で定義された変数を、
外部のオブジェクトが簡単に利用する方法は
ありませんか?

function get_content(){

$aaa = "aaa";
$bbb = "bbb";
$ccc = "ccc";

}

たとえばこんな感じに、変数を複数設定してしまったとき、
ほかのオブジェクトも、この変数を利用したいのですが・・・
0173nobodyさん2006/09/20(水) 01:01:47ID:???
>>167
後だしじゃんけん的質問はイカン。それに169がここまで書いてくれてるんだから後は
自分で考えるないとなー

?>
1日<img src="bar.gif" width="<?=$acc[1] * $rat?>"><br>
2日<img src="bar.gif" width="<?=$acc[2] * $rat?>"><br>
3日<img src="bar.gif" width="<?=$acc[3] * $rat?>"><br>
を

while ($row = mysql_fetch_assoc($result)) {
$w = $row["count"] * $rat;
echo <<<EOT

{$row["day"]}<img src="bar.gif" width="{$w}"><br>
EOT;
}
とかでいいんじゃまいか?日付の書式は適当にね
0174nobodyさん2006/09/20(水) 01:17:32ID:???
>>97
PHPスクリプトとして認識させないならreadfileもあるよ

>>148
xを使う。スペースは\sで。{15,15}は{15}でいいよ。
$str = 'outer"in\"ner"outer';
preg_match('!
    "( # デリミタとその内側のキャプチャ開始
    (\\\\.|[^"])+ # エスケープを避けて"までの最短マッチ
    )" # キャプチャとデリミタの終了
!x', $str, $cap);

var_dump($cap);
0175nobodyさん2006/09/20(水) 01:56:01ID:???
>>170
> その場合、arrayで配列に代入する方法は使用出来ないかと思いまして。
それで何が困るのかさっぱり分からん。
$acc = array(
"2006-09-18" => 30,
"2006-09-19" => 15,
"2006-09-20" => 40,
);
というアクセス数の配列にしといて
$maxwidth = 400; //バーの横幅最大
$max = max($acc);
$rat = $maxwidth / $max;
foreach($acc as $date => $cnt) {
?><?=$date?><img src="bar.gif" width="<?=$acc[$date] * $rat?>"><br><?php
}
でふつーに問題なくね?
0176nobodyさん2006/09/20(水) 09:21:48ID:???
flush()とob_flush()の違いってなんですか?
マニュアルを見た感じ、出力後にバッファをクリアするかしないかの違いしかないような感じなんですが、それだけですか?
0177nobodyさん2006/09/20(水) 09:52:13ID:???
ob_start
 以降の出力を内部バッファに保存する
  ↓
ob_flash
 内部バッファに保存された出力を、出力バッファへ移動する
  ↓
flash
 出力バッファからクライアントへ送信

まぁあれだ、ob_flash()やってもPHPが常に持ってるバッファに移動するだけで、
それを即座にクライアントへ送りたいならflash()が必要だって事だ。

タブン
0178nobodyさん2006/09/20(水) 10:59:42ID:???
>>137
>書き込み完了後にLocationで別ページに飛ばしちゃうのが簡単な対策

飛ばしても、「戻る」ボタンでPOST後のページに戻れば再POSTになっちゃうけどね。
0179nobodyさん2006/09/20(水) 11:16:15ID:???
>>178
ならないよ
Location の意味分かってる?
HTTPヘッダーを使用したリダイレクトね。

IE, Firefox, Opera の最新版で試したが、全部ならない。
0180nobodyさん2006/09/20(水) 12:36:06ID:74yeHhio
PHPのサーバー側の設定の話になるんですが、mail関数をコールすると止まってしまいます。
OSはLinux(CENTOS)で、PHPは4.3。
sendmailそのものは動いています。(telnetからメール送信した)
php.iniの記述は↓です。
sendmail_path = /usr/sbin/sendmail -t -i

特に問題ないはずなのに、原因が分からず途方にくれてます。
0181nobodyさん2006/09/20(水) 12:40:45ID:xiIYenEj
centos 4.4
apache 2.2.0
php 5.1.6
net-snmp 5.2.2

でphpを--with-snmpでコンフィグしてるんだけど、
apache起動時にエラーログに

Cannot find modue (IP-MIB): At line 0 in (none)
Cannot find modue (IF-MIB): At line 0 in (none)
Cannot find modue (TCP-MIB): At line 0 in (none)
Cannot find modue (UDP-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-SMI): At line 0 in (none)
Cannot find modue (UCD-SNMP-MIB): At line 0 in (none)
Cannot find modue (UCD-DEMO-MIB): At line 0 in (none)
Cannot find modue (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find modue (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find modue (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find modue (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find modue (SNMP-MPD-MIB): At line 0 in (none)
Cannot find modue (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find modue (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find modue (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-TM): At line 0 in (none)

てmibsがない旨のエラーがでるんだけどなんでかな。
0182nobodyさん2006/09/20(水) 12:44:09ID:R2HBn3N4
似非保守詐欺師ブログ毒吐きてっくの正体
http://tech.heteml.jp/
1.現時点での個人情報
福井雅晴(偽名の可能性あり)
42歳、企業経営者。滋賀大学経済学部卒、カリフォルニア大学・バークレー校のPh.D(経済学)を取得
現在東京在住
2.てっくさんのお知り合い
http://www.geocities.jp/tatsuman/links.htm
http://www.jurists.co.jp/ja/attorney/detail/rn.shtml
http://ja.wikipedia.org/wiki/%E5%A4%A7%E7%9F%B3%E8%8B%B1%E5%8F%B8
ホリエモンのエピゴーネンの似非保守です。
3.やっていること
インターネット専門の広告代理店
保守系ブログの管理人
保守系ブログの管理人を操って政治的ムーブメントを起すこと(ちょい犯罪の可能性あり)
「エリート掲示板」管理人 参加者は福井晴敏や西村幸祐など(マジかよ!)
4.そしてなんと不敬な!
皇室を利用した振込み詐欺(女系天皇反対論者が文句を言えない個人の内面を弄ぶ卑劣な行為)
http://tech.heteml.jp/2006/03/post_429.html
本気で旧宮家復籍キャンペーンフラッシュをつくるつもりであれば一刻も早く会計報告書を自分のブログに掲載しておくれ。
0183nobodyさん2006/09/20(水) 12:52:34ID:???
MySQLのサーバ上に指定のテーブルが存在するか否かを
PHPで調べられないか試しています。
以下のようなソースを書いたのですが、思い通りになりません。
どこがおかしいかご指摘いただけないでしょうか?

$con = mysql_connect($dbserver, $dbuser, dbpassword);
$tabls = mysql_list_tables($dbname,$con);
if($tabls=="member"){
echo "memberテーブルが存在します";
}else{
echo "memberテーブルがありません";
exit;
}
0184nobodyさん2006/09/20(水) 12:58:59ID:???
>>183
関数の戻り値ぐらい確認しろよ
resource mysql_list_tables ( string database [, resource link_identifier] )

http://jp.php.net/mysql_list_tables
0185nobodyさん2006/09/20(水) 13:09:09ID:???
>>180

パッと見、問題無いように見えるからクリティカルな回答
じゃないが、
phpinfo()関数を実行した時
Local Value
Master Value
共に
/usr/sbin/sendmail -t -i
になっているかな?
後
>mail関数をコールすると止まってしまいます。
ということだけど、止まるって症状をもっと具体的に。
PHPのエラーメッセージも出ないってこと?
0186nobodyさん2006/09/20(水) 14:20:55ID:74yeHhio
>>185
アドバイスありがとうございます。
はい。local,master共に↓こちらです。(そのままコピペ)

sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i

>ということだけど、止まるって症状をもっと具体的に。
>PHPのエラーメッセージも出ないってこと?

はい。mail();の行で突然止まってます。
関係あるか分かりませんが、mb_encode_mimeheaderをコールした時も同症状です。

ちなみに、mbstringの設定なのですが、Windowsだとextension=php_mbstring.dll
というようにライブラリを呼び出していますが、Linuxは設定しなくても良いのでしょうか?
0187nobodyさん2006/09/20(水) 14:51:35ID:yPqg/Cyb
php_selfが危ないと言われるのは、ファイル名以外にディレクトリ情報も
含まれているからですか?

basenameを併用したら安全でしょうか?
0188nobodyさん2006/09/20(水) 15:23:40ID:???
PHP_SELF PATHINFO で検索と幸せになれるかもしれない
0189nobodyさん2006/09/20(水) 15:49:36ID:ap8SjPDw
>>186
止まるとはmail()から返ってこなくなるということ?
だとしたら具体的なmail()の呼び出し方を貼ったら・・・?
0190nobodyさん2006/09/20(水) 16:58:05ID:???
>>186
display_errors をonにしろ
0191nobodyさん2006/09/20(水) 17:01:05ID:???
ディレクトリが存在する場合はスルーし、存在しない場合は作成するという
処理を試しています。

$dir_name="$site_url"."files/";  //$site_urlにはサーバのURLが入ります。
if(!is_dir($dir_name)){
mkdir("$dir_name",0777);
}else{
echo "作成済みです";
}

としているのですが、アクセスする度に何度も作成しようとして、
存在している場合はスルーされません。
$dir_nameに絶対パスを指定しているので、ディレクトリと見なしていないかも
しれませんが、こういう場合、どうすればいいのでしょうか?
0192nobodyさん2006/09/20(水) 17:02:59ID:wx80eLIi
<form action="<?=$_SERVER['SCRIPT_NAME']?>">

こうかいても、ブラウザ上でソースひらくと上記とそのまんま表示されてしまいます。
参考書や多くのサイトでは<?= ?>でくくれって書いてありますけど、
<?php echo $_SERVER['SCRIPT_NAME']?>">
とすると意図した結果を返します。
phpのバージョンによるものなのでしょうか?

当方の環境はphp5.1.6でサーバapache2.0.59です。
0193nobodyさん2006/09/20(水) 17:07:39ID:???
phpの設定によるものです。
0194nobodyさん2006/09/20(水) 17:17:32ID:???
横から補足すると

short_open_tag が off

<?=の形式はあんまり推奨されないけど、「どうしても」使いたいなら
php.ini の short_open_tag を off に設定するか、
.htaccess に php_flag short_open_tag off を設定する。
01951922006/09/20(水) 17:23:41ID:???
必要ないものは切っておきたいので現状のまま使っていきます。
ありがとうございます。
0196nobodyさん2006/09/20(水) 19:33:42ID:???
login.phpにてログインしたらセッションを与えて、
hoge.phpでif文とisset関数でセッション変数をチェックするコードを書きました。
セキュリティに気をつけるところがあればご指摘お願いします。

データベースは使っておりませんが、セッションをデータベースに格納した
ほうが安全が高まるのでしょうか?
0197nobodyさん2006/09/20(水) 19:49:24ID:???
>>196
漠然としすぎて指摘のしようが無い。
DBに保存するかどうかも安全とはほぼ無関係。
そのレベルの情報量でセキュリティ的なものが判断できると思ってる
キミの無知加減が1番危ない気はするw
0198nobodyさん2006/09/20(水) 19:57:17ID:???
質問です。
セッションについてです。
クライアントがリクエスト、サーバがセッション開始
続けてもう一度クライアントがリクエストした場合
クライアントがセッションのIDをサーバに送るのですか?

クライアント側にIDみたいなのを保存しなければ成り立たない
機能だと思いますが、そのIDはクッキーとして保存するのですか?
だとすれば、クッキーの内容を変更するなどで、
他のセッションIDを送ることもできると思います。

つまりクライアントから受け取ったセッションIDには何の信憑性もないのでしょうか?
0199nobodyさん2006/09/20(水) 20:09:10ID:???
>>198
です。セッションIDは通常はクッキーで保持。
クッキーが使えない場合はクエリー文字列のパラメータに埋め込みも使用可能。
(この辺はphp.iniの設定次第)

他人のセッションID送信で中身を横取りする手法はセッションハイジャックといい
セキュリティ対策では重要なポイントの1つだと思う。
セッションハイジャックでググれば問題点もその対策方法も色々出てくると思うよ。
0200nobodyさん2006/09/20(水) 20:09:20ID:???
>>198
セッションIDは通常Cookieに保存され(逆にCookieが使える環境ではCookieのみにすべき)、信憑性は無い。

が、個人が現実的な時間内で破れるほどヤワなものではない。
発行されうるIDのパターンは殆どの環境では少なくとも2^128ある。

ユーザが送ってきたセッションIDはサーバに保存されている値と比較され、マッチした場合にのみ保存されている値が取り出せる。



セッションIDの信憑性より、下手な設定にしてセッションハイジャックされる心配をしたほうがいいな
0201nobodyさん2006/09/20(水) 20:12:01ID:???
>>198
ttp://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html#PHP_Session
0202nobodyさん2006/09/20(水) 20:21:29ID:vCicRGZl
データベースにjpg等の画像を登録したいとき、
PHPからはどのような手順や関数を使えばいいのでしょうか?
また、登録された画像を取り出したいときはどのようにしたらいいのでしょうか?
0203nobodyさん2006/09/20(水) 20:30:20ID:???
もうすこし自分で調べてからにしてくれよ、漠然としすぎて答えてもすぐにわからないことにぶつかるだろ
0204nobodyさん2006/09/20(水) 20:34:08ID:???
>>202
base64_encode()でバイナリ→文字列変換してそれをtext型のフィールドにinsert。
取り出しは逆にselectした結果をbase64_decode()でバイナリ変換。
辺りでいいんじゃない?
0205nobodyさん2006/09/20(水) 20:38:54ID:AVQePo+U
php.iniのsession.auto_start=0の場合、
session_start();はセッションを扱うページすべてに記述しなくてはならないのですか?
それとも、あるページに一回だけ記述しとけばいいのでしょうか?
0206nobodyさん2006/09/20(水) 20:54:41ID:???
>>204
バイナリのまま入れちゃだめなんですかね
0207nobodyさん2006/09/20(水) 20:57:24ID:???
だめ
0208nobodyさん2006/09/20(水) 21:17:20ID:???
>>206
DBによる。PostgreSQLならラージオブジェクトとして扱えるが。
0209nobodyさん2006/09/20(水) 22:08:06ID:???
>>207
なんでダメなんですか?
0210nobodyさん2006/09/20(水) 22:11:34ID:???
image関数で作る画像にデータを渡す方法としては何が好ましいですか?

メインスクリプト中にそのまま画像を出すことができないのでGETか何かで渡すのが一番簡単かと思いますが、
データ量が多くなった場合はセッションか何かを使うのがいいのでしょうか?
0211nobodyさん2006/09/20(水) 22:16:00ID:???
ありがとうございました>>セッションについて教えてくれた方
0212nobodyさん2006/09/20(水) 22:48:18ID:???
>>206
207じゃないけど、PHPでバイナリデータの文字列エスケープ処理なんて正常に動作すんの?
エスケープ処理できなきゃSQL文が壊れる場合があるし俺は怖くてバイナリそのままなんて書けないな。
あと、DBによっては強制的に文字コード変換かけるようなのもあるじゃない。バイナリ壊されるよね。
0213nobodyさん2006/09/20(水) 22:49:13ID:???
>>210
ごめん。ちょっと状況が把握できない。
どういう構成のプログラムなんだろ。
0214nobodyさん2006/09/20(水) 22:57:58ID:???
>>213
統計値か何かを計算して表にして表示するスクリプトがあるとしますよね。
表だけでは寂しいのでそれにグラフを表示させたい場合、メインスクリプトからどうやって
画像表示スクリプトにデータを受け渡すか、というような場合の話です。

画像表示スクリプト内で同じ計算をするのは無駄ですし、同時に表が出せませんよね(画像で作れないこともないけど)。

それともこういう構成は変なんでしょうか。
0215nobodyさん2006/09/20(水) 22:59:20ID:???
>>214
GETで値を渡せばいいんじゃないかな
■ このスレッドは過去ログ倉庫に格納されています