【PHP】下らねぇ質問はここに書き込みやがれ 21
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/05/23(火) 22:05:17ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0793nobodyさん
2006/06/04(日) 22:37:11ID:???httpの原理的に普通のhtmlだけだと無理な気がしますが。
DB+phpで画像を扱う場合一般的にはファイルパスだけをDBに入れてファイルは普通の方法で保存するのでしょうか?
0794nobodyさん
2006/06/04(日) 22:55:01ID:???0795nobodyさん
2006/06/04(日) 22:57:34ID:???img src="./image.php?img_id=100"という方法はわかります。
でも、これだとリクエストでphpが毎回動くので表示数が多いとキツイかと思いまして。
0796nobodyさん
2006/06/04(日) 23:00:41ID:???0798nobodyさん
2006/06/04(日) 23:20:59ID:???0799nobodyさん
2006/06/04(日) 23:49:15ID:???cronjobで一定時間ごとか、DBへの書き込みをトリガーにして更新された画像を
ファイルシステムに書き出すとかすればいいけど、だったらなんでDBに画像を入れるのって
話になるわなぁ。
0800nobodyさん
2006/06/05(月) 00:04:48ID:???やはり色々回りくどい処理になってしまいますか・・。
DBには画像の情報を保存しておいて画像自体は普通に置いておくのが一番効率が良さそうですね。
それでやってみます。
ありがとうございました。
0801nobodyさん
2006/06/05(月) 00:06:27ID:gDfHus2z以下のスクリプトだけでも、何の応答もありませし、@をとっても、何のエラーも表示されません。
allow_url_fopenはOnになっていますし、アクセス先(例ならwww.example.com)のアクセスログには記録されています。
Firewallは切ってあります。
どのような理由が考えられるか、教えていただけませんか?
<?php
$fp = @fopen('http://www.example.com/', 'r');//URLは変更してあります。
echo 'a';
0802nobodyさん
2006/06/05(月) 00:19:15ID:???俺はXPでコマンドプロンプト上で動かしたんだけど上手く言ったぞ
何をもってURLがオープンできてないと思ったんだ?
そもそもそのecho ('a')はなんだ?
0803nobodyさん
2006/06/05(月) 00:20:20ID:9HSZ1/yM一行掲示板を自作したいんだけど、
テキストBOXに書き込ませる。
↓
ボタンを押す
↓(ここがわからん)
変数としてテキストを取り込む
↓
それをデータベースなりテキストなりにインサート
ここまでを取り合えず理解したい。
一行掲示板に限らずこの辺の事詳しく書いてるサイトねーかな?
(一行掲示板 PHP mySQL)でぐぐってみたけどいいとこないんだわ。
0804801
2006/06/05(月) 00:26:58ID:???ありがとうございます。
echo 'a'は、とりあえず何か表示させるためです。
でも何も表示されず、503とかのエラーすら返ってきません。
Apacheのエラーログにも残ってません。
以前はfopen出来たのですが、OS再インストールして環境作り直したら駄目になりました(T-T)
0805nobodyさん
2006/06/05(月) 00:39:36ID:???まずはあれか?HTMLのフォームが分からないってことか?
とりあえず公式
ttp://php.s3.to/man/language.variables.external.html
で、分かりにくかったら
ttp://oss.kk-ntc.co.jp/jpug/pukiwiki/pukiwiki.php?PHP%2F%A5%D5%A5%A9%A1%BC%A5%E0%C6%FE%CE%CF(%B1%FE%CD%D1%CA%D4)
>>804
とりあえず、fopenを書いてる行をコメントアウトしたらもちろんaが表示されると思うけどそれは大丈夫?
0807801
2006/06/05(月) 00:47:51ID:???はい、表示されます。
echo 'a';flush();
$fp = fopen('http://www.example.com/', 'r');
echo 'b';
のようにすると、
HTTP/1.1 200 OK
Date: Sun, 04 Jun 2006 15:46:41 GMT
Server: Apache/1.3.34 (Win32) PHP/4.4.2
X-Powered-By: PHP/4.4.2
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
1
a
となり、最後の0が来ないまま終了します。
0808nobodyさん
2006/06/05(月) 00:52:10ID:???指定したphpが実行されると。そういう事でぃすか?
最初に見た掲示板のソースでinput使ってて、よくわかんなかったけど、こっちならわかりそう。
0810nobodyさん
2006/06/05(月) 00:53:38ID:???最後の一行って?
>>807
おかしいなぁ〜。俺も今ちゃんとローカル上(Apache)で試したんだけど
ちゃんと取れたぞ?
ちょっと取得先のURL変えてみたら?
0811801
2006/06/05(月) 01:03:43ID:???別のURLでも駄目です。
fsockopen使う方法ではうまくいきました。
しかしXOOPSのテスト環境なので、スクリプトを修正するのは骨が折れるので
PHPのバージョンを変えて試してみます。
0812801
2006/06/05(月) 01:14:40ID:???ttp://bugs.php.net/bug.php?id=36054
ttp://bugs.php.net/bug.php?id=36102
どうもご迷惑をおかけしましたm(_ _)m
0813nobodyさん
2006/06/05(月) 01:22:35ID:???音楽情報をデータベースから読み込んで表示しますよね?
あれと同じようにPHPでもデータベースにアクセスして
検索キーか何かから音楽情報を出力する事って出来るのでしょうか?
PHPでamazonの商品を検索して表示出来るので、その仕組みと同じではないか
と思っているのですが、いかがでしょうか?
0817nobodyさん
2006/06/05(月) 02:51:30ID:???0818nobodyさん
2006/06/05(月) 03:10:46ID:???のキャッシュ
http://cc.msnscache.com/cache.aspx?q=3259325326139&lang=ja-JP&mkt=ja-JP&FORM=CVRE
0819nobodyさん
2006/06/05(月) 03:12:23ID:???「別ドメインのファイルを読めない」をなんとか解決することが、今回の課題ク
リアの最大のポイントかもしれない。
JavaScriptでは到底ムリのようで、もしかしたらPHPなら可能かもとPHPの本を見
てみると……。HTTPで読み込み可能らしい。簡単なサンプルを作ってみたら、あ
っさり読み込んでくれた。それじゃこれを組み込めばと考えてみるが、Ajaxを使
う必要がなくなってしまうことに気がつく。
いやいや、ここはどうしてもAjaxでなんとかしたい。
PHPなら他のサーバのファイルが読めるでしょ……………
あっ、なーんだそういうことか。
ということで作ったのがこれです。
http://sakipapa.sakura.ne.jp/rss-sample0p.html
0820nobodyさん
2006/06/05(月) 03:13:12ID:???<button onclick="rssReader('./rss-sample0.php?u=http://rss.rssad.jp/rss/
nifty/manabe')">眞鍋かをりのココだけの話</button>
「rss-sample0.php」と「rss-sample0p.html」は同一のサーバにあるので「rss-
sample0p.html」から「rss-sample0.php」をファイルとして読み込むことは可能。
「rss-sample0.php」はスクリプトだからその実行結果が「rss -sample0p.html」
へ受け渡されることになる。
このような“力技”は「別のサーバのファイルの中身を表示したい!」と同じです
ね。もう少し早く気がつけば良かった。
0821nobodyさん
2006/06/05(月) 04:41:27ID:b18GC8fyまさか書店の解説本なんて訳ないですよね?
0822803
2006/06/05(月) 05:06:03ID:???フォームから、データベースに残すのはできた。
サンクス
次は、これをそのままのページに表示させたいんだけど、どういう構造にしていいかがいまいちわからん。
一番新しいのを上にどんどん乗せてくにはどうしたらいいか教えてくり。
0823nobodyさん
2006/06/05(月) 05:07:41ID:???産地直入。
作ってる所(組織)、作ってる人、作ってる人が屯ってる所、
むしろ自分も生産者のひとりになるとか。
# 自分の見込んだ生産物を消費者に供給する人も重要
0824803
2006/06/05(月) 05:09:01ID:???そのフォームページの下に表示させるようphpを組めばおk?
0825nobodyさん
2006/06/05(月) 05:14:51ID:???Web及び書店
仕事で使ってんならPHPならPHPでカンファレンスがある(米国だったりするけど)
Googleのカンファレンスにも行ったしMicrosoftのカンファレンスにも行ったことがあるよ
ただ、カンファレンスと銘打った単なる商品の宣伝もあるので注意だな
0826nobodyさん
2006/06/05(月) 05:30:57ID:???<?php
$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>
「Ajax + PHP」でRSSリーダーを作る はこれにて完了
0828nobodyさん
2006/06/05(月) 07:51:20ID:???0830nobodyさん
2006/06/05(月) 08:05:41ID:???ttp://www.php.net/manual/ja/
いかにもそういう関数が書かれていそうな「Strings(文字列関数)」ってのがある。
実際に中を見てみるとファイルから直接探すのは無さそう。
ってことは、ファイルの中身(全部あるいは一部分ずつ)を一度読み出してから検索すればよさそうだ。
あらためて見てみると「ファイルシステム関数」ってのがある
0832nobodyさん
2006/06/05(月) 11:02:44ID:???0834nobodyさん
2006/06/05(月) 15:09:00ID:ovUjrMmNtrueの時とfalseの時の動作の違いがよくわかりません。
0835nobodyさん
2006/06/05(月) 15:19:47ID:???0836nobodyさん
2006/06/05(月) 15:20:17ID:???ttp://php.benscom.com/manual/ja/function.is-callable.php
0837nobodyさん
2006/06/05(月) 16:02:12ID:ovUjrMmNどもども、いやその意味と違いがよくわからず・・・
あ、呼び出し可能かどうかは調べないということですかね。
0838nobodyさん
2006/06/05(月) 16:52:30ID:???0842nobodyさん
2006/06/05(月) 17:10:58ID:???ダメですか。
0843nobodyさん
2006/06/05(月) 17:26:25ID:???オレは構わないけど、適切な回答が得られるかどうかしらない。
MySQLは知らないけど、DESCじゃダメなの?
0845nobodyさん
2006/06/05(月) 17:52:24ID:???0846nobodyさん
2006/06/05(月) 17:57:00ID:???改行の位置がわからんからいきなり行の指定はできない
fileとかで読み込んでするしかないね
DBがいいと思う
0849nobodyさん
2006/06/05(月) 20:07:37ID:qfd9QG5u認証というか、いわゆるログイン/ログアウトの仕組みをつくりたいのですが、
1.ID/PASS2項目のログインフォームを作る
2.submitしたら、ユーザーテーブルにつないで、POSTされたID/PASSが存在するかチェックする
3.合致するレコードがあったら、ようこそhogehogeさん!とかやる
4.その後はsession_start()をやる
5.セッションクローズしたらログアウト
こんな流れでいいんでしょうか?
ユーザーテーブルの管理は管理者が手動で行うものとします。
とりあえずセキュリティ的なものは最低限にとどめるものとします。
なにか足りないものとかありますか?
0850nobodyさん
2006/06/05(月) 20:12:53ID:???注意することは↓くらい?
・session_startは始めにやっとけ
・POSTされたデータをそのままDBに渡すな
0851nobodyさん
2006/06/05(月) 20:16:58ID:???そっちの方が早くね?
0852849
2006/06/05(月) 20:22:29ID:qfd9QG5uれすありがとうございます。
POSTされたデータをそのままDBに渡さないというのはどういうことを指すのでしょうか?
いまとりあえず考えたのは
usernameとpasswordをPOSTして、
その値でwhere username = $_POST['username'] and password = $=POST['password']
みたいなクエリをつくってごにょごにょしようと思ったのですが、
これはまずいですかね?
0853849
2006/06/05(月) 20:26:11ID:qfd9QG5uそうですよね。
認証の仕組みについて、なにも資料を持っていないので、
想像でこんな感じなのかなと思ったのですが、
そもそもそんなプロセスじゃダメだ!と言われるかなと思い、
聞いてみました。
とりあえず書き始めます。
ありがとうございます。
0854nobodyさん
2006/06/05(月) 20:38:28ID:ycACK6dgMySQLにnam、age、hed、bst、wst、hip、fotというレコードがあります。
これをfputs()でnam[0],age[0],bst[0],wst[0],hip[0]\n
nam[1],age[1],bst[1],wst[1],〜[EOF]
というcsvファイルに落としたいです。
hedとfotはいりません。
よろしくお願いします。
0856nobodyさん
2006/06/05(月) 20:49:48ID:???0857nobodyさん
2006/06/05(月) 20:54:31ID:???うわ、ひでぇ文章だな。何となく理解できるが、それ読んでも意味わからない奴たくさんいると思うぞ。
国語勉強しないと駄目だな。
0860nobodyさん
2006/06/05(月) 21:20:32ID:/Q4wZYeJ> charlistパラメータにより、削除する 文字を指定することも可能です。
> 削除したい全ての文字をリストに してください。
> ..を文字の範囲を指定する際に 使用可能です。
"\n" と "\r" を削除したいのですが、具体的にはどうリストにすればよいのでしょうか?
区切り文字は必要なく、普通に:
trim ($var, "\n\r")
と書いてしまえばよいのでしょうか?
0861849
2006/06/05(月) 21:36:40ID:qfd9QG5uレスどうもです。いまスクリプト書いています。
XSS脆弱性については勉強が追いついてないです。POSTのデータは
サニタイズ(でいいのかな?)して、タグの除去等は行うつもりです。
passwordの値もmd5()の文字列にしようと思っています。
他になにかありますか?
実はPEARのAuthはカンタンでイイ!みたいな話を小耳に挟み、
サンプルコードなど書いてみたのですが、
なんとなく時期尚早というか、オーソドックスなやり方を知っといたほうが
いいと思ってやめときました。
やはりPEAR::Authはオススメなのでしょうか?
0864849
2006/06/05(月) 22:51:24ID:qfd9QG5uどうもです。SQLインジェクションですか。対応しないとまずいですね。
以下のスクリプトはセキュリティ的なものは無視するとして、基本はコレでいいですかね?
//dbに接続したとして
$name = $_POST['username'];
$pass = md5($_POST['password']);
$sql = "select * from usertbl where username = '$name' and password = '$pass'";
$rst = mysql_query($sql, $con);
$col = mysql_fetch_array($rst);
$name = $col['username'];
if (strlen($name)) {
echo "ようこそ".$name."さん";
}
else {
echo "そんな人いません";
}
添削お願いいたします。
0866849
2006/06/05(月) 23:00:27ID:qfd9QG5u早速レスありがとうございます。
一応意図した通りに、登録されてる場合は名前が出るし、登録されてない人は、
いないといわれます。
セキュリティ的なものはあとでhtmlspecialcharとかしようと思ったのですが、それでもマイナスでしょうか....。
どのへんが致命的にイクナイ!ですかね?
0867nobodyさん
2006/06/05(月) 23:12:36ID:???アドスラに気を配るのと、
シングルクォートもどうにかする。
username = '' or username is not null and password = '$pass';
みたいになる。
0868nobodyさん
2006/06/05(月) 23:13:59ID:???username = '' or username != ''
$nameに、
' or username != '
みたいな感じで入れられるのを想定する
0869nobodyさん
2006/06/05(月) 23:36:10ID:???つながんねーYo!
0870nobodyさん
2006/06/05(月) 23:36:30ID:???小5なんで分かりやすく教えてくれると嬉しいデス
0871nobodyさん
2006/06/05(月) 23:46:46ID:???ttp://kids.goo.ne.jp/cgi-bin/kgbody.php?BL=0&SY=0&TP=http://php.s3.to/man/function.mysql-fetch-array.html
なお、PostgreSQLなら、pg_fetch_allでいっぺんに取得できる。
0873nobodyさん
2006/06/06(火) 00:13:32ID:???正規表現をしたい箇所で[0-9A-Za-z]に記載して半角英数字は表示されるのですが、
- を表示させたい場合、どのように書けばいいのでしょうか?
0876nobodyさん
2006/06/06(火) 00:29:40ID:???0877nobodyさん
2006/06/06(火) 00:30:35ID:???0879849
2006/06/06(火) 00:32:55ID:KDLdvTgnありがとうございます。
確かに危険ですね。
セキュリティ対策も同時進行で勉強するようにします。
phpセキュリティのオライリー本なども出てたので。
0881nobodyさん
2006/06/06(火) 01:25:50ID:P9qxVQD6記事とその記事の投稿者IPが対で分かるには、どう書けばいいですか。
下のものでは不可能でした。
<?php
$logfile = "./.abc";
$u1 = date("Y/n/j D H:i:s",time()) . "," .
$HTTP_SERVER_VARS["HTTP_USER_AGENT"] . "," .
$HTTP_SERVER_VARS["SERVER_NAME"] . "," .
$HTTP_SERVER_VARS["GATEWAY_INTERFACE"] . "," .
$HTTP_SERVER_VARS["QUERY_STRING"] . "," .
$HTTP_SERVER_VARS["REMOTE_ADDR"] . "," .
$HTTP_SERVER_VARS["REMOTE_HOST"] . "," .
$HTTP_SERVER_VARS["CONTENT_LENGTH"] . "," .
$times = time();
$postip = $_SERVER['REMOTE_ADDR'];
$new_msg = "$name\t$wburl\t$com\t$times\t\t\t$postip\n";
$HTTP_SERVER_VARS["HTTP_REFERER"] . "\n";
$fp = fopen($logfile, "a");
flock($fp,2);
fwrite($fp,$u1);
flock($fp,3);
fclose($fp);
?>
をrequire。
0882nobodyさん
2006/06/06(火) 01:32:43ID:???0883nobodyさん
2006/06/06(火) 01:34:30ID:???0884nobodyさん
2006/06/06(火) 01:35:10ID:???0885nobodyさん
2006/06/06(火) 04:15:03ID:???0886nobodyさん
2006/06/06(火) 04:56:22ID:???if(!$name||ereg("^( | )*$",$name)) error("名前が書き込まれていません");
これの意味が分かりません
$nameが記入されているかどうかを調べる処理というのは分かるんですが
それぞれの文字列にどういう意味があるのか分かりません
検索しようにも記号ばかりなのでぜんぜん引っかかりません・・・
どうかご教授お願いします
0889nobodyさん
2006/06/06(火) 07:22:28ID:???見よう見まね?
0890nobodyさん
2006/06/06(火) 07:35:32ID:???例えば次のようなtry-catchがあったとして
try {
...throwする可能性のある処理...
} catch (MyException $ex) {
...catch処理...
}
finallyと同じことをしようとすると、今は次のようにしています。
try {
...throwする可能性のある処理...
...後始末...
} catch (Exception $ex) {
...後始末...
if ($ex instanceof MyException) {
...catch処理...
} else {
throw $ex;
}
}
いくらなんでもこれはださいので、もっとスマートに書けないかと考えているのですがいい考えがありません。
みなさん、finally処理はどうやってますか?
0892nobodyさん
2006/06/06(火) 14:55:13ID:19d/3eWN変数$aの数値が2の何乗かどうか調べたいのですが、そのような関数も見つからなかったので、自作しようかと思うんですが、どうすればスマートですかね?
例えば
$a=2の時は1
$a=8の時は3
$a=5の時は2余り1
としたいです。
考えたのは2*$iを繰り返しながら比較していくものですが、他に手はありませんかね?
■ このスレッドは過去ログ倉庫に格納されています