くだすれPHP(超初心者用)3at PHP
くだすれPHP(超初心者用)3 - 暇つぶし2ch175: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   ・・か?

413:nobodyさん
08/02/19 12:43:40
>>410
よく情報が足りないといわれるのですが
どこら辺が足りないですか
>>407でバージョンやOSも書いてますが
エラーはサーバーから離れていたので書けなかったですが

後学のためにもお願いします

414:nobodyさん
08/02/19 13:02:22
>>413
そういうところ

415:nobodyさん
08/02/19 14:47:53
>>412
ありがとうございました。

416:nobodyさん
08/02/19 19:38:04
変テコなPHP Shell見つけたんだがどう思う?
URLリンク(kissho.xii.jp)

417:nobodyさん
08/02/19 20:44:23
>>416
よくわからんが、こんなコードがある時点でろくなもんじゃない
if(file_exists("B:\\")){
echo "<center><a href='./$this_file?dir=B:\\'>B:\\</a></center>";
} else {}
if(file_exists("C:\\")){
echo "<center><a href='./$this_file?dir=C:\\'>C:\\</a></center>";
} else {}
if (file_exists("D:\\")){
echo "<center><a href='./$this_file?dir=D:\\'>D:\\</a></center>";
} else {}
if (file_exists("E:\\")){
echo "<center><a href='./$this_file?dir=E:\\'>E:\\</a></center>";
} else {}
if (file_exists("F:\\")){
echo "<center><a href='./$this_file?dir=F:\\'>F:\\</a></center>";
} else {}
if (file_exists("G:\\")){
echo "<center><a href='./$this_file?dir=G:\\'>G:\\</a></center>";
} else {}
if (file_exists("H:\\")){
echo "<center><a href='./$this_file?dir=H:\\'>H:\\</a></center>";
} else {}


418:nobodyさん
08/02/21 03:11:11
ShiftJISのCSV形式を読んで、EUC文字コードに変換したいんですが、
Windowsの拡張漢字(IBM拡張やNEC拡張)や、外字領域も
きっちり対応してくれるような、関数とかないんでしょうか?


419:nobodyさん
08/02/21 03:39:48
そんなマニアックな文字まで対応してる関数はない

420:nobodyさん
08/02/21 04:46:45 uBvv/k1H
すみません、質問です。。。
XAMPPをインストール後に以下の手順でエラーがでてしまうのですが、何が原因なのでしょうか???

1. Terminal shellに行って、システム管理者ルートでログインします。
sudo su

2. XAMPPをスタートするには、このコマンドをコールしてください:
/Applications/xampp/xamppfiles/mampp start

ここで、このような感じのエラーメッセージがでていまいます。
(No such file or directory, errno = 2)
XAMPP: Error 133! Couln't start ProFTPD!

ちなみにこの段階でXAMPP Control Panelを起動しようとすると「このシステムとは互換性がないためアプリケーションを起動できません」とメッセージが出てしまいます。

OSはMacOSX.2.8で、インストールしたのがXAMPP Mac OS X 0.7.2です。PHP使用以前の問題で恐縮ですがとても困っていますのでどなたかよろしくおねがいします。

421:nobodyさん
08/02/21 08:00:49
This version is for Mac OS X 10.4 (Intel&PPC) and higher.

422:420
08/02/21 15:40:03 uBvv/k1H
ガーン。。。ということはXAMPPは使えないのですネ。
ありがとうございました。。。

423:nobodyさん
08/02/21 20:36:09
xamppなんて使うなや

424:nobodyさん
08/02/21 21:13:13
それをいうのなら、Macなんて使うなよ。が正しい。

425:nobodyさん
08/02/21 22:15:59 FbPK8kbc
現在携帯メール(添付画像付き)をメールサーバーから転送させて、PHPで処理してDBに保存するということをやろうとしてるのですが、
なぜか本文とか件名が化けてしまいます。

文字化け
「あ」→「$B$"(B」

このサイトを参考にしてます。
URLリンク(www.phppro.jp)

改行コードが「LFのみ」にしてるからかな?と思うのですが、わかりません。
ご教授お願いします。

426:nobodyさん
08/02/21 22:17:02
Winよりはマシだけどな(PHPインストール環境として)

427:nobodyさん
08/02/21 22:19:36
>>425
文字コードを変換しなされ

