くだすれPHP(超初心者用)3at PHP
くだすれPHP(超初心者用)3 - 暇つぶし2ch39:nobodyさん
07/11/05 19:39:54
俺は最初にログファイルに0書いてからやったけど

40:nobodyさん
07/11/05 19:46:08
>>39
俺のはログファイルを作ったときに数字の後に改行が入ってしまったから
カウントされなかったのかもしれない

41:超初心者
07/11/06 16:36:17 blXO/asx
報告します
<?php
$fp = fopen("count.txt", "r+");
$iCount = fgets($fp, 64);
flock($fp, 2);
fseek($fp, 0);
$iCount++;
fputs($fp, $iCount);
fclose($fp);
print $iCount;
?>
count.txtを変数化しました。$db
そして$iCount=fgets($fp,filesize($db));
にしたらカウントが上がりました。
php5です

42:nobodyさん
07/11/06 17:01:40
それは関係ない

43:nobodyさん
07/11/06 18:33:16
>>41
34氏と40氏のレスが全てだと思う
インクリメント演算子は数値型(intその他)の他に文字型(string)に対しても
有効なんだけど、NULL、boolean以外にコントロールコードを含む文字列に
対しては無効。
だから、PHPスクリプトに読ませるファイルのデータにも注意しないとね。
例えば初期値0を書き込んだファイルの16進ダンプを取った時に
 30
のみ書かれている場合は良いけど、その後ろにCR+LFやLFが付いている
 30 0d 0a 又は 30 0a
などのデータは余分なコントロールコードを排除しないかぎり
そのままではインクリメント演算子で加算はできないよ。

44:nobodyさん
07/11/07 12:10:07
urlencode()ではなくrawurlencode()を使わなくてはいけないケース
(またはその逆のケース)って、どういう場合が考えられますか?

45:nobodyさん
07/11/09 18:37:25 /x/z4zSE
質問お願いします。

200711 2007101 などを
20070101 20071001 に
変換する関数とかってないでしょうか?

ない場合どうやって分離するか教えてください。

46:nobodyさん
07/11/09 18:40:13 /x/z4zSE
あ、phpのバージョンは4.3.10です。

47:nobodyさん
07/11/09 18:41:57
法則性が見出せない

48:nobodyさん
07/11/09 18:49:12
2007年1月1日がきたら「200711」になるし
2007年1月10日がきたら「2007110」になるし
2007年10月1日がきたら「2007101」になるし
2007年10月10日がきたら「20071010」になるし


49:nobodyさん
07/11/09 18:51:54
>>45
例えば2007121が
20071201、20071021のどちらかを見分けられないから無理ぽ
取得する時にそのようにするしかないかと

50:nobodyさん
07/11/09 18:53:49
20071021じゃなくて20070121でした

