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

【PHP】くだらねぇ質問はここに書き込みやがれpart9

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/09/03(土) 11:53:32ID:7OO4C5e5
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
0202nobodyさん2005/09/06(火) 16:53:30ID:???
>>201
こんなのがあった
http://www.vector.co.jp/soft/unix/util/se365582.html
0203nobodyさん2005/09/06(火) 16:58:01ID:???
>速度重視で4文字は約0.2秒でクラックできます

すげぇなぁ…。んー、セキュリティ的に良いと思ったんだけどな…。
0204nobodyさん2005/09/06(火) 17:01:12ID:???
2ちゃんのトリップからキーを捜すようなもんだろ
まず無理だろう
0205nobodyさん2005/09/06(火) 17:02:35ID:???
PHP+MySQLで顧客管理のサイトを作っています。
たとえば、

名前:年収:勤務地
aaaa:600:埼玉
bbbb:700:東京
cccc:550:千葉
dddd:500:神奈川
eeee:800:北海道

というデータを、年収を「600万以上」で検索しても
550万のデータも「条件90%合致」ということで表示したいのです。
検索条件に100%合致しなくても、ある程度は表示(100%から順にソートして表示)したいんですが、
どういう仕組みでそれを実現すればいいか思い浮かびません。
いい方法ありましたらご教授願います。
0206nobodyさん2005/09/06(火) 17:08:12ID:???
>>205
年収だけなら、540万円以上のデータを抽出して
600万円未満に90%合致フラグを立てれば良いだけ。
それ以外のデータは一致度の基準を立ててくれないと何ともいえない。
0207nobodyさん2005/09/06(火) 17:08:54ID:???
>>205
年収の600にたいする割合を計算して0.9以上で検索、ソート
0208nobodyさん2005/09/06(火) 17:12:00ID:???
WHERE 年収 >= 条件*0.9 ORDER BY 年収 DESC
でいいんじゃないの?

合致度を出したければSELECTで (年収 / 条件) AS 合致度 って感じで出して表示すればいいかと。
100%以上は等しく100%と表示したければ、合致度 > 1 の場合は等しく 100 としてphp側で扱えばいい。

つか完全にSQLの話だわな
0209nobodyさん2005/09/06(火) 17:14:33ID:???
>>206
レスどうもです。
実は年収だけじゃなくて、勤務地も東京を指定しても
埼玉、神奈川といった近辺も合致させたいんです。
基準としては、年収-50万で合致率からマイナス10%、
近県ならマイナス10%といった減算方式で、80%までなら
抽出したい、といった具合です。
勤務地に関しては、名称ではなく数値で格納してあるので

埼玉:10
東京:11
神奈川:12
千葉:13
北海道:50

検索値の前後±1の地域をマイナス10%で抽出する、といった感じです。
どうやって抽出すべきか、どうやってソートしたらいいか全く見当がつきません。
よろしくお願いします。
0210nobodyさん2005/09/06(火) 17:18:15ID:???
>>207-208
なるほど、合致率もSQLで取得するんですね。
年収オンリーでの考え方は把握しました。どうもです。

条件が複合したときがさらに厄介です。
ヒント(っつか答え)はいただいたので、自分でも考えてみます。
0211nobodyさん2005/09/06(火) 17:20:37ID:???
>>209
ここで聞く話じゃないよ。板違い。

MySQL 総合 Part5
ttp://pc8.2ch.net/test/read.cgi/db/1121561160/

こっち。
0212nobodyさん2005/09/06(火) 17:28:09ID:???
>>211
スミマセン。
向こうでマルチになってしまいますがご勘弁を。
お邪魔しました&ありがとうございます。
0213nobodyさん2005/09/06(火) 17:54:54ID:???
なんでこう、仕様を小出しにしやがる奴が多いんだ
0214nobodyさん2005/09/06(火) 18:29:58ID:???
PHPをピーエッチピーと呼んでもいいですか?
0215nobodyさん2005/09/06(火) 19:40:48ID:???
せくせ、です。
0216nobodyさん2005/09/06(火) 20:34:33ID:???
>>203
ブルートフォースって四文字限定なら8^4でたった4096回試行するだけだよ?
そもそもどんなアルゴリズムでも4文字のハッシュが破られないなんてありえねぇよ。

でもまぁ、君のそのよりよいセキュリティを求める姿勢はすばらしい。
ぜひ強固なシステムを作ってください。
0217nobodyさん2005/09/06(火) 20:36:51ID:???
あ、ごめん4294967296だね。
でも4文字なら破れるのはいっしょ。
0218nobodyさん2005/09/06(火) 20:40:43ID:vNTyf3ur
これからPHP勉強しようとおもってまつ
開発環境で悩んでて今使ってる
windows XP home にapache,php等をインストールするのがいいのか
fedoraあたりのディストリをインストールしたlinuxPCのがいいのか
置き場所の問題もさることながらlinuxPC予定機がAMD550MHzなんでつ
windowsは2.8GHzなんでちと迷ってます
開発は主にwindowsでやって、まとまってきたのをレン鯖にうpするのがいいのか
開発からlinuxのがいいのか
ご意見お待ちしてます。
0219nobodyさん2005/09/06(火) 20:51:31ID:???
Windows環境で開発、Linuxの鯖へアップって方法でやってるけど
それほど困ったことは無い。
メール関係だけは本鯖使ってテストするけど。
両方環境用意できるならLinux鯖の方が良いんでない?
0220nobodyさん2005/09/06(火) 21:22:55ID:oQLGoVGc
作りたいものが何も無いときって、どうやって作りたいものを探しますか?
0221nobodyさん2005/09/06(火) 21:25:28ID:???
>>218
Linux環境作れるんならlinux環境の方が良いんでは?
レンサバだと制限があるから、同じ設定にしたりも出来るだろうし。
よほどシビアなもの作るんで無ければ、取りあえずWinで作っても
十分大丈夫だろうけど
0222nobodyさん2005/09/06(火) 21:27:59ID:???
>>220
「探す」つーのと「作りたい」つーのは相容れない気がするが、
ネタを探しているのなら、web制作板かwebprog板の
作ってくれスレや探してますスレあたりをウロウロしてれば見つかるかと。
0223nobodyさん2005/09/06(火) 21:45:13ID:???
>>219
情報thx
ちなみにどの位の物を作ってるのかちょっと知りたいです

>>221
linux環境は作り難い、が正確なところでして
winで作ってレン鯖にうpで問題ないならそれに越した事がないのが現状でして
0224nobodyさん2005/09/06(火) 21:51:55ID:???
>>222
そうっすよねぇ。作りたいものを探すのは難しい・・・

>>223
レンサバ借りてるんなら、レンサバにアップして動作確認するのは
駄目なんですか?
俺はいつもそうやってます。
0225nobodyさん2005/09/06(火) 21:58:46ID:???
>>224
レンサバでも専用ならいいけど、共用なら何かあった時に他の人の迷惑になる可能性も
あるんでローカルでできる動作確認はなるべくローカルでやったほうがいいよ。

どんなアプリを書くかは知らないけど、レンサバと同じOSが用意できるのなら、
それに越したことはないと思うけど。
02262192005/09/06(火) 22:07:57ID:???
>>223
どの位のものって規模とかのことかな?
小さな企業サイトのCMSやオンラインショップとかがメインかな。
大抵そういうところは月額1万以下の共用レンサバって感じだし、
出来ることも限られるのであんまり環境を変えることなくWinで開発できる。
この規模だと複数人で開発することもないし、自分の環境だけで
完結できるってのも大きいかもしれない。
0227nobodyさん2005/09/06(火) 22:14:31ID:???
GDライブラリが入っているかいないかtelnetで調べる方法を
教えてください m(_ _)m
0228nobodyさん2005/09/06(火) 22:19:22ID:???
>>223
鯖構築経験がなくて、とっとと開発したいなら素直にWinでいい気がする。
スペック的には鯖にする予定のマシンがAMD(K6-3?)550MHzって話だけど、それだけあれば十分かと。
(ファイルゴリゴリ動かしたりするなら、逆にWin機より早いくらいかもしれない)

Win機の方が、鯖に上げて…って部分がなくなるから、開発は楽。
(リモートからでも、ローカルにあるような感じ編集出来る開発環境はあるけども)

鯖の勉強もしたいなら、Win機で開発しながら暇見て鯖構築していけばいい。
0229nobodyさん2005/09/06(火) 22:20:39ID:???
>>227
なんでわざわざtelnetで?
GD使うソースをアップして実際に動かして動くかどうかで見ればいいんじゃ?
0230nobodyさん2005/09/06(火) 22:48:14ID:???
>>223
参考程度に、私は WindowsXP + XAMPP + PHPEclipse って環境で勉強中
手元にLinux鯖もあるけど経験が浅くて躓く事が多いから、馴れてるWin環境を選んだ。

>>228で出てるけど、自分が使い慣れてる環境で始めるのが余計な事を考えなくて済んで良いと思う。
0231nobodyさん2005/09/06(火) 23:39:36ID:???
MySQLのtextフィールドに、30KBのデータが入ったレコードが100件あるとします。
このとき、それらを全部取り出すと無駄だし負荷も高いので、
データのアタマの一部分だけ(たとえば3KBだけ)を全レコード抜き出したいのですが、
どういうSQLを発行すればいいのでしょうか・・・。

いろいろリファレンス見ましたが、抜き出すデータサイズを指定できるSQL命令は
無いようでした。PHPにもそういう関数はありませんよね・・・??
0232nobodyさん2005/09/06(火) 23:59:08ID:???
>>231
マルチバイトが含まれているときっちりサイズは合わないが
SELECT SUBSTRING(カラム名, 1, 3072)
ではダメ?
0233nobodyさん2005/09/07(水) 00:07:14ID:???
ereg()を使って文字列を比較したいのですが、検索したい対象語が多く
あるので配列($word)にしたいと思っています。
この場合、ereg($word,$strings)で動作するのでしょうか?
試しているのですが動いてくれません。foreach文か何かで片っ端から
やるしか無い?
0234nobodyさん2005/09/07(水) 00:20:16ID:???
>>232
ありがとうございます!
SUBSTRINGというのは初めて知りました。
サイズは厳密に合わなくてもいいのですが、
今回のtextフィールドには日本語の文章が格納されていまして、
その場合だとどこか(最後の一文字?)で文字化けが発生するのでしょうか、、、
0235nobodyさん2005/09/07(水) 00:32:25ID:???
>>233
>検索したい対象語が多くあるので配列($word)
この日本語だと「検索を実行する対象の文字列」が複数あるように読めるのに
>ereg($word,$strings)
これを見ると、「検索条件」が複数が複数あるように読めるんだけど、どっちだ?

つか、phpマニュアルくらい読もうや
http://php.s3.to/man/function.ereg.html
bool ereg ( string pattern, string string, array [regs] )
どっちにしろ、stringってなってるから配列は無理な事はわかるだろ。

んで、検索条件が複数という事であれば、正規表現にはorに該当する表現がある。
(abc|zyx)
0236nobodyさん2005/09/07(水) 00:51:54ID:???
>>235
「検索条件」が複数あります。分かり難くてすいません。
csvのデータファイルから条件に合致する項目を抜き出すプログラムを
書いているんですが、その条件が頻繁に変わる可能性があるので、
できれば外部ファイルに、
$word = array('abc','def',・・・)といった形で持っていたかったんです。

>マニュアル
以後気を付けます。
0237nobodyさん2005/09/07(水) 01:03:36ID:???
phpの正規表現とperlの正規表現の違いを載せたサイトを教えてください。
0238nobodyさん2005/09/07(水) 01:13:03ID:???
PHPの正規表現のpregはPerl互換なので大体同じものです。
0239nobodyさん2005/09/07(水) 02:11:16ID:???
http://pc8.2ch.net/test/read.cgi/tech/1125991797/30
嘘つきJava厨が発生したので貼っておきますね。
0240nobodyさん2005/09/07(水) 02:48:42ID:???
あながち間違いとも言えん罠
0241nobodyさん2005/09/07(水) 02:59:28ID:???
間違いとは言えないなぁ、確かに。
言葉は悪いけどその通りな部分も多少なり。

でも、言及してるASP厨、PHP厨とやらにオブジェクト指向を理解してない人が多いのは確かだろうけど
理解してないことが致命的になるような言語でもないしなぁ、別にいいじゃんって気も。

というか、WebProg上がりじゃないマ板の人間がそんなすげぇかって言うと
似たようなのがゴロゴロしてるような気がするけど(自分はマ板住人でWebProgも覗きに来る)。
0242nobodyさん2005/09/07(水) 03:10:16ID:???
どうでもいいよ。意図した通りにプログラムが動きさえすれば。
0243nobodyさん2005/09/07(水) 03:17:33ID:???
最近の厳しい個人情報保護うんたらかんたらのせいで、
もうWebサービスなんてやれないじゃないか!って思ってるのは漏れだけ?

100%のセキュリティなんて存在しないし、限りなくそれに近づけようとすれば莫大なコストがかかる。
それで何か情報が漏れでもしたら運営者が叩かれる。
あー、やってらんねぇ。
せっかくの革新チャンスなのに、つまらない世の中になってきたもんだ。
0244nobodyさん2005/09/07(水) 03:24:12ID:???
逆に、上手いことやって信用を得られれば他と差をつけることが出来る、とプラスに考えようぜ。
というか、個人情報保護法で困るようなセキュリティポリシだとそれはそれで不味い気が。
0245nobodyさん2005/09/07(水) 03:50:55ID:???
>>244
>個人情報保護法で困るようなセキュリティポリシだとそれはそれで不味い

そういうことを言ってるのではなくて。
どんな立派なポリシーを持とうが、どんなに気をつけてようが、被害に遭うときは遭う。
そうなったときの、運営者(開発者)が負わなければならない責任が大きすぎるのが問題。
それだけのリスクに見合うだけのコストを料金に上乗せできればいいが、そうもいかない。

そもそも、世間的に高セキュリティが簡単に構築できるもんだと思われてるんのが難点。
悪意ある犯罪者のせいで個人情報漏洩でもしたら、「セキュリティ対策をしてないほうが悪い」と
いうのが当たり前のような風潮になってるのが恐ろしい。
0246nobodyさん2005/09/07(水) 07:02:55ID:???
おまいさんはなんかズレてる。
なにがあったか知らんが茶でも飲め。
0247nobodyさん2005/09/07(水) 07:44:52ID:???
以下のようなプログラムで画像を送信するフォームを作成しているのですが
画像ファイルのある位置が文字ファイルで表示されるだけで画像を表示させることが出来ません。

例えばCドライブにある『Sunset.jpg』というファイルを送信しようとしても
確認画面では『C:\Sunset.jpg』と文章で表示されるだけで画像が表示されません。

画像をうまく送信できるようにするにはどうしたらよいのでしょうか。

<!-- 送信画面 db_form.php -->
<FORM enctype="./image" name="pl_info" action="./db_pre.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./db_pre.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" id="upfile" name="upfile">
<INPUT type="button" name="SUBMITBUTTON" value="確認画面へ" onClick="NEXT()"><
</FORM>

<!-- 確認画面 db_pre.php -->
<?=$_POST['upfile']?>
<form name="pl_info" action="./db_insert.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./db_insert.php">
<INPUT type="submit" name="INSERT_DB" value="登録する" onClick="next()">
</form>
0248nobodyさん2005/09/07(水) 07:54:25ID:???
>>247
どこからそんな無茶苦茶なソース(HTML、PHP共に)を
引っ張ってきたのか知らないけど、
phpのマニュアルを読んでごらん。
ttp://www.php.net/manual/ja/features.file-upload.php
0249nobodyさん2005/09/07(水) 09:50:03ID:npPFuG98
なんとなく解決はしてるんですが、いまいちスッキリしないので ( ゚д゚)ノ ハイ!質問!

FORMからの変数受け渡しについて、
#test1.php
<form action="test2.php" method="POST">
<input type="text" name="Test" size="10">
<input type="submit" value="送信">
</form>
#test2.php
<? print "Test ==> " . $Test; ?>   →何も表示されない
<? print "Test ==> " . $_POST['Test']; ?> →入力された値が表示される

test2.php内で、上の$Testのように書けばOKとどこかで見たのですが、
下の$_POST['Test']としないとダメっぽいのはなぜでしょう。
勝手に上がPHP3X、下がPHP4以降用、とか考えているのですが。(今の環境は5.0.4

さらに、この$_POSTを使うとして、checkboxから1つまたは複数の値が渡される場合は、
普通に配列使って受け渡しできます?
$_POST['chk[$i]'] とかでループ、表示するのかなぁと。

初歩的なことですが、どなたかお願いします。
0250nobodyさん2005/09/07(水) 10:18:46ID:???
>>249
変数の受け取り
 <? print "Test ==> " . $Test; ?> → PHP4.1以前の書式
 <? print "Test ==> " . $_POST['Test']; ?> → PHP4.2以降の書式

 4.2以降でも、php.iniのregister_globalsをOnに設定すれば使用可能だけど、セキュリティ面を
 考慮して下記のように変更されたので、特別な理由がなければ下の書式を使用すべし。

要素の配列
 HTML側はname属性に [] を付ける
  <input type='checkbox' name='chk[]' value='1'>
  <input type='checkbox' name='chk[]' value='2'>
 PHP側は下記のような形式で受け取る
  for ($i = 0; $i < count($_POST['chk']); $i++)
   echo $_POST['chk'][$i]

 [$i]は直接の値(0や1)でも良い。

こんなのでいい?
0251nobodyさん2005/09/07(水) 10:30:18ID:???
>>247
確認画面で
<?php var_dump($_FILES); ?>
または
<?php print_r($_FILES); ?>
をやってみな。
ついでに$_POSTもやってみたほうがよいかも。

あと、送信画面のフォームタグを
<FORM enctype="multipart/form-data" (ry
に直す。
02522492005/09/07(水) 10:41:32ID:npPFuG98
>>250
うわぁ、完璧っす。(TдT) アリガトウ

for ($i = 0; $i < count($_POST['chk']); $i++)
   echo $_POST['chk'][$i]
これで配列MAXまでループ・表示すね。
がんばります〜
0253nobodyさん2005/09/07(水) 10:47:34ID:???
>>252
つ foreach
0254nobodyさん2005/09/07(水) 11:06:48ID:???
PHP : 5.0.4
Apache : 1.3.33
の環境でエラーが出ます

if(hoge){

//変数代入処理がちょこっと
header("Location:http://hoge.hoge");
break; <-何故かココでエラー
}

原因は何が考えられますか?
ヒント下さい
02552542005/09/07(水) 11:12:08ID:pxwqcsIm
エラーメッセージ忘れました。
Fatal error: Cannot break/continue 1 level in /hoge〜

ようは駄目なのか・・・
0256nobodyさん2005/09/07(水) 11:20:16ID:???
>>254
breakで何をしたいんだ?breakってforループとかswitchの中で使うんだが。。。
単にそこで処理を抜けたいのならexitだと思う。
0257nobodyさん2005/09/07(水) 11:36:30ID:wV2Se0T2
PHP:4.3.10
Apache: 1.3.31
OS: Win XP
の環境で、変数つきでincludeできません。

#test.php
<?php
print $_GET['name'];
?>

#test2.php
<a href="test10.php?name=aaa">アンカーから呼び出し</a>
<?php include("test10.php?name=aaa"); ?>

とすると、アンカーから呼び出すとaaaがprintされるのですが
includeすると
Warning: main(test10.php?name=aaa): failed to open stream: No such file or directory in c:\apache\users\xxx\home\test2.php on line 10
とエラーが出ます。

原因としてなにを疑えばいいのでしょうか?
02582542005/09/07(水) 11:39:47ID:???
>>256
ありがとう
マニュアル見たらそうでした。

どっかのスクリプトで使ってたんでこれで良いのかとオモテタ。。。
0259nobodyさん2005/09/07(水) 11:53:42ID:???
>>257
includeはそのように使用するものではありません
無理矢理やるとすると、以下のようになります

#test.php
<?php
print $name;
?>

#test2.php
<?php
$name = $_GET['name'];
include("test.php");
?>

>原因としてなにを疑えばいいのでしょうか?
includeに対する貴殿の知識不足が原因です
0260nobodyさん2005/09/07(水) 11:57:26ID:???
ホームページ制作中で質問です。
コンテンツが50で今後増え続けるので、更新の為にもフレームチックな格好をとりたいのですが
ttp://www.hakusi.com/up/src/up3497.jpg
こんな感じで呼び出すにはどういう風にすれば良いでしょうか。

phpにすれば良いと言われたのですが、そんな高等な技術を持ち合わせていないのでお願いします。
0261nobodyさん2005/09/07(水) 12:04:17ID:???
>>260
PHPで無理ならスレ違いだと思うんだが?
0262nobodyさん2005/09/07(水) 12:06:14ID:???
>>260
SSIじゃ駄目なのか?
02632602005/09/07(水) 12:21:31ID:???
本音を言えば今後更新が極力楽になればどれでも良いんですorz
鯖がせっかくSSI、PHPに対応しているので出来ればやってみたいんですが、触った事が無いので・・・
0264nobodyさん2005/09/07(水) 12:34:23ID:???
>>260
JavaScript使うならDreamWeaver使ったほうが楽じゃね?

ブラウザによってまだ挙動がことなることもあり
コードが煩雑になりやすいから
PHPなどのサーバサイド言語つかったほうが楽と言えば楽だけど。
0265nobodyさん2005/09/07(水) 12:34:59ID:???
>>263
俺もPHPに触ったこと何て無いぞ。



>>257
include てのは外部ファイルを読み込み時に使うモンだ。
02662572005/09/07(水) 12:37:00ID:???
>>259

わ、そうだったんですか!
勉強になりました。
精進します。ありがとうございました。
02672602005/09/07(水) 12:52:01ID:???
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>テスト</title>
</head>

<body>
<table width="800"><tr>

<td>
<?php include_once("○○.txt"); ?>
</td>

</tr></table>

<table><tr>

<td width="200">
<?php include_once("menu.txt"); ?>  //左メニュー用の内容タグだけのテキスト
</td>

<td width="588">
内容
</td>

</tr>
</table>

</body>
</html>

↑これで表示はされましたけど大丈夫ですか?
0268nobodyさん2005/09/07(水) 13:15:04ID:???
>>267
大丈夫っちゃ大丈夫だけど、.txt(おそらくテキストファイル?)を読み込むならreadfileで。
includeをする対象は基本的に「他のPHPファイル」。
まあ頑張ってくれい。
0269nobodyさん2005/09/07(水) 16:16:20ID:???
すみません、質問させていただきます。
ページ間を移動させるための、以下の様な形のリンクを
作りたいと考えております。

<< 1 | TOP | 2 >>

移動するというか、includeするような形が望ましいとは
思っております。例えば

index.php
001.php
002.php

上記のような構成になっているとして、これから先
【***.txt】ファイルは追加することになるのですが
それを見越した上で、自動で数字の部分を読み込ませる
機能も備え付けておきたいのです。

どのような考え方で作成すれば宜しいでしょうか?
もしくは参考となるHP等はございますか?
0270nobodyさん2005/09/07(水) 16:47:26ID:???
PATH INFO使えば?
0271nobodyさん2005/09/07(水) 17:05:57ID:???
仕事のふりのし過ぎで眠い
0272nobodyさん2005/09/07(水) 17:08:41ID:???
>>269
index.php?page=n てな感じにして、
・呼び出すファイルはindex.phpのみ(page.phpとかでもおk)
・page=nでページ番号指定
・ページ番号 n、n-1、n+1 の存在チェック。file_exists関数を使う。
 (00nの形式にするためにsprintf辺りを使う)
・include関数(readfileの方がいいかも?)を使って、該当テキストを出力。
・前後のページが存在すればそれぞれリンクを作成。
こんな感じでいいんじゃないかな。

デメリットとしては、
・表示の度にfile_existsとかするので若干負荷がかかる
・ページのどれかが歯抜けになっていると、えらいことになる
・一覧表を作るときに一工夫が必要
0273nobodyさん2005/09/07(水) 17:09:06ID:???
>>271
「俺、いま仕事のふりしてます!!」って大声で叫べ。
一気に眠気さめるぞ。
0274nobodyさん2005/09/07(水) 17:11:40ID:???
>>271
空気椅子の刑
0275nobodyさん2005/09/07(水) 17:14:09ID:???
>>269
まずいくつか不明瞭な点。
・どこにそのページングリンクをつけたいのか?(index.phpかな)
・***.txtはページングに関係あるのか?(ただ同じ階層に入るだけかな)
・ページングさせるのは、[0-9]{3}.phpになるのか?(そうなんだろな)

上記の括弧内の条件として考えると、
paging.phpなどを作って、そこでページング部分だけをechoし、それをinclude(必要ならrequire)。

で、paging.phpはこんな形になるかと。
・その階層のファイルリストを引っ張り出す
・その中から^[0-9]{3}\.php$でmatchしたものだけをページングリンクの対象に
・現在の表示ページから前後のページ数などを計算してリンクとして出力

どーでしょ。
0276nobodyさん2005/09/07(水) 17:16:06ID:???
>>272
それならPATH INFOを使ってページ番号を取得
本文のデータはデータベースに格納
という仕様の方がSEO的にもサーバ負荷的に良くないか?
ページの有無はDBで判別できるし
SELECT文を工夫すれば番号に抜けがあっても前後が表示できる。
0277nobodyさん2005/09/07(水) 17:22:47ID:???
>>270
>PATH INFO使えば?
具体的にどんな感じででしょうか?あ、すみません、調べます。

>>272さん
有難うございます。とても参考になりました!
というか、そのような感じで作ってみまふ。

ちなみに・・・参考までになのですが、デメリットの
一覧表を作るときに一工夫が必要とあるのですが
例えばどういったものですか?
用途としてはFAQのようなものです。
0278nobodyさん2005/09/07(水) 17:32:44ID:???
>>277
PATH INFOは
?page=n
の部分をURLに埋め込んでしまうやりかた。
Amazonとかが採用しているね。
検索エンジンは?より後の部分を無視・軽視することが多いから
?page=nのやりかただと作ったページ全部が1ページと判断される。
それぞれの記事が別のものとして認識されるpath infoの方が
検索結果に表示されやすいといった点では優れている。

一応参考に。
http://exam.su-jine.com/path_info/path/info.html
0279nobodyさん2005/09/07(水) 17:33:22ID:???
一覧表が必要ならなおさらデータベースの方がよさそうだが。
0280nobodyさん2005/09/07(水) 17:35:20ID:???
オレなら>>275でやるな。
>>272の言う、一覧表の一工夫もいらないし。
SEO考えたらPATHINFOと織り交ぜてやれば完璧かね。
DB使えるんなら>>276だろうけど。
0281nobodyさん2005/09/07(水) 17:39:09ID:???
>>275さん
書き込んでから、気付きました。申し訳ありません。
まったく其の通りの条件です。不明点が多く、すみません。

>>276さん
DBですか!うーん、もしかするとそれも1つの手かもしれません。
ただ、私自身の能力が追いつかないです・・・。

>>270さん
さん付け抜けててすみません。故意ではないです(゜o゜;

ん〜、272さんと275さんの考え方は同じですかね?
もしかして、私にはできない?
0282nobodyさん2005/09/07(水) 17:43:19ID:???
>>276
実行環境が許せばそれもありかと。

>>277
一覧表の表示の仕方は、次のような感じになると思うけど、
[ページ番号] [タイトル] ([必要に応じて、作成日とか他の項目])
タイトルや他の項目をどうやって取得するかの辺りに一工夫が必要。
***.txtにその情報を入れてみたり、別ファイルにしてみたり等々。
(ページが歯抜けした時の心配事じゃないです。)
02832602005/09/07(水) 17:56:14ID:???
<td width="588" valign="top">
<?php readfile("menu.txt"); ?>
</td>

これで良いでしょうか?
サーバーUPしないと見れないんですねぇ
色々と難しい・・orz
0284nobodyさん2005/09/07(水) 18:31:52ID:???
>>281
>>272 は、page.php が ***.txt を読み込む形。txt を追加Upしていく。
>>275 は、リンクを表示するpaging.phpを、001.php 002.php 003.php 004.php...に
includeする形。php を追加Upする。
>>269をどう解釈したかの違いかと。

>>283
それでええよええよ。
0285nobodyさん2005/09/07(水) 19:28:36ID:npPFuG98
Apacheのmod_auth_mysqlを使用し、BASIC認証からDB認証を行い、
その後、$_SERVER['PHP_AUTH_USER']、$_SERVER['PHP_AUTH_PASSWD']を使用してアクセス制御しています。

現状、ログアウト=ブラウザを閉じる、でキャッシュクリアしています。
今回まともなログアウトボタンをつけたいと思っていますが可能でしょうか。
軽くsession_destroy();でいいのかと思いきや、できなかったので・・・。
PHPでBASIC認証(header()使って云々)という方法以外のやり方で何かありましたらご教授くださいませ。

要は今のままのDB認証で、それにログアウトボタンをつけ、
押すと再プロンプト経由でトップ画面に戻る、みたいな感じです。
お願いします。
0286nobodyさん2005/09/07(水) 20:19:30ID:???
>>251

入力するプログラムはこんな感じでしょうか?

<!-- 送信画面 db_form.php -->
<FORM enctype="multipart/form-data" name="pl_info" action="./db_pre.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./db_pre.php">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" id="upfile" name="upfile">
<INPUT type="button" name="SUBMITBUTTON" value="確認画面へ" onClick="NEXT()"><
</FORM>

<!-- 確認画面 db_pre.php -->
<?php print_r($_FILES);?>
<?php print_r($_POST);?>
<http>
(ry
<?=$_POST['upfile']?>
<form enctype="multipart/form-data" name="pl_info" action="./db_insert.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./db_insert.php">
<INPUT type="submit" name="INSERT_DB" value="登録する" onClick="next()">
</form>
(ry
</html>
0287nobodyさん2005/09/07(水) 20:22:52ID:???
こんな感じにしたらどんな感じになりましたか?
0288nobodyさん2005/09/07(水) 20:50:33ID:???
>>287

アドレスバーに
『http://(サーバーのアドレス)/pre2.php?_template_confirm=.%2Fpre2.php&MAX_FILE_SIZE=30000&upfile=C%3A%5Ctop.JPG&page=pre』

と表示され、ページには貼り付けた画像はおろか文字さえも表示されませんでした。
0289nobodyさん2005/09/07(水) 21:05:20ID:???
>>288
<form action="./db_insert.php" method="post"> (関係ない部分を略)
としているのに、
pre2.phpを呼び出していたり(db_insert.phpの筈)、
GET扱いになっていたり(method="post"の筈)、変ですね。
onClick="next()" で呼び出しているJavaScriptがおかしいんじゃないかな。
0290nobodyさん2005/09/07(水) 21:06:28ID:???
と、ミスった。
上で、db_insert.phpとしているのは、全部 db_pre.php の打ち間違い。
0291286=2882005/09/07(水) 22:46:16ID:???
>>289-290
すみません・・・
実は>>288を貼った後にテスト用プログラム<form2.php>と<pre2.php>を
作成していたので誤ってその時のプログラムを貼ってしまいました・・・
0292286=2882005/09/07(水) 22:48:07ID:???
正しくはこちらのプログラムです・・・
<!-- 送信画面 form2.php -->
<FORM enctype="multipart/form-data" name="pl_info" action="./pre2.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./pre2.php">
<table><tr><td>画像選択</td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" id="upfile" name="upfile"></td>
</tr></table><BR>
<TABLE width="500">
<TR><TD width="250" bgcolor="#FFFFFF" align="CENTER">
<INPUT type="button" name="SUBMITBUTTON" value="確認画面へ" onClick="NEXT()">
<INPUT type="hidden" name="page" value="">
</TD></TR></FORM>

<!-- 確認画面 pre2.php -->
<?php print_r($_FILES);?>
<?php print_r($_POST);?>
<http>
(ry
<table><tr>
<td width="150" bgcolor="#FFFFFF" align="center"><?=$_POST['upfile']?></td>
</tr></table>
<form name="pl_info" enctype="multipart/form-data" action="./insert2.php" method="post">
<INPUT TYPE="hidden" NAME="_template_confirm" VALUE="./insert2.php">
<input id="upfile" name="upfile" type="hidden" value="<?=$_POST['upfile']?>">
<table width="500">
<tr><td width="250" bgcolor="#FFFFFF" align="CENTER">
<INPUT type="submit" name="INSERT_DB" value="登録する" onClick="next()">
</td></form>
(ry
</HTML>
0293nobodyさん2005/09/07(水) 23:52:40ID:???
質問させてください
データベースにURL(http://xxx.com/zzz.html:varchar)を格納しています。

そして、その列を配列に入れ<a href ="$URL['url']">〜</a>という風にして
リンクを張ろうとしましたがエラーが出ました。
どこが悪かったかと、改善策を教えていただけないでしょうか?
本当にくだらない質問ですがよろしくお願いします。
0294nobodyさん2005/09/07(水) 23:54:19ID:???
>>293
どんなエラーなのか教えて下さい。そうでないと分かりません。
02952932005/09/08(木) 00:07:24ID:???
>>294
早い返事ありがとうございます。
すいません、必要なことを何も書いていませんでした・・・

<?php if( ! $conn = mysql_connect( '***', '***', '***') ){
die( 'error' );}
mysql_select_db( 'party', $conn );
header('Content-Type: text/html; charset=shift_jis'); ?>
<HTML><HEAD><TITLE>test</TITLE></HEAD><BODY>
<?php
$rs = mysql_query( "select shopname,concat(locname,adr) fadr,typename,phone,pg from shop s,type t,loc l where s.typecd=t.typecd and s.loccd=l.loccd order by locname desc,typename;", $conn );

echo "<table border=3>";
echo "<tr><th>店名</th><th>住所</th><th>業種</th><th>電話番号</th></tr>";
while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC ) ){
echo "<tr>";
echo "<td>" . $rec['shopname'] . "</td>";
echo "<td>" . $rec['fadr'] . "</td>";
echo "<td>" . $rec['typename'] . "</td>";
echo "<td>" . $rec['phone'] . "</td>";
echo "<td>" . <a href="$rec['pg']">$rec['shopname']</a> . "</td>";  ←※
echo "</tr>";
}
echo "</table>";
mysql_free_result( $rs );
mysql_close($conn);
?> </BODY> </HTML>

pg(varchar)にURLを入れています。
エラーの内容ですが、Parse error: parse error, unexpected '<' in C:\phpdev5\www\test.php on line 35 と出ていました。
35行目とありますが、ここでは矢印を出している行になります。見難いソースですがよろしくおねがいします
0296nobodyさん2005/09/08(木) 00:07:52ID:???
>>285
BASIC認証にログアウトはないでしょ、サーバ側からセッションを破棄する
術はないと思うけど
一度認証が済むと、正しいユーザ名とパスワードがクライアントから送信されつづける

PHPから出力されないファイルを保護するなどの目的で、どうしてもBASIC認証が
はずせないならB認証+PHPのセッション機構でユーザーステータスを管理する2重の
認証にするしかないのでは
0297nobodyさん2005/09/08(木) 00:10:17ID:???
setcookieでクッキーを発行できないサーバーとかってあるのでしょうか?
手本をコピペしてサーバーにアップロードしたのに全然クッキーききません…(−−;
CGIで動くタイプのPHPなのがいけないのかなぁ…
0298nobodyさん2005/09/08(木) 00:11:31ID:???
>>295
文字列は " か ' で括る
http://jp2.php.net/manual/ja/language.types.string.php

0299nobodyさん2005/09/08(木) 00:17:49ID:???
>>297
ほとんどない。9部9厘スクリプト側の問題
サーバから送信されてるヘッダーにSet-Cookieフィールドが
あるかどうか確認すればサーバの制限かどうか当りはつけられる
03002972005/09/08(木) 00:29:14ID:???
>>299
やっぱそうですよねー
perlで書かれたフリーのCGIでは普通にクッキー発行できてるので、
サーバーのPHPの仕様かなにかかと思ったのですが…(ちなみにサーバーはさくらインターネット)
ちょっとスクリプト見直してみます。PHPて難しい…
03012952005/09/08(木) 00:35:43ID:???
echo "<td>" . <a href="$rec['pg']">$rec['shopname']</a> . "</td>";  ←※

echo "<td>" . <a href="".$rec['pg']">$rec['shopname']</a> . "</td>"; 
コピペした奴なら↑こうすればいいんじゃないかな。

DB関連でParse errorは出ないと思う。たぶん。
03023012005/09/08(木) 00:36:43ID:???
間違った。名前欄に295って書いちった。
>>295の間違い
■ このスレッドは過去ログ倉庫に格納されています