428:nobodyさん
08/02/21 22:29:31 FbPK8kbc
>>427

sjis,EUC,utf-8に変更したんですが、何も変わりません。。。

429:nobodyさん
08/02/21 22:37:31
意味がわからん

430:nobodyさん
08/02/21 22:40:10
つ mb_decode_mimeheader, mb_internal_encoding

431:nobodyさん
08/02/21 22:56:44 FbPK8kbc
すみません。意味不明で。。。

とりあえず33行目から変更してみたんですが、今度はなにも表示されなくなってしまいました。

33 switch(strtolower($structure->ctype_primary)){
34 case "text": // シングルパート(テキストのみ)
35 $diary_body = $structure->body;
36 $diary_body = mb_decode_mimeheader( $diary_body , 'ISO-2022-JP');

あと言い忘れたんですけど、スクリプトはSJIS、DBもSJISでやってます。

432:nobodyさん
08/02/21 23:00:32
本文ならmimeheaderじゃねーし。
header見て文字コードが何か確かめてSJISに変換しなされ

433:nobodyさん
08/02/21 23:10:41
あとスクリプトSJISで書くのは今すぐやめろ

434:nobodyさん
08/02/21 23:14:40 FbPK8kbc
SJISで書いちゃ駄目なんですか!?
すみません!!

あと>>432さんの書き込みの意味がわかないんですが、具体的にはどうすればいいんでしょうか?


435:nobodyさん
08/02/21 23:57:05 FbPK8kbc
自己解決できました。
ご迷惑欠けて申し訳ありませんでした。

436:nobodyさん
08/02/26 00:15:23
>>431
可能です。
以上。
はい、次。

437:nobodyさん
08/02/26 22:29:16 8JcMjBPY
for ($i=0, $n=100000000; $i<$n; $i++ ) {
$str = $i;
}

こうすると$strには0~99999999が入りますが、a~zzzzzzzzまでを$strに入れるにはどう書けばよいのでしょうか?

438:nobodyさん
08/02/26 23:24:57
アルファベット進数?つまり26進数とかになるのか。
aを0、bを1、cを2・・・て対応させればとりあえず入るな。


439:nobodyさん
08/02/27 00:33:52
for ($i='a', $n='zzzzzzzz'; $i<=$n; $i++ ) {
$str[] = $i;
}

440:nobodyさん
08/02/27 04:32:26
>>473
パスワード総当り攻撃の相談でつか?

441:nobodyさん
08/02/27 04:36:01
1桁増やすごとに計算量が莫大に増加していく恐怖を味わうとよいわ

442:nobodyさん
08/02/27 13:31:31
>>439
ネタかと思ってやってみたら本当に動きました
文字列をプラスするとこういうことになるんですね
ありがとうございました

443:nobodyさん
08/02/27 17:43:11
質問です!
「form.html内のinputタグで送信した値をpost.php内の<?= $_post["abc"]  ?>で表示させる。」
ですが、

「phpファイルではなく、htmlファイル内で表示させる」
にはどうすればいいのでしょうか?

1回の入力で、複数ページ共通ヘッダの「更新日」が変更できたらいいな、と考えております。
きっと超基本的な事柄なのでしょうけれど、ネット上でもなかなか見つからないので...。

よろしくお願いします。

444:nobodyさん
08/02/27 19:05:32
Webサーバの設定で拡張子「.html」もphpで動くようにして<?= $_post["abc"] ?>

445:nobodyさん
08/02/27 19:12:22
444>>
なるほど、設定が必要なんですね。
助かりました。
ありがとうございます。

446:nobodyさん
08/02/27 20:15:02
>>445
SSIって手もあるよ

447:nobodyさん
08/02/27 20:37:33
>>446
ありがとうございます。
勉強してみます!

448:nobodyさん
08/02/28 00:23:44
ど素人の質問です。
以下のPHPを作ったところ、画面が真っ白になりました。
真っ白=エラー無しと思い、tablenameを確認したところデータが入っていませんでした。
>>407と同じエラーかと思い、>>408を確認したところONになっていました。
自分では原因がわからないため、どなたかご指摘願えないでしょうか。

<作っているつもりのもの>
別ページのフォームから送信(reg)されたデータを、データベースに入れるPHP。
環境…SQL=PostgreSQL OS=Linux PHP=5.2.5 
確認…FireFox
$con = pg_connect('dbname host user password');
$a = $_POST["a"];$b =$_POST["b"];$c = $_POST["c"];
if(isset($_POST["reg"])){
$sql = "select max(log) from tablename";
$result = pg_query($con,$sql);
$array = pg_fetch_array($result);
$new_log_no = $array[0] + 1;
$sql = "select current_timestamp";
$result_date = pg_query($con,$sql);
$in_date = pg_fetch_array($result_date);
if(isset($_POST["b"])){ $d = $b; } else { $d = $c; }
$sql = "insert into tablename (log,a,d,_in_date)
         values('$new_log_no','$a','$d','$in_date')";}
else{ header("Location: menu.php"); }
if(!$result){ echo "送信に失敗しました";}


449:nobodyさん
08/02/28 00:40:01
Apacheのログは?
あとプログラムのどこまで実行したら真っ白になるか切り分けてみたら?

450:nobodyさん
08/02/28 01:14:23
>>449
レスありがとうございます。
AccessLogはこうなっていました。
127.0.0.1 - username [28/Feb/2008:00:59:35 +0900] "GET /test/in.php HTTP/1.1" 200 555
127.0.0.1 - username [28/Feb/2008:00:59:41 +0900] "POST /test/in_date.php HTTP/1.1" 200 5
in.phpがフォーム、in_dateが問題のPHPです。
よくわからないですが、データベースに問い合わせていない?気がするので調べてみます。

451:nobodyさん
08/02/28 01:43:16
php として動作してないだけじゃ?
httpd.conf とか確認してみたら?

452:448
08/02/28 02:15:26
>>451
httpd.confは本を参考に次のように設定追加してます。

AddType application/x-httpd-php .php

453:nobodyさん
08/02/28 02:48:59
あとは、デバッグの基本中の基本。チェックライト入れまくる

454:nobodyさん
08/02/28 14:23:55
つーか、LoadModuleしてるのか?

455:448
08/02/28 19:24:05
亀レスになってしまい申し訳ありません。

$sql = "insert into tablename (log,a,d,_in_date)
    values('$new_log_no','$a','$d','$in_date')";}
の部分のSQLに対し
pg_query($con,$sql);
を設定するとテーブルにデータを追加することが出来ました。
しかし作成されたデータは中身が空でしたorz
insertが動いてるのでPHPとデータベースの連携は取れてると思います。

>>454
Loaded Modulesを調べた所次の通りの結果でした。
mod_php5, mod_setenvif, mod_so, mod_auth, mod_access,
mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis,
mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status,
Momod_negotiation, mod_mime, mod_log_config, mod_env, http_core


456:nobodyさん
08/02/28 19:36:50
>>449

457:nobodyさん
08/02/29 10:18:45
つーか、まずはHTMLしかないphpを書いて試すとか
白紙のときにブラウザの機能でソース見るとどうなってるとか
いろいろやってんのかな

458:nobodyさん
08/03/05 16:03:25
だいぶ前にログナンバーを引っ張り出して重複せずに+1したいと
言っていたものですがa+モードとファイルロックのタイミングで
何とか実現できました。
その後に続くwモードのファイルーオープンで
ログ数を調整しようと思ったのですが
この処理を付けるとログが全部消えてしまいます。
何か間違えていますか?

459:458の続き
08/03/05 16:05:57
//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
$yojyou = $delcountlines - 2;
$delhandle = fopen($filename, "w");
$delnewlog = "";
flock($delhandle,LOCK_EX);
for ($i = $delcountlines; $i <= $yojyou; $i--) {
array_unshift($delnewlog, $dellines[$i]);
}
fwrite($delhandle,$delnewlog);
flock($delhandle,LOCK_UN);
fclose($delhandle);

460:458の改正
08/03/05 16:41:48
すいません、これで。
ログ二行以上ならログの先頭から余剰分消していくと言う感じで

//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
if ($delcountlines > 2) {
$yojyou = $delcountlines - 2;
} else {
$yojyou = 0;
}
$delhandle = fopen($delfilename, "w");
flock($delhandle,LOCK_EX);
$delnewlog = "";
for ($i = $delcountlines; $i <= $yojyou; $i--) {
fwrite($delnewlog, $dellines[$i]);
}
flock($delhandle,LOCK_UN);
fclose($delhandle);

461:nobodyさん
08/03/05 16:42:58 bSWg3SQN
実行スクリプトまでのサーバーのフルパスを下記のように取っております
この書き方だとファイル名test.phpを他の名前にするたびに$this_script_nameを書換えないといけません
ファイル名を書換えてもソースを変えずにフルパスを取得する書き方を教えてください


$this_script_name = 'test.php';
$full_path = ereg_replace($this_script_name ,'' ,$_SERVER['SCRIPT_FILENAME']);

462:nobodyさん
08/03/05 16:58:07 OQixiW/q
レンタルサーバ・無料スペースに依存せずにPEARを使いたいのですが・・・

ググってみると”必要ファイルをコピーして ini_set や .htaccess を使えば良い”
との事ですが、どこまでが必要ファイルなのか良く分かりませんでした
(ローカルにインストールしたPEARディレクトリ丸ごとホームディレクトリにコピーなのか
installコマンドでダウンロードしたファイルだけコピーなのか)

質問は最初の一行の通りなのですがPEARを使うにはどのファイルが必要なのでしょうか?

463:nobodyさん
08/03/05 17:09:24
>>461
dirname(__FILE__)

464:nobodyさん
08/03/05 17:16:55 bSWg3SQN
>>463
おおお できました
これだけで出来るとわ・・・
ありがとうございました

465:nobodyさん
08/03/08 00:22:24
掲示板の削除なんですが下記操作してからファイルロックかけて書き込むと
場合によっては重複しませんか?

if ($_POST['delete']) {
for ($i = 0; $i < count($lines); $i++) {
$items = explode("\t", $lines[$i]);
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
array_splice($lines, $i, 1);
}
}
}

466:nobodyさん
08/03/08 07:01:18
>>465
if (isset($_POST['delete']) && $_POST['delete']) {
 foreach ($lines as $key => $value) {
  $items = explode("\t", $value);
  if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
   unset($lines[$key]);
  }
 }
}

書き込みの部分を見ないとなんとも言えない

467:466
08/03/08 11:35:25
if($_POST['deletion']){
$deletionlogname = ('card-walin.txt');
$deletionloglines = file($deletionlogname);
$deletioncountloglines = count($deletionloglines);
$deletionlognumbers = $deletioncountloglines - 1;
$deletionfopen = fopen($deletionlogname, "w");
flock($deletionfopen,LOCK_EX);
for($i=0; $i<$deletionlognumbers; $i++){
$deletionlogitems = explode("\t", $deletionloglines[$i]);
if($deletionlogitems[0]==$_POST['deletionradio'] && $deletionlogitems[3]==$_POST['deletionkey'] || $deletionlogitems[0]==$_POST['deletionradio'] && 'masterpass'==$_POST['deletionkey']){
continue;
}else{
fwrite($deletionfopen,$deletionloglines[$i]);
}
}
flock($deletionfopen,LOCK_UN);
fclose($deletionfopen);
}

468:nobodyさん
08/03/08 11:41:55
$deletionlogname = ('card-walin.txt');
何これ

469:465
08/03/08 11:42:09
>>467>>465が書いたものです、アンカー打ち間違えた・・・・・
んでこれは記事の固有IDとパスが一致した行を削除と言う流れで
書いてるんですがどうも訳わからん記事まで削除されてしまいます。
>>465の質問とあわせてアドバイス頂けないでしょうか?

470:465
08/03/08 11:43:33
>>468
ログの名前です、
変数名の英語的意味めちゃくちゃなのは
とりあえず別の変数と重ならなくさせるためなので
ご勘弁を。

471:nobodyさん
08/03/08 11:44:26
パスワードがどれかすら分からんし

472:465
08/03/08 11:44:56
$number\t$name\t$comment\t$deletionkey\t$time\n

ログの並びはこんな感じです。

473:465
08/03/08 11:46:30
$deletionlogitems[0]がパスワード、
POST['deletionradio']が記事の固有IDになります、
説明不足ですいません。

474:nobodyさん
08/03/08 11:51:30
なんでログの件数ー1だけforでループしてんの?

475:465
08/03/08 11:56:53
>>474
その部分もしログが0だった場合とか書いてませんね、迂闊でした。
ログの記事数のカウントが0から始まるのでそうやってみたのですが・・・・・

476:nobodyさん
08/03/08 12:01:17
訳分からん記事ってどういうの?

477:465
08/03/08 12:06:56
関係ない別の固有IDの記事まで消えるんですよね、
例えば記事が3つあって、3つめの記事で固有ID3の記事を削除したら
1つめの記事も同時に消えたりします。

478:nobodyさん
08/03/08 12:08:50
1つめの記事が消えないこともあんの?

479:465
08/03/08 12:17:38
>>478
今試したら記事3つのログで2つめの記事消したら
3の記事も同時に消えました。
つかその後、削除ボタン押したら全部消えたw
どうも記事固有IDとパスワード一致しなかった場合書き換えしないと言う
処理が抜けてたようです。
ただこれを直しても記事の同時消えが直る気がしない・・・・
ロジック的には大体上にあげたプログラムである程度あってるのでしょうかね。

480:nobodyさん
08/03/08 12:26:00
データベースにおいて、データは物理的に削除するのではなく、
フラグ変更することをお薦めする。



481:465
08/03/08 12:30:46
>>480
表示するかしないかで処理するということですか。

482:nobodyさん
08/03/08 14:00:31
>>481
データベースの場合だ
ファイルの場合は消した方がいいよ
速度変わってくるし

483:nobodyさん
08/03/08 14:14:06
じゃ別に今言うべき話じゃないだろw

484:nobodyさん
08/03/08 14:15:28
>>483
俺が言ったんじゃないw

485:nobodyさん
08/03/08 14:46:24
まず
||と&&の使い方を覚えよう
466でも書いたけど(最初のifで要らん部分あるけどw)
ループ中にある
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
これは変です(処理的には通るけど)
  if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
やりたい事は多分これ
んで、POST内容は意図したものがきてるの?


486:nobodyさん
08/03/08 14:52:21
>>484
お前に言ってないw

487:465
08/03/08 16:30:22
なにやらすごい間違いをしてました・・・・・・・・・
$items[4]がパス格納部じゃなくて$items[3]でした・・・・・・・・
今から皆さんにご指摘頂いた部分の修正に入ります、
本当にすいませんでした。

488:nobodyさん
08/03/08 16:36:16
>>486
俺にか?

489:465
08/03/08 16:38:20
なんだか喧嘩させてしまったようで申し訳ない・・・・・

490:nobodyさん
08/03/08 17:05:38
架空請求の詐欺師が特定されてるよw
URLリンク(2ch.pne.jp)

【ユビキタス銀河】 詐欺師プログラマー 武田洋幸
スレリンク(antispam板)l50

491:nobodyさん
08/03/08 17:42:02
何度も投稿すいません、掲示板で書き込んだ後ブラウザの更新ボタン押すと
もう一度書き込まれてしまうのですがこれを防止するのは2重書き込み防止処理だけでいいのでしょうか?
これだとたまに別の人が書き込んだ後に更新押した場合
書き込まれちゃいますよね。
皆さん過去ログの内容走査処理したりしてるのでしょうか?

492:nobodyさん
08/03/08 17:53:28
>>491
書き込んだ後ブラウザを強制的に閉じるようにしたら更新できなくなるよ

493:nobodyさん
08/03/08 18:01:26
そんな~、ドラえも~ん!

494:nobodyさん
08/03/08 18:26:21
a.html←フォーム
b.php←post先
c.php←投稿完了しました表示

b.phpで投稿完了したら
header('Location : URLリンク(example.com)');

これでa.htmlまで戻るとかで戻らない限り2重投稿はある程度防げる



495:nobodyさん
08/03/08 18:29:46
なるほど、そういうことでしたか、取り乱しました。
html作成せずにphp1つだけで全部やろうとしてもややこしそうですね・・・・・

496:nobodyさん
08/03/08 18:50:31
>>495
別にhtml作らなくてもできるけど
ファイルは分けたほうが後々良いよ

497:nobodyさん
08/03/08 21:58:57
>>495
だまされるな!
ドラえもん呼ぶのが正解だ

498:nobodyさん
08/03/08 23:16:31
htmlってどうやって作るんでしたっけ?
なんかリファレンス読んでも見つからないのですが。

499:nobodyさん
08/03/09 01:35:03 BZEq18rG
target.phpをインラインフレームで表示するためのページをget.phpとします
その際にをtarget.phpへ送るリファラを URLリンク(example.com)<)" を追加すればいいと書いてあったのですが、
どのように追加したらいいのかがわかりません
location みたいな書き方が思い浮かんだのでやってみましたができませんでした。
正しいやり方を教えてください。お願いします。
-------------------------------------

【get.php】
<?php
header("Referer: URLリンク(example.com\r\n)<)

500:nobodyさん
08/03/09 02:10:54
>>499
【get.php】
<?php
echo '<iframe src="target.php?referer='.$_SERVER["HTTP_REFERER"].'"></iframe>';
?>

【target.php】
<?php
echo $_GET["referer"];
?>


501:nobodyさん
08/03/09 02:31:20 BZEq18rG
>>500
せっかく答えていただいたのに恐縮ですが、
それはget.phpで取得したリファラをtarget.phpへgetメソッドで渡す方法ですよね

私が知りたいのは、
get.phpでtarget.phpを開くけれども、
target.phpで取得されるリファラはget.phpではなく、URLリンク(example.com) にしたいということなのです
印象の良くない言葉なので使いたくはなかったのですが、つまり、リファラ偽装ということです

書き方悪くてすいません

502:nobodyさん
08/03/09 02:41:06
>>501
URLリンク(example.com)
これは固定値かそれともget.phpで取得できる値かどっち?

get.phpで取得するリファラの値なら方法は無いよ?
get,php内でgetのリクエストをtarget.phpに宛てに投げて
その時のヘッダにリファラ偽装して渡すとかなら可能だけど

503:nobodyさん
08/03/09 03:08:23 BZEq18rG
>>502
説明不足で本当にすいません
固定値です


504:nobodyさん
08/03/09 04:55:14
>>503
ファイルに対してアクセスあった場合
強制的に.htaccessとかでSetEnvとかかなぁ・・・

もしiframeのが別のサイトなら
getのリクエスト投げた方が早い

505:nobodyさん
08/03/09 05:16:16
変数に0入れてその後の分岐にNULLかどうかとか入れたら
0はNULLやfalseと判定されますか?
その変数を変数-1としても-1とはならない?

506:nobodyさん
08/03/09 05:24:57
===で比較すれば判定されない。
変数=0
変数=変数-1としたら変数の中身は-1になる。

507:nobodyさん
08/03/09 05:29:10
型の自動変換に頼った比較は避けた方がベター。

508:nobodyさん
08/03/09 05:31:25
どうもすいません、ありがとうございました。

509:nobodyさん
08/03/09 14:05:48 BZEq18rG
>>504
いろいろなアドバイスありがとうございます

target.phpが別のサイトなら、
target.phpのソースは
<?php
echo $_SERVER["HTTP_REFERER"];
?>
なのは弄りようがないわけですが、

target.phpの $_SERVER["HTTP_REFERER"]の値をURLリンク(example.com)であると認識させるためには、
get.phpからどうやってgetのリクエストを投げればいいのでしょうか

510:nobodyさん
08/03/09 14:17:24
>>509
GETと環境変数は別

511:nobodyさん
08/03/09 14:34:13 BZEq18rG
>>510
ありがとうございます
つまり、getでリクエスト投げても、相手で表示される環境変数は変わらないわけですよね

どうすれば
get.phpでインラインフレームでtarget.phpを表示し、
target.phpの $_SERVER["HTTP_REFERER"]の値をURLリンク(example.comt)にできるのでしょうか
やり方がさっぱりわからないのです

512:nobodyさん
08/03/09 15:24:27
>>511
getでリクエスト投げる時にリファラ偽装すれば
リファラには固定値を入れる事ができる

だがインラインフレームでやるのは無理
それをインラインフレームでやる必要あるの?

どうしてもやりたいなら
.htaccessにSetEnvってのがあって
それを使ってtarget.phpにアクセスがあった場合
強制的にリファラを書き換えてやれば良い


513:nobodyさん
08/03/09 16:02:31 BZEq18rG
>>512
インラインフレームでしようとしていた理由は、
自分がやりたいことを考えた時に一番実現しやすそうだと思ったからです
それが無理ならばインラインフレームでやることはありません

>getでリクエスト投げる時にリファラ偽装すれば
ここのやり方を教えてもらえないでしょうか
getはわかりますが、リファラ偽装の部分がわからないのです

514:nobodyさん
08/03/09 16:26:44
>>513
pearのhttp_requestかcurlが楽じゃないかな
普通にfsockopenとかでopenして投げる事もできるけど
<?php
$request .= "GET / HTTP/1.0\r\n";
$request .= "Host: localhost.jp\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n";
$request .= "Accept: */*\r\n" .
        "Referer: URLリンク(hogehoge.jp)" .
        "User-Agent: DoCoMo/2.0 Fa2(c100;TB;W28H15)\r\n";
$request .= "\r\n";
$request .= "\r\n";

$fp = fsockopen("yahoo.co.jp", 80, $errno, $errstr, 30);
fputs($fp, $request);
$response = "";
while (!feof($fp)) {
    echo fgets($fp, 4096);
}
fclose($fp);
?>

こんな感じでやふーのトップをもってこれる

515:nobodyさん
08/03/09 16:49:24 BZEq18rG
>>514
ありがとうございます

私のくどい質問に回答続けてくれた方に感謝します

516:nobodyさん
08/03/10 01:54:10 HGPlOVh9
PHP + MySQL でスレッド式掲示板を作りました。
スレッド毎にテーブルを作成し、そのテーブルにコメント(&投稿者名など)を記録、
すべてのテーブルを管理するテーブルに最終投稿日時などを記録して、スレッド順位などを決めます。
以下、コメントを投稿した時の部分のスクリプト。

$comm = addslashes($_POST['comm']); //コメント
$id = addslashes($_POST['id']); //テーブルID
$name = addslashes($_POST['name']); //投稿者名
if($_POST['sage'] == NULL){$sage = 0;} else {$sage = 1;}
if($name == NULL){$page_disp = "名前を入力してください。";
} else {
if($comm == NULL){$page_disp = "本文を入力してください。";
} else {
insert_comment($id,$name,$comm,&$seq,$res_dbcon,&$result); //スレッド(テーブル)にコメントを書き込み
if($result == FALSE){$page_disp = "投稿に失敗しました。";
} else {
update_temp_table($id,$sage,$seq,$res_dbcon,$result);//管理テーブルに投稿日時などを記録
$page_disp = "投稿しました。";}}}

PCからのアクセスと、DOCOMO、auからは期待した通りの動作をしていますが、softbank携帯からのみ、動作がおかしくなっています。

症状としては、$name、$commといった変数を受け取れず(?)、テーブルには各カラムのNULLになったレコードが追加される。
テーブルの更新、レコードの追加は行われているので、CURRENT TIMESTAMPなどはちゃんと入っている。
管理テーブルは更新されているので、各変数のNULLのチェックは通過している。
という状態です。スクリプト上におかしい箇所などあるでしょうか?

ちなみにPHP、MySQLの勉強は先月始めたばかりで、この掲示板のスクリプトは、本などを読んで作ったオリジナルのものです。
よろしくお願いいたします。

517:nobodyさん
08/03/10 02:14:45
すみません。サブルーチンの中身を書いてなかったです。

function insert_comment($tbl_id,$name,$comm,$seq,$dbcon,$result){//コメント追加
$l_sql = "SELECT count( * ) FROM `".$tbl_id."`";
$l_result = mysql_query($l_sql,$dbcon);
$l_row = mysql_fetch_array($l_result);
$seq = $l_row[0] + 1;
$f_host = gethostbyaddr(getenv("REMOTE_ADDR"));
$sql = "insert into `".$tbl_id."` (c_seq, c_time, c_name, c_comm, c_host, c_del_flg) VALUES (".$seq.", NOW( ), '".$name."', '".$comm."', '".$f_host."', '0' )";
$result = mysql_query($sql,$dbcon);
}

function update_temp_table($tbl_id,$sage,$seq,$f_dbcon,$f_result){//スレッド更新(管理テーブル更新)
if($seq == 300){ $del_flg = 1;} else { $del_flg = 0;} //規定レス数に達したスレは終了
$sql = "update t_temp_table set c_count_comment = ".$seq." , c_del_flg = '".$del_flg."' where c_table_id = ".$tbl_id;
$f_result = mysql_query($sql,$f_dbcon);
}


518:nobodyさん
08/03/10 02:20:25
>>516
softbankのチェックした機種は何?
多分表示側の問題だとは思うけど

それと、1スレッド1テーブルはやめた方が良い
ファイルベースの設計なら1スレッド1ファイルの方が良いが・・・

519:516
08/03/10 02:40:11
機種はちょっと分からないんですよね。
ログ見てみたらソフトバンクだな、ってのが分かったというだけで。

しかも、その方が問い合わせフォームからメールも送ってくれたんだけど、
それがまた見事に文字化けしていて全く見れない状態です。
(これもまたDOCOMO、auは正常動作。)

1スレッド1テーブルが良くないというのは、パフォーマンスとかCPU占有とかいう話でしょうか?
素人考えで、一つのテーブルのみが異常にレコード数多くなるよりいいかな、と思ったのですが…

520:nobodyさん
08/03/10 02:58:57
ちょ,それはない

521:nobodyさん
08/03/10 03:56:42
>>519
旧Vodafone機種とかにはまともに送れないのとかあるからねー
そこらへんが携帯対応のめんどくさい所

1つ要素追加しようとした時に全部のテーブル構造変えるほうが手間
あとデフォ設定でCPUがP4の3Gでメモリ2Gなマシンでも
1テーブル2000万件とかいれても平気だから1テーブルに入れろ

DB設計は色々と勉強した方が良いよ



522:nobodyさん
08/03/10 05:18:59
超初心者用ってあるのに全然わからない。・゚・(ノД`)・゚・。
2ヶ月ぐらいやってるけどなにをどうやっていいやら・・・

とりあえずHTMLを少しやってたのでPHPに挑戦してみたんだが
難しい。そして、どう使うのかがよくわからん。

PHPスーパーサンプル集って本を買って本の進行通りにやってるが
だからなに?って感じでおわってしまう。

まず最初にこんにちはを画面に表示させた。うむ。
フォームはあらゆるところで使われるので重要ということで
フォームもやってみた。うむ。

いま、フォームで送信されたデータを関数で色々条件をつける
もしくは処理をするってのやってるんだけど、それも具体的によくわからん。
説明には、パスワードを入力とか普段サイトで使ってるようなことで使う
みたいなことは書いてあったけど、実際自分でつかえるかなーと疑問。

何をどうしたらいいか、もっと分かりやすい本、もしくはページはないか
しってたらお願いします。できれば、私はこう使ったというのを実体験で
いってくれると分かりやすいです。m(_ _)m

523:nobodyさん
08/03/10 06:26:17
>>522
その手の質問きたら俺は毎回ここをオススメしてる
宣伝と思われそうだがw

URLリンク(www.phppro.jp)

初心者には普通にオススメ
あと何か作ってみたいものを見つけるのが良いんじゃないかな?

んでこれを作るには何が必要で
どんな事をしなきゃいけないのかとか
あとは同じようなスクリプトは
どんな風にしてるのかを調べるのも良いかな

524:nobodyさん
08/03/10 18:52:10
>>523
すごくよかったですm(_ _)m
私が買った本より説明が分かりやすく理解しやすかったです。

とりあえず、このページを読破し実際にやってみようと思います。

525:nobodyさん
08/03/11 03:36:14 xCa4blgr
すません。ある関数の返り値をvar_dumpしたら
object(stdClass)(1) { ["array"]=> "test"}
みたいな感じでオブジェクトで返ってきました。

配列arrayの中の"test"という文字列を取り出すためにはどうしたらよいのでしょうか?

ちなみにjson_decode()です。upgrade.phpを利用してassocをTRUEにしているのに配列ではなくオブジェクトで返されてしまって困っています。



526:nobodyさん
08/03/11 03:42:27
$obj->array

527:nobodyさん
08/03/11 15:31:16 xCa4blgr
>>526
ありがとうございます。

528:nobodyさん
08/03/11 20:58:03 LKhchWrt
PHP5のsimplexml_load_fileを使ってWordPressのRSSフィードを読み込もうと
しているのですが、フィード内の <content:encoded> といったエレメントが
読み込まれません。

どうも「:」がエレメント名に含まれていると、PHPはそれを見落としてしまうよう
なのですが、同じような経験をされた方いらっしゃいますでしょうか?



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