51:nobodyさん
07/11/09 19:31:44
>>49
そっか(´・ω・`)

ありがとうございました。

52:nobodyさん
07/11/10 00:26:51
mb_convert_kana て、
PHP5.24では使えないのでしょうか。
4.4.1のサーバーで使えてたファイルを
PHP5.24にアップしたら、エラーがでます。
メールフォームで全角で入力された文字を、
次の確認画面で、半角で表示させたいのですが、
もしmb_convert_kanaが使えないなら、他の方法はありますでしょうか。。。

53:nobodyさん
07/11/10 01:54:48
>>52

mb_convert_kanaはわからんけど、

preg_replaceでがんばってみては。

URLリンク(jp2.php.net)

もしくは全角が入力されてたらエラーページにいくようにしたりとか。
携帯向けってわけじゃないなら、JavaScriptあたりで、全角のチェックいれてみたり。
携帯だったら、inputタグにistyleとか要素突っ込めば、IMEのデフォルトを半角に出来たりしたきがする。

54:nobodyさん
07/11/10 02:25:51
>>52
使えるよ、変換できるよ
そのサーバーでmbstringが有効になっていて、かつ、mb_convert_kanaに
適切なオプションを引数として渡して駄目ならわからん

55:nobodyさん
07/11/10 09:18:23
>>52

>>54が使えるっていってるし、とりあえず、
phpinfo();
あたりでmbstringが有効になってるか確認することが必要なのかね。

56:nobodyさん
07/11/10 10:43:48
エラーが出た時、解決の為の一番のヒントは、そのエラーメッセージの中にある

57:nobodyさん
07/11/10 11:31:39
みなさんご丁寧にありがとうございます。

phpinfo();でみたところ、
mbstriongが有効になってませんでしたorz
preg_replace、やってみましたが、どう使えばいいのか・・・(汗)。

たとえば身長を全角で入れて、その数字をわり算したいのですが、
全角だとそのわり算部分でエラーがでるので、
半角に事前に変換した上で、わり算に持っていきたいのです。
無難にjavaスクリプトでエラーチェックしたほうがよいのかもですね。。。

58:nobodyさん
07/11/10 12:02:20 kqDw9Pxy
PHP 5.2.5 が出てたのでage

59:nobodyさん
07/11/11 00:35:28
>>57

おそくなっちゃったけど

たとえば、全角が表示されてたときにエラーページに行くためのフラグを立てるだけだったら、

if( preg_match("/^[0-9]*$/", $_POST["sincho"]) ){
//半角数字で記述されてた場合

}else{
//それ以外のまちがった記述の場合
}

とかにするとかかな。

preg_replaceで置換する場合は

$str = preg_replace("/A/", "A", $_POST["shincho"]);

とかやると、全角Aで書かれた文字が半角Aになる。
変換表を作って変換させなきゃいけなくてうざいけど。

そして、もっと効率のいい方法があるきがするけど、思いつかなかった。

60:nobodyさん
07/11/12 00:29:44 jDp7PoYP
C言語歴2ヶ月なんですが最初にCでCGIを作るのはむずかしいと聞いて
PHPをやろうと思いどうすればできるのかを
調べたのですがどうすればPHPを使えるのかがよくわかりません・・・
apacheを使ってやろうとしているのですが
あるサイトでhttpd.confの中にある文を書き加えるというのがあり
やったのですが上書き保存しようとすると
「フォルダを作成できません。パスおよびファイル名が正しいか
確認してください」と出てきます・・・
それとapacheをstartさせてもerrorと出てきてしまい
どうすることもできません。
わかる方教えてください。

61:nobodyさん
07/11/12 00:48:04
まずエディタの使い方がおかしい

62:nobodyさん
07/11/12 02:37:46 hPj5yJAt
>>61
お返事ありがとうございます。
どこがおかしいのでしょうか・・・?
ちなみにhttpd.confの書き換えのやつは保存というか
無理矢理ぶち込んでできたんですが相変わらず
エラーと出ます・・・
というかずっとググってたんですがyahooで検索してみたら
PHPエディタというのが出てきたんですが
初心者はこっちでやったほうがいいんでしょうか

63:nobodyさん
07/11/12 11:55:27 cLhnRAhS
>>62
よくわからんがSSHで操作するのがいいと思うんだが。


質問です、メールを解析するのに
PEARのMail_Mimeを使う方法ではできました。

これを自分で解析する場合、かなり手間暇かかりますか?
めちゃくちゃアバウトな事言ってるのは承知の上での質問で申し訳ないですが…

64:nobodyさん
07/11/12 13:40:43
>>63
どこまでやるかによる
メーラー並みのことをやると湯水のごとく時間は消えていく

65:nobodyさん
07/11/12 14:14:19 cLhnRAhS
>>64
現状では添付ファイルなど
内容を解析して
本文やヘッダーを抜き出したり
ファイルのアップロード程度です。

この程度なら作れそうかなと思いました。

解答ありがとうございます。

66:nobodyさん
07/11/12 17:36:32 mA3HDDMg
ディレクトリを作成しようと以下の文を書いてサーバにアップしましたが、
エラーになります。なぜエラーになるのか指摘おねがいします。
$dir = "tetess";
$rc = mkdir($dir, 0777);

if ($rc) {
print "成功";
} else {
print "失敗";
}


67:nobodyさん
07/11/12 17:42:25
tetessのパーミッションは?

68:nobodyさん
07/11/12 17:43:37 cLhnRAhS
>>66
作ろうと思ってるディレクトリのパーミッションは?

69:nobodyさん
07/11/12 17:55:22
エラーの内容次第

70:66
07/11/12 18:36:45
作ろうとしてるディレクトリのパーミッションを777にしたら
無事できました!
意見くれたみなさんありがとうございます。

71:nobodyさん
07/11/12 19:43:02
チャレンジャーだな

72:nobodyさん
07/11/12 20:46:49
pearがインストール?出来ません。

go-pear.bat実行してpear_env.regして、pear.batを実行したら「コマンドまたはファイル名が違います」ってなります。
win98環境です。pearのキャッシュライトは個別にダウンロードして使えてます。

最悪、PEAR::HTTP_Requestを使えるようになれば良いのですが、どうしたら良いでしょうか?

73:nobodyさん
07/11/12 22:55:28
既に入ってんじゃないの?

どうしても使いたいんなら直接落としてrequireしてやれば?

74:nobodyさん
07/11/12 23:02:11
キャッシュライトの場合、何をどこに落すか書かれたサイトがあったのですが、今回はどうも色々関連のあるものも
同時に落さないといけないらしく、だからコマンドで関連性のあるもの一気に落としちゃいましょう的なサイトしか見付ける事が
出来ませんでした…orz

75:nobodyさん
07/11/12 23:28:42
requireなりincludeしたら何がないって出てくるでしょ?
だったらそれを落としてくればいいじゃない。

それとdocumentぐらい嫁

76:nobodyさん
07/11/12 23:51:23 KsyPxw5N
>>63
お返事ありがとうございます。
そのやり方調べてやってみようと思います。

バージョンによってやり方って変わるのでしょうか?
やり方が書いてあるサイトは5.2.3で説明してるんですが
自分は新しい5.2.5をダウンロードしてやりました。
ちなみにそのサイトは
URLリンク(www.standpower.com)
です。

77:nobodyさん
07/11/13 02:23:32
>>75
ありがとうございます。

Warning: Division by zero in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2

Warning: include(php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2

Warning: include() [function.include]: Failed opening 'php' for inclusion (include_path='.;C:\php\includes;C:\php\pear') in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2

ここから先に進めませんが、どうしたらいいでしょうか?

78:nobodyさん
07/11/13 18:58:47
>>77
まず調べてから言えば?

1番目のエラーは
検索したら3件目に出た。
エラーが2行目にあるんだから2行目に使ってる物をechoでもしてみろ。

2番目も3番目を調べたらすぐわかる。
甘えんな。


79:nobodyさん
07/11/13 19:03:37
え、てか読めば分かるじゃん・・・。Division by zeroを検索しないと分からんのか・・・

80:nobodyさん
07/11/13 19:20:37
>>79
調べなきゃわからん俺程度の人間でもパッと解決できるんだ。
だから>>77にはせめて調べろと言いたい。

81:nobodyさん
07/11/13 19:42:16
>>79
そんなことばかり言ってるからお前は器が小さいんだよ

82:nobodyさん
07/11/13 19:48:42
それにしてもこの手のエラーメッセージを読まない人はどういう思考をしているんだろう。
最初から読む気がないのか、読もうとしたけど読めないのか、読んだ上であえて質問しているのか。
それぞれに対して突っ込みどころはあるんだけども。
純粋に気になる。

83:nobodyさん
07/11/13 19:49:42
みんな>>80みたいなヤツだといいんだがな。

84:77
07/11/13 22:03:22
うはっ、すいません…エキサイトの翻訳してみたんですが、あまりの意味不明さに諦めてました。

今から調べてみます!

85:nobodyさん
07/11/13 22:26:14
>>84
エラーメッセージは検索窓にフレーズをそのままぶっ込むもんです。
「英語だからわかんない」とか思ってそういう手に走ると

failed to open stream  「ストリームを開くために、失敗されます」
Failed opening 'php' for inclusion 「包含のための失敗した初めの'php'」

余計わからなくなる。

86:nobodyさん
07/11/13 22:31:28
了解です!ありがとうございます。

87:nobodyさん
07/11/13 23:00:02
「to 動詞」は「~のために」という意味で固定かよ。
「opening」は「初めの」という訳しか思いつかないのかよ。

・ストリームを開くことに失敗しました
・includeで'php'というファイルを開けませんでした

素で疑問なんだが、もしかして現役中学生なの?
高校生なら英語の授業でもっと難しい英文やってるだろ?
正直、プログラミングをやるにはまだかなり早いんじゃないかと。
プログラム言語って英文法の構造を元に設計されているから。それに当然エラーメッセージやドキュメントは英語だし。
英語を先に高校レベルまで勉強したほうがいい。真面目な話。

88:nobodyさん
07/11/13 23:18:00
> エキサイトの翻訳

89:nobodyさん
07/11/14 17:43:26
質問です。

ローカルでサーバを作ったのはいいのですが
PEARなどのパッケージをインストールするのに
SSHなどで起動したいのですが
127.0.0.1やlocalhostで接続しても接続できません。

ローカルの場合どうやって起動すればいいのでしょうか?

Puttyを使ってやってSSHで接続してました。

90:nobodyさん
07/11/15 10:12:38
gzip 関係で躓いてます。

と、あるサーバーに対して、Accept-Encoding: gzip リクエストヘッダーを付加して、
GET メソッドにてアクセスし、レスポンスヘッダーに

Content-Encoding: gzip
Content-Length: xxx

と、返ってきたので gzuncompress を使用した所、以下のエラーが…

PHP Warning: gzuncompress(): data error in paipan.php on line 277

使っている PHP は Windows 版の 5.1.6 でマニュアルには、バイナリビルトインされているとの事なので
php.ini は特に編集していません。gzdecode, gzinflate を試しても以下のエラーが…

PHP Fatal error: Call to undefined function gzdecode() in paipan.php on line 277
PHP Warning: gzinflate(): data error in paipan.php on line 277

これは、サーバー側のデータがおかしいのでしょうか?
phpinfo.php の zlib の所はこうなってます
URLリンク(www.imgup.org)

91:90
07/11/15 10:29:50
ぐぁ…自己解決しました。

fopen のパス名の接頭語に圧縮ストリーム compress.zlib:// ラッパー識別文字列を
付加する事によって、コンテンツを取得した際に解凍されて戻ってきました…

でも、なんかスッキリしない…これで、いいのでしょうか?

92:nobodyさん
07/11/16 13:25:48
まだphp5を勉強し始めて2週間くらいですが、本は何冊か読みました。
そこで疑問に思う事があるのですが、PEARやSmartyは必要でしょうか?
もちろん使う環境によって違うのでしょうが、oopを理解してPEARなどの各ライブラリのオプションを覚えて使いこなすのは手間に感じてなりません。
初心者の戯言ですが、ご意見お願いします。

93:nobodyさん
07/11/16 13:34:45
目標のものをつくる手段なんてどうでもいい
つくれるかどうかだ

94:nobodyさん
07/11/16 18:43:48
必要でしょうか?なんて言ってる時点で乙

95:nobodyさん
07/11/16 21:48:15 SDmAZVUY
>>94
まあ初心者相手にそう悶えるな初級者くん
>>92
自分で遊んで使うのには、まったくいらんと思うよ俺は

96:nobodyさん
07/11/17 01:30:35 LKV8TtnR
>>92
>PEARなどの各ライブラリのオプションを覚えて使いこなすのは手間に感じてなりません。
ライブラリやフレームワークはそういうデメリットがあるよ。
要するに楽して作るためのものなんだけど、そのメリットが上回らないなら使う意味はないです。
それに、内部でどんな処理をやっているのか理解していないとはまることも多いし、勉強中
ならこれらを使わず書いていった方がいいとおもうよ。
PHPの質問はいろんな掲示板で見かけるけど、意味もわからず本か何かのサンプル打ち込んで
簡単なエラーに対処できなかったりトンデモなソース書いたりしてる人多いし。

どういう目的で利用するためのもので、どんなものがあるのか知っていれば十分かな。
習熟したころに思い出して、必要と思ったときに使えばいいと思う。

97:nobodyさん
07/11/17 05:19:29
>>92
もしデータベースを絡めるならPDOの扱いくらいは覚えておいて損はないと思う。

98:nobodyさん
07/11/17 10:07:21 gYmumvx4
<html>よりも上に/*~*/でコメント入れたり、phpの構文などを色々入れました。

するとブラウザ上にスペースができてしまいます。
スペースができない様に書く方法はありますか?

99:nobodyさん
07/11/17 11:26:53
改行しない

100:98
07/11/17 12:26:52 gYmumvx4
>>99
物凄く使いにくいです
皆さん改行せずにやっているのでしょうか?

101:nobodyさん
07/11/17 12:27:32
BOM付いてるんじゃないの?

102:nobodyさん
07/11/17 12:32:12
>>98

?><html>

103:98
07/11/17 19:22:04 gYmumvx4
>>101使ってないです。ってかまだそれわかりませんw
>>102やってみましたが変わりませんでした

104:nobodyさん
07/11/17 19:27:21
分かれよ

105:nobodyさん
07/11/18 00:06:16 7O6DTqoC
<?php

{
$i = 5;
print $i;
}

{
print $i;
}

?>

一つ目の括弧の終わりでC言語とかみたいに
$iの効果(スコープ)を消したいんですけど、
何か方法がありましたら教えてください。

106:nobodyさん
07/11/18 00:21:57
無いよ。PHPの決まり事に慣れるしか無いだろうね。

107:nobodyさん
07/11/18 00:35:02
>>106
ありがとうございます。
気づかないうちに値を変えてしまっているとか心配したんですけど、
関数にすれば守られるようなので(globalを付けていないから?)、
スタート部分(Cのmainの部分)を出来るだけ短くすれば大丈夫そうです。

<?php
{
$i = 5;
print $i;
Hoge();
}

function Hoge()
{
$i = 10;
print $i;
}

{
print $i;
}
?>

108:nobodyさん
07/11/18 02:38:24
普通はクラスにするけどね

109:nobodyさん
07/11/18 15:35:54 Quc9Cq5K
中の人に質問
unsetしたらその場で必ずメモリは開放されてるんですか?

110:nobodyさん
07/11/18 15:39:33
されてる

111:nobodyさん
07/11/18 21:13:43
質問です
半角スペースで文字列を区切っているテキストファイルを読み込んで
文字列ごとに配列に代入したいのですがどうすればいいでしょうか?

例えば"hoge.txt"を読み込み、その中には

abc def ghi
jkl mno

と書いてあるとすれば、配列aに

$a[0] = 'abc'
$a[1] = 'def'
$a[2] = 'ghi'
$a[3] = 'jkl'
$a[4] = 'mno'

と代入したいです。よろしくお願いいたします。

112:nobodyさん
07/11/18 21:19:50
>>111
file
explode

113:nobodyさん
07/11/18 22:02:19
>>112
explod関数なんて便利なモノがあったんですか。
助かりました。どうもありがとうございます。

114:nobodyさん
07/11/18 22:49:48
$_POSTで値を取得するのに、フォームタグに値を入力してやっているのですが、一度値を入力するとフォームタグ内に入れた値は消えるのですが、ブラウザの更新をするたびに一度入力した値を更新をやればやるほど何度も取得してしまいます
原因と解決策を教えて下さいお願いします

115:nobodyさん
07/11/18 22:57:41
まず、POST後のページを再読込すると、
「ブラウザは再度POSTデータを送信しなければならない」という決まり事がある。
でだ、大きく分けて方法は3つくらいある。
1. GETで送ればいいじゃない -> methodをかえる
2. POSTで受け取った後で、どこかに(GETで)飛ばせばいいじゃない -> header('Location~")
3. 受け取った時に二重投稿か調べて破棄すればいいじゃない -> チケットでゲイツる

116:nobodyさん
07/11/19 12:57:44 IR8ctjgO
マニュアルについて質問。
インターネット接続環境がない所からでも、

URLリンク(www.php.net)
↑と同じようなマニュアルが欲しいんですが、ページの下の方にある show source で
1ページずつソース表示させて→コピペ→ファイルに保存 と、しないといけないのでしょうか?

117:nobodyさん
07/11/19 14:28:28
>>116
URLリンク(argus.sblo.jp)
とりあえずこの辺でも。

118:nobodyさん
07/11/19 16:06:42 IR8ctjgO
>>117
レスありがとう。
それだと、Windowsしか駄目だし htmlヘルプはキーワード表示できないし…
できたとしても、htmlヘルプは新しいウィンドウ開いてウザイし…

URLリンク(jp2.php.net)
↑オンラインだとこんな感じでキーワード検索できるので、
自鯖に丸ごと持って来れないものかと…

119:nobodyさん
07/11/19 16:41:48 RXlkgnzM
>>116
インスコ時に含まれてなかったっけ?

120:nobodyさん
07/11/19 16:43:41
PHP: Download documentation
URLリンク(www.php.net)

121:nobodyさん
07/11/19 23:18:25
120 にあるよ。HTML版が。
ただ検索はできないから、関数一覧からページ内検索かけるか、自力で検索組むしかないね。

122:116
07/11/20 00:00:59 bjL1gLBS
>>119
ないです。

>>121
やっぱそうですか…。

show source → コピペ → 保存 じゃなくて、
各ページの show source の URL を GET して、内容を切り出して、~.php に保存
ってやるしかないようですね…問題は各ページの show source の URL リストをどうするか…
URL に規則性があれば作れると思うけど…

レスくれた人ありがとうございました。

123:nobodyさん
07/11/20 16:00:42
>>122
すまん、いまいちやりたいことが理解できないんだが・・・
Documentをダウンロードしたいだけじゃないの?

中身検索は、Googleデスクトップとかいれとくとか、
なまずでも入れるとかすれば?

124:116
07/11/20 17:00:33 FtfBoc0Z
>>123 ん~、何て言ったらいいんだろう…

URLリンク(www.php.net)
ここでダウンロードできる html とか chm は
URLリンク(www.php.net)
↑こことは違うでしょ。んで、ここのマニュアルのシステムを丸ごと
自分の所のサーバーにおいて使いたかった訳。(←これが本来の質問の趣旨)
それを行うにはページの下の方にある show source で、
いちいち .php を保存しないといけないのかなって聞いたの。

html はベタな html だけでサーバーに入れて使えるけど、検索できない
chm は検索できるけどプラットフォーム依存。使う所にコピーしないと使えない
(直す方法は知ってるけど、いつまでたっても文字化け直らない)

show source の URL リスト取得する方法考えてたんだけど、(スクリプトは途中まで作った)
html をサーバーにぶっ込んで、それを検索させるシステムを作る方が楽な気がしてきたなぁっと…

125:nobodyさん
07/11/20 17:36:23
もうjp*.php.netをホスティングしろよw

126:nobodyさん
07/11/20 18:31:45
BOMってなんですか?

127:nobodyさん
07/11/20 20:00:33
>>126
爆弾

128:nobodyさん
07/11/21 00:17:45
それはBOMB

129:nobodyさん
07/11/21 08:53:29 gCXzQuZ6
require_onceを入れた場所にブラウザでスペースができます
呼び出してるファイルにも余分なスペースは書いてないのですが、
スペースをなくす方法教えてください


130:nobodyさん
07/11/21 10:05:52
変数にホワイトスペースがあるならtrimで解決。
そうでないならrequire_onceを入れた場所もしくは前後に
スペースが必ずあるのでそれを探してとるとなくなります

っとしか回答できない

131:129
07/11/21 10:43:02
>>130ありがとうございます
変数内にホワイトスペースがなく、require_onceの前後にもスペースはありません
タブでインデントしかしていないです

132:nobodyさん
07/11/21 11:53:49
>>124
URL取得ならireaとかのダウンロード用のフリーソフトで
軒並みおとせば?

ローカルでの検索なら、なまずとかで十分だと思う

133:nobodyさん
07/11/21 11:54:20
>>131
ソースはりつけてみ。

134:nobodyさん
07/11/21 19:47:02
>>131
BOM

135:たまま
07/11/21 21:44:06 ACwa23UP
RSSより取得した日付の変換で困っています。
'火, 13 11 2007 17:04:12 +0900'を'2007.11.13'と変換して表示したいのですが
うまくいきません。どうしたらいいでしょう


136:nobodyさん
07/11/21 21:53:22
日付関数、文字列関数のページを見る

137:129
07/11/22 09:00:06
>>134ありがとうございます。
BOMで検索してutf-8nにしたら一端はスペースが消えましたが、
また戻ってしまいます。
もう一度require_onceなどで呼び出すファイルなどを見直すと、
sjisなどに戻ってるのでそれが原因かもしれません。
使用エディタが悪いから戻るのでしょうか?
一応使用エディタはJmEditor2です

138:nobodyさん
07/11/22 14:34:53
>>137
改行やめたらなくなる

139:nobodyさん
07/11/23 00:48:12
>>137
終了タグ "?>" 使ってる?

140:フリーメール
07/11/23 03:08:36 6ZV7uhRm
質問です。
プログラムを書いたことはなく、
既存のスクリプトを設置したり、プログラマに改作をお願いしたりすることがあり
多少のスクリプト(フォームからcsvに保存するスクリプトなど)のソースコードが
何をしてるのかはなんとなくで読める程度の知識しかありません。

最終的には携帯向けフリーメールシステムを作りたいと思っています。
仕様としては、

・3キャリア対応で絵文字が使える
・マイページ機能を持ち、受信BOX、送信BOXをウェブで確認できる
・メール送受信はxxmailと同仕様
 (docomo.ne.jpに送る場合docomo.xxne.jpにして送信すると送信元アドレスは[ユーザID@xxne.jp]になる)
 (キャリアアドレスからメールを受信した場合はFromが
  [送信者アカウント@docomo.ne.jp]⇒[送信者アカウント@docomo.xxne.jp]と自動変換される)

改行が多すぎると言われたので続きます↓

141:フリーメール
07/11/23 03:09:28 6ZV7uhRm
続きです

・アラートメール本文中にマイページへのURL付与
・マイページはユーザ専用URLを発行(ログイン不要)
・PHP+MySQLで作りたい
・アドレスはユーザID@ドメインで発行
・3キャリアのドメインに対してメールを送信した場合に限りポイント付与
・メール本文内、ユーザマイページへのテキストリンク広告挿入機能
・広告挿入は管理画面からおこなえる
・登録フローは
 空メール送信⇒自動返信による登録フォームURL返信⇒フォーム入力⇒本登録完了メッセージ自動返信
・受信拒否ワード設定機能(マイページにて設定)
・指定受信設定(マイページにて設定)
・本文中にURLがある場合受信拒否(マイページにて設定)
・登録情報更新機能
・獲得ポイント確認画面(マイページにて)
・タイマー送信機能(マイページにて設定、指定した時間にメールが送信される)
・メーリングリスト作成機能(マイページにて設定)
・デコメ送信機能

こんな感じです。
これを1からプログラミングする場合、
もちろんPHPの学習だけでなくサーバ、DBについても知識を得る必要があるかと思いますが、
オススメの書籍(これらがわかりやすいんじゃない?系の)を教えていただけませんか?




142:nobodyさん
07/11/23 04:40:03
そこその頭があって三年みっちり勉強したらそこそこのができるよ。たまにバグが出てサービスとまるくらいのが

143:nobodyさん
07/11/23 05:31:06
>>141
まずマニュアル

144:nobodyさん
07/11/23 13:01:58
とりあえず、セッション必須だし、セキュリティ対策もしっかり勉強しないと。


145:nobodyさん
07/11/23 13:28:18 GKdORPfq
>>142 自分は6年目ですが、いまだに雇ってもらえません。PHP3のころから
やってます。

146:nobodyさん
07/11/23 13:46:39
PHPそのものも周辺知識も業務知識もあるのに雇ってもらえないとしたら、
人格に問題があるのではアルマイカ?

147:フリーメール
07/11/23 13:52:01 6ZV7uhRm
>>141みたいなことやれるようになるまで3年かかりますか??
もちろん自分のやる気と取れる時間にもよると思いますが・・・

148:nobodyさん
07/11/23 14:13:40
とりあえず予習復習をちゃんとやってたとか、
夏休みや冬休みの宿題は計画的にやってたとか、
そういう資質がないと無理だなw

149:nobodyさん
07/11/23 14:34:58
>>141
>> オススメの書籍(これらがわかりやすいんじゃない?系の)を教えていただけませんか?
書籍についてならスレがあるぞ。

【PHP関連の書籍 第4版】
スレリンク(php板)

150:nobodyさん
07/11/23 15:06:10
書籍なんかより、公式マニュアルの方がよっぽどイイと思うが…

151:nobodyさん
07/11/23 18:02:31
セッション変数に値を代入する前に、
$_SESSION["hoge"];
と、あらかじめセッション変数に変数名を登録してから使う必要はありますか?

152:nobodyさん
07/11/23 18:16:51
セッション変数に変数名を登録するという意味が分からない

153:nobodyさん
07/11/23 18:30:19
最近プログラミングの興味が薄れてきたなぁ。
まぁ「プロ」グラマじゃないからいいんだが。

154:nobodyさん
07/11/23 19:29:41 GKdORPfq
プログラマってプログラムにerつけただけじゃないの?プロって言う意味があるの?

155:nobodyさん
07/11/23 20:12:45
>>154
ないよ
プロとプログラムをかけて言ってるだけだろ


156:151
07/11/23 22:45:18
>>152
値を代入する前に、このセッション変数を使うと言う事で、
先に$_SESSION["hoge"];とやっておかないといけないのかと言う意味です。
すいません説明下手で;

157:nobodyさん
07/11/23 23:08:19
>>156
普通の変数と同じでおk

158:151
07/11/24 13:45:26
>>157
ありがとうございます
すいません質問もう2つお願いします
セッション変数に入れた値に保持してられる期限などはありますか?
しばらく日にちがたってセッション変数に格納してあった値が無くなるみたいな

これ最後ですすいません
セッション変数$_SESSION[hoge]を一人の人がショッピングなどに利用していた場合、
同じドメイン上のページで違うユーザによりunset($_SESSION[hoge])が実行された場合、ショッピングに使っていた内容も使用中に突然消えてしまいますか?
もしそうならユーザ別にセッション変数名を変える必要があるとなるのでしょうか

159:nobodyさん
07/11/24 14:15:02
>>158
つマニュアル

160:nobodyさん
07/11/24 14:35:00
プログラムを組もうと思っても、実際に書き始めると自分のコーディングがダメダメに見えてやる気をなくす……。
どうやればいいか、っていうのはわかるんだけどね。。
いくら練ってみても、このコーディングでいいのだろうか、とか思ってしまう。
別に仕事でやってるわけじゃないからスランプ上等なんだけど。

経験を踏んでいけば、大丈夫なのかな……

161:nobodyさん
07/11/24 14:36:42
先に学校の勉強をちゃんと努力したほうがいいんじゃないだろうか

162:nobodyさん
07/11/24 14:42:20
>>160
典型的なダメ人間だなw

163:nobodyさん
07/11/24 14:48:50
なんか、ありがとう。
いわれた通り、自分のコーディングみてやる気なくして放棄してたらダメ人間だよね。
根を鍛えなおします。
スレ汚し

164:nobodyさん
07/11/24 15:30:51 sQgHrbH/
>>158消えない。心配しすぎ。その程度で困らせるような言語はない。

165:nobodyさん
07/11/24 17:55:00
<?php include_once("news.txt") ?>

このようにして更新履歴を表示させるとき
上から3行目だけを取り出すにはどうすればいいでしょうか?

166:165
07/11/24 17:55:52
訂正です
<?php include_once("news.txt") ?>

このようにして更新履歴を表示させるとき
上から3行目 まで を表示させるにはどうすればいいでしょうか?

167:nobodyさん
07/11/24 18:03:37
>>166
そのようにせずに1行ずつ読みこむ

168:nobodyさん
07/11/24 18:04:28
内容を改行区切りで取り出して最初から3つを表示

169:nobodyさん
07/11/24 18:05:26
>>166
file("./news.txt");で読み出して、forで回せばいいじゃん。

170:nobodyさん
07/11/25 13:13:37
POSTで受け取った内容をMySQLDBに入力するのに、
stripslashesとmysql_real_escape_stringで加工すれば十分安全ですか?

171:nobodyさん
07/11/25 13:27:44
>>170
数値ならintvalも。

172:nobodyさん
07/11/25 14:06:45
>>171
おお!そんなのもあるんですね~
文字か数値どちらが含まれるかわからない場合には必要ないですかね?
文字をintvalで加工すると数値になりますか?

173:nobodyさん
07/11/25 14:20:28
>>170
なんで普通に無害化しないの?

174:nobodyさん
07/11/25 14:35:16
必ず数値ってわかってるなら、intvalしてそれ以外は普通に mysql_escape_string 使っておけば。
%は別にエスケープ。

175:nobodyさん
07/11/25 22:47:46
>>173
その【普通】がわからないんでこのスレで質問させてもらってます
>>174
ありがとうございます
セッション使ってればhidden使う場面ってなくなりますよね?

176:nobodyさん
07/11/26 11:20:07
>>175
なくならないよ。減るけど。

177:nobodyさん
07/11/26 11:38:04
PHPの本スレってどこにあるのですか?

178:nobodyさん
07/11/26 12:17:54
>>177
くだ質のこと?

PHPについて語ろう!みたいなのは無いんじゃないかな

179:nobodyさん
07/11/26 13:52:53
>>178
そうなのですか ありがとうございます

180:166
07/11/26 17:20:47
<?php $fi = file("news.txt");echo "$fi[0]$fi[1]$fi[2]"; ?>でいけました

ありがとうございました

181:nobodyさん
07/11/28 11:50:37
英語が読めないんでこのエラーの意味がわかりません
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

182:nobodyさん
07/11/28 12:23:50 2JTXr2aQ
データベースエラー
sql構文が間違ってないか、データベースに接続してるかを確認すべし

183:nobodyさん
07/11/28 18:44:47
>>181
これを機会に英語勉強汁。
つか、中学程度の英語力でもなんとか読めるだろ。

184:nobodyさん
07/11/28 20:08:39 OEBZIrSP
我が家の不動産サイトに市販の検索CGIを設置したいのですが、全国版からローカル地域にカスタムしたいのですが、なんらかの助言くださる方おられますか?宜しくお願いします。

185:nobodyさん
07/11/28 20:40:08
>>184
カスタムの仕方を教えてくれってこと?

186:nobodyさん
07/11/28 21:03:49 OEBZIrSP
カスタムの仕方なんですが、販売会社ならデータ項目等変更で20万、25営業日との話です。ソースを簡単に触ってできる事ではないんでしょうか?

187:nobodyさん
07/11/28 21:07:07
まぁできると思うよ

188:nobodyさん
07/11/29 12:07:16
ドコモの携帯にはセッション意味ないんですか?

189:nobodyさん
07/11/29 12:55:54
>>188
なんで?
クッキーは使えないけど、セッションID引き回せば?

190:188
07/11/29 14:36:24
>>189
$_SESSION["test"] = 1;としてページをhrefで移動

移動先で
if($_SESSION["test"] == 1) {header("location: test.php");}
として分岐したいのですが、ドコモは思うようになってくれません
auはなりましたけど、sbは未検証です

セッションID引き回すの意味を自分は間違えてますか?><

191:nobodyさん
07/11/29 16:12:05
ドコモは情報送ってくれないんですよ
セッションもクッキーも「あんだよてめえ」としか思ってません
だから使えません

192:nobodyさん
07/11/29 19:28:08
>>190
クッキーが使えないんだから、セッションIDをURLに『引数として』くっつけて次のプログラムに送るんだよ。

193:190
07/11/29 23:29:42
>>192
移動先でgetで取得する訳ですね、なるほど
隠して送るのは無理なんですね、セッションがあるのに残念です
>>191-192
ありがとうございました

194:nobodyさん
07/11/29 23:36:22 YlYVK+go
初心者です。ご教授下さい。

ローカルでテストしている状態ですが、move_uploaded_fileでファイルをアップロードさせようとし、

if (!move_uploaded_file($uploadfile, '$PHOTOTMP$imagefile')) {
$errmsg .= "写真ファイルのアップロードに失敗しました。<BR>";
}

というソースを書いています。
実行するとエラーメッセージは表示されないのですが、指定フォルダに画像ファイルが移動されていません。

上記のスクリプトはC:\Program Files\Apache Group\Apache2\htdocs\testに置いてあり、
画像ファイルの一時フォルダとしてC:\Program Files\Apache Group\Apache2\htdocs\test\phototmp
を作ってます。

変数の中を見ると、
$uploadfileには、C:\WINDOWS\TEMP\php89.tmp
$PHOTOTMP$imagefileには、phototmp/1196345782078128.jpg3
が入っていますが、C:\Program Files\Apache Group\Apache2\htdocs\test\phototmpに画像ファイルが移動
していないのは何故でしょうか?

よろしくお願いします。

195:nobodyさん
07/11/30 02:31:54
何か変だけど
とりあえず
"$PHOTOTMP$imagefile"

196:nobodyさん
07/11/30 08:46:34
>>193
何か勘違いしてるぞ
セッションの仕組みをもう一度勉強しよう。

197:193
07/11/30 14:57:38 MLIN4mxf
>>195-196
あらら><そうなんですか…
公式マニュアルのとこ読みなおしてみます

198:nobodyさん
07/12/01 21:15:29 HxBCRCSR
こっちあげとくか

199:nobodyさん
07/12/02 12:20:00
カウンターを作ったのですが、リロードするたびにカウントが2づつ上がります。
アクセスをやり直すとカウントは1しか上がらないのですが
そう言うものなのですか?

200:nobodyさん
07/12/02 12:23:24
そういう風につくっちまったんだべ

201:197
07/12/02 13:19:32
あ゛あ゛あ゛あ゛ー
脳味噌がオパピーです教えて下さい


クッキーが使えないドコモなどで、セッションIDを受け渡す方法として、
URLに定数SIDを入れる方法とhiddenで渡す方法はわかったのですが、
セッションid以外の情報も持って移動したい時はどうすればいいのですか?

202:nobodyさん
07/12/02 13:23:39
> セッションid以外の情報
具体的には何?

203:197
07/12/02 13:29:39
>>202
具体的には
個人の名前や年齢など、個別な情報20点ほどを持ってページを移動したいのです

204:nobodyさん
07/12/02 13:34:42
セッションIDは何のために受け渡すの?

205:197
07/12/02 13:43:11
>>204
セッションidは本人確認の為に受け渡します。
1のページからきたユーザが、2のページへ移動してきたユーザと同一かどうかを確認するためです

206:nobodyさん
07/12/02 14:01:15
セッションIDを誤解してるのかな。
セッションIDは、サーバが持っているデータを引き出すための鍵のようなもの。
鍵を持ってる事自体を本人確認に使うこともあるし、
その鍵でサーバからデータを取り出す事もできる。

207:nobodyさん
07/12/02 14:06:55
セッションIDはセッションを受け渡すために使うもんだろ・・・

208:197
07/12/02 14:11:23
>>206
意味間違えてるんだと思います…
サーバーにセッションidを使って情報を持たすのは、一度にいくつでも可能ですか?

またオパピーです

209:nobodyさん
07/12/02 14:27:32
基礎から勉強しろって

210:nobodyさん
07/12/02 15:34:27
>>207
そのやり方がわかってないんじゃね
教えてやれば

211:nobodyさん
07/12/02 15:46:34
自演乙

212:nobodyさん
07/12/03 08:37:02
>>201
>>196>>197ってレスしてるのに何も進歩していないとは何事だ!

213:nobodyさん
07/12/07 23:57:59
> セッションid以外の情報も持って移動したい時はどうすればいいのですか?
この「移動」って具体的に何を示してるの?



なんで、質問者に質問しないといけないような質問するの?

214:nobodyさん
07/12/08 01:52:51
お前の理解力がないからだろ

215:nobodyさん
07/12/08 02:19:56
情報小出し厨は死ね。

216:nobodyさん
07/12/12 07:13:18
>>208
セッションID渡された時点でその個人は特定できるんじゃないの。
セッションIDをキーにしてDB検索とか

217:nobodyさん
07/12/16 07:29:41 nJrEMZh9
恥を承知で質問します。
Smartyテンプレートの実際に使われる基本的なパターン(中身)を教えてもらえませんか?
正直、プログラムに関してはスーパー初心者です。一応、PHPやperl・正規表現についての理屈は、昨日、斜め読みでざっと把握しました。しかし、全くSmartyへの理解にはつながりません。
Smartyを理解するヒントとして実際のテンプレートの記述とそのパターンなど提示していただけると助かりるのですが‥。
Smartyというのは、例えば、既に記述されたHTMLを差し替えて表示したり、コンテンツ構成を根本から修整したりできるのでしょうか?


218:nobodyさん
07/12/16 08:06:15
その前に、Smartyを使う必要があるの?
普通にPHPで「<title><?php echo $title ?></title>」とかでもいいだよ。
デザイナさんで、Smartyのテンプレートファイル弄る必要があるなら別だけど。

219:nobodyさん
07/12/16 08:58:24
>>218
アドバイスありがとうございます。


> その前に、Smartyを使う必要があるの?
> デザイナさんで、Smartyのテンプレートファイル弄る必要があるなら別だけど。
 私はデザイナーではありませんが、テンプレートを利用し利用者が自由にコンテンツデザインを選択できることは非常に重要なポイントになります。Smartyは、その点に長けていると聞いたのですが、実際、どうなのか?と。

> 普通にPHPで「<title><?php echo $title ?></title>」とかでもいいだよ。

 PHPとSmartyは、ある程度出来ることは似ているのでしょうか? 私としては、body内のタグ構成を丸ごと置換出来るならば、PHPでもSmartyでもかまわないのですが、Smartyがデザイン的に有利ならば、やはりSmartyを活用したいと考えています。

 とりあえず、もう少し自分で探ってみた方が良いみたいですね。ありがとうございました。


220:nobodyさん
07/12/16 22:43:28
>>219
なんでSmartyのドキュメントは読まないんですか?

221:nobodyさん
07/12/17 02:33:24
>>219
ヒント:smartyはphp

222:nobodyさん
07/12/18 06:49:50
>>219
Smartyのメリット(使い方)

 1.PHPスクリプトで動的に表示させるデータを生成(あるいはDBから取得)する。

 2.Smartyテンプレートファイルと呼ばれる、HTMLの中に1.の変数を書き込
  めるタグ(記号)を書いたファイルを用意する。

 3.PHPスクリプトから、そのテンプレートファイルを指定して表示させると、
  あら不思議、HTMLの中にPHPの変数が表示されるじゃないか!

 4.テンプレートファイルの記述では、データ量に応じて表示をループさせたり
  できるので、たとえば実行するまで何行のテーブルを表示させることになるか
  わからない行データも、スッキリとテンプレートファイルに書けるぞ!

 5.おまけに、テンプレートファイルを複数用意すれば、PHPスクリプトを修正する
  ことなく、いろんなデザインの表示に切り替えられるよ!

こんな感じ。ご参考になったかなぁ?

223:nobodyさん
07/12/18 21:22:45
phpで書けばいいじゃん

224:nobodyさん
07/12/19 01:53:46
プレビューでもできれば利点はあると思うんだけどなぁ



225:nobodyさん
07/12/19 16:07:10 DnDjbDYh
簡単なプログラムでもDBを導入したほうが効率が良いのでしょうか?

アクセスカウンタを例にしますと、
テキストのログファイルを読み込ませるほうがよいのでしょうか?
この程度でもDBと連携させたほうが効率が良いのでしょうか?
簡単なものはテキスト、中規模以上はDBって感じでしょうか?
小さくてもアクセス頻度が高い場合はDBのほうが安全なのでしょうか?

速度、鯖の負荷、その他ありましたら教えてください
よろしくおねがいします

226:nobodyさん
07/12/19 19:32:38 E60FAw4D
すみません。超くだらない質問なのでこちらのスレで聞かせてください。
HTMLのタグ内でのダブルクォーテーションの扱いに困っています。

<input type="hidden" name="gid" value="<?php echo "abc_" . $gid; ?>">
value="<?php echo "abc_" . $gid; ?>"←この部分ですが、value=の次はPHPに処理が進むので
その中に再びダブルクォーテーションを使っても大丈夫ですか?というか文法的に間違いじゃないですか?

よろしくお願いします。

227:nobodyさん
07/12/19 21:34:28
>>226
マニュアルの文字列文法のページを100回読め

228:nobodyさん
07/12/20 02:40:21 g0oPtWoH
227へ
    __,,/  _, ----`ヽ  :.
     :.  / _     ___   、\
       / /   i      \   \\ :.
     :. ,'./       i  ヽ:.   ヽ:.:.. ヽ.ヽ
      ,'/    / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
     :. |i .i i  .i /  ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
       |i .i l  :N_, -弋 \弌弋ナ:}:.:}
    :. |i∧ ', :{ ,ィjモト \  イjミトイイV :.  な…
       .|  :メヽ.', `ozZ}      izN。ハ::{     なんでですか?
      :. |  :ヾ_! ゝ "゙゙    '  `゙ ハ.:', :.
      |  :.:_イ .:.ヽ.   (二フ , イ :.:.:!:.ヽ     なんでだれも
   :.  / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:.   答えてくれないんですか?
      / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
 :.  / .{. ',ヾ、ヽi .:.:.{ /(^`  |.:.:.:.//: : :.}: . ヽ.:.
   / /  ) ヽ ヾ、ヽ:.ハ ヤ{   ∧/.-‐'": : |:.:. i ',
  ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、  : : : l:.:.: .ハ ',
  { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
  V | .:.:/:.:|_,ィ' ̄  ヽ三{ `ー-ノ : イ : : :/:.:i.:{  リ
    ヽ:.:{、.:.V     : : ヘ     : : {: : :/:.::∧|
     ヽ! )人    : : :人      : : : / \! :.
      "  ヽ : : : : :/イ{     :.ノ: : : :.\ :.
       :.  \__///: :\______/: : : : : : : ヽ
           / //: : :|;|: : : : : : i: : : __: : : : ',
       :.     / 、 {;{   |;|   . : i/. : : : : : :|
          / `Y;{. . . .|;|. : : : /i: : : : : : : : :l


229:nobodyさん
07/12/20 03:00:52
DWあたりのツールが使えるだけでなんかWebが作れる気になっている初心者が多すぎだろ。

230:nobodyさん
07/12/20 03:34:10
>>228
読んだのか?

231:nobodyさん
07/12/22 19:34:41
>>226
このスレにふさわしい質問だ。

「"」で括られた文字列中に「"」を記述するときは、「\"」とするのだよ。


232:nobodyさん
07/12/31 16:42:06
例えば <a href='./index.php'></a>
というタグがあるとして
''の間の ./index.php を表示させる
というふうにするにははどうすればいいでしょうか?

233:nobodyさん
07/12/31 17:46:42
>>232
SimpleXMLでおk

234:nobodyさん
08/01/04 12:59:42
HTMLSQLも便利だよ。
URLリンク(www.jonasjohn.de)

235:nobodyさん
08/01/06 18:15:09
>>232
preg_match 使え。

236:nobodyさん
08/01/06 23:18:22
$test = array(
"hoge" => 0 ,
"poge" => 0 ,
"moge" => 1 ,
.
.
"hohe" => 3
)

$contents = array(
0 ,
0 ,
1 ,
.
.
3
)
にしたい場合はどんなふうに描けばいいんでしょうか?

237:nobodyさん
08/01/07 01:21:47
>>236
あれいばりゅーず

238:nobodyさん
08/01/11 04:17:35
例えば、
URLリンク(hogehoge.jp)
上で、
URLリンク(hogehoge.jp)
という文字列を取得してくる関数か何かは無いでしょうか?
$_SERVER変数の中にはそれらしいものがなかったので・・・

239:nobodyさん
08/01/11 04:22:37
あるだろ

240:nobodyさん
08/01/11 04:59:28
>>239
それがなかったんですよ。
$_SERVER['PHP_SELF']だと "/index.php"
$_SERVER['SERVER_NAME']だと "hogehoge.jp"
$_SERVER['DOCUMENT_ROOT']だと "/public_html/index.php"
ほかは何か違うし・・・
"http://"はともかく、"hogehoge.jp/~hoge"は取ってきたいんです。

241:nobodyさん
08/01/11 06:12:58
どこをどう探してなかったといっているんだ。このヴァカは?

URLリンク(jp.php.net)
URLリンク(jp.php.net)

242:238
08/01/11 11:30:21
>>241
いや、だから、絶対URLを取得したいんですよ。
いまテストしているサーバから別のサーバに移植する予定なので、
動的にとってこさせるようにすればわざわざURL部分を書き直さなくても
済むだろうと思いまして。

何をしたいかと言えば、特定のディレクトリに置かれているファイルを、
階層の違う別々のディレクトリから参照したい、と思いまして。

URLリンク(hogehoge.jp)
を、
URLリンク(hogehoge.jp)
URLリンク(hogehoge.jp)
URLリンク(hogehoge.jp)
など、どの階層に置いても同じ記述で/movie下の任意をファイルを参照する、という。
movie.flvをどこに置くかは決まっているので、hogehoge.jp/~hoge/さえ取得できれば
参照させられるんです。
相対パスだと、ひょっと別のディレクトリに置くと、パスを書き直さなきゃならないんで
移植が面倒になるな、と。


あえて言うなら、parse_urlに渡すURL(そのPHPファイルの絶対URL)を動的に取得したい
ということです。URLを解析したいわけではないんです。

243:nobodyさん
08/01/11 12:08:38
こいつは「応用」という事を知らないみたいだな

244:nobodyさん
08/01/11 18:17:35 mLMFZoBj
認証について質問です。
POSTでデータを送って暗号化などしてデータベースパスが一致したらログイン。
このソースで大丈夫なのかどうか不安です。
a.html→(ここ)→b.php
(ここ)でデータを盗むことができたりするのでしょうか?
これでいいならSSLの必要性がイマイチわかりません。

a.html

<html>
<head>
<title>test</title>
</head>
<body>
<form action="hogehoge.php" method="POST">
<input type="text" name="id">
<input type="password" name="pass">
<input type="submit" value="送信">
</form>
</body>
</html>

b.php

<?php
$pass = $_POST['pass'];
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass, ENT_QUOTES);
$pass = md5($pass);
$pass = substr($pass,0,10);
-------データベースからmd5で暗号化されたデータを引き出して認証-------------
?>

245:nobodyさん
08/01/11 18:21:23
sslじゃないなら平文で流れるよ

246:nobodyさん
08/01/11 18:21:32 mLMFZoBj
連投でスマソ
URLリンク(www.soumu.go.jp)

> 通信途中でデータを傍受されると、情報が第三者に漏れてしまう可能性があります。

a.html→(ここ)→b.php
(ここ)でデータが取れるとこのサイトでは言ってるわけですよね?
では、パスワード漏洩しないには具体的にどのようにすればいいのでしょうか?

よろしくお願いします。

247:nobodyさん
08/01/11 18:23:32
sslにする

248:nobodyさん
08/01/11 18:29:13 mLMFZoBj
>>247
漏洩したくないなら金をそこで使うのは当然なのはわかります。
しかし、実際sslを使用していない認証はたくさんあると思います。

そのようなサイトは漏洩する可能性が高いと見て良いのでしょうか?

例 (mixi)
URLリンク(mixi.jp)

249:nobodyさん
08/01/11 18:30:46
>>248
>SSL(https)はこちら

250:nobodyさん
08/01/11 18:35:41 mLMFZoBj
>>248
見落としてた…orz

え、じゃあ今までhttpsでやってなかった俺のパスワード&アドレスは
漏洩してる可能性あるってこと?

なんでデフォルトがhttpsじゃないんだよ(´・ω・`)

251:nobodyさん
08/01/11 19:01:52
来週から初出勤の俺
PHPは参考書読む程度なんですが
開発現場ってどんな感じで作業進めるのでしょうか?



252:nobodyさん
08/01/11 19:48:43
殺伐と

253:nobodyさん
08/01/11 20:24:05
>>250
スレ違いになるが、JavaScriptでmd5に変換とかすれば

254:nobodyさん
08/01/11 21:04:07 mLMFZoBj
>>253
なるほど
<input type="text" name="pass1">
<input type="hidden" name="pass2">

document.pass2.value = md5された文字

色々省略してますがこんな感じで飛ばせばOKということですね?
これでセキュリティに問題ないならやってみようと思います。

255:nobodyさん
08/01/11 22:37:14
相手がJavaScript切っていたら?
ていうか、質問者もそのレベルならセキュリティ意識する必要ないし(しても対処できないのが落ち)
、回答者もひどすぎる。
とにかくSSLにすればいい。証明書を第三者機関に発行してもらうのはウェブページの信頼性を保障してもらうため。
別に俺のことは俺が保障するっていうなら俺俺証明書でOKなわけ。
それじゃ普通は駄目だから金払う。

256:nobodyさん
08/01/11 23:07:26
>>255
JavaScript切ってたら、mixiでいう「SSL(https)はこちら」を
選択しないのとそう変わらんだろうに
暗号化して送信するかしないかをユーザに任せるという意味ではね
SSLだって人によっては切ってるかも知れんぞw

257:nobodyさん
08/01/11 23:32:11
>>254
その例、なんとなく勘違いしてそうだが、
入力されたパスワードをsubmit時にJavaScript側で
md5にしてからPOST送信すんの
分からんかったら調べるなりJavaScriptスレへ

258:238
08/01/12 00:10:38
移植予定先で$_SERVER['SERVER_NAME']を試してみると、
hogehoge.jp/~hoge/が取得できましたorz
何を見てたんだ俺は・・・
どうもご迷惑おかけしました。

259:238
08/01/12 00:17:48
違った。$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']でした。
どうもたびたび申し訳なく・・・

260:nobodyさん
08/01/12 00:28:49
>>259
REQUEST_URI はやめといた方がいいんじゃね
素直に
substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/'))
とかじゃダメなん?

261:nobodyさん
08/01/12 00:29:36
あーあ、SCRIPT_URI って書いたとおもったのに。

262:238
08/01/12 01:23:53
>>260-261
SCRIPT_URIは確かサーバの環境依存じゃなかったですか?
移植先はレンタルサーバなので、Apacheの設定を弄らせてもらえるか
微妙なんです。未だにどこに移植するか決まってないという。
自鯖にすれば設定し放題ですが、さすがに管理が・・・
/~hoge/句がつくかどうかも微妙ですし。

最悪、DBに絶対URLを格納しておいてそれを使うようにすると言う手を考えつきました。
まあとりあえずREQUEST_URIでやってみます。問題が起きたらDB方式に。
文字列エンコードすればXSSも何とか回避できるでしょうし。
ありがとうございました。

263:nobodyさん
08/01/12 01:45:55
Windows版phq4.4.2なのですが、
GDが読み込まれません。
php.iniの設定箇所のコメントを外す以外に何か設定が必要でしょうか?

264:nobodyさん
08/01/12 06:37:20
再起動する

265:263
08/01/12 17:40:18
>>264
ApacheはもちろんWindowsも再起動してみましたが反映されません。。。

php.ini以外にさわる箇所あるのでしょうか?

266:nobodyさん
08/01/12 18:50:14
理由は?
extension_dirの指定が間違ってるとか、GDの共有ライブラリが入ってないとか

267:nobodyさん
08/01/12 19:22:51
反映されないってどこを見て言ってるの?
php.ini はどこを変更したの?

268:263
08/01/13 06:15:16
レスありがとうございます。

>>266
extension_dirの指定はmbstringの設定が有効なので良いと思うのですが。
ライブラリはphp_gd2.dllですよね?それなら入っています…


>>267
反映についてはphpinfoにgdの項目が出てこなく、関数も使えないのでそう判断しています。
php.iniはextension_dirのコメントを外しました。

269:nobodyさん
08/01/13 10:02:45
手順と確認に問題は無さそうなので、修正しているphp.iniと実際に使われているphp.iniが違うファイルなんじゃないかな?
phpinfo()でどこのphp.iniを使っているか表示されるけど、それは一致してる?

270:nobodyさん
08/01/13 10:42:53
PHPIniDir('c:\php');

271:263
08/01/13 12:22:04
>>269-270
レスありがとうございます。
試してみたいと思います。

272:263
08/01/13 23:05:13
>>269
ビンゴでした。
なぜかiniファイルの読込先がC:\windowsに。。。
ここは変更できるのでしょうか?

一応、この場所にiniファイルを置きましたところ、GDの読み込みには成功いたしました。

ありがとうございました。

273:nobodyさん
08/01/14 02:36:12
なぜかとかって・・・

274:nobodyさん
08/01/14 07:49:03
iniのおき場所と、それぞれのおき場所の優先順位とコンパイルオプションの話はマニュアルに何か書いてあったような気がする

275:nobodyさん
08/01/15 04:28:15
PHPで、CSVファイルを取り込み、Postgresへ格納するの作ってるんですが、
100Mくらいのファイルを取り込むのに、時間が40分くらいかかって
メモリーも2Gくらいを、PHP.iniに書かないと途中でとまるんですが、
PHPってスピードとか、メモリー使用量ってこんなもんでしょうか?

276:nobodyさん
08/01/15 04:31:00
コードが悪い

277:nobodyさん
08/01/15 05:07:45
>>275
URLリンク(www.1x1.jp)

278:nobodyさん
08/01/15 09:57:33
メモリの使用量はPHPとはあまり関係なくプログラマが読み込ませたデータ量による
時間がかかっているのは激しくスワッピングしてるからだと思われ
普通はデータ量が大きいときは漸次処理して負荷を減らすもの

279:nobodyさん
08/01/15 12:28:56
100,000
のように数字に「,」が入ってるときに、数字のみを取り出すにはどうすればいいですか?

280:nobodyさん
08/01/15 13:14:35
ereg_replace(",", "", $var)でできました

281:nobodyさん
08/01/16 11:56:16 sJoxzvRt
質問させていただきます
たまにURLリンク(example.com?aaa)と言うようなURLを見るのですが
クエリ情報を受けとるファイルでは$_GET[?]で受けとっているのか教えて下さい

282:nobodyさん
08/01/16 13:16:39
le.com/?aaa のことならたいてい index.php において空の $_GET['aaa']

mod_rewrite 使ってることもありえる

283:nobodyさん
08/01/16 13:25:34
>>281
$_SERVER['QUERY_STRING']とか。

284:nobodyさん
08/01/16 15:11:30
>>283
それはそれで、何でわざわざそんなことやってるのかって疑問が出来るな

285:nobodyさん
08/01/17 11:15:01
アクセスログ解析用だろ

286:nobodyさん
08/01/17 12:05:56
キーのみのクエリで何でアクセスログの話が?

287:281
08/01/17 13:56:22
レスありがとうございます
>>282さんの
index.phpに空の$_GET[aaa]をおくと言うのを
試してみたのですが意味がわかっていないせいか何も変わりませんでした
もう少し詳しく説明お願いしていいですか?
お手数かけてすいません

288:nobodyさん
08/01/17 14:15:33
置いてじゃなくて於いて。
クエリ文字列を取得するなら>>283

289:nobodyさん
08/01/17 15:15:36
よく読んでませんけど、まずApacheの話として、クライアントから/?aaaみたいなパスで
リクエストされた場合、ファイル名がないのでウェルカムファイルがリクエストされたと
判断される。 /でリクエストすると/index.phpが読まれるのと同じ理屈で/?aaaの場合は
処理を行うスクリプトはindex.phpで、クエリとしてaaaが渡されると思う。
で、クエリは本来/?aaa=valueというようにフィールドとその値になってるけど、この
場合は値がないので、変数名は$_GET[’aaa’]となりデータは空の文字列
ということになるとめでたくね?データは空だから何も受け取ったことにはならないけど
連想配列のキーの有無で違いが出るので、!isset($_GET['aaa'])としてやると
/?aaaなのか/?bbbなのかは区別できるような木がする

290:nobodyさん
08/01/17 15:27:11
嫌がらせかw

291:nobodyさん
08/01/17 23:00:15 AXahQPv7
URLリンク(example.com?aaa)<)

URLリンク(example.com?bbb=aaa)

で通常は$_GET['bbb']で受け取ります
そのサーバでどこかに$_GET['bbb']を受け取るファイルがあるのです


292:nobodyさん
08/01/19 12:56:29
>>291
どこからbbbが出てくるんだよw

?aaaは$_GET['aaa']として入ってくる
データ内容は確かnullのはず
issetでチェックはできるけどな

293:nobodyさん
08/01/19 13:00:52
通常は って言い切るのはどうかと思うけどたいていmod_rewriteとかで$_GET['bbb']で受けるんじゃね
もちろんbbbかどうかは知らないけど

294:nobodyさん
08/01/19 13:09:31
mod_rewrite使うなら?をつける意味が無いな
/aaa/とかにすると思うが

295:nobodyさん
08/01/19 13:14:21
単にisset($_GET['aaa'])で存在チェックしてるだけでFAだろ。
何が問題なんだ?

296:nobodyさん
08/01/20 17:11:47
phpのスクリプトを読んでいると
($mode ? 'OK' : 'NO')
という分岐?が出てきたのですが
この方法の名前は何というのでしょうか?
調べようにも名前が判らず困ってます

297:nobodyさん
08/01/20 17:19:56
三項(条件)演算子

298:nobodyさん
08/01/20 17:21:32
>>296
URLリンク(jp.php.net)

299:nobodyさん
08/01/20 21:00:02
perl にもあるし、C/C++ にもあるし…あとは…
結構サポートしてる言語あるぞえ

300:nobodyさん
08/01/21 00:37:42
レンタルサーバー(アイル)でセッションを使ってユーザ管理できる形で
スケジューラー作ってます。

最近利用している人から、見ていたらお前のログイン状態が出てきたぞと
言われ、キャプチャされた内容が送られてきました。
セッションは
session_start()
ではじめて
$_SESSION[id]
$_SESSION[pwd]
にデータを入れてます。セッションはブッキングすることがないと
聞いていたのですが、たった4人の利用でブッキングがあったため、
もしかすると

iクラスタでは、クラスタリング環境となっており、
セッションの使用、またflock, fcntl 等のロックは機能しません。
symlink, mkdir 等での代用いただくようお願いします。
とレンタルサーバーにはかかれていましたが、クラスタリング環境で
flock,fcntlが使えないことでこういう事が起きているのでしょうか?
ここがはっきりしないと、別のサーバーに切り替えてもらえないし、
自分が選んだサーバーでもプランでもないので板挟みで状態で困ってます。

301:nobodyさん
08/01/21 00:44:27
セッションは機能しませんってこれ以上なく明確に書いてるやん('A`)

302:nobodyさん
08/01/21 13:09:21
>>300
DB使えるならDBでセッション管理すれば?
別にそんなに規模大きいもんでもないんでしょ?

303:296
08/01/21 14:21:47
>>297
>>298
ありがとう

304:244
08/01/21 19:22:48 5H6OPrCr
過去の話掘り返してスマナイ。

>>253でmd5にして認証を行ったはいいが
HTTPヘッダ見たら暗号化した文が表示されてた。

これってこの文盗聴されてそのまま打たれたら結局意味ないじゃんって結果に。

参考にしたページ: URLリンク(jsgt.org)

Digest認証でここはやってますが
どうも不完全なまま終わってるようで続きが見当たりません。

実際にSSLを使わないで認証してる方はいないでしょうか?
自分しか使わないのでSSLの証明はいらないんですが、、、

305:nobodyさん
08/01/21 20:16:56 5H6OPrCr
連投スマソ

結構大きなネトゲのサイトでburp suiteでHTTPヘッダを見てみた。

IDとパスがそのまま表示された…。
これってこの部分盗聴されたらログインされるはずだよな…?と思って
mixiのhttpsでログインしてみた。

こちらは何も表示されなかった。


そのネトゲのスレ行ってみたらセキュアなしかよって散々叩かれてた。
こんなのもあるんですね。


一応報告まで。

306:nobodyさん
08/01/21 21:07:52
>>304
そりゃまんまじゃ駄目。
ワンタイムパスワードにでもしないと。

307:nobodyさん
08/01/21 22:07:39
>>305
ネ糞○

308:nobodyさん
08/01/22 00:42:56 Qziki4SA
すみません、phpを始めたいのにインストール段階で行き詰っちゃいました…
すごく初心者なので、書き方おかしかったらすみません。
・os
windows vista
・希望
apache_2.2.6-win32-x86-no_sslをインストールしたい
・困ってる事
「このインストール パッケージを開くことができませんでした。
パッケージが存在し、アクセスできることを確認してください。
またはアプリケーション ベンダに問い合わせ、この Windows インストーラ パッケージが有効かどうかを確認してください。」
が出てインストールできない。
・やった対策
vistaだと通常とは違うという事で色々と調べて「コマンドプロンプト」というやつを管理者の権限で開いてインストーラーを実行させました。
そうすると何回やっても上記のエラーメッセージが出ます。
なので「windows install cleanup」をダウンロードして開いてみましたが該当するものはなし。

無知なりに考えた原因は、何度も違うバージョンのapacheをインストール→アンインストールしたせいでインストーラが狂ったのかと…。
どうにかインストールしたいです。「ベンダ」に問い合わせる他に何かまだ出来る事があれば教えてほしいです。

309:nobodyさん
08/01/22 01:33:19
>>308
このあたりが関係しているのかも。
URLリンク(www.apachefriends.org)
> Windows VistaではC:\Programfilesのフォルダのパーミッションが限定されております。
> その為、通常のインストールではインストールが成功しない場合があります。
> xampp用のフォルダをCドライブの直下か、C:\userの下にxamppというディレクトリを
> 作成してご利用いただくことをお勧めします。


XAMPPだと、インストーラを使うタイプと使わないタイプがあるから、こっちで
試してみたらどうかな。全部がセットになってるから便利だし。

310:nobodyさん
08/01/22 07:54:00
今の時期は、出来ればVistaでやるのは避けた方が良い。

311:nobodyさん
08/01/22 11:52:06
>>306
ワンタイムパスワードを考えてみました。
データベースにpass1とpass2のあるテーブルを作る。
pass1はユーザーが決めたパスワードをmd5した物。

ログインページにアクセスした時点で
ランダムな文字列を発行。(例 ZztMHpWSD)
全てのユーザーのpass2を更新する(pass1 + ZztMHpWSD)

<input type="text" name="pass">
<input type="hidden" name="rand_pass" value="(ランダムな文字列)">

submit押すと
md5_func(document.formname.pass.value)+document.formname.rand_pass.value;

これでpass1+ランダムな文字列が渡されました。

これで送られてきた物をpass2で一致すればOK。
この処理はできました。

----続く----

312:nobodyさん
08/01/22 11:56:30 q9syKBOV
問題点

Aさんがログイン画面にアクセスしてログインの情報を入力してる最中に
Bさんがアクセスしてきました。

その場合また新しいランダムな文字列が発行され
データベースのpass2が更新されてAさんの hidden に入ってる物が違ってきます。

現在この状況でつまっております。
何か助言を頂けないでしょうか?

313:nobodyさん
08/01/22 12:03:57
> 全てのユーザーのpass2を更新する(pass1 + ZztMHpWSD)
すべてのユーザーのを更新する理由は何?
ログインとかログアウトする時に一人のユーザーのみを
更新してはいけないの?

314:nobodyさん
08/01/22 12:12:27 q9syKBOV
>>313
> すべてのユーザーのを更新する理由は何?
アクセスしてるユーザーがどのユーザーかわからないためです。

ログアウトした時に一人のユーザーを更新する場合
ログアウトする時にpass1+ランダムな文字列で更新

再ログインするためにランダムな文字列発行するわけにもいかないし、
ログアウトの時クッキーにランダムな文字列書き込んだ場合
他のパソコンでログインできなくなる。

一応こんな風に考えてます。

315:nobodyさん
08/01/22 12:28:18 q9syKBOV
古い物上げてきたんで一応悩みをまとめておきますね。

・ SSLをできれば使いたくない(証明とかいらない&節約)
・ HTTPヘッダを見るとパスワード丸見え(盗聴怖い)
・ md5で暗号化しても暗号化した物を盗聴されて打たれたら意味ない
・ ワンタイムパスワードを作って毎回パスワードを変更するが他のユーザー接続で失敗

こんなところです。

316:nobodyさん
08/01/22 14:19:06
節約とセキュリティーをあげるのは相反するものだぞ。一般論として。
金属探知機を設置せずに、拳銃の持込を完全に防止したいみたいな意味だ。

317:nobodyさん
08/01/22 14:40:45 q9syKBOV
>>316
私がしたいのは独自で作成した金属探知機を使用したいのです。
金をかければ有名ブランドの金属探知機で安心、安全でしょう。

私がほしいのは安全だけなのです。

未熟なので能力が伴うかどうかは別として。

318:nobodyさん
08/01/22 14:42:26
ユーザに負担思いっきりかけていいならPGPの秘密鍵暗号鍵みたいな仕組みにすれば?
可能か不可能かって話なら可能だろ

319:308
08/01/22 16:03:11
>>309
ありがとうございます!
今職場なので、帰宅したら試してみます。

>>310
避けたい気持ちでいっぱいです。
一応使えている人がいる様なのでもう少しいじり倒してみます。

320:nobodyさん
08/01/22 17:21:38 q9syKBOV
ざっとセキュリティ関連の記事をいくつか見てきたのですが
どうやらこのスレにいるレベルでは無理そうな感じがしてきました。

>>318
ユーザーに負担はやはりかけたくないですね…。
PGPをざっと見てどのような物かがわかったのですが
できればユーザーにはシンプルにログインさせてあげたいです。
(ID & PASS ぐらい)

とは言っても数人で使う程度の予定で、
一度ログインしたら自動ログインできるように設定したいので、

ログイン画面は
ID入力画面→(データベース内容変更)→pass入力画面→ログイン
この流れでいこうと思います。

これだったら全ユーザーのパスワードを変更しなくていいですし。
これでどうしても証明やユーザーの手間を削減する必要がでてきたら、SSL導入を考えます。

ありがとうございました。

321:nobodyさん
08/01/22 17:46:58
ワンタイムパスワードなのに自動ログインてw

322:nobodyさん
08/01/22 17:52:25
>>321
自動ログインは別の処理だろ?

>>320
素直にSSL入れておけ。
何に使うかよくわからんがSSLに慣れておく事も重要

323:nobodyさん
08/01/24 12:32:36 NF7q/+V1
はじめまして。

別サーバにあるファイルの更新時間を表示させるには
どうしたらいいのでしょうか?


324:nobodyさん
08/01/24 13:50:13
ファイルの更新日時はftp接続じゃないと取得できないような気がする。
URLリンク(always-pg.com)
ファイルの中身だけであれば、httpで
$file = file("URLリンク(........)");
見たいな感じでいけるけれど。

325:nobodyさん
08/01/24 15:19:32
別サーバにあるのが性的で、Webサーバ経由で読み出せるなら

get_headers("URLリンク(www.hoge.jp)");

とやって、last-modifiedの値を見る

phpファイルなら、そのファイル自身にfilemtime(__FILE__)とかで更新時を出力させればいいと思う

326:323
08/01/24 15:32:15 NF7q/+V1
ありがとうございます。
試してみます。

いろいろ探してみたところ下のように”HTTPヘッダーから拾う”という方法を見つけました。
これで「Wed, 23 Jan 2008 00:00:00 GMT」と表示されるのを、
JSTにして、「6:15 1/24 Thu 」と表示したいのですが、整形の方法がわかりません。
どなたかご教授ください。よろしくお願いいたします。



327:323
08/01/24 15:32:38 NF7q/+V1
<?php
$URL="http://対象ファイル";
$purl=parse_url($URL);
if(!$purl["port"]) $purl["port"]=80;
//開く
$fp=fsockopen($purl["host"],$purl["port"]);
//リクエストを送る
if($purl["query"]){
fputs($fp,"GET ".$purl["path"]."?".$purl["query"]." HTTP/1.0\n");
}else{
fputs($fp,"GET ".$purl["path"]." HTTP/1.0\n");
}
fputs($fp,"Host: ".$purl["host"]."\n");
if($purl["user"]) fputs($fp,"Authorization: Basic ".base64_encode($purl["user"].":".$purl["pass"])."\n");
fputs($fp,"\n");
//HTTPステータスラインを取得
$buf=fgets($fp,1024);
if(!strstr($buf," 200 ")) return(FALSE);
//HTTPヘッダを取得
//$finfo["HTTPヘッダ名"] に内容が格納される
while(!feof($fp)) {
$buf=chop(fgets($fp,1024));
if(!$buf) break;
ereg("^([^:]*): *(.*)$",$buf,$sbuf);
$finfo[$sbuf[1]]=trim($sbuf[2]);
}
echo $finfo["Last-Modified"];
?>


328:nobodyさん
08/01/24 15:46:09
>>326
echo date('G:i n/j D',strtotime('Wed, 23 Jan 2008 00:00:00 GMT'));
こんな感じで。下記参照。
URLリンク(jp.php.net)

329:323
08/01/24 16:57:23 NF7q/+V1
最後の行を
echo date('G:i n/j D',strtotime($finfo["Last-Modified"]));
としたら望みどおりの結果になりました!!!

ありがとうございました。

330:nobodyさん
08/01/26 03:19:27
俺は Last-Modified → Date → クライアントローカル って順にしてるな

331:nobodyさん
08/01/27 19:58:32
はじめまして。超初心者用という事でわからない事があったので質問してみます

YahooAPIを用いて画像検索を行い、検索された画像をクリックする事でその画像の類似画像を新たに検索して
Webページに表示させるPHPを作成しているのですが、クリックされた画像の色情報を取得する方法がわかりません。
画像のRGB値を求めて、その値に近い画像を表示させるつもりで現在考えています。
色の取得自体は一応できてるのですが下に処理を書きます
  $im = imagecreatefromjpeg($content);
  $img_w = imagesx( $im );
  $img_h = imagesy( $im );
  $cnt = $img_w * $img_h;
  $r = array();
  $g = array();
  $b = array();
  for( $i = 0 ; $i < $img_w ; $i ++ ){
  for( $j = 0 ; $j < $img_h ; $j ++ ){
  $rgb = imagecolorat($im, $i , $j );
  $r[] = ($rgb >> 16) & 0xFF;
  $g[] = ($rgb >> 8) & 0xFF;
  $b[] = $rgb & 0xFF;
  }
  }
  $index_r = intval( array_sum( $r ) / $cnt);
  $index_g = intval( array_sum( $g ) / $cnt);
  $index_b = intval( array_sum( $b ) / $cnt);
クリックされた画像に対してこの処理を行う方法がいまいちわかりません。
わからない事だらけなのですが何か助言を頂ければお願いします。

OS:WindowsXP
PHP: Version 5.2.5
ApacheVersion:1.3.26

332:nobodyさん
08/01/27 21:02:47
>>331
検索結果表示時に画像リンクを
img.php?src=hogehoge.jpg
こんな風にimg.phpを経由させれば
img.php内で画像のソース取得などできるけど

こういう風に出来ない場合は
javascriptとかで画像に対してクリックイベント設定して
そこから処理させるとかかな・・・・

333:331
08/01/28 11:07:03
>>332
遅くなりましたがレスありがとうございます。

事情があってjavascriptは使わずに処理をさせたいのですが
上の方法で少し考えてみます。
img.phpという別のphpを新たに作成してそこで処理をさせるみたいな感じでいいのでしょうか?

334:nobodyさん
08/01/28 11:31:46
PHPはPerlと比較するとオブジェクト指向プログラミングが
やり易いようになっているけれど、やはり、大規模な開発には
向かないとかいわれています。javaの方が良いと。
この理由は何処にあるのでしょうか。他のプログラムとの連携や
モジュール関連なのでしょうか。

335:332
08/01/28 11:46:04
>>333
あーごめんちょっとぼけてた
<a href="hoge,php?src=hogehoge.jpg"><img src="hogehoge.jpg" /></a>
こういう風なリンクにしちゃえば
hogehoge.php内でどの画像がクリックされたとか解ると思うんだけどどうかな?
このhoge.phpにsrc=hogehoge.jpgを渡してやることによって
hoge.phpにはどの画像がクリックされたかわかるし
どの画像がクリックされたか解ればあとは上のコードでなんとかなると思うけど


336:331
08/01/28 11:54:21
>>334
レスありがとうございます。
PHPだけでしたいのは他にも理由はあるのですがjavascriptはまだ全然勉強してないので・・・
でもPHPと連動させて作成するものが多いようなのでこれから勉強していきます

>>335
レスありがとうございます。
hoge.phpでそんなことができたのですね。一度やってみます
親切に教えてくれてありがとうございます

337:nobodyさん
08/01/29 22:16:32
無知すぎて申し訳ありませんが

URLリンク(www.harudake.net)

↑のようなRSSから自動的に画像を抜き出してサムネイル表示させるには
どのようにすればよろしいでしょうか?
参考になりそうなサイトや書籍があったら教えてください

338:nobodyさん
08/01/29 23:04:54
>>337
それは多分JavaScriptでやってる
んで、PHPでやるなら
まずRSSをパースして画像のURLを抽出する
抽出した画像をDLしてローカルに保存するor抽出したURLをそのまま使用
IMGタグを生成時に一定サイズ以上はサムネイル化する処理を実行
表示デ終わり

339:nobodyさん
08/01/29 23:40:56
>>338
有難うございました 早速実行してみたいと思います

340:nobodyさん
08/02/03 14:38:33
お聞きしたいのですが、PHPを実行した時画面の左上に?が必ず表示されていて
困っているのですがどうすれば無くなるのでしょうか?
日本語で表示させたくてPHP本体の文字コードをUTF-8にして毎回保存しています。
これだと文字化けはせず日本語は表示されるのですが必ず?が表示されます。
PHPを保存する時の文字コードを変更するのではなく、php.iniの設定を変えなければならないのでしょうか?

OSはWindowsXP。PHPはバージョンを確認すると5.2.5なのですが途中でバージョンアップしたのか
iniファイルはPHPとPHP4の二つあります。Apacheは1.3.26です。

ただPHPの環境作りは別の人がやってしまったので今いちどこを修正すればいいのかわかりません。
なんとか解決する方法を教えてもらえないでしょうか

341:nobodyさん
08/02/03 14:54:58
>>340
PHPのソースコードに変な記号を表示させる記述がないのであれば、
間違って?を書いてるとかの可能性が考えられる。
あと、実行後のhtmlのソースのどの部分に記述があるかによって、
推測する事になると思う。

<?php
echo "test!<br>";

と、あえて書いてみるとか。

342:nobodyさん
08/02/03 15:18:25
<?php
echo "test!<br>";

と書いてためしに実行してみましたが、?test!と表示されます。
色んなPHPで実行してみましたが必ず?がついてきます。
間違って?を書いているということは無いと思うのですが・・・

343:nobodyさん
08/02/03 15:51:00
BOM

344:nobodyさん
08/02/03 16:13:35
>>343
BOMというのは始めて知りました。ありがとうございます。
このBOMを削除するのにUTF-8nで保存すると直るようなのですが、普通のメモ帳ではUTF-8でしか保存できません。

function delete_bom($str)
{
if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
$str = substr($str, 3);
}
return $str;
}

上のコードでBOMを削除できるそうなのですが。<?phpの処理の中で記述すればいいのでしょうか?
?が消えないのですが。本当にわからない事だらけで申し訳ありません

345:nobodyさん
08/02/03 16:16:54
エディタでUTF-8のBOM無しにするかUTF-8Nにすればおk

346:nobodyさん
08/02/03 16:18:30
悪いよく読んでなかったけど、要するに文字コード指定できるエディタ使えってこと。
メモ帳で開発は有り得ない。

参考:URLリンク(besunday.hp.infoseek.co.jp)

347:nobodyさん
08/02/03 16:22:16
>>346
ありがとうございます。まだ勉強し始めたばかりだったので(汗)

348:nobodyさん
08/02/04 00:53:06
あれ?bom無しは駄目なのか?
いつも秀丸使っててbom有りでスクリプト書いてたんだが…

349:nobodyさん
08/02/05 16:49:29
逆、BOM有りがダメ
予期せぬエラーが起きる

350:nobodyさん
08/02/05 19:30:27
あぁ、ごめん。逆だった…
bom有りで書いてたぜ。
具体的にどんなエラーが起きるの?

351:nobodyさん
08/02/05 20:27:52
基本的にEUCでbomは知らんかったんで秀丸でUTF-8で保存してみたけど?出ないな。
秀丸だと保存オプションもUTF-8Nとかもないしbom入らないのかな。
メモ帳でUTF-8で保存して実行したら ・ソtest!<br> みたいのは出た。

352:nobodyさん
08/02/05 20:48:26
秀丸でもBOMオプションあるな。
あんまり古いのだとないかもしれんけど。
これはphpが読み込んだときに自動的に削るべきもんかもね。

353:nobodyさん
08/02/05 23:51:41
秀丸、bom有り、bom無し で試してみた。
web 上では見た目上、変化無かったけど、
CLI で実行させたら、bom付きでは頭に 0x81, 0x45, 0xbf の3バイトがくっついてきた。

354:nobodyさん
08/02/06 00:11:29
>>353
そのくっついてくるのがアレ。
BOMつきUTF-8でファイル冒頭に

<?php
header("Content-Type: text/html; charset=UTF-8"); // 例。

なんてのを書くと「ヘッダ送ったあとでヘッダ変えたいとか、無理」と
PHPさんが優しく語りかけてくれる。

355:nobodyさん
08/02/06 00:16:53
なるほど。解ったよ。アンガト

356:354
08/02/06 00:24:06
書いてから気づいた。

> 頭に 0x81, 0x45, 0xbf の3バイト

0xef 0xbb 0xbf の3バイト(>>344参照)、じゃないのね。

357:nobodyさん
08/02/07 16:59:49 d+qc2qYD
チェックボックスでチェックされていたらチェックさせたいです
POSTのデータと一致してるかどうかでforeach書いてるんですけど
なんとなく無駄な感じがしてます…
いい書き方ってありますか?

foreach ( $hoge as $k => $v ) {
$checked = "";
if (isset($_POST['hoge'])) {
foreach ( $_POST['hoge'] as $key ) {
if ($key == $v) {
$checked = " checked=\"checked\"";
}
}
}
echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}


358:nobodyさん
08/02/07 17:42:05
>>357
こーかな?判定は一行にもできるけど逆に見づらいし。

foreach ( $hoge as $k => $v ) {
    $checked = "";
    if( is_array($_POST['hoge']) && array_search($v, $_POST['hoge']) != FALSE ){
        $checked = " checked=\"checked\"";
    }
    echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}

359:nobodyさん
08/02/07 17:44:38
でも$v素通りはあんまよくないな。

360:357
08/02/08 13:26:21
>>358
array_searchなんてあったんですね!
ありがとうございます

>>359
素通りとは…?

361:nobodyさん
08/02/08 13:37:59
$v を validate しろって事だよ。
359 はクロスサイトスクリプティングの可能性を示唆してるんだろ。

362:357
08/02/08 17:52:07
なるほど。
これは例なのでいれてないだけです。
$vはこっちで作成してる配列なのにな~と思って。

ちなみに358は
!= FALSE ではなく !== FALSE ですね

363:nobodyさん
08/02/08 18:47:04
それが確実。

364:nobodyさん
08/02/09 01:31:23
つーか何で毎回is_arrayでチェックするんだよ


365:nobodyさん
08/02/10 18:46:39
フォームで入力した内容に " が含まれる場合、
それをそのまま出力したら\"となるのですが、
どうすれば\をつけずに表示や保存できるんですか?

366:nobodyさん
08/02/10 19:57:48
magic_quote_gpcをoffにする

367:nobodyさん
08/02/10 20:08:37
エー
それしか方法ないのですか?

368:nobodyさん
08/02/10 20:10:21
あるよ

369:nobodyさん
08/02/10 20:19:51
お願いします

370:nobodyさん
08/02/10 20:42:46
>>369
URLリンク(jp.php.net)

371:nobodyさん
08/02/10 20:43:34
>>369
URLリンク(jp.php.net)

372:nobodyさん
08/02/10 21:12:31
どうもです!解決しました。

stripcslashes(htmlspecialchars())っていう風につかったんだけどこれでいいのかな

373:nobodyさん
08/02/10 21:21:05
>>372
順序は逆の方が良くないか?

374:nobodyさん
08/02/10 22:06:12
ああ、phpには
"はフォームを通すと\\\"として送られてくるんですね
だから先に勝手につけられたスラッシュを消して
htmlspecialchars(stripcslashes($a, ENT_QUOTES)) とやれば"も'もHTML上できちんと表示できるようになりますね
勉強になりました

375:nobodyさん
08/02/10 22:35:31 rhutwfEM
PHPないにプリントタグを使いたいんですが、
<BODY>
<?php
print <table>
print <tr>
<td>print"値"</td>
<td>print"値2"</td>
<td>print"演算"</td>
<td>print"答"</td>
print </tr>
print </table>
?>
</BODY>
</HTML>
だと、エラーがでます。だれかご教授ください・・・

376:nobodyさん
08/02/10 22:37:08
>>375
参考ページをよく見て
違いを調べろw

377:nobodyさん
08/02/10 22:39:38
ワロタw

378:nobodyさん
08/02/10 22:40:35 rhutwfEM
>>376
すいません、テーブルタグでした。
申し訳ありませんが、参考ページを教えてくれますか?

379:nobodyさん
08/02/10 22:43:46
>>378
どこでもいい。さがせw

380:nobodyさん
08/02/10 22:48:34 rhutwfEM
>>378
わかりました。もう一日考えます。。。


381:nobodyさん
08/02/10 22:48:39
基礎ってレベルじゃねえぞww

382:nobodyさん
08/02/10 23:21:00
糞ってレベルだ

383:nobodyさん
08/02/10 23:54:56
ひょっとしてこういう事がしたいのか?
だとしたら文法根本的に間違えてるだろうに。

<BODY>
<table>
<tr>
<td><?php print"値";?></td>
<td><?php print"値2";?></td>
<td><?php print"演算";?></td>
<td><?php print"答";?></td>
</tr>
</table>
</BODY>
</HTML>

384:nobodyさん
08/02/11 00:20:01
なんというか…wwwwwww

解った後でもう一度このスレに来て自分の書き込み見てみろw

385:nobodyさん
08/02/11 03:49:39
携帯とPCの振り分けをしたく思い
URLリンク(blogn.hustle-user.com)を参考にして、

index.htmlをindex.phpにリネームして、先頭に
<?php
$title="○○";
$page_e='URLリンク(www.)<)○○/m/index.html';
$page_i='URLリンク(www.)○○/m/index.html';
$i=$_SERVER['HTTP_USER_AGENT'];

require_once('agent.txt');

?>
としました。そして携帯からアクセスしたところ無事振り分けることが出来ました。
しかしPCからみたら外部のcssを読み込んでいないようでページレイアウトが崩れてしまいました。
相対パスなのがいけないと思って、
<link href="http://○○/css/global.css" rel="stylesheet" type="text/css" />
と、絶対パスに書き換えましたが改善しませんでした。
そしてさらにわからないことに、ブラウザ(Sleipnir)で何回も読み込んでいると
5回に一階ぐらいきちんと読み込んで表示されるのです。

どういうことなのでしょうか。もしかしてphpの問題じゃなくhtmlの問題でしたら板違い申し訳ありません。


386:nobodyさん
08/02/11 04:14:40
問題の切り分けオヌヌメ

387:nobodyさん
08/02/11 05:29:22
そのコードでどうやったら振り分けられる方が興味あるなw

388:385
08/02/11 05:49:50
>>386
問題の切り分けですか。
まずCSSのパスは間違ってませんでした。

htmlや画像のリンクは相対パスでも問題なく通ってるんで
もしかしたらパスの問題ではないんでしょうか?

となると。。文字コードとかでしょうか・・?
ちなみにphpもcssもS-Jis、改行コードはCR+LFでした。


>>387
ふ、振り分けられないですか?
サイトを参考にしつつやってみたのですが・・


389:nobodyさん
08/02/11 10:01:19
俺は>>387では無いが。
page_e, page_j, page_i 全部URLが一緒な件

390:nobodyさん
08/02/11 11:04:25
>>389
いや、それは別にそういう作り方もあるから別にいいけど
そもそも参考したっていうサイトの内容が突っ込みどころが多すぎて…


391:nobodyさん
08/02/11 11:10:17
URLリンク(blogn.hustle-user.com)
の処理に、腹抱えてワロタ

392:nobodyさん
08/02/11 11:13:06
>>388
そこのサイトのはあんま参考にならんから別の探せw
あと火狐+火虫いれてCSSが適用されてるか確認しろ

393:385
08/02/11 17:22:49
返事が遅くなってしまい申し訳ありません。
>>389
あ、それはケータイのキャリア別に振りわけていないからです。。。
基本はみんなパソコンのメインサイトのindex.phpにアクセスしてもらって
ケータイの人は別のサイトに飛んでもらうってことで。。

なんか参考にしたサイトがまずかったようで。。。
もしおすすめなどあれば教えて頂けると嬉しいです。

>>392
firefoxはいれてないんで、今からいれて確認してみます。
ところで、火虫とは・・・?

394:nobodyさん
08/02/11 17:30:47
> ところで、火虫とは・・・?
水虫のライバル。


395:nobodyさん
08/02/11 17:57:57
火虫=FireBug

396:385
08/02/11 17:59:06
firefoxでみたところ問題なく見れました!

となると、IE側の問題になるのでしょうか?

そして火虫はわかりませんでした><

397:385
08/02/11 18:13:19
firefoxのアドオンでしたか。ありがとうございました。

398:nobodyさん
08/02/11 20:29:28
fopen追記モード('a')で開いたファイルに追記したいとき
どうすれば改行してつなげていけますか?
たとえば
$fh = fopen($file, 'a');
fwrite($fh, "test\n");
としても改行してつないでくれません

399:nobodyさん
08/02/11 20:42:17
改行してつなげるんだから、
fwrite($fh, "\n");
fwrite($fh, "test");
だろw

400:nobodyさん
08/02/11 22:35:00
>>399
それでもできてませんよ
ためしてください

<?
$file = "test.txt";
$fh = fopen($file, 'a');
fwrite($fh, "\n");
fwrite($fh, "test");
fclose($fh);
?>

いやあ納得いきませんね
いちおうtest\nとやって書き込んで、ファイルを見ると最後は改行されている。
なのに書き込むときはなぜ改行されたところから始まらないのですか?

401:nobodyさん
08/02/11 23:06:13
\r\nではどうだい?
もしくは 'ab'

402:nobodyさん
08/02/11 23:07:39
あごめんabは勘違い。

403:nobodyさん
08/02/11 23:17:32
だめですね

404:nobodyさん
08/02/11 23:24:11
あれ、いや
できてました
どうもでした

405:385
08/02/11 23:42:52
解決しました!!

CSSの文字コードをきちんとしていなかったのが問題だったようです。
CSSの先頭に
@charset "shift_jis";
といれると解決しました。

phpじゃなかったですね。申し訳ないです。

406:nobodyさん
08/02/12 03:40:48
>>385,398
  ,......,___                ___  お前初めてかここは?
  {  r-}"'';                    (,- ,_'',;  力抜けよ
__ノYv"-ァ'=;}                  ,_、 Y' リ''ー
  ヽー-ハ '、                 / キ}、 {"ー {⌒
  ト ハ  }      ,. -ー─-- 、___ /   ハノ`{  {
 ! ! !__! ,-、_    ,,( ,        ̄`ー、 /"''ー;ー'"
 |___|! !ー-ニー、;、;'""ノ';{  iー       ヽ=ニ=),..- '"
 K \ヽ !`ーニ'-、{  (e 人  |' ̄ ̄/`ー!  | /   /⌒
  \ヽ !、ヽ, "")ー-'"| !  |   |  /!  |___{,、  /  /
    \"'ヽ'ー-"  _! ||  }   ー─|  | / ヽ/  /
ニ=ー- `!!!'     ''''ー'"{  |     |  /  /`ー|\/
ーーーー'        _ | ./      ヽ__ /  | !


407:nobodyさん
08/02/18 19:07:50
すみません下らない質問なのですが
<?php
$mysql=mysql_connect("localhost","user","password");
if(mysql_select_db("dbname", $mysql)){
print "OK";
}else{
print "NG";
}
?>
このようなソースを書いて(user passはサーバーのもの)
PHPとMYSQLがちゃんと動いているのか確認をしようとしたのですが
画面が真っ白になってエラーも帰ってきません。
PHP php-5.1.6-1.6
mysql mysql-5.0.27-1.fc5
FedoraCore5で
php-mbstring php-mysql php-gd php-devel mysql-serverなども全部入れています。
解決方法ご指南ください



408:nobodyさん
08/02/18 21:17:53
>>407
display_errors = on

409:nobodyさん
08/02/18 22:25:40
それとコンソールを試してみて
パスワードが通っていない感じのエラーが出ていました
ただ、パスワードは合っていて
コンソールで mysql -u user -pでログインが出来ている状態です
/etc/hosts にもデータベース名は記述してあり(localhost)
なんで通らないのかわからなくなっています

今まで使っていたときは大丈夫で
突然この状態になってしまいました。

どなたかお願いします…

410:nobodyさん
08/02/19 02:56:13
それだけの情報で聞いたって誰も分からない

411:nobodyさん
08/02/19 10:06:45
すみません、質問です。
PHPには、.NET Framework の ADO.NET のように、自作した csv ファイルに SQL 文で
データを抽出することは可能なのでしょうか。
以下のサイトのような感じで動かす場合です。
URLリンク(park5.wakwak.com)

一般的なテキストファイルを開いたり、書き込んだりする方法とは別という意味です。
こういった方法以外でという意味です。
$fh = fopen("csv.txt", "r");
$line = fgets($fh, 1024);
// ここで$lineの条件を調べる。
fclose($fh);

ヒントとなるキーワードでもいいので、お願いします。

412:nobodyさん
08/02/19 10:26:38
PEAR::Structures_DataGrid_DataSource_CSV   ・・か?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch