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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/11/06(月) 22:07:16ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

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

【前スレ】
 【PHP】下らねぇ質問はここに書き込みやがれ 31
 http://pc8.2ch.net/test/read.cgi/php/1161733546/

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0002nobodyさん2006/11/06(月) 22:08:21ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 25
http://pc8.2ch.net/test/read.cgi/php/1153652403/
【PHP】下らねぇ質問はここに書き込みやがれ 26
http://pc8.2ch.net/test/read.cgi/php/1154923910/
【PHP】下らねぇ質問はここに書き込みやがれ 27
http://pc8.2ch.net/test/read.cgi/php/1156262092/
【PHP】下らねぇ質問はここに書き込みやがれ 28
http://pc8.2ch.net/test/read.cgi/php/1157284868/
【PHP】下らねぇ質問はここに書き込みやがれ 29
http://pc8.2ch.net/test/read.cgi/php/1158434799/
【PHP】下らねぇ質問はここに書き込みやがれ 30
http://pc8.2ch.net/test/read.cgi/php/1159979905/
0003nobodyさん2006/11/06(月) 22:09:52ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2006/11/06(月) 22:10:58ID:???
関連スレ
http://pc8.2ch.net/php/subback.html
PHPで検索汁!
0005nobodyさん2006/11/06(月) 22:11:44ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0006nobodyさん2006/11/06(月) 22:12:42ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40  
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0007nobodyさん2006/11/06(月) 22:21:11ID:???
おつ
0008nobodyさん2006/11/06(月) 22:28:41ID:GtGInv5r
DBを使用せずに表示順番を指定の通りにする事はできませんでしょうか?

例えば、「バナナ(1)、りんご(2)、みかん(3)」とあったとします。()内は順番です。
これをechoすると

バナナ
りんご
みかん

と表示したいのです。どうすればいいかずっと悩んでいるのですが、
わかりません。アドバイスいただけないでしょうか
0009nobodyさん2006/11/06(月) 22:56:06ID:???
ttp://php.net/usort
ユーザー関数で比較してソート

例文ちょっと改造して動かしてみたがこれでいけたぽいぞ

$array = array(
  "みかん(3)",
  "バナナ(1)",
  "りんご(2)"
);

function cmp($a, $b)
{
  preg_match("/\(([0-9]+)\)/", $a, $a);
  preg_match("/\(([0-9]+)\)/", $b, $b);
  $a = $a[1];
  $b = $b[1];
  if ($a == $b) {
    return 0;
  }
  return ($a < $b) ? -1 : 1;
}

usort($array, "cmp");
001082006/11/06(月) 23:21:05ID:???
>>9
表示されました!参考URLもありがとうございます。
ずっと悩んでいたのですが、だいぶ前進しました。ありがとうございました。
0011ご伝授下さい2006/11/07(火) 00:13:59ID:???
PATH_INFOを使ってPHPを動作させたいんですが
http://example.com/hoge.php
というファイルに
<?PHP
$query = getenv ("PATH_INFO");
include("$query");
print"<img src=\"./img/hoge.jpg\">";
?>
と記載しております。
http://example.com/hoge.phpでアクセスすると
<img src=\"./img/hoge.jpg\">は通常通りブラウザで画像は表示されますが、
http://example.com/hoge.php/hogehoge/でアクセスすると
<img src=\"./img/hoge.jpg\">は画像は表示されません。
対応策としては画像等のパスを<img src=\"/img/hoge.jpg\">にするしか無いのでしょうか?
初心者ですみません><
どなたかご伝授の程、よろしくお願い致します。
0012nobodyさん2006/11/07(火) 00:31:59ID:???
>>11
サーバーはhoge.phpがファイルであることを認識できるけど、ブラウザはhoge.phpがファイルなのかディレクトリなのか判別できない。
つまり、/hogehoge/の部分がPATH_INFOであるかどうかは、ブラウザにはわからない。
だから、imgタグのsrcに相対パスを使うと、ブラウザは/hoge.php/hogehoge/img/hoge.jpgから画像を取得しようとしてしまう。
(この場合、サーバーはhoge.phpに対して/hogehoge/img/hoge.jpgをPATH_INFOとして渡していて、テキストデータを出力しているので、当然画像は表示されない)。
srcには相対パスを使わず絶対パス(/img/hoge.jpg)にするのが無難だと思う。
0013nobodyさん2006/11/07(火) 00:33:25ID:???
"ご伝授"
その発想はなかったわ
0014nobodyさん2006/11/07(火) 00:34:33ID:???
>>11
つーか、ちょっとまて。
$query = getenv ("PATH_INFO");
include("$query");
はやめとけってwww
サーバーのリソースに不正アクセスされまくるぞwww
0015ご伝授下さい2006/11/07(火) 00:53:16ID:???
>>12
ありがとうございます。無難に(/img/hoge.jpg)に変更します。
解りやすいご説明ありがとうございました。
>>14
ありがとうございます。早速修正します^^
0016nobodyさん2006/11/07(火) 01:27:29ID:x6c5yFrE
MySQLを使ってDBと連携したシステムを作ろうとしているのですが
接続するときに必要な
$conn = mysql_connect('localhost','my_id','my_pass');
mysql_select_db('my_id',$conn);
これを毎回書き込むのがめんどくさいと感じているのですが
別のPHPファイルに記述しておいてincludeで呼び出す方法をとればいいですかね?
なんとなくセキュリティ的にまずいのではないかと思って質問してみました。
.htaccessを利用すれば問題なく動作させることができるのでしょうか?
0017nobodyさん2006/11/07(火) 01:43:53ID:???
includeしたらいいんじゃね?
ドキュメントルート下に置かないってのは当然として。
0018nobodyさん2006/11/07(火) 03:23:36ID:???
>>16
DBのアクセスクラス作って、それをincludeすればいいと思う。
オレは使ってないけど、どっかのライブラリ使うのが一番いいのか?
0019nobodyさん2006/11/07(火) 03:47:02ID:Sqm+J9JF
Warning: session_start(): Cannot send session cache limiter - headers already sent
というエラーがとれません。どうすればいいのでしょうか
<?php
session_start();
include("mysql.php");
?>
<html>
とセッションを使うのに適している記述だと思うのですがエラーがとれません
どうすればよろしいのでしょうか?
0020nobodyさん2006/11/07(火) 04:04:52ID:???
マニュアルよく嫁。
セッションにCookieを使うならスクリプトの先頭に置く。
文字を出力する前にsession_start()しなければならない。
0021nobodyさん2006/11/07(火) 04:04:52ID:???
<?phpの前に改行とか入ってんじゃね?
0022nobodyさん2006/11/07(火) 04:38:07ID:Sqm+J9JF
19です。
スペースなど一切入っていません
1行目に<?php
2行目にsession_start();

です。
0023nobodyさん2006/11/07(火) 05:11:39ID:???
includeしてるから
0024nobodyさん2006/11/07(火) 07:48:16ID:???
BOMがついてるとか、バッファが足りないとか
Telnetかなんかで叩いて送られてきたドキュメントを確認してみたら分かるんじゃない
送信済みになってるのは間違いないんだから
0025nobodyさん2006/11/07(火) 09:33:26ID:???
回答者しかいねえのかよ!おれならもっとすばらしい回答できるぜ!
>>19にはやくこたえろや!!!
0026nobodyさん2006/11/07(火) 09:35:48ID:???
回答とかうんぬん言う前に日本語の勉強からやり直してきてくれ
0027nobodyさん2006/11/07(火) 09:41:20ID:C4kT4pau
自鯖で
SmartIRCってのを使おうとしたら
socket extension not loaded
なエラーが出ますがどうしたらよいでしょうか
0028nobodyさん2006/11/07(火) 09:45:40ID:qhJadrD3
まったくのPHP初心者でも基礎学べるお勧めの書籍教えてください
0029nobodyさん2006/11/07(火) 09:46:25ID:???
>>27
コンフィギャーに--enable-socketsを追加してリコンパイルしてみたらどうでしょう
すでにコンパイルされてるならphp.iniでextension=php_sockets.dllを有効にしてみるとか
0030nobodyさん2006/11/07(火) 09:50:46ID:???
dllじゃないやso
0031nobodyさん2006/11/07(火) 09:53:43ID:???
>>26
がったがたうるせーんだよ!へぼ回答者がっ!
0032nobodyさん2006/11/07(火) 10:01:52ID:???
>>29
ありがとん。
一応有効にして再起動したけど、駄目ですた。
sqlliteとかはロードできてるんですけど・・・。
0033nobodyさん2006/11/07(火) 10:02:22ID:???
get_class_methodsでクラスのコンストラクタを
返さない方法はありますか?

ほかのメソッドはprotectedをつければ返されないのですが、
コンストラクタはprotectedをつけるとエラーが出てしまいます。
0034nobodyさん2006/11/07(火) 10:02:32ID:oogNIDZJ
winでpearのアンインストールがわかりません。
go-pear.phpからインストールしてapacheのhtdocsの中にpearがあります。
このままファイルごと削除するだけでクリーンにアンインストールできるでしょうか?
0035nobodyさん2006/11/07(火) 10:10:46ID:???
>>33
ないんじゃね

>>34
大丈夫じゃね
0036322006/11/07(火) 10:16:57ID:???
ごめん 自己解決です。
DL版じゃなくてpearにはいってるの使ったらだいじょぶでした。
0037342006/11/07(火) 10:18:35ID:oogNIDZJ
>>35ありがとうございます
0038nobodyさん2006/11/07(火) 10:26:29ID:???
>>28
その手ので良本は1冊も見たことがない。
0039nobodyさん2006/11/07(火) 10:27:58ID:???
初心者は、ほむぺにスクリプト埋め込むことから始めて
できること増やすしかなさそう。
0040nobodyさん2006/11/07(火) 10:28:38ID:oogNIDZJ
pearについて質問です。pearのサイトからファイルを手動でダウンロードして
それをドキュメントルート下においても問題なくつかえますか?
制限のおおいレンタルサーバでもうごきますか?
0041nobodyさん2006/11/07(火) 10:30:30ID:???
問題なく使えることもあるしそうじゃないこともあるんじゃない?
バージョンの問題やら、連鯖のphp仕様の問題で。
0042nobodyさん2006/11/07(火) 10:32:51ID:???
>>28
PHP関連の書籍 第3版
http://pc8.2ch.net/test/read.cgi/php/1150558685/

複数立ち読みしてバランスを取るしかないかも
0043nobodyさん2006/11/07(火) 10:35:38ID:???
>>19
session_start()の前の行にこれ入れてどこでヘッダーが出力されてるか確認。
headers_sent($file, $line);
echo "$fileの$line行目でヘッダ送信済み";
exit;
0044nobodyさん2006/11/07(火) 10:36:53ID:???
>>40
ほとんどの場合はそれで動くと思うよ。
全部がそうとはちょっと断言できない。
0045402006/11/07(火) 11:06:10ID:oogNIDZJ
ありがとうございます。レンタルサーバ導入を考えていたところです。
参考にさせていただきます。
0046nobodyさん2006/11/07(火) 11:59:54ID:???
20KBほどの一時保存データ(本筋処理後にすぐ消す)をファイルに書き出すのと
DBに書き出すのとどっちが早いのかな?やっぱファイル?
0047nobodyさん2006/11/07(火) 12:02:55ID:???
どう考えてもファイルでしょ
0048nobodyさん2006/11/07(火) 13:17:41ID:???
>>46
速さ・早さだけを問うならファイル
0049nobodyさん2006/11/07(火) 13:24:06ID:oogNIDZJ
1から100までの数字を1ページ5個ずつわけて表示したいのですが、
どのようにしてページをわけていいのかわかりません。

こんな感じで↓自動的にリンクを作りたいのですがご教授お願いいたします
index.php?page=1&a=5
index.php?page=2&a=10
index.php?page=3&a=15
0050nobodyさん2006/11/07(火) 13:25:46ID:???
つ ENGINE=MEMORY
0051nobodyさん2006/11/07(火) 13:34:21ID:???
それって

index.php?page=2&a=15

ってしたとき、何が表示されるんだろ。

aいらないんじゃ
0052nobodyさん2006/11/07(火) 14:05:32ID:???
>>49
pageかaだけでいいんじゃないの?

で、index.phpの中で
$data = range(1,100); //表示データ全体

$len = 5; //1ページ5件
$page = (isset($_GET['page']))? intval($_GET['page']): 1; //ページNo.取得

$viewdata = array_slice($data, ($page - 1 ) * $len, $len); //表示データの抽出
foreach($viewdata as $line) {
echo "<li>$line\n";
}
0053nobodyさん2006/11/07(火) 14:14:52ID:???
リンクの表示は

$total_page = ceil(count($data) / $len);

for ($i=1; $total_page >= $i; $i++) {
echo "index.php?page=$i \n";
}

みたいな感じだな

ポインヨは、ページの総数は、全アイテム数を一ページあたりの表示件数で割ったものを
切り上げて出すってのと、ページに表示するアイテムの開始インデクスは (ページ数 -1) * 表示件数 で
求まるってことじゃないかな

Pagerとか呼ばれてる
0054nobodyさん2006/11/07(火) 14:35:07ID:???
<?php
//ポインヨかわいんよ。
for($i=0;$i<5;$i++){
echo 1+@$_GET['page']*5+$i.'<br>';
}
?>
0055nobodyさん 2006/11/07(火) 15:34:01ID:xXnFQ4+N
htmlのソース取得についてお聞きしたいことが。

$html="http://thesaurus.weblio.jp/content/IP";;
$html2=file_get_contents($html);
このようにして、txtファイルに書き出すと、きちんと出力されているの
ですが、
$mozi="ルータ";
$html="http://thesaurus.weblio.jp/content/$mozi";; or /contents/ルータ
$html2=file_get_contents($html);

とすると、urlに格納した全角の文字をうまく解釈せず、「???[?^に該当
するページが見つかりませんでした」とテキストに出力されてしまいます。
ブラウザ上で直にurlに全角文字を入れたときは、きちんとした結果が
返ってきたのですが。。。
PHPファイルでurlに全角文字を格納した変数を使用するにはどうすれば
よいでしょうか?
0056nobodyさん2006/11/07(火) 16:15:03ID:???
よくわからんけど、日本語のところをエスケープすればいいんじゃないかな。

よくしらんけど、urlencode関数とか? 文字コードとかどうなるのかよくわからんけど。
0057nobodyさん2006/11/07(火) 16:16:36ID:???
便利そうなサイトだねこれ。

http://thesaurus.weblio.jp/content/%E3%81%82

こんなふうになるように、Unicodeをurlencodeすればいいのかな? たぶん。
0058nobodyさん2006/11/07(火) 16:29:36ID:bLjeWEKo
phpMyAdminでテーブルを作っているのですが、
listテーブルのTEXT型のレコード「image」の基本値を「default.jpg」
にして、特に「image」が指定されていない場合「default.jpg」が入るようにしたいのですが
基本値のところにdefault.jpgと入力してレコード追加を行うと

#1101 - BLOB column 'image' can't have a default value

と出ます。
解決できる方法はあるのでしょうか?
基本値を何か設定できればソースのほうで変換して対応できるのですがどうもうまくいきません・・・・

基本値の設定の方法など特にやるべきことがありましたらよろしくお願いします。
0059552006/11/07(火) 16:31:43ID:xXnFQ4+N
ありがとうございました。トライしてみます。
0060582006/11/07(火) 16:34:03ID:bLjeWEKo
TEXT型のレコードじゃないですね・・・・
imageフィールドのフィールドタイプがTEXTだと脳内変換していただければ・・・・
0061nobodyさん2006/11/07(火) 17:48:16ID:???
BLOB column 'image' can't have a default value 
0062nobodyさん2006/11/07(火) 17:55:27ID:6NR/KJfF
PHP4.0を使用しています。OSはwindowsです。今回、PHPでPOSTリクエストをしたく、
curl関数を使用したいのですが、標準だと使用できるようになっていないと
調べたところわかりました。実際、作成したスクリプトもcurl関数の
ところでエラーが出てしまいます。
そこで、PHPマニュアルなど、curl関数の使用方法を調べたのですが、
どれも分かりにくくて、設定をすることができませんでした。

どなたか、わかり易く教えていただけませんでしょうか?
よろしくお願いします。
0063nobodyさん2006/11/07(火) 17:58:00ID:???
Pear HTTP_Request
0064nobodyさん2006/11/07(火) 18:11:00ID:KW9fbgwt
php4で下記のような案件のプログラムを作る場合どのようになるのか教えていただけませんか?

・配列に特定の数が入っている(配列の数は、10個だったり100個だったりする)
・10桁の数字をユーザに選んでもらう。
・その10桁の数字を元に、配列の中からランダムに5個の組み合わせが生成される
 (組み合わせの5個はダブってはいけない)
・数字が変わらない限りは、毎回同じ組み合わせがはき出される

毎回ランダムにはき出すパターンは、わかるのですが、逆に同じ物を毎回はき出すという
方法が思いつきません。

どなたかご教授願います。
0065nobodyさん2006/11/07(火) 18:17:07ID:???
>>64
何だ宿題か
0066nobodyさん2006/11/07(火) 18:20:36ID:???
<?php
$array = range(1,100);
$seed = 8594037143;
srand($seed);
shuffle($array);
$array = array_slice($array,0,5);
var_dump($array);
?>
こんな感じ?
ちなみに単なる興味から聞くけどそれどんなシステムなの?
0067nobodyさん2006/11/07(火) 18:38:45ID:KW9fbgwt
>>66
ありがとうございました。
ちなみに、この方法で配列の数が変わった場合もはき出す数は
ものは同じになりますか?

 使い方は、言葉遊びのプログラムです
0068552006/11/07(火) 18:42:31ID:xXnFQ4+N
先ほど、htmlのソース取得についてお聞きした者ですが。
今度は

$mozi="ルータ";
$QUERY_STRING =urlencode($mozi);
$html=htmlentities($QUERY_STRING);
$html2="http://thesaurus.weblio.jp/content/$html";;
$html3=file_get_contents($html2);

このようにし、$html2の内容(変換されたURL)を見ると、
http://thesaurus.weblio.jp/content/%83%8B%81%5B%83%5E と変換
されました。しかし、ブラウザでこのURLにアクセスしても、
"???[?^に該当するページが見つかりませんでした" と表示されて
しまいます。
きちんとアクセスできるようにURLをエンコードするにはどのように
すればよいのでしょうか?
0069nobodyさん2006/11/07(火) 18:43:49ID:???
>>67
ん〜ならないねぇ。
どんな条件が求められてるのか分からないから何とも言えないけど
そうしたいならsrandやrandを駆使すれば何とかなるんじゃないかなぁ
0070nobodyさん2006/11/07(火) 18:51:21ID:???
>>68
$mozi=mb_convert_encoding($mozi,'UTF-8',auto);
0071552006/11/07(火) 19:04:03ID:xXnFQ4+N
>>70
もし、変なことやってたらすいません。

$mozi="ルータ";
$mozi2=mb_convert_encoding($mozi,'UTF-8',auto);
$QUERY_STRING =urlencode($mozi2);
$html2="http://thesaurus.weblio.jp/content/$html";;
$html3=file_get_contents($html2);
としたのですが、同じような結果(???[?^に該当するページ・・)
となってしまいました。
そうじゃないということでしたら、ご指摘いただきたいのですが。。。
0072nobodyさん2006/11/07(火) 19:06:07ID:???
>>67
特定の条件で同じ内容を出したいんならそれはランダムって言わないだろう。
条件から計算なりして抽出すればいいんじゃないの?
0073nobodyさん2006/11/07(火) 19:06:37ID:???
>>71
そのコードじゃ $html は空じゃね?
0074552006/11/07(火) 19:09:21ID:xXnFQ4+N
すいません。こちらは書く際の記述ミスです。
正しくは

mozi="ルータ";
$mozi2=mb_convert_encoding($mozi,'UTF-8',auto);

$QUERY_STRING =urlencode($mozi2);
$html=htmlentities($QUERY_STRING);
$html2="http://thesaurus.weblio.jp/content/$html";;
$html3=file_get_contents($html2);
です。
0075nobodyさん2006/11/07(火) 19:09:29ID:???
>>68
> $html=htmlentities($QUERY_STRING);
これは余分。urlencodeだけで十分なはずだよ。
0076nobodyさん2006/11/07(火) 19:11:54ID:???
>>74
mozi="ルータ";
$html =urlencode($mozi);
$html2="http://thesaurus.weblio.jp/content/$html";;
$html3=file_get_contents($html2);
で、ソースをUTF-8で保存すればOK
0077nobodyさん2006/11/07(火) 19:12:26ID:???
>>74
ソースファイルの文字コードは?
007855(74)2006/11/07(火) 19:19:38ID:xXnFQ4+N
>>77
shift-jis です。
0079nobodyさん2006/11/07(火) 19:34:02ID:???
>>78
php.iniの設定が間違っててautoではShift_JISを検出できないんだろ。
>>76でいいんじゃねーの
0080nobodyさん2006/11/07(火) 19:36:10ID:???
 mb_convert_encoding($mozi, "UTF-8", "Shift_JIS");
0081nobodyさん2006/11/07(火) 19:40:15ID:???
>>78
文字コードの知識もないやつがソースにShift_JISを使ったらいかん。PHPでは本来使えないぞ。
ま、文字コードの知識が無いからこそそんな真似しちゃうんだろうけど。
008255(74)2006/11/07(火) 19:59:31ID:xXnFQ4+N
できました!たくさんの参考になるご意見をいただきまして
本当にありがとうございました。
0083nobodyさん2006/11/07(火) 20:14:04ID:???
PHPでmvdirっぽい関数はありますか?
探した限りマニュアルには見当たらなかったので。
よろしくお願いします。
0084nobodyさん2006/11/07(火) 20:38:22ID:???
Apacheが2.0から2.2になったら、
<?php
print($hoge);
?>
というスクリプトに
hoge.php?hoge=foobar
とリクエストしても「foobar」が返ってこなくなってしまいました。

print($_GET['hoge']);
に直せば動くことは分かったのですが、$hogeの書式で書いた
スクリプトが多く、POSTなのかGETなのかを調べて書き直すのに
時間がかかりそうです。

php側の設定を変えて従来の方法で変数を参照させるようにする
方法はないでしょうか?
0085nobodyさん2006/11/07(火) 20:45:27ID:???
php.ini の
register_globals = Off
を
register_globals = On
にすればいいということで、自己解決しました。
0086nobodyさん2006/11/07(火) 20:46:48ID:???
それはApacheのバージョンとは関係ないお
大昔にPHP側で変更されたんだお
0087nobodyさん2006/11/07(火) 20:57:13ID:???
ありがとうございました。

どうやらphp4系でバイナリだけバージョンアップを続けてきたのが、
php5に入れ替わった拍子に設定ファイルまで飛んでしまったようです。

これからphpの仕様にあわせていくように作業します。。
0088nobodyさん2006/11/07(火) 21:32:03ID:???
>>82
どれでできたの?
0089nobodyさん2006/11/07(火) 21:35:24ID:???
>>86
しかしregister_globalsって
最初に作ったときに気づかなかったんかね?
0090822006/11/07(火) 21:54:07ID:xXnFQ4+N
>>88
76と80のどちらでもできました。ありがたいことです。
0091nobodyさん2006/11/07(火) 22:49:06ID:???
>>89
最初のPHPは「HTMLをちょっとだけ拡張した、簡単・お手軽・お手抜き言語」からスタートしてるから。
そもそもローカル関数なにそれ?くらいのレベルで。
<input>でname=hogeって書いてるんだから$hogeでアクセスできて当然!っていう。

それがいつの間にやら人気が出ちゃって、変に規模の大きなまともなプログラムを書くやつが増えたから
便利な機能も消さなきゃいけなくなっちゃったんだよ。
0092nobodyさん2006/11/07(火) 22:51:40ID:???
ローカル関数じゃない、ローカル変数。
0093nobodyさん2006/11/07(火) 23:50:04ID:???
最初は
PHP = パーソナル・ホームページ
だったしな
0094nobodyさん2006/11/08(水) 00:02:40ID:???
PHP6、PHP5、PHP4、PHP3、PHP/FI 2.0、Personal Home Page Construction Kit + FI (Form Interpreter)、Personal Home Page Tools

センセイ、PHP4以降しか知りません
0095nobodyさん2006/11/08(水) 00:53:08ID:EFItiHAr
>>43
そのファイルの1行目で出力されています。
session_start();1を一行目にいれても同じように
1行目で出力されていますとでるのですが
includeを消してもエラーがでてしまいます。
0096nobodyさん2006/11/08(水) 01:33:31ID:???
>>95
ソースファイルってひょっとしてUTF-8で保存されてる?
0097nobodyさん2006/11/08(水) 02:04:51ID:EFItiHAr
>>96
UTF-8で保存しています。
それじゃだめなのでしょうか?
0098nobodyさん2006/11/08(水) 02:22:13ID:???
>>97
>>24ですでに指摘されてるけどBOMだろう。
テキストエディタにBOMをつけずに保存する設定が無いか確認。
0099nobodyさん2006/11/08(水) 05:57:27ID:j+v5xEVZ
ウインドウズXPで自動返信機能のあるSMTPの立て方をおしえてください。
0100nobodyさん2006/11/08(水) 05:58:07ID:???
>>99
スレ違いもいいとこw
0101992006/11/08(水) 06:27:03ID:j+v5xEVZ
すいません、取り消します。
Webサーバ上でPHPを動かします。
linuxとwinとで違う動作、動かない動作を教えてください。

一ヶ月調べてわかったことはシムリンクがlinuxしか使えないことです。
0102nobodyさん2006/11/08(水) 07:46:00ID:???
>>101
ごく一般的な手法でのWeb構築の観点から言えば、ほとんどの場合両方の環境で動く。
symlinkのようにファイルシステムに関係するものや、片方のOSでしかAPIが提供されていないものも少数ながらあるけど、どちらかでしか動かないものはマニュアルに明記されているから1つ1つ確認しろ。
0103nobodyさん2006/11/08(水) 08:04:42ID:???
ひとつひとつなんて面倒なこといやですよ。
どこかに一覧表ありませんか?
0104nobodyさん2006/11/08(水) 09:50:21ID:???
一ヶ月もかけて、何をどう調べたの?
効率悪すぎ
0105nobodyさん2006/11/08(水) 09:51:38ID:???
面倒もくそも無いだろ
一ヶ月もかけたら、かなり頭の悪い奴でも一覧ピョウが出来てるはずだよ
0106nobodyさん2006/11/08(水) 09:55:23ID:???
>>103
いやですよって。。。
普通にlinuxとwinで動かしてみれば?これもいやですよって?
0107nobodyさん2006/11/08(水) 10:04:47ID:???
>>103
自分の書くコードに含まれる関数は全て、一度はマニュアルに目を通していて当然。
面倒とかそれ以前の問題だな。
たとえwin/linuxの違い云々が記憶から薄れていても、環境に依存するかどうかくらいはOSの仕組みが大雑把にでもわかっていればすぐに気付くはずなので、必要に応じてマニュアルを読み返せばいいだけ。
0108nobodyさん2006/11/08(水) 10:36:53ID:???
>>106-107
ID出てないんだから放置しろよww釣りだってwww
0109nobodyさん2006/11/08(水) 11:19:13ID:???
>>99
こいつって前スレで空メールシステムの質問してたやつじゃねえの?w
0110nobodyさん2006/11/08(水) 13:20:15ID:???
今のPHP5.x系って4で動作確認して作ったスクリプトも問題なく動くと考えておk?
0111nobodyさん2006/11/08(水) 13:22:37ID:???
classでvarとか使ってるとNOTICEのエラー吐きまくると思うがな
動作に影響を及ぼす事はあんまないんじゃないかな
01121102006/11/08(水) 13:29:12ID:???
そうすか。ありがとう。
そろそろ仕事も5ベースにやろうかと思います。
0113nobodyさん2006/11/08(水) 13:29:49ID:???
>>110
クラス使ってる場合は色々不具合出ると思う。
それ以外は大体そのまま動くかな。
0114nobodyさん2006/11/08(水) 14:17:54ID:???
ヒアドキュメントのIDの名づけ方についてのポリシーを設定してるひといますか?

その場で適当に決めると後でわかりにくくなるのである程度決めたほうが良い感じはするけど
なかなかルール化が難しい。参考までに「俺はこうしてるぞ」ってのがあれば教えてください。
0115nobodyさん2006/11/08(水) 14:24:26ID:???
↓使わない派の意見は聞いてねーよ禿
0116nobodyさん2006/11/08(水) 14:26:59ID:???
PHPでヒアドキュメントを使うメリットって何?
0117nobodyさん2006/11/08(水) 14:50:21ID:???
"などをエスケープしなくていい。
HTMLファイルからコピペするときなんか\"やら\nを挿入するのめんどい。
0118nobodyさん2006/11/08(水) 15:14:23ID:???
PHPタグとじりゃいいだけじゃないの
0119nobodyさん2006/11/08(水) 15:20:51ID:???
>>114
ポリシーってほどのポリシーはないなぁ。
HTML、FORM、TEXTのどれかを種類別に選択してる程度。
別に全部一緒でも構わないんじゃないかって思うけど。

>>116-117
単にHTMLを書きたいだけなら?>〜<?phpでHTMLモードに入っちゃうけど
それを変数に入れたい場合はヒアドキュメント使うことが多いかな。
やっぱ " をエスケープとかって読みにくくなるし後で修正しづらいしで、
HTMLモードかヒアドキュメントのどっちか以外ではHTMLは書かない。

まぁ大抵はHTMLモードだけでこと足りてるけど。
コードの途中にHTML書くこと自体が滅多にないし。
0120nobodyさん2006/11/08(水) 15:22:52ID:???
>>118

<?xml version="1.0" encoding="Shift_JIS"?>
とかの類も、あるんよ。
0121nobodyさん2006/11/08(水) 15:24:48ID:???
ショートタグ無効にしたらいいだけじゃないの
0122nobodyさん2006/11/08(水) 15:25:04ID:???
>>120
XML使っててshort_open_tagをONにするやつはバカだと思いますが。
0123nobodyさん2006/11/08(水) 15:51:17ID:???
入力フォーム(textareaとsubmitのみ)→表示ページ(<?=$form_date?>を記述)

というプログラムがあるのですが、文字のみを入力すると正常に表示されますが、
タグを入れるとおかしくなります。
例:<a href="index.html">別ページ</a> を入力フォームに入れて送信すると
  http://localhost/";index.html/" というURLになる

storngなどの装飾タグでは問題ありませんでした。何が原因でしょうか?
0124nobodyさん2006/11/08(水) 16:09:57ID:???
>>123
端折りすぎて意味不明
0125nobodyさん2006/11/08(水) 16:12:33ID:???
>>123
なんかよく分からんが表示ページのとこを
<?=$form_date?>から<?=htmlspecialchars($form_date)?>
にすればいいだけの話なんじゃないの?多分。
01261252006/11/08(水) 16:17:20ID:???
あるいは、タグをちゃんと有効にして表示はさせたくて、
でもリンクタグを書くと "index.html" と左右に " がくっついたURLになっちゃう、
って話なら、<?=stripslashes($form_date)?> かなと思う。
クロスサイトスクリプティング問題バリバリだから表のサイトで公開するなよ、と思うが。
0127nobodyさん2006/11/08(水) 16:40:35ID:X5fG3I/H
すみません、教えてください。

今、「超極める!PHP」という本を読んでいるのですが、
098ページのところに

session.cache_limiter設定を利用するには
セッション管理を開始しなければなりません。
セッションが必要な場合でもキャッシュ制御を
行いたい場合は多くあります。
このような場合はheader関数を用いてキャッシュ制御を行います。

と、書いてあるのですが、この「セッションが必要な場合」というのは
「セッションが必要ない場合」の打ち間違いでしょうか??
01281232006/11/08(水) 16:41:58ID:???
>>126
ありがとうございます。この方法で思い通りに出来ました。
0129nobodyさん2006/11/08(水) 16:46:10ID:???
>>128
そもそもマジッククオートなんてOFFにしてしまえよ、って思うが。
0130nobodyさん2006/11/08(水) 16:51:46ID:???
>>127
そんな気はするね
0131nobodyさん2006/11/08(水) 16:55:53ID:???
以降の文脈次第だな
そこだけ切り出されてもどちらとも言える
0132nobodyさん2006/11/08(水) 17:04:29ID:???
> セッション管理を開始しなければなりません。
> セッションが必要な場合「でも」キャッシュ制御を・・・
ってのは論理的におかしいわな。

おそらく筆者は、
・キャッシュ制御は基本的にsession.cache_limiterでやる
・でもセッションの必要がないならheader()でやる
っていう流れで説明したいんだろうな。
0133nobodyさん2006/11/08(水) 17:58:29ID:???
例えば、参加型のレビューサイトを作るとします。
PHP作れば問題ないと思いますか?
言語が色々ありすぎて、どれから学べば良いのかわからんのです。
0134nobodyさん2006/11/08(水) 18:06:17ID:???
言語なんて好みで選べばいいじゃん。
0135nobodyさん2006/11/08(水) 18:06:18ID:???
>>133
どれも大して変わらないけどSQL分かってた方が良い。
0136nobodyさん2006/11/08(水) 18:08:29ID:???
>>135
どもです。
そちらも調べてみます。
0137nobodyさん2006/11/08(水) 18:08:57ID:???
まあとりあえずPHPでいいんじゃね?
0138nobodyさん2006/11/08(水) 21:00:25ID:QUV620Zg
アンケートスクリプトを作ってます。
一ヶ月間、1件=5項目としてデータとして保存し、
管理者のみ管理画面から回答をみることができる仕様です。
トータル件数10000件集まると仮定したら
ファイルとMysqlどちらを使用するのが妥当ですか?
0139nobodyさん2006/11/08(水) 21:05:08ID:???
どっちでもいいよそれくらいだったら
早く作れる方選べよ
0140nobodyさん2006/11/08(水) 21:34:37ID:???
>>138
アンケートの内容にもよるけど、分析に使えるデータを含むなら、
MySQLがいいと思う。
感想だけとかなら、どっちでもいいけど。
0141nobodyさん2006/11/08(水) 22:03:58ID:???
>>138
ちょっと質問がよくわからないんだが、

・一ヶ月に一度、5問で構成されるアンケートを一つ作成する
・アンケートに回答する人は1アンケートにつき10000人とする

ってことでOK?
あとそのアンケートに回答する人ってのはどういう人間だ?
自分で管理してる会員か?それともたまたまアクセスしてきたユーザか?
0142nobodyさん2006/11/08(水) 22:07:43ID:???
1万件くらいなら別にどっちでもいいね
DB使う利点が分からないならあえて使う必要もないかと
0143nobodyさん2006/11/08(水) 22:10:30ID:???
何も考えずDB使え
01441382006/11/08(水) 22:19:37ID:???
回答ありがとうございます。
Mysqlを使いたいと思っておりますが10万件を超えると運用に耐え難いと聞きました。
アンケート件数がたくさんあるので10万は軽く超えてしまいます。
この場合、アンケート枚にデータファイルを別々に作成、さらに時間毎にデータをわけて記録
することでMysqlでデータをすべて記録するよりも早いかと考えております。
この考えは間違っておりますでしょうか?
0145nobodyさん2006/11/08(水) 22:26:00ID:???
PHP4とPHP5はどちらが処理が早いですか?
0146nobodyさん2006/11/08(水) 22:26:19ID:???
PHP5
0147nobodyさん2006/11/08(水) 22:26:46ID:???
>>146
なんでですか?
0148nobodyさん2006/11/08(水) 22:28:28ID:???
PHP4だろ。>>146は低脳クズ
0149nobodyさん2006/11/08(水) 22:29:56ID:???
>>144
別にいいんじゃない?とりあえず作ってみれば?
0150nobodyさん2006/11/08(水) 22:33:29ID:???
>>148
ベンチでも取ったのか?
同じ処理なら5のほうが早い。
01511452006/11/08(水) 22:33:41ID:???
>>146おまえ回答者ぶってんじゃねーよw
01521452006/11/08(水) 22:34:47ID:???
ベンチとってからいえやクズ
0153nobodyさん2006/11/08(水) 22:38:59ID:???
ここの回答者はバカばっかりだな
0154nobodyさん2006/11/08(水) 22:45:31ID:???
//------------ここまで自演------------
015512006/11/08(水) 22:59:23ID:???
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ
0156nobodyさん2006/11/08(水) 23:27:24ID:???
ワロチww
0157nobodyさん2006/11/08(水) 23:32:27ID:???
つまらん
こっちでやれ
http://pc8.2ch.net/test/read.cgi/php/1158647441/l50
0158nobodyさん2006/11/08(水) 23:37:37ID:???
PHP5がはやいってやつはバカ
0159nobodyさん2006/11/08(水) 23:54:09ID:???
まぁ、どっちも実用的な動作で動いてくれるからどっちでもいいじゃん

開発者の習熟度とか好みとか必要な機能で選べばヨロシ
0160nobodyさん2006/11/08(水) 23:54:42ID:???
動作とかww速度の間違いwww

もう寝るwっうぇw
0161nobodyさん2006/11/09(木) 00:06:04ID:???
凄い下質かと思いますが、前から気になっていたのでお願いします。

1:PHPの書き出しを、 <?php ?> にするのと <? ?>にするのとあまり変わりないのですが、
 <phpとした方が良いのでしょうか?それとも関係ないのでしょうか?
2:printとechoとともに表示されますが、どちらで書いた方がいいのでしょうか?
 自分の場合は混雑しています。
3:requireとrewuire_onceって特に違いありませんよね?

リファレンスも見たのですが、実用を考えるとどうした方が良いのかな?
っと思い、質問した次第です。
0162nobodyさん2006/11/09(木) 00:19:08ID:???
>>144
10万件超えると耐え難いってのは検索速度が遅くなるから、って話。
で、その理屈で言えばファイルの場合は1万件以下ですでに遅くて耐え難いです。
ファイルで分割ができるならDBでもテーブル分けちゃえば解決するよ。
0163nobodyさん2006/11/09(木) 00:24:43ID:???
>>161
1.機能としては何も変わらないです。
 問題は<?hoge ?>ってのを使う仕組みはPHP以外にもあるってことで(XMLなど)
 そういう別の仕組みを併用する場合に<? ?>では誤動作して困るので<?php ?>が推奨されてます。
 その辺をちゃんと踏まえて、問題ないのが分かってるんであれば<? ?>も便利だと思います。
2.一緒です。書き慣れた方を使えばいいでしょう。
 それが両方あるのは、他の言語で慣れた方を使えるようにという配慮です。
3.onceが付くと多重読み込みを防止できます。何度も繰り返して読み込みたい場合以外は
 誤動作防止・処理速度高速化のためにもonceの方を使うのが推奨されます。
 例えば a.php と b.php でそれぞれ c.inc を読み込むようにしていた場合に、
 a.php で b.php を読み込むような処理にしても c.inc が2度読み込まれるのを防げます。
0164nobodyさん2006/11/09(木) 00:36:15ID:???
shareで「FootBall Manager 2006」を落として、いざやろうとしてもできません。
デーモンでは無理みたいです。
CD−Rに焼かないと駄目みたいなのですが、普通に焼くだけでは動きませんでした。

どのように焼けば起動しますか?
ど素人ですが、ご教授宜しくお願いします。
0165nobodyさん2006/11/09(木) 00:39:00ID:???
>>161
2については下記を読めとマニュアルにあるわけだが。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
0166nobodyさん2006/11/09(木) 00:40:28ID:???
>>164
買え。
0167nobodyさん2006/11/09(木) 00:53:01ID:???
>>164
スレ違いに気付かないほど頭悪い君には無理。諦めれ
01681612006/11/09(木) 01:18:59ID:???
>>163
ありがとうございます。非常に納得しました。
とりあえず、1については<?php?>で書くようにします。(少なくとも1行目は)
また、3についても意味が分かりました。

きちんとご説明いただきありがとうございました。
0169nobodyさん2006/11/09(木) 01:23:09ID:???
>>145
http://itpro.nikkeibp.co.jp/article/COLUMN/20051128/225271/
0170nobodyさん2006/11/09(木) 03:52:43ID:???
>>164
通報しますた
0171nobodyさん2006/11/09(木) 04:01:14ID:???
>>169
ttp://www.thinkit.co.jp/cert/compare/2/4/2.htm
0172nobodyさん2006/11/09(木) 04:42:44ID:???
新しいの使えばいいじゃない 人間だもの
0173nobodyさん2006/11/09(木) 05:08:44ID:???
PHP5.1.xはかなり速いみたいだよね。俺も乗り換えるかな〜
0174nobodyさん2006/11/09(木) 05:56:01ID:???
マシンの性能が伸びてる昨今、
体感的に爆発的に変わるものじゃないでしょ。
PHPと他の言語を比べてもそれは言える話だけどね。
0175nobodyさん2006/11/09(木) 06:06:59ID:???
いやー、規模でかくなって取得・表示するデータ件数が増えたりすると
変数処理の速度とループの速度の性能差は体感レベルで分かるくらい差が出るよ。
マシン性能のおかげで違いなんて出ないとか言ってるのはちゃんとベンチ取ってないか単なる詭弁だとオモウ
0176nobodyさん2006/11/09(木) 06:18:48ID:???
forで100万回ループしてみろphp4がはやいことがわかるだろクズ共。
説明させんじゃねえ、市ね
0177nobodyさん2006/11/09(木) 06:20:19ID:???
一昔前なら回線速度が遅かったから、WEBアプリの実行速度なんて
それに比べればゴミみたいなもんだったが、今じゃアプリの速度=体感速度だしな。
0178nobodyさん2006/11/09(木) 06:21:08ID:???
>>176
5.1.2の方が速かったぞ
0179nobodyさん2006/11/09(木) 07:05:45ID:???
>>171
それは5.0だろ
速くなったのは5.1から
0180nobodyさん2006/11/09(木) 07:13:06ID:???
>>169の素数プログラムで
PHP5.1.4 4.3sec
PHP5.2.0 4.1sec

5.2で少し速くなってた(Win32 Apache2.0 PenD 3.0GHz)
01811802006/11/09(木) 07:25:50ID:???
>>169じゃなくて>>170のプログラムでした
http://www.thinkit.co.jp/cert/compare/2/2/2.htm

PHP4.4.4をダウンロードしてテストしたら9.2secでした
結果
PHP5.2>PHP5.1>>PHP4.4
0182nobodyさん2006/11/09(木) 07:33:06ID:???
>>181
>>171じゃない?
0183nobodyさん2006/11/09(木) 09:35:31ID:???
だからおまえらみたいなカスによるベンチの結果なんてどーでもいいよ
0184nobodyさん2006/11/09(木) 10:25:37ID:???
フォルダのサイズを計算して一定数以上のファイル数または容量になったら
中身のファイルをすべて削除するスクリプトってない?
0185nobodyさん2006/11/09(木) 10:27:48ID:???
自分で作れ
0186nobodyさん2006/11/09(木) 11:05:58ID:???
ページの更新日時を自動的に表示させたいのですが、
現在のページのファイルって、どのように取得したら良いのでしょうか?
$_SERVER["REQUEST_URI"]からファイルを抽出できそうですが、
index.htmlを省略された場合とかダメですよね。
0187nobodyさん2006/11/09(木) 11:17:59ID:???
__file__
0188nobodyさん2006/11/09(木) 11:22:52ID:???
>>187
そんな便利な定数がありましたか。ありがとうございます。
0189nobodyさん2006/11/09(木) 11:26:28ID:???
>>185
あるかないか聞いてんだろ
しらねーなら答えるなクズ
テメーも作れないくせによww
0190nobodyさん2006/11/09(木) 11:35:43ID:???
多分ないよ
態態PHPで書く理由が分からん
0191nobodyさん2006/11/09(木) 12:17:59ID:???
ID隠してるやつの煽りまでいちいち受けなくていいよ
多分それ本人じゃないから
0192nobodyさん2006/11/09(木) 12:19:58ID:???
PHP_SELFにもSCRIPT_NAMEにもPATH_INFOが入ってしまうので
basename($_SERVER['SCRIPT_FILENAME']);
を使おうと思うんですがどうでしょう?
0193nobodyさん2006/11/09(木) 12:34:34ID:???
事故解決しました。お騒がせしました。
0194nobodyさん2006/11/09(木) 14:15:41ID:???
「素数計算の100万回ループ」とか、現実的にはあまり意味の無い
ベンチをとって、勝ったの負けたの騒いでるキモヲタは全員氏んどけ。

そんな無意味なベンチはパソコンオタクのオナニー趣味でしかない。
0195nobodyさん2006/11/09(木) 14:20:14ID:???
可愛そうな子・・・
0196nobodyさん2006/11/09(木) 14:57:04ID:???
>>194
アナタ、コノスレニ アワナイ アルネ
0197nobodyさん2006/11/09(木) 16:00:04ID:???
>>194
はいはい、乙乙
黙ってスルーできないキモヲタのくせに吼えるな
0198nobodyさん2006/11/09(木) 16:05:22ID:???
<ahref="index.html">トップページ</a>
<ahref="profile.html">プロフィール</a>
<ahref="inquiry.html">お問い合わせ</a>

上記のタグがtemplete.phpに記述されているとします。
これを配列に代入して<?=$templete[$i]?>で表示するようにしたいのですが、
templete.phpのソース内にコードを追記せずに実現したいのです。
つまり、hyoji.phpに<?=$templete[$i]?>(forで$iを表示する)を記述して
表示出来るような。

フォームから配列に代入して表示するのは出来るのですが、
そうじゃない方法はどうすればいいかと思い、質問しました。
0199nobodyさん2006/11/09(木) 16:28:34ID:???
>>198
Smartyなりなんなりのテンプレートエンジン使って下さい
0200nobodyさん2006/11/09(木) 16:29:04ID:???
>>198
よく分からない
どういう情況なんだ
02011982006/11/09(木) 16:37:25ID:???
>>200
ちょっと説明づらいのですが、1つのファイルから特定のソースを配列に
代入して表示したい、と言うことです。

例えば、>>198のタグがtemplete.phpに記述されているとします。
表示用のhyouji.phpには
<?php
for($i=0;$i<$max_array;$i++){
echo "$templete[$i]"."<br>";
}
?>
というようなソースが入っていて、これをブラウザで表示すると

トップページ
プロフィール
お問い合わせ

と表示されればいいのです。上記のコードではforで回しているので
順番に表示されますが、
<?=$temple[0]?><?=$temple[2]?><?=$temple[1]?>
こういう風に書いていくと、表示位置も入れ替えられるので、便利だと思いまして。
0202nobodyさん2006/11/09(木) 16:47:36ID:???
$template = file('templete.php');

まあ好きにすればいいけどさぁ
0203nobodyさん2006/11/09(木) 17:07:00ID:???
テンプレートじゃないじゃん
0204nobodyさん2006/11/09(木) 17:08:30ID:???
どうせなら

templete.phpを
index.html,トップページ
profile,プロフィール
inquiry.html,お問い合わせ

として、

$template = file('templete.php'); foreach($template as $line){
$items = explode(",", $line);
echo "<a href=\"{$items[0]}\">{$items[1]}</A>";
}

とか。
02052042006/11/09(木) 17:09:59ID:???
あ、
templete.phpは
index.html,トップページ
profile.html,プロフィール
inquiry.html,お問い合わせ
の間違え
02061982006/11/09(木) 17:11:55ID:???
>>204
例えば別ファイルにすると、ファイル数が増えるのと
余計なタグが入っていた場合、正常に表示されなくなりますよね?

fileで読み込むと>>198のソースだけなら良いのですが、その後を考えると
反応的ではないと思ったんです。なので
$templete[]="<ahref="index.html">トップページ</a> ";

こういう風に入ってくれれば出力しやすいし、出力する場所も選べるので
便利なのですが、いまいちソースの組立が上手くいかなくて。。
02072062006/11/09(木) 17:12:30ID:???
反応的→汎用的 です。
0208nobodyさん2006/11/09(木) 17:17:01ID:???
>>200
0209nobodyさん2006/11/09(木) 17:25:20ID:???
         ∧ ∧
       ヽ(・∀ ・)ノ 
       (( ノ(  )ヽ ))
         <  >
0210nobodyさん2006/11/09(木) 20:52:53ID:???
ファイルが増えるのがイヤとか言ってるが、
他の人は逆に外に出すべきだと考えると思うぞ。
表示内容を変えるたびにコードをいじるほうが不自然。

余計なタグ云々なんて、いくらでも整形できるだろうが...。
0211nobodyさん2006/11/09(木) 21:52:02ID:???
>>206
なら>>202でいいじゃん
もしくは正規表現とか
0212nobodyさん2006/11/09(木) 21:58:04ID:???
>>206
実際に運用してみると、変わりそうで変わらないこと、結構あるよ。
先々のことをよく考えて固定で作った方がわかりやすいし、簡単だよ。
汎用的に作ればかっこいいけどさ。
ファミコン対パソコンみたいなもんだよ。
0213nobodyさん2006/11/09(木) 22:33:03ID:???
フローチャート書いて熟考すると吉♪
0214nobodyさん2006/11/09(木) 22:58:24ID:W4pI1qAG
日付の変換で、20061231に1足したら20070101ってしてくれる関数ありませんでしたっけ?
0215nobodyさん2006/11/09(木) 23:05:30ID:???
>>214

PHPマニュアルのdateのところよ〜く見てみて。
答えが載ってるから(リンク先のmktimeも熟読してね)
0216nobodyさん2006/11/09(木) 23:09:17ID:W4pI1qAG
>>215
探してるけど見つからないから聞いてるのに・・・いけず・・・
0217nobodyさん2006/11/09(木) 23:10:22ID:W4pI1qAG
でもmktimeは熟読しても関係ないと思う
0218nobodyさん2006/11/09(木) 23:11:42ID:???
>>214
strtotimeでも使えば。
0219nobodyさん 2006/11/09(木) 23:23:10ID:W92sr8u2
似たような質問が出ていますが・・
htmlのソースを書き出したテキストファイルからの特定語句の
抜き出しについてお聞きしたいことがあります。

$kensaku="[ァ-ヴー][ァ-ヴー・]+|[a-zA-Z0-9\.\-\s]*[a-zA-Z][a-zA-Z0-0\.\-\s]*";
$fp=fopen("source.txt","r");
$fr=fread($fp,filesize("source.txt"));
$str="$fr";

$word = array();
while(1){
$kensaku2 = mb_ereg("$kensaku",$str,$match);
if($kensaku2 == FALSE){
break;
}else {
$match = $match[0];
array_push($word, $match);
}
$pos = strpos($str, $match);
$str = substr($str, $pos+$kensaku2);
}
print_r($word);
fclose($fp);
とすると、ソース内のカタカナやアルファベットの語句は抜き出せるのですが・・
title="IPアドレス" class=crosslink
title="Internet Protocol Address" class=crosslink
上記のように、 ソースに含まれる title=" " class=crosslinkの" "の中
の語句のみを抽出したいのですが、うまくいきません。
どのようにすれば良いでしょうか?
0220nobodyさん2006/11/09(木) 23:23:52ID:???
mktimeって32日を指定すればちゃんと翌月1日に直して返してくれるだろ?
0221nobodyさん2006/11/09(木) 23:25:19ID:W4pI1qAG
あ、こんな感じですね。アドバイスくれた人、ありがとう。


$date = 20060101;

echo date('Y/m/d H:i:s', strtotime($date));
echo '<hr>';
echo date('Y/m/d H:i:s', mktime(0,0,0,date('d',strtotime($date))+40,date('m',strtotime($date)),date('Y',strtotime($date))));
0222nobodyさん2006/11/09(木) 23:25:58ID:???
>>219
preg_match('/title="([^"]*)"/', $str, $match)
echo $match[1];
0223nobodyさん2006/11/09(木) 23:30:45ID:???
$day = date("Ymd",mktime(0,0,0, 12,32,2006));

これで$dayには20070110が格納されるよ

dateは日付の整合性チェックをしてくれないけど
mktimeはしっかり者だからちゃんとチェックしてくれる


ちなみにPHPって感じの変数名も使えるのな

02242192006/11/09(木) 23:45:08ID:W92sr8u2
>>222
いえ、title=" "ではなく、title=" "のあとに「class=crosslink」が
くる部分・・title=" " class=crosslink の" "の語句のみを取得した
いのです。そこでつまずいておりまして。。。
0225nobodyさん2006/11/09(木) 23:50:14ID:???
意味が分からんぞ
対象文字列は何で、結果何が取り出せてればいいんだ
0226nobodyさん2006/11/10(金) 00:02:59ID:???
>>224
じゃあ
preg_match('/title="([^"]*)" class=crosslink/', $str, $match)
echo $match[1];
でいいんでは。
02272192006/11/10(金) 00:12:09ID:0rGbXNdx
ええ、そうなんですが、title=,"",class=crosslink は省いた
状態で、" "の中身だけが欲しいのです。
0228nobodyさん2006/11/10(金) 00:17:16ID:???
要するにサブパターンを知らんということだろうか
0229nobodyさん2006/11/10(金) 00:19:04ID:???
イマイチよく分からないけど、それなら226のサブマッチでいいんじゃないの?
0230nobodyさん2006/11/10(金) 00:25:43ID:???
"[^"]*" -> "[^"\\\\]*(?:\\\\.[^"\\\\]*)*"
02312192006/11/10(金) 00:26:22ID:0rGbXNdx
つまり、$word='/title="([^"]*)" class=crosslink/'
preg_match('/([^"]*)/', $word, $match);

みたいな感じで、さらに検索をかければ良いのでしょうか?
0232nobodyさん2006/11/10(金) 00:28:13ID:???
ハァ?
0233nobodyさん2006/11/10(金) 00:29:55ID:LNYLSoFr
phpMyAdminのテーブル内容を表示すると、
「プライマリーキーを定義すべきです」
と編集、削除ボタンが「?」になるのですが、原因は何なんでしょうか?
0234nobodyさん2006/11/10(金) 00:34:17ID:???
>>227
おまえ、1度も実行しないで言ってるだろう。
>>226ですでに"〜"の中身だけ抜き出してるぞ。
0235nobodyさん2006/11/10(金) 00:35:57ID:???
>>233
俺思うにプライマリキーを定義すべきなんじゃね?
0236nobodyさん2006/11/10(金) 00:39:41ID:???
echo uniqid(""); でユニークなIDを生成出来ますが、
4桁など桁数を指定して生成するにはどうしたらいいのでしょうか?
0237nobodyさん2006/11/10(金) 00:42:20ID:???
>>236
それじゃユニークにならないから無理
02382192006/11/10(金) 00:42:26ID:0rGbXNdx
>>234
実行しましたよ。Array ( [0] => title="IPアドレス" class=crosslink[1] =>・・
しかし、こうなってしまいました。。。
0239nobodyさん2006/11/10(金) 00:57:34ID:???
>>238
[1]の内容が肝心だろww
わざとやってんのかww
0240nobodyさん2006/11/10(金) 00:58:24ID:9aG6gw2r
>>223
あ、親切な方だ。ありがとうございます!
02412192006/11/10(金) 01:10:33ID:0rGbXNdx
>>239
わざとなんてことはないですよ。
echo $match[1]; で出力しようとすると何も表示されないのです。
それで、print_r($word); で出力しています。
0242nobodyさん2006/11/10(金) 01:13:52ID:???
>>241
なんか環境がおかしいんじゃないの?

$str = ' title="IPアドレス" class=crosslink ';
preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
echo $match[1];

で結果が

IPアドレス
02432192006/11/10(金) 01:27:13ID:0rGbXNdx
>>242
うーん・・、219のソースで
$kensaku2を preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
に変更して、出力を echo $match[1]; とした場合、正しく表示される
ものでしょうか?うまく表示できないのですが・・・
0244nobodyさん2006/11/10(金) 01:29:23ID:???
219のソースなんざ知らん。
元々のソースが汎用性のない腐ったソースなんだから
そこにどう組み込むかはお前が考えるべきことだ。
0245nobodyさん2006/11/10(金) 01:33:15ID:???
>>243
$str = ' title="IPアドレス" class=crosslink ';
$word = array();
while(1){
$kensaku2 = preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
if($kensaku2 == FALSE){
break;
}else {
$match = $match[1];
array_push($word, $match);
}
$pos = strpos($str, $match);
$str = substr($str, $pos+$kensaku2);
}
print_r($word);
とした場合の結果
Array
(
[0] => IPアドレス
)
これで何が不満?
02462192006/11/10(金) 01:43:41ID:0rGbXNdx
>>245
いえ、全くございません。ありがとうございます。
$match = $match[0]; だと、
Array ( [0] => title="IPアドレス" class=crosslink
となってしまったのに、
$match = $match[1]; とすると
正しく、Array ( [0] => IPアドレス と表示されました。
無知な私に[0],[1]とで、どのような違いがあるのか教えていただけると
ありがたいのですが。
0247nobodyさん2006/11/10(金) 01:59:11ID:???
ここってPHPとMySQLに関することは聞いては駄目なのでしょうか?
データベース板には質問スレとか無くて・・・。
02482462006/11/10(金) 02:15:29ID:0rGbXNdx
なるほど。preg_matchの使い方が理解できました。
0249nobodyさん2006/11/10(金) 02:20:14ID:???
>>247
ここらへんのスレで聞いたらいいんじゃね?

MySQL 5.0
http://pc8.2ch.net/test/read.cgi/db/1081818145/

mysqlについて語ろう
http://pc8.2ch.net/test/read.cgi/db/1056947097/

PHPに依存した部分がある質問ならここでもいいけど。
0250nobodyさん2006/11/10(金) 02:26:06ID:???
ファイルのアップロードに関して、どちらかというとタグ的な内容を含んだ質問になるのですが、
複数の連番ファイルを一括してアップできるスクリプトを作ろうと思っています。

通常ファイルのアップには「参照」ボタンを押すなりして、ファイルへのパスを入力する必要がありますが、
その際に「E:\jpg\01.jpg」を指定したとして、「E:\jpg\30.jpg」までを一括してアップさせることは可能でしょうか。

fileにはvalue値の設定ができないため、そのような処理は不可能でしょうか。
ユーザがいちいち30個の欄に1.jpg、2.jpg・・・と指定する手間を省けるスクリプトを作ろうとしています。

環境 => OS:FC3 PHP:5.1.5
0251nobodyさん2006/11/10(金) 02:34:22ID:???
ちみは、自分の知らないうちにPCの中のファイルを勝手にアップロードされたらどう思う?
0252nobodyさん2006/11/10(金) 02:35:52ID:???
>>250
zipにしてアップロード。
0253nobodyさん2006/11/10(金) 02:41:56ID:???
>>250
できないことはないけど、利用者にはわかりにくくなりそう。ファイル名とかある程度固定されちゃうだろうし。
0254nobodyさん2006/11/10(金) 02:43:36ID:???
>>249
以前何度か聞いたのですが、板自体が過疎化しているので、回答がありませんで・・。
やりたいことは、MySQLの特定のテーブルにデータが入っていたらTRUE
入っていなかったらFALSEで分岐出来たらいいのです。
<?php
$sql = "select * from test_table";
$rst = mysql_query($sql, $con);
if(rst){
while($row = mysql_fetch_array($rst)) {
echo $col["id"];
}}else{
echo"登録がありません";
}
?>

こういうので出来ると思ったのですが、無理みたいで・・。
もしよろしければアドバイスいただけると助かります。
0255nobodyさん2006/11/10(金) 02:54:25ID:???
>>254
$sql = "select * from test_table";
$rst = mysql_query($sql, $con);
if(mysql_num_rows($rst)){
while($row = mysql_fetch_array($rst)) {
echo $col["id"];
}
}else{
echo"登録がありません";
}
かな
02562542006/11/10(金) 03:04:48ID:???
>>255
出来ました!mysql_num_rowsを使うんですね。
勉強になりました。ありがとうございます。
0257nobodyさん2006/11/10(金) 03:16:23ID:???
>>250
通常fileタイプのinputタグのvalueは無視されるから、
サーバーサイドでやるのは無理。
02582502006/11/10(金) 03:18:25ID:???
レス�dクスです。やはり余り現実的でないということでしょうか。
とりあえずZIPにするよう促すようにしてみます。

実はZIPにする手間を省くのが目的だったりしてます。
サーバ側でzip圧縮すればユーザの手順は簡略されますし。
(一昔前だとZIP圧縮するだけでもPCがモタついてイライラした記憶が・・・)
0259nobodyさん2006/11/10(金) 07:09:48ID:???
>>257
クライアントサイドでも無理
0260nobodyさん2006/11/10(金) 07:47:27ID:???
クライアントサイドなら方法が無いわけでもない。
ただし敷居が高いうえに、板違い。
0261nobodyさん2006/11/10(金) 08:21:45ID:???
まさかIEコンポーネントだのActiveXだのFirefoxのエクステンションとか言い出さないよね?
0262nobodyさん2006/11/10(金) 08:56:36ID:???
Javascriptだけでで叶姉妹
0263nobodyさん2006/11/10(金) 09:54:51ID:???
JSじゃムリじゃない?ActiveXならできるけど。
0264nobodyさん2006/11/10(金) 10:36:19ID:cXndf+IB
uwscスクリプト使えば可能
0265nobodyさん2006/11/10(金) 11:27:21ID:???
そのスクリプトをサーバーサイドから呼び出すことはできんのか?
0266nobodyさん2006/11/10(金) 11:59:28ID:???
<body>
<p>001</p>
<p>002</p>
<p>003</p>
</body>

上記のような分で、
<p></p>に囲まれている部分だけ取得して配列に格納したいのですが、
どのような方法があるのでしょうか?
0267nobodyさん2006/11/10(金) 12:01:39ID:???
preg_match_all()
XML_HTMLSax3
0268nobodyさん2006/11/10(金) 13:54:08ID:???
>>266
頑張ればstrpos+substrでもできなくはないよ
0269nobodyさん2006/11/10(金) 15:20:56ID:yWCpYZUV
正規表現で文字列を取り出し、配列に格納し、出力すると
Array ( [0] => Array ( [0] => A [1] => B [2] => B [3]=> C
[4] => D [6] => F)
となり、[1]と[2]の値が同じなので、array_uniqueで置換すると、
Array ( [0] => Array ( [0] => A [1] => B [3]=> C
[4] => D [6] => F)
というふうに、配列の番号が詰められず、[1]の次が[3]となってしまいます。
うまく配列の番号を詰める(連番となる)にはどうすれば良いでしょうか?
0270nobodyさん2006/11/10(金) 15:24:50ID:???
array_valuesでもかければ?
0271nobodyさん2006/11/10(金) 15:28:46ID:???
>>269
arraymergeでもインデックスの付け直しが出来た気がする
0272nobodyさん2006/11/10(金) 15:29:33ID:yWCpYZUV
>>270
array_valuesでできました。ありがとうございます。
0273nobodyさん2006/11/10(金) 15:31:51ID:1a5fPov5
サーバサイドの利用可能なドライブ情報を取得したいのですが、
何か良い方法はあるでしょうか?
公式マニュアルは参照しましたが、カレントディレクトリの情報は
取得できるものの、ドライブ情報を取得できるものは見当たりませんでした。

最悪、a:/〜z:/をループさせつつ総当りでscandirとかすることになるのかな
と考えていますが、できれば避けたいと考えています。


環境:WinXP SP2,Apache2.2.3(SSL付き) PHP5.1.6
経験:PHPは10日間くらい。
0274nobodyさん2006/11/10(金) 15:35:55ID:???
>>273
たしかpeclでwin32のapiの関数呼びたい放題のやつがあった気がするので、そっちを当たってくれ。
0275nobodyさん2006/11/10(金) 15:45:50ID:???
>>273
Win32APIにGetLogicalDriveStringsってのがあるから
それをttp://www.php.net/manual/ja/ref.w32api.phpで呼べばいけるんじゃないかな。
0276nobodyさん2006/11/10(金) 15:47:10ID:1a5fPov5
>>274

これかなあ?
http://php.mirror.camelnetwork.com/manual/ja/ref.w32api.php

Win32API使うってのは盲点でした。PHPって手広いなあ。
ちょっといろいろいじってみます。
素早いお答えありがとうございました。
0277nobodyさん2006/11/10(金) 15:49:55ID:1a5fPov5
>>275

うお、追加のお答えありがとうございます。
なんか標準じゃつかない関数みたいなので勉強が必要ですが、
APIの名前教えてもらって助かりました。
0278nobodyさん2006/11/10(金) 16:03:40ID:???
<?
if($name==""){
echo"$nameが空です";
}else{
echo $name;
}

このような入力チェックがあったとして、name以外に変数が増えた時
その分上記のソースをコピーしていました。

しかし、基本的には変数名以外の内容は同じですし、数行のコードをコピーすると
長いので、もっと良い方法が無いかと思い、質問しました。
0279nobodyさん2006/11/10(金) 16:10:47ID:???
>>278
値の整合性チェックは時と場合により結構かわるから、
これをやれば大丈夫というのはないよ
汎用的な validatator も探せばあるだろうけど、使い方が直感的でないこともしばしば

もし、本当に変数名以外に違いがないなら
配列にでも一度入れてループすれば良い

$checkArr = array('name' => $name, 'age' => $age);
foreach ($checkArr as $key => $val) {
 if ($val=="") {
   echo "$keyが空です";
 }
 else {
   echo $val;
 }
}
0280nobodyさん2006/11/10(金) 16:11:36ID:???
>>278
$param_list = array('name', 'hoge', 'hoge2'); //パラメータ名の一覧
foreach($param_list as $param) {
if($_GET[$param] == ""){
echo"$_GET[$param]が空です";
}else{
echo $_GET[$param];
}
}
0281nobodyさん2006/11/10(金) 16:11:37ID:???
お前いつもここに張り付いてんの?
さっさと就職しやがれ!
0282nobodyさん2006/11/10(金) 16:11:44ID:???
>>278
なんか知らんが配列をforeachすりゃいいんでね?

foreach ($_POST as $key => $value) {
 if ($value === "") {
  echo "$keyが空です";
 } else {
  echo $value;
 }
}
0283nobodyさん2006/11/10(金) 16:13:50ID:???
>>281
0284sage2006/11/10(金) 16:26:30ID:1a5fPov5
入力フォームのnullチェックとかなんかな。
実際には不正な文字列じゃないかもうちょとチェックするので
あまり同じ関数の使い回しはしないんじゃないかなあ。

Javascriptになるけど、こんなの書いたりもしてました。
画面遷移なしでも多少チェックしたいときもあるし。
※ソースは適当です。

<input type=text name=userid value="">
<input type=text name=pass value="">
<input type=submit onclick="javascript:nullcheck(this); return false;">

function nullcheck(obj)
{
 obj=obj.forms[0];
 for(var i in obj.elements.length)
 {
  if(obj.elements[i].type != "text") continue;
  if(!obj.elements[i].value)
  {
   alert(obj.elements[i].name + "が入力されていません。");
   return false;
  }
}
0285nobodyさん2006/11/10(金) 16:28:44ID:1a5fPov5
うお、みんなごめんよ。。。
0286nobodyさん2006/11/10(金) 16:50:59ID:???
オイラの場合

function err($txt) {
echo $txt;
echo "</BODY></HTML>";//この辺はスクリプトによって変える
exit;
}
if ($name == "") err("名前がない");
if ($mail == "") err("メールがない");
if (is_numeric($num)) err("NUMBERは数字で入れれ");
みたいにする。
0287nobodyさん2006/11/10(金) 16:52:04ID:???
お呼びじゃないよ
02882862006/11/10(金) 16:52:24ID:???
最後
if (!is_numeric($num)) err("NUMBERは数字で入れれ");
だった。
02892782006/11/10(金) 17:46:15ID:???
>>279-280,282
返答が遅れてすみません。
foreachを使う方法だと、表示位置が指定出来ませんよね?
テーブル(<table>)の表などで使用する場合、不適切だと
感じられるのですが、どうなのでしょうか?
0290nobodyさん2006/11/10(金) 18:32:28ID:???
>>289
そもそも最初のサンプルが悪い。
コードの途中でecho使うこと自体が不適切。
0291nobodyさん2006/11/10(金) 18:42:07ID:???
>>289
どういうこと?
別にテーブルの中でforeach使えば?
0292nobodyさん2006/11/10(金) 18:46:42ID:???
そういう構成なのか
なら $var[$key] = (empty($_REQUEST[$key]) ? "$key空" : $...; とでも
0293nobodyさん2006/11/10(金) 19:06:10ID:???
>>291
テーブル表示ループの中でデータのチェックやってんだよ。
典型的なコードとデザインが分離できてない素人設計。
02942782006/11/10(金) 19:17:03ID:???
すみません、とりあえず↓しました。
<table border="1">
<?
$param_list = array($name,$age,$sex,$address,$comment); //パラメータ名の一覧
foreach($param_list as $param) {
if($param == ""){
echo"<td>";
echo"$paramが空です";
echo"</td>";
}else{
echo"<td>";
echo $param;
echo"</td>";
}}
?>
</table>

ただこの場合、フォームから受け取ったarrayの値が空の場合は表示されなくなります。
素人設計ですが、向上心を持ってやっていきますので、再度アドバイスお願いします。
0295nobodyさん2006/11/10(金) 19:31:32ID:???
じゃあアドバイス。
まず表示部分でそんなチェックすんな。
事前にチェックを済ませて結果を変数に格納し
自由なレイアウトで表示できるようにしろ。
0296nobodyさん2006/11/10(金) 20:15:25ID:???
>>294
> if($param == ""){
$paramは必ず中身がないんだから
> echo"$paramが空です";
$paramを表示できるわけないじゃん。

>>280でパラメータ「名」の一覧を使えって言ってるのに
なんでデータ値そのものをリスト化しようとしたりするの?

あと$nameとか$ageとか、ひょっとしてregister_globalsをONにしてんのか?
$_GETか$_POSTか$_REQUEST使えって。
0297nobodyさん2006/11/10(金) 20:15:56ID:???
>>294
ヒント:
・連想配列
・TRは?
0298nobodyさん2006/11/11(土) 12:54:56ID:mWra3uS0
頑丈なロック機能を求めていたらパラレルロックって言葉にたどり着いたのですが
どういうふうに組むのでしょうか?
0299nobodyさん2006/11/11(土) 13:48:21ID:???
>>298
パラレルロックってこれ?>ttp://sajiro.net/hpa/
これだとしたらこの作者が自分のプログラムに名付けた勝手な造語じゃない?
作り方は考えた本人に聞けばいいよ。
個人のオリジナルロジックなんて知らんがな。
03002982006/11/11(土) 13:58:29ID:mWra3uS0
作者に聞くのが一番ですよね、でも自分が作者だったら教いちいちえたくないかもしれない(笑)
壊れにくいロックを作ってどんな仕組みでしょうか、奥が深いですね。
たとえばググルとよくみかける二重ロックはどうなんでしょうか?
ファイルをロックする前に、ロックファイルを別に用意して、
そのロックファイルが存在してたら別の処理にさせるという仕組みでした。
0301nobodyさん2006/11/11(土) 14:04:13ID:???
壊れ「にくい」ロックなんてナンセンスなものどうすんだよ
03022982006/11/11(土) 14:12:22ID:mWra3uS0
こだわる必要はないですかね?
fcloseだけで十分でしょうか?
0303nobodyさん2006/11/11(土) 14:13:06ID:???
同時アクセスや、途中での切断や移動などを考えると、ロックってなにげに
難しい。
アクセスが多いサイトほど、いろいろ起きるし。
0304nobodyさん2006/11/11(土) 14:24:57ID:???
>>300
微妙に意味不明 >二重ロック
それって単なるロックファイル使ったプロセスロックじゃないの?
>>302
十分なわけないじゃん。
「壊れにくい」じゃ意味ないから「壊れない」ロックを使えってことじゃ?
強力なロック機構が欲しければRDBMS使うのが1番かと思うけど。
>>303
RDBMS使わないにしても、ロックディレクトリを使ったプロセスロックで
壊れた試しって俺は無いんだけど。
途中での切断・移動って一定時間過ぎたロックを強制削除、じゃダメなのか?

どっちかというと「壊れない」かつ「アクセスを漏らさず処理できる」が難しい。
単純なロックだとアクセス過多になると大量のタイムアウトを出してしまって
アクセスカウンターとかは本来の数を記録できなくなる。
そういう意味で、キューに溜めたクエリーを順次処理するRDBMSが1番。
まぁ、これも待ち受けの最大数があるんでそれ超えるとダメだけど、
そこは色々とチューニングでカバーできるし。
0305nobodyさん2006/11/11(土) 14:59:07ID:???
flockしとけば毎秒2万回でも壊れない。
でも書き込んでる途中で電源が切れると壊れる。
MySQLのマニュアルにも不意に電源が切れた場合、
壊れる可能性があることは明記されている。
0306nobodyさん2006/11/11(土) 15:08:40ID:???
猫とおかんには適わないな
0307nobodyさん2006/11/11(土) 15:18:25ID:???
実際にあるファイルへの毎秒何万回ってアクセスさせて
ロックの頑丈さをためすコードってないの?
0308nobodyさん2006/11/11(土) 15:24:28ID:???
>>307
並行で走らせたプロセスで同時アクセスさせないといけないから
単なるコードでは難しいよ。WindowsとUNIXとでやり方変わるし。
ApacheBenchとか使ってアクセスかけた方が手っ取り早い。

でもロックの頑丈さを確認するだけなら、ロックの判定やON/OFF処理に
片っ端からsleep()入れてって、アトミックじゃない処理の部分を
間隔広げてやるだけで簡単にテストできるよ。
0309nobodyさん2006/11/11(土) 15:41:13ID:???
>>303
>途中での切断や移動などを考えると
http://www.php.net/manual/ja/function.ignore-user-abort.php
考えずにすみますよ。
0310nobodyさん2006/11/11(土) 15:51:18ID:UxXI6HSf
メールが送信できたかどうかを確認するためにReturn-Pathを設定したいのですが、
mb_send_mailの第5引数が設定できません。

環境はレン鯖でPHP4.4.4でSafeModeがONです。

何か良い方法ありましたら宜しくお願いします。
0311nobodyさん2006/11/11(土) 16:04:19ID:U7uBumak
配列の要素を標準出力する関数ってなんでしたっけ??
0312nobodyさん2006/11/11(土) 16:08:00ID:???
Sleepは検証にならないよ
やんわり動作してるアプリではアルゴリズムが全て
0313nobodyさん2006/11/11(土) 16:10:17ID:???
var_dump,print_r
0314nobodyさん2006/11/11(土) 16:14:41ID:???
>>313
あざーす☆
0315nobodyさん2006/11/11(土) 16:23:39ID:???
>>312
sleep入れて待ってる間に別窓からアクセスしてやればいいんじゃないの?
03163102006/11/11(土) 16:27:02ID:UxXI6HSf
エラー内容
mb_send_mail() [function.mb-send-mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE

PHPバージョンUPやSafeModeの設定変更はレン鯖で無理なのですが、代替案はありますでしょうか?
0317nobodyさん2006/11/11(土) 16:45:08ID:???
>>316
sendmail使わないでPEARでSMTPでもしゃべらせれば?
0318nobodyさん2006/11/11(土) 16:55:41ID:???
おまえらなんでボランティアで回答できるの?
0319nobodyさん2006/11/11(土) 16:56:46ID:???
回答が楽しいから。
03203102006/11/11(土) 17:30:37ID:UxXI6HSf
>>317
ありがとうございます。PEAR :: Mail_mimeDecode Mail_Mimeってのを調べてみます。

またはCGIとして動作させるか、Perlでsendmail使う方法などになりますかね・・・
0321nobodyさん2006/11/11(土) 17:44:36ID:???
> flockしとけば毎秒2万回でも壊れない。

毎秒二万回って凄いなあ。目がくらむ
0322nobodyさん2006/11/11(土) 17:52:33ID:???
CSV(test.csv)のデータからTableに整形して出力させたいのですがちょっと教えてください。
 1991,1,タイトル1,サブタイトル1
 1991,2,タイトル2,サブタイトル2
 1991,3,タイトル3,サブタイトル3
 1992,3,タイトルA,サブタイトルA
 1992,5,タイトルB,サブタイトルB
 1992,7,タイトルC,サブタイトルC
 1993,10,タイトル5,サブタイトル1

とあるデータをTable整形して出力させたいので、↓にしたのですが
<table border="1">
<?php
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp, 10000)) {
print "<tr>";
foreach ($data as $d) {
print "<td>$d</td>";
}
print "</tr>\n";
}
?>
</table>
これを次のように、同じ年のところはrowspanでつなげて出力したいのですがどうやったらいけますでしょうか?
<tr><td rowspan="3">1991</td><td>1</td><td>タイトル1</td><td>サブタイトル1</td></tr>
<tr><td>2</td><td>タイトル2</td><td>サブタイトル2</td></tr>
<tr><td>3</td><td>タイトル3</td><td>サブタイトル3</td></tr>
<tr><td rowspan="3">1992</td><td>3</td><td>タイトルA</td><td>サブタイトルA</td></tr>
<tr><td>5</td><td>タイトルB</td><td>サブタイトルB</td></tr>
<tr><td>7</td><td>タイトルC</td><td>サブタイトルC</td></tr>
<tr><td>1993</td><td>10</td><td>タイトル5</td><td>サブタイトル1</td></tr>

0323nobodyさん2006/11/11(土) 18:16:06ID:???
メソッドの中にメソッドって、
変数のスコープはどうなるんでしょうか?

参考になるような記事などありますか?
0324nobodyさん2006/11/11(土) 18:20:19ID:???
>>322
尻から出力すれば
0325nobodyさん2006/11/11(土) 18:24:42ID:mWra3uS0
大規模サイトでカウンター動かすときにflockだけで漏れなく動かせるんですかね?
0326nobodyさん2006/11/11(土) 18:24:44ID:???
>>322
次に別の年が出てくるまで出力を変数にバッファリングしといて、
連ケツ不要ならそのまま出力、必要ならRowspan出力してから
バッファを持ってくる、とか。
0327nobodyさん2006/11/11(土) 18:25:22ID:???
>>325
排他制御スレでやってくれ
0328nobodyさん2006/11/11(土) 18:35:03ID:???
>>323
普通にローカルになるけど、そんなオブジェクト論理的にありえなくね?
一時期廃止されてたよね関数の入れ子
0329nobodyさん2006/11/11(土) 18:44:17ID:???
>>328
ありがとうございます。
まずいんですか・・・
0330nobodyさん2006/11/11(土) 18:49:13ID:???
ネストでけるって初めて知ったわ
0331nobodyさん2006/11/11(土) 19:58:37ID:???
htmlタグしか知らなかった俺がphp勉強してから2週間
最初はこのスレの質問の意味さえ全くわからなかったが、今では少しは理解できるようになった

あと三ヶ月まじめに勉強して模範的回答できるようになるから、おまいら待ってな
0332nobodyさん2006/11/11(土) 20:38:49ID:???
>>331
下らねぇ質問はここに書き込みやがれ専属の回答スペシャリストめざせ
合格率は0.3%
0333nobodyさん2006/11/11(土) 21:09:32ID:mWra3uS0
サーバ上のファイルに記録したデータを
データが作られてから24時間後に削除することはphpだけはできないですよね?
0334nobodyさん2006/11/11(土) 21:22:00ID:???
>>333
PHPだけじゃ無理だな〜
cronでPHPを定期的に起動してチェックするしかないと思うお
0335nobodyさん2006/11/11(土) 21:22:52ID:???
>>333
WebアプリケーションとしてのPHPからだと24時間後に必ず削除することはできない。
アクセスごとに24時間以上経っているデータを削除させることはできるので、
この方法で十分であれば選択肢の一つにはなる。(PHPのセッションではこの方法で期限切れセッションファイルを消している)
また、CLI版限定ではあるもののPHPで作られたcronもあったりする。
03363222006/11/11(土) 21:27:06ID:???
>>326
回答どもです

人様のを参考にさせてもらってる程度ではちょい厳しそうですね。
使う関数を教えて頂けると助かります
0337nobodyさん2006/11/11(土) 21:31:24ID:???
セッションってさ、session.gc_maxlifetimeで指定した秒数は
接続が維持されるのは保障されるんだよね?
session.gc_maxlifetimeを過ぎた場合は指定した確立で
セッションの初期化時に削除される。

※クッキーはブラウザを閉じるまで有効とした場合
0338nobodyさん2006/11/11(土) 22:09:52ID:???
>>322
てきとーだけどこんな感じ?
<table border="1">
<?php
$fp = fopen("test.csv", "r");
$year = ""; $rows = array();
while ($data = fgetcsv($fp, 10000)) {
 $next_year = array_shift($data);
 if ($year != $next_year) {
  print_year($year, $rows);
  $year = $next_year; $rows = array();
 }
 $rows[] = $data;
}
print_rows($year, $rows);
function print_year($year, $rows) {
 $rowspan = count($rows);
 foreach ($rows as $i => $data) {
  echo "<tr>\n";
  if ($i == 0) print "<td rowspan=\"$rowspan\">$year</td>\n";
  echo "<td>", implode("</td><td>", $data), "</td>\n";
  echo "</tr>\n";
 }
}
?>
</table>
03393382006/11/11(土) 22:15:25ID:???
ちょっと書き間違えた。
whileから抜けた後
× print_rows($year, $rows);
○ print_year($year, $rows);
まあコメント欄に直接書いただけで、動作確認してないから、どっちにしろ動くかどうかわからんけど。
03403222006/11/11(土) 22:53:29ID:???
>>338-339
ありがとう〜〜〜

頂いたソースだと
 $next_year = array_shift($data); の行に
parse error, unexpected '@' エラーがでてしまいましたが。

とっかかりが見えそうな気がしてきました

0341nobodyさん2006/11/11(土) 23:02:33ID:qWd4Y1Xf
以下のプログラムの処理をうまくループさせることができずに困っています
よろしければ、お教え願えないでしょうか?
配列 $value の内容-----
Array ( [0] => ツール [1] => データベース [2] => IEEE1394 [3] => カメラ
[4] => インターフェイス [5] => アプリケーション [6] => パソコン [7] => Java)

$encode = mb_convert_encoding($value[4],"UTF-8","Shift_JIS");
$url_encode =urlencode($encode);
$html="http://thesaurus.weblio.jp/content/$url_encode";;
$html2=file_get_contents($html);
$utf=mb_convert_encoding($html2,"Shift_JIS","UTF-8");
$str="$utf";
$word = array();
while(1){
$kensaku2=preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
if($kensaku2 == FALSE){
break;
}else {
$match_result = $match[1];
array_push($word, $match_result);}
$pos = strpos($str, $match_result);
$str = substr($str, $pos+$kensaku2);
}
$unique=array_unique($word);
$array=array_values($unique);
print_r($array);
それで、実行結果は、$value[4]を指定して,URLに格納しているので
Array ( [0] => interface [1] => いんたーふぇいす [2] => インタフェイス
[3] => インタフェース [4] => インターフェース )となります。
そこで、なにがしたいのかと言いますと、プログラムの最初で、$value[4]として
いますが、ループさせて、$value[0]〜[7]の分の結果を得たいのです。
これがどうもうまくいかなくて。。。長くなってしまいましたが、何卒。
0342nobodyさん2006/11/11(土) 23:20:18ID:???
>>341
foreach($value as $val) {
$encode = mb_convert_encoding($val,"UTF-8","Shift_JIS");
$url_encode =urlencode($encode);
$html="http://thesaurus.weblio.jp/content/$url_encode";;
$html2=file_get_contents($html);
$utf=mb_convert_encoding($html2,"Shift_JIS","UTF-8");
$str="$utf";
$word = array();
while(1){
$kensaku2=preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
if($kensaku2 == FALSE){
break;
}else {
$match_result = $match[1];
array_push($word, $match_result);}
$pos = strpos($str, $match_result);
$str = substr($str, $pos+$kensaku2);
}
$unique=array_unique($word);
$array=array_values($unique);
print_r($array);
}
じゃダメ?
0343nobodyさん2006/11/11(土) 23:27:03ID:???
>>341
なんでそんなことでつまずくのかそっちの方が不思議だ。
0344nobodyさん2006/11/11(土) 23:42:34ID:qWd4Y1Xf
>>342
全然OKです。ホントありがとうございます。

>>343
なんででしょ。色々と試したんですけどねぇ。。。
きっと検討違いなことをやってたんでしょうな。
0345nobodyさん2006/11/11(土) 23:55:07ID:???
$encode = mb_convert_encoding($val,"UTF-8","Shift_JIS");
$url_encode =urlencode($encode);
$html="http://thesaurus.weblio.jp/content/$url_encode";;
$html2=file_get_contents($html);
は
$html=file_get_contents("http://thesaurus.weblio.jp/content/";.urlencode(mb_convert_encoding($val,"UTF-8","Shift_JIS")));とか省略してしまえば?他にもあるけど。
0346nobodyさん2006/11/12(日) 00:07:53ID:AeUA6O/W
>>345
確かに、そのほうが簡略化して記述できますね。
でも、未熟なせいか、習慣になっているせいか、分けて記述していくほうが
見やすいんですよね。
こういうのって、熟練者は省略して書くものなんですか?それとも、人に
よりきりなんでしょうか?
0347nobodyさん2006/11/12(日) 00:14:00ID:???
人によりけり。
個人的には
$utf=mb_convert_encoding($html2,"Shift_JIS","UTF-8");
$str="$utf";
と
$unique=array_unique($word);
$array=array_values($unique);
はいくらなんでも無駄じゃ?って思ったけど、
>>345の指摘してる場所はむしろそのままの方がいいと感じた。

基準としては読みやすさの他、
・そこに他の処理を加える可能性はあるか
・バグったときに一部を外したいと思ったとき外しやすいか
辺りも踏まえると明確にしやすいです。
その意味では>>345の修正は後で面倒なことになりやすい。
0348345(341)2006/11/12(日) 00:23:34ID:AeUA6O/W
>>347
なるほど。アドバイスありがとうございます。
$str="$utf"; に関しては、こうしないと処理が通らなくなってしまったので、
見た目むだな感じがしますが、仕方ないかと思って。
0349nobodyさん2006/11/12(日) 00:28:30ID:???
眼目となる処理も、そのための副次的な処理も同じようにずらずら書くと
そこでのフローがどうなってるのか読み取りづらい
ここに貼る分にはいいけど実際には、クエリを投げる部分と検索語を
チェックする部分(とエラー処理)は関数化してループをスッキリさせたほうがいい
0350nobodyさん2006/11/12(日) 00:34:18ID:???
要所は関数にすべき、は同意。
でもループ処理も書けないような人にそれはまだムリな気はする。
0351nobodyさん2006/11/12(日) 03:15:02ID:???
register_globalsをONにしているのですが、これは問題あるのでしょうか?
フォーム処理なども、$_POST["hoge"]ではなく$hogeなどにしています。
0352nobodyさん2006/11/12(日) 03:22:16ID:???
>>351
セキュリティ的に問題が多いので推奨されません。
将来的に廃止になる予定です。
0353nobodyさん2006/11/12(日) 03:24:42ID:???
>>352
と言うことは、フォームから値を受け取る時は常に
$_POST["hoge"]か$_GET["hoge"]にしておかなくてはいけないのでしょうか?

正直、$hogeというような書き方の方が便利なので、ほぼすべてこの書き方です。
ただ、セキュリティに問題あると言われると不安だし・・・
0354nobodyさん2006/11/12(日) 05:09:11ID:???
http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&num=50&q=register_globals+%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3

なんとも思わないならそのままでいいんじゃない?
0355nobodyさん2006/11/12(日) 05:10:56ID:???
>>353
> $_POST["hoge"]か$_GET["hoge"]にしておかなくてはいけないのでしょうか?
基本的にはそう。まぁ、最初に$hogeに代入しちゃえば済む話だけど。
extract()を使う手もある。

個人的には$_GETや$_POSTはスーパーグローバルなんでかえって使いやすいけどね。
$hogeの方が使いやすいって言うってことはまともに関数化もしてないんじゃないの?
入力データとシステムで生成したデータは区別することを常に意識した方がいい、ってのもある。

register_globalsは特定のバージョンのPHPでは設定をONにしちゃうだけで
プログラムが何であれ攻撃を食らうセキュリティホールがある。
けど最新のはそこまで酷くないから、グローバル変数を使うときは
ちゃんと初期化をしてから使う、という原則を守ればそれほど危険ではない。
ただ、PHP6では無くなっちゃうのは確かっぽい。
0356nobodyさん2006/11/12(日) 06:42:49ID:???
> 正直、$hogeというような書き方の方が便利なので、

$hoge = $_GET['hoge'];

と書くだけで初期化し忘れた$fugaがへんなことになるのが防げるんなら
安いもんなんでは。

個人的には初期化し忘れた変数を参照できるのが
おかしいような気がするのでスーパーグローバルはセキュリティが・・・
ていう話はなんか変な気がするんだけど。
0357nobodyさん2006/11/12(日) 07:01:45ID:???
最近のPHPだとデフォルトが未初期化変数アクセスはNOTICE出るようになってるもんね。
でも面倒くさくてregister_globalsをONにしたいって人が、全部の入力変数をissetで
チェックできるかっつーとそれもムリがある気はするけど。
0358nobodyさん2006/11/12(日) 07:10:52ID:???
>>356
register_globalsとスーパーグローバル変数は別ですよ。
0359nobodyさん2006/11/12(日) 08:03:53ID:a0k5e3E0
PHP勉強して3ヶ月です。
何を質問していいのかわからないので
質問したくなる話をふってもらえませんか?
0360nobodyさん2006/11/12(日) 08:31:23ID:???
質問がないなら質問しなくていいのでお帰りください。
0361nobodyさん2006/11/12(日) 08:47:52ID:a0k5e3E0
出会い系サイトとかにあるメールを受信すると
ログインしたときに「新着メールが一件届いています」って表示したいのですが
メールを開封するこの表示を消すようにしたいです。
これはPHPだけで完了できるでしょうか?
0362nobodyさん2006/11/12(日) 10:18:38ID:???
メールを開封するこの表示?
意味わからん。
0363nobodyさん2006/11/12(日) 10:38:03ID:???
>メールを開封する『と』この表示を消すようにしたいです。

だとオモワレ
0364nobodyさん2006/11/12(日) 11:17:06ID:AtVKFDXl
ほんと下らない質問なんですが、dl()を使うと、
Not supported in multithreaded Web servers - use extension statements in your php.ini
とワーニングが出てしまいます。
php.iniはenable_dl = Onになっています。

サーバーはApache/2.0.55 (Win32)
PHPは4.4.2です。

他に何かチェックする項目はあるでしょうか?
0365nobodyさん2006/11/12(日) 11:33:37ID:???
>>364
エラーメッセージの通りだよ
マルチスレッドのwebサーバではdlはサポートされてない
win上でのapacheでdlは使えないからphp.iniに書いてねってこと
0366nobodyさん2006/11/12(日) 12:01:39ID:???
BBSのログを記事毎に作成しようかと思うのですが
そうすると一日100件書込みがあるとファイルが100個できてしまうわけで
一ヶ月で3000ファイル作ることになります。
これはサーバ、とくにHDDに悪いでしょうか?
0367nobodyさん2006/11/12(日) 12:09:47ID:???
ファイルの配置にもよるが、1つのディレクトリに大量のファイルをおくと、
かなり遅くなるよ。
0368nobodyさん2006/11/12(日) 12:59:26ID:???
>>366
Unix系だとi-node数の上限が決まってるから、ファイル作りすぎると上限に達して動かなくなる。
それに>367も言ってるが、ファイル数が増えると読み込みが遅くなる。
0369nobodyさん2006/11/12(日) 13:14:55ID:GywZkAAc
ブログ作ろうと考えてます。
Movable Typeみたいに、毎回HTMLファイルを作成してそこにアクセスするようにするのと、毎回PHPスクリプトを実行してDBからデータをひっぱってくるのどちらがいいのでしょうか?
やはりデータが増えれば増えるほど、PHP→DBからひっぱるだと効率が悪くなるんですかね。
0370nobodyさん2006/11/12(日) 13:20:17ID:???
>>369
DBへのアクセスが入ると速度は遅くなることは必至。
03713692006/11/12(日) 13:33:19ID:GywZkAAc
>>370
そうですか。 PHP→DBの方が作るのが簡単だから……と思っていたけれどやっぱり落とし穴があるんですね。
データが増えれば増えるほど書き出すHTMLが増えるからMTみたいに「再構築中です」ってなる時間が長くなってしまうんですよね……
いろいろ考えて見ます。 ありがとうございました。
0372nobodyさん2006/11/12(日) 13:45:56ID:???
>>371
Smartyのキャッシュ機能はその中間的な位置にあるので、検討してみるといいかも名
0373nobodyさん2006/11/12(日) 13:46:55ID:6O05V0pA
あるサイトにアクセスしてる人の数を表示させたいのですが
なにかヒントをいただけませんか?

参考ネタは下記のサイトの左側のオンライン状況です。
ttp://xoopsrss.com/
0374nobodyさん2006/11/12(日) 14:07:46ID:???
>>373
セッション
0375nobodyさん2006/11/12(日) 14:43:17ID:???
>>374
ハァ!?
0376nobodyさん2006/11/12(日) 14:45:09ID:???
>>373
Timer+Ajax
0377nobodyさん2006/11/12(日) 14:46:36ID:???
>>361
メールの開封フラグをDBに記録してログイン時にチェック
0378nobodyさん2006/11/12(日) 14:48:08ID:???
>>366
3000くらいなら速度も気にするほど遅くはならないと思うが、
万超えると微妙になってくるからディレクトリ分けた方がいいだろうね。
0379nobodyさん2006/11/12(日) 14:52:48ID:???
>>375
素人乙

>>376
無駄な負荷と通信を発生させんじゃねぇカス。
0380nobodyさん2006/11/12(日) 14:56:23ID:Cz0hhElV
SNSで1ユーザーに1セッションと決め付けている時点で傲慢さが見て取れる
0381nobodyさん2006/11/12(日) 15:00:27ID:???
っていうかセッションの保持期間をどの程度に設定させてるんだろ。
0382nobodyさん2006/11/12(日) 15:02:06ID:???
セッション使うってやつは素人
0383nobodyさん2006/11/12(日) 15:12:04ID:ZwQu2SQp
PHPでトラックバックの送信を実装したく、以下のスクリプトを作成しました。
このスクリプトで問題なくトラックバックを送信できるのですが、
プロキシを設定した状態でこのスクリプトを実行すると、
fputs($sock, "POST $path HTTP/1.1\n");この行でエラーが出てしまいます。
プロキシを設定しないと、うまくいくのでプロキシの影響だと思いました。
質問�@ プロキシを設定した状態で下記のスクリプトでトラックバックの送信が行えるか?

質問�A 行えるとしたら、どのような設定、もしくはスクリプトの改良が必要か?
よろしくお願いします!

<?php
$charset = "UTF-8";
$pingurl = "http://localhost/blogn/tb.php/1";;
$urlinfo = parse_url($pingurl);
$host = $urlinfo['host'];
$path = $urlinfo['path'];
$sock = fsockopen($host, 80, $errno, $errstr, 60);
if (!$sock) die("$errstr ($errno)\n");
$data = "title=" . urlencode("test");
$data .= "&url=" . urlencode("http://yahoo.co.jp";);
//その他パラメータを追加する
fputs($sock, "POST $path HTTP/1.1\n");
fputs($sock, "Host: $host \n");
fputs($sock, "Content-Type: application/x-www-form-urlencoded; charset=$charset\n");
fputs($sock, "Content-Length: " . strlen($data) . "\n");
fputs($sock, "\n");
fputs($sock, "$data");
$result = '';
while (!feof($sock)) $result .= fgets($sock, 4096);
fclose($sock);
?>
0384nobodyさん2006/11/12(日) 15:19:25ID:???
>>380はSNSで1ユーザに複数セッションと決め付けてる時点でキモヲタぶりが見て取れる。

>>381-382
ど素人乙。セッションをよく理解してないバカだな、お前らは。
っていうかアクティブになってる人数を把握するのに、わざわざAJAXを使うヤツは基地害。
0385nobodyさん2006/11/12(日) 15:32:02ID:???
無知な奴が喚いているだけか、脳内ルールな奴が多いいからなぁ
0386nobodyさん2006/11/12(日) 15:41:44ID:???
単にログインIDとセッションIDを紐付けて1ユーザ1セッションにした上で
n分以内に更新されたセッション数を数えるだけだよね
0387nobodyさん2006/11/12(日) 15:57:30ID:???
前提を勝手に妄想しすぎ
0388nobodyさん2006/11/12(日) 16:04:00ID:???
>>373の参考URLみたけどログインIDはつかってなくね?
>>386おまえアフォ
0389nobodyさん2006/11/12(日) 16:17:18ID:???
Ajaxでもできることをわざわざセッションにこだわる理由がわからん
0390nobodyさん2006/11/12(日) 16:37:11ID:???
アホやら素人やら罵りあうSMオナニースレはここでつか?
0391nobodyさん2006/11/12(日) 16:44:34ID:???
>>390
無知はでてくるなカス
0392nobodyさん2006/11/12(日) 18:16:55ID:EC0Gx1iz
変な質問かと思いますが、たとえばShell_exec()などでtelnetを実行するとすぐ切断されてしまいますが
これを解決するにはどのような処理を行ったらよいのでしょうか。
PHPでブラウザから他のPCにリモートログインできるターミナルエミュレータのようなものを作ってみたいのですが、可能でしょうか。
0393nobodyさん2006/11/12(日) 18:23:50ID:???
つ RFC854
0394nobodyさん2006/11/12(日) 18:24:52ID:???
やり方は千差万別で、どれが正しいとかはない。
好きな手法でやればいいだけじゃないか。
>>375で煽られたからってムキになるよ。
スルー汁。
0395nobodyさん2006/11/12(日) 18:58:53ID:???
>>392
ムリじゃない?
0396nobodyさん2006/11/12(日) 19:49:48ID:???
>>392
誰か作ってた。
0397nobodyさん2006/11/12(日) 19:51:11ID:6O05V0pA
メールアドレスを入力してファイルに書き込むスクリプトを作ってます。
メールアドレスの長さはどれくらいにするのが無難ですか?
RFCに沿うとやたらと長くなるので実用範囲でお願いいたします。
0398nobodyさん2006/11/12(日) 20:06:28ID:???
>>397
100文字
0399nobodyさん2006/11/12(日) 20:11:34ID:???
PHPで取得したタイムスタンプをMysqlに保存するとき、
型名はTIMESTAMPを使用したほうがいいですか?
それともINTをつかったほうがいいですか?
0400nobodyさん2006/11/12(日) 20:15:31ID:???
用途による
データとして保存するならINTでいいだろ
PHPには関係ねえべ
0401nobodyさん2006/11/12(日) 20:18:57ID:???
あるだろバカ
0402nobodyさん2006/11/12(日) 20:19:28ID:???
ねえよ禿
0403nobodyさん2006/11/12(日) 20:36:55ID:???
sine
0404nobodyさん2006/11/12(日) 20:38:39ID:sscQxJ2c
俺はテキストで保存しているが、問題なし。
0405nobodyさん2006/11/12(日) 20:39:21ID:???
>>399
データとロジックを一体で考えてるならintの方が効率はいいかもね。

ただ、DB自体の日付演算関数とか使えなくなるし、検索も手動で
やりづらくなったりして使い勝手は落ちるからその辺のバランスの問題。
PHPの内部でしか使うつもりのないデータなら全然困んないだろうし。

あと2038年問題があるからその何年か前にはUNIXタイム型は型のサイズ変換が
入ることが予想されるので、その際にDBのコンバートが必要になる可能性も高い。
短期間しか運用しないシステムで、データのバックアップなんかもdumpでなく
PHPなどを通すかもしくは一切バックアップしないようなやつならどうでもいいかも。
0406nobodyさん2006/11/12(日) 20:43:19ID:???
日付演算は普通につかえる。
内部データは変わらん。
0407nobodyさん2006/11/12(日) 21:20:47ID:???
あれ。そうなのか。勘違いしてました。スマソ
0408nobodyさん2006/11/12(日) 22:12:57ID:AeUA6O/W
PHPのモジュールのインストールについてお聞きしたいことがあります。
環境はWindows XPでPHP5を使っています。
PHPのモジュールをソースからコンパイルしてインストールするということが必要
になったのですが、Windowsでどのようにソースをコンパイルして、モジュールを
インストールしたら良いのかわかりません。
よろしければ、お教えいただけないでしょうか?
04093922006/11/12(日) 22:37:03ID:EC0Gx1iz
>>393
>>395
ありがとうございます。
自分でも少し諦めかけてますが……

>>396
本当ですか!
覚えている限りで結構ですので詳細を教えていただけないでしょうか
04103512006/11/12(日) 23:03:07ID:???
>>352-358
深夜にセキュリティの質問したものですが、アドバイスいただきありがとうございます。
とりあえず現在のプログラムに追記して

if(isset($_POST["submit"])){
$name=$_POST["name"]{
$hoge=$_POST["hoge"]{
}
表示箇所は<?=$hoge?>とか (これはOKですよね)

みたいにしようと思います。まだまだセキュリティの知識が乏しいので
勉強します。皆さん、ありがとうございました。
04113512006/11/12(日) 23:04:53ID:???
間違えた。if内の{ は、;との打ち間違いです。。
0412nobodyさん2006/11/12(日) 23:11:11ID:???
> $name=$_POST["name"]
NOTICEが発生
> <?=$hoge?>
<?= htmlspecialchars( $hoge, ENT_QUOTES, 'EUC-JP' );
0413nobodyさん2006/11/12(日) 23:12:25ID:LM10n4zr
こいつって、本物かな?俺、メールやっちまったけど、やばいかな・・・。まっ、オッパイ見れたから良しとするか。・・・ってほんまやばないか誰か教えてくれへん!!
http://47.xmbs.jp/mackey/
0414nobodyさん2006/11/12(日) 23:18:39ID:???
>>410
412にもあるけど、入力値をそのまま出力するアプリには脆弱性がある
<>"'&は変換してから出力しないと
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
04153512006/11/12(日) 23:39:51ID:???
>>412-414
再度修正ありがとうございます。
手持ちのリファレンスを見ると、412さんが書いたような表示が良さそうです。

重ね重ね勉強になります。ありがとうございました。
0416nobodyさん2006/11/13(月) 10:00:57ID:???
分からない事があるのでお願いいたします。

linuxにphpをインストールする時に、コンパイル時にextensionを組み込んじゃう方法と
php.iniに設定して後から組み込む方法とあるじゃないですか

これは例えば、
前者のほうが高速に動くけど、後者の方がメモリを多く食っちゃうとかあるのでしょうか?

頻繁に使うものだけコンパイル時に組み込んで、たまにしか使わないものは後から動的?に組み込んだほうが
いいのでしょうか?それとも、ちょっとでも使うものは組み込んじゃったほうが吉?

アドバイスお願いいたします。
0417nobodyさん2006/11/13(月) 10:20:17ID:???
設計について質問です。

保存用テキストファイルでもデータベースでも保存する件数が増えると
それだけデータが莫大になってきますよね?掲示板とかWEBメールとか。

そういう場合は「○件に達したら1行目を削除」もしくは「○件に達したら別のテーブルを作成」
みたいな処理を入れて対応するのでしょうか?
それとも別の、もっと効率的な構築の仕方があるのでしょうか?
0418nobodyさん2006/11/13(月) 11:08:46ID:fcwOcTYQ
>>417
基本はそれでいいと思うよ。あとはそれの応用で過去ログ化して閲覧できるようにしたり、HTML化したりとかじゃない。
0419nobodyさん2006/11/13(月) 14:31:16ID:???
そろそろおれを認定回答者と認めてもらえませんか?
0420nobodyさん2006/11/13(月) 14:36:17ID:???
コテつけてくれ。


NGにしとくから。
0421nobodyさん2006/11/13(月) 16:22:23ID:???
[入力]→[入力確認]→[登録完了]

という一般的な登録フォームで、登録完了後にブラウザの「前に戻る」で
戻ると表示がおかしくなる時がありますが、これを解消するにはどうしたら
いいのでしょうか?
0422nobodyさん2006/11/13(月) 16:37:36ID:???
「おかしくなる」の内容による
0423nobodyさん2006/11/13(月) 16:38:04ID:???
表示がおかしくなるのは、キミんとこだけの問題。
一般的に起きている事ならFAQになっているはずだ。
どうおかしくなるのか不明では、解消のしようがない。

文字化けが起こるならヘッダなり何なりで漢字コードを適切に出す。
そもそも「戻る」させないようにリダイレクトする。
など。
0424nobodyさん2006/11/13(月) 17:23:24ID:???
いえ、文字化けではなくて、例えば名前を入力して確認画面にいった後、ブラウザで戻るとおかしくなるんです。
0425nobodyさん2006/11/13(月) 17:30:35ID:???
「ページの有効期限切れ」か?
0426nobodyさん2006/11/13(月) 17:31:33ID:???
だから、どう「おかしくなる」のか書かないと分からない。
0427nobodyさん2006/11/13(月) 17:31:49ID:???
お前らバカだなw
0428nobodyさん2006/11/13(月) 18:07:49ID:???
フォームからメールアドレスの内容をチェックする以下のような物を作りました。

if($_POST["mailaddress"]==""){
echo ="メールアドレスが入力されていません";
}elseif(preg_match('/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/',$_POST["mailaddress"])){
echo ="メールアドレスではありません";
}else{
echo "正しいメールアドレスです";
}

入力チェックは問題ないのですが、その後のメールアドレスの識別が通りません。
上記のソースのどこがおかしいかご指摘いただけないでしょうか。
04294282006/11/13(月) 18:09:11ID:???
すみません、2,4行目のecho = はecho の間違いです。
0430nobodyさん2006/11/13(月) 18:10:57ID:???
>>425-426
いえ、ページの期限切れではなく、例えば名前を入力してブラウザで戻るとおかしくなるんです。
0431nobodyさん2006/11/13(月) 18:12:44ID:???
>>430
何がどういう風におかしくなるのかを書けw
0432nobodyさん2006/11/13(月) 19:05:19ID:???
>>417
データ蓄積用には最初からn件単位で保存する。
表示時にはそこから最新を必要な分だけ取ってくる。
0433nobodyさん2006/11/13(月) 19:12:19ID:???
>>428
メールアドレスのチェックで正しいときに「メールアドレスではありません」って表示してるから。
0434nobodyさん2006/11/13(月) 19:29:03ID:rWUh904Q
え
0435nobodyさん2006/11/13(月) 20:32:36ID:???
>>430
戻るでリロードされて想定外の動きをしてるんだろ
0436nobodyさん2006/11/13(月) 20:55:36ID:???
”おかしくなる”につられまくりでおかしくなるw
0437nobodyさん2006/11/13(月) 21:13:03ID:???
どこがどういう風におかしいのか説明できないレベルって事だろ
04384162006/11/13(月) 21:39:10ID:DOnsRJEI
微妙に板違いなのでしょうか?OTZ

いろいろ自分なりに検索してみたけどなかなか見付かりません
コンパイル方法ばっかりで・・・

そういえばもう一パターンありますね。
1、頻繁に使うものだけコンパイル時に組み込んで、たまにしか使わないものは後からphp.iniで読み込む
2、ちょっとでも使うものはコンパイル時に組み込んじゃう
3、コンパイル時はなんにも組み込まないで、全部後からphp.iniで設定する。

どれがいいのでしょうか?
ご意見求む!!
0439nobodyさん2006/11/13(月) 21:44:46ID:???
用途による
Extとしてコンパイルしとけっつか頭使うのが面倒ならディストリのでいいだろ
0440nobodyさん2006/11/13(月) 21:54:40ID:???
レスがないのはスレ違いというわけじゃなくて、どういう条件で
使うのかっていう前提が謎だからだと思うよ。
Apacheの子プロセスが多くてメモリが逼迫するとか、CGIだから
起動が重要だとか・・・どういう要件にかなうようコンパイルしたいの?
0441nobodyさん2006/11/13(月) 21:58:03ID:???
>>438
スレ違いってことはない。
漠然とした一般論を求められるとみんなそこまで
正確には理解してないから回答が面倒くさくなるだけw
0442nobodyさん2006/11/13(月) 22:12:38ID:???
フルオプションのCLIは初回起動が体感的に重いよね
まあ全部削ってもRubyやPerlに比べるとバイナリでかいしメモリ喰ってて重いが
PCNTLでほとんど何もしない常駐プロセス作ったら5MBくらい消費しててワロタ
0443nobodyさん2006/11/13(月) 22:22:58ID:???
確かyahooで使われているPHPについての発表では
基本--disable-allでコンパイルしてアプリの用途に応じて必要なものを
extensionで追加する形をとっているらしいね
おそらく拡張によるメモリなりなんなりを節約するためだと思う
ただそんなレベルでのパフォーマンスチューニングなんて
yahoo並のコンテンツとかなら影響はあるかもしれないけど
普通のサイトで使う分には大して変わらんだろうから気にする程でもない
最初からまとめてコンパイルしてもいいし
php.iniで追加していく形でもどっちでもいいと思う
0444nobodyさん2006/11/13(月) 22:24:52ID:DOnsRJEI
>>439
>>440
>>441
レスありがとうございます。

用途は、自宅サーバーを立ち上げてapacheとphpとpostgreでサイトを作ろうと思ってます。
まだ勉強中ですが、DNSも自鯖でやろうかと思ってます。
とりあえず、マシン一台(CPU=PemD メモリ2G)で立ち上げるつもりです。

私が読んだ本は、apache関係のモジュールとmbstringはたいていコンパイル時に組み込んでいて、後は本によってそれぞれですが、
読み込んでいるのがなんなのかの説明しかなく、
後から読み込むのと、コンパイル時に組み込むのの、利点・欠点を説明しているものは皆無です。

まあ、情報が少ないので、たぶんどっちでもそんなに変わらないのかとも思いますが
ちょっと気になったもので・・・
0445nobodyさん2006/11/13(月) 22:33:21ID:???
>>438
スタティックに組み込むとメモリが無駄になることがある、が速い
ダイナミックにロードするのは遅い、がメモリ効率よし

複雑なサイトになるなら実運用で負荷をみながら試験するしかないと思う
0446nobodyさん2006/11/13(月) 22:35:43ID:???
ウララー!
0447nobodyさん2006/11/13(月) 22:52:33ID:???
>>444
理屈のみで言えばコンパイル時に静的に組み込む方式の方が
速度的には有利な代わりメモリを食う。
ただし無用なものまでなんでもかんでも詰め込むと、プログラムの肥大化と
使用メモリ量の増大のために起動速度が遅くなり、速度的なメリットが減る。
これはPHPに限らず様々なアプリケーションで共通の話。

ただ、PHPはApacheモジュールとして動かした場合、初期起動速度を
稼げるため、静的リンクでもあまり困らないので全部リンクした方が楽。
また、頑張って機能を外しても大して軽くならないほど元々がでかいので
実は動的リンクでのメリットはそれほどは多くない。
それでもPHPは機能が多いので全拡張を合わせるとものすごい分量に
なってしまうので、何でもかんでもくっつけてしまうのは自殺行為だと思う。
また、すでにコンパイル済みのものが用意されてる場合に
あえて再コンパイルした方がいいほど静的リンクにメリットも無い。
一般的には「インストールが楽かどうか」だけで両者を選択してる人ばかり、
というのが現実です。
両極端なことをしない限り、こだわったところでどっちも大差ない、が正直なところ。

ただしものすごく大量のPHPプロセスを起動する場合など
シビアなケースではメモリの消費がバカにならなくなったりするので、
対策を迫られる場合もあるでしょう、ってとこかと。
それはもうチューニングの話なので、現場ごとにTPOがあります。
0448nobodyさん2006/11/13(月) 22:54:16ID:???
>>444
後から動的に機能を組み込めるかどうかをiniファイルで変更出来る
RPMでバイナリ配布する時とか、共有サーバで環境を切り替える時とか
実運用に入った後でPHPをコンパイルし直したくないとか

ダイナミックリンクライブラリは一度メモリ上に読み込まれると、
同時使用するアプリがあれば同一メモリを使用する
apache自体が常駐してるし、最初のオーバヘッド程度しか差は無いんじゃないかな?
0449nobodyさん2006/11/14(火) 06:35:28ID:???
>>444
まずはチューニングとかを考えなければ困ってしまうくらいの
アクセス数を得てから悩んでも遅くないんじゃないの?

俺の予想では、キミの自宅サーバはそのままでも十分にパワーを有り余らせることになると思う。
取らぬ狸の皮算用で速度とか心配するな。
0450nobodyさん2006/11/14(火) 09:17:09ID:???
いまどきのCPUとメモリはすごいから、気にすんなw
うちのセレロン2.4Gで20万PV/dayが楽勝で、能力あり余してるよ。
0451nobodyさん2006/11/14(火) 09:20:41ID:???
>>449
アクセスはたくさんありますけどね。
バカにしないでくれませんか、失礼ですねえせ回答者。
0452nobodyさん2006/11/14(火) 10:18:57ID:???
>>451
>サイトを作ろうと思ってます。
>立ち上げるつもりです。
>アクセスはたくさんありますけどね

これから作る予定のサイトに既にアクセスがあるとは、これいかに。
まずはID出してからモノを言えよ、似非質問者。
0453nobodyさん2006/11/14(火) 10:33:46ID:???
>>451
流れを読めてなかったチンカス偽物乙。いやチンカス以下乙。
0454nobodyさん2006/11/14(火) 11:03:28ID:???
>>451
典型的な阿呆ですね

0455nobodyさん2006/11/14(火) 11:57:30ID:???
とりあえずIDを出していないんだからスルーしても良いだろう。
下らん煽りに反応するな!

おれもなー。
0456nobodyさん2006/11/14(火) 12:05:09ID:liCu6Ubc
配列の内容をデータベースにレコードとして登録したいのですが、
どのようにしたら良いのか分かりません。どうかお教え願いたい
のですが。
PHPは5.05で、データベースはSQLiteを使っています。
0457nobodyさん2006/11/14(火) 12:32:22ID:???
>>456
foreach($array as $data) {
 sqlite_query($conn, "insert into TABLENAME set COLNAME='$data'");
}
でいいんじゃないの?
0458nobodyさん2006/11/14(火) 13:02:55ID:???
>>456
serialize?
0459nobodyさん2006/11/14(火) 13:15:13ID:???
>>455
今度は自治ですか?
せめて文体変えてこいよ
04604562006/11/14(火) 13:46:39ID:liCu6Ubc
>>457
配列名 $value データベース名 word テーブル名 thesaurus
で以下のようにしたのですが、レコード0のままとなってしまい
ました。間違っているのでしょうか?
$db_open=sqlite_open("word");
foreach($value as $val) {
sqlite_query($db_open, "insert into thesaurus set COLNAME='$val'");
}
sqlite_close($db_open);
0461nobodyさん2006/11/14(火) 13:51:07ID:???
>>460
テーブル作ってないんだろ?
0462nobodyさん2006/11/14(火) 13:56:13ID:???
>>460
DBのオープンに失敗してるとか?
エラーチェックしてみてはどうだろう。
0463nobodyさん2006/11/14(火) 13:56:57ID:???
>>460
カラムの名前ってCOLNAMEでいいの?
0464nobodyさん2006/11/14(火) 14:02:07ID:???
INSERTのSET節なんかつかえたっけ?
つか配列をストアしたいってそういう意味であってるのか?
0465nobodyさん2006/11/14(火) 14:06:19ID:???
一気に四つも原因ぽいものが出てきたw
04664562006/11/14(火) 14:29:49ID:liCu6Ubc
まだ何ともいえませんが、原因はこれだろうか。。。
php.ini
;extension=php_sqlite.dll しかし、;をはずすと
'C:/php/ext\php_sqlite.dll'指定されたモジュールが見つかりません と表示
されます。
php.iniでは、extension_dir = "c:/php/ext" としているのですが・・
php/ext をみると、php_sqlite.dllはありませんでした。これがないと
動きませんよね?PHP5なのにこれがないということは、インストール
のときに欠陥があったということでしょうか?
0467nobodyさん2006/11/14(火) 14:32:39ID:???
組み込まれてるからDLL不要
0468nobodyさん2006/11/14(火) 14:33:12ID:???
extension_dir  = ""
c:\windows\にphp_sqlite.dllを放り込んで再起動かな

あれ、PHP5ってデフォルトでサポートしてなかったっけ?

phpinfoで確認してみそ
0469nobodyさん2006/11/14(火) 14:37:01ID:???
普通に落とせばphp_sqlite.dll付いてくるぞ
システムファイル非表示じゃないだろうな
0470nobodyさん2006/11/14(火) 14:38:58ID:???
>>468
今時9x系列はないやろ〜。
04714562006/11/14(火) 14:42:11ID:liCu6Ubc
phpinfoで確認したら"SQLite"が出ました。ということは有効にはなっている
ということですよね。

>>461
テーブルは作ってあります。

sqlite_query($db_open, "insert into thesaurus set COLNAME='$val'");
このとき、もしかして、テーブルの項目名全て指定しなきゃいけなかった
んでしょうか?
0472nobodyさん2006/11/14(火) 14:42:25ID:???
つーかさぁそれならsqlite_query()でUndefine Functionとか言われるですよ
エラー抑止してたらデバッグってレベルじゃねーぞ
0473nobodyさん2006/11/14(火) 14:44:18ID:???
ところで COLNAME='$配列名' なんてありなんかい?w
04744732006/11/14(火) 14:45:10ID:???
勘違い、取り消し
0475nobodyさん2006/11/14(火) 14:49:04ID:???
SqliteのサイトみたらやっぱSET節ないよ
カラムリスト+Valuesしかない
04764562006/11/14(火) 14:54:06ID:liCu6Ubc
では、配列の内容をレコードに書き出すにはどのように記述すれば
よいのでしょうか?
0477nobodyさん2006/11/14(火) 14:58:21ID:???
メソッドの名前に変数を指定することは
可能でしょうか?
0478nobodyさん2006/11/14(火) 15:07:36ID:???
>>476
列に追加していきたいならforeachで回しながらINSERTするだけ
行にまとめたいなら insert into table_name [(col_list, ...)] values('val', ...'); のようなSQL文字列を生成すればいい

>>477
こんなかんじで
$bar = 'myMethod';
$this->$bar();

配列なら $this->{$bar[index]}();
0479nobodyさん2006/11/14(火) 15:11:21ID:???
>>329
考えたら関数を動的に定義するだけのメソッドってのもありえるわ
ごめりんこ
0480nobodyさん2006/11/14(火) 15:27:25ID:???
>>476
だからserializeだっつーの。
せっかくみんながいろいろアドバイスしてくれてるんだから、
その一つ一つについて検討したかとか実行してみたとか、
具体的な返答をしてから新たな質問をしろよボケ。
答えは既にいくつも出てんだよチンカス。
0481nobodyさん2006/11/14(火) 15:30:14ID:???
配列をそのままレコードに保存したいならSerialize()だけど、
配列の内容をって言ってるからなあ。要領得ない質問だから分からんが
0482nobodyさん2006/11/14(火) 15:31:00ID:???
>>477
call_usr_func()とかeval()とかもあるでよ
04834562006/11/14(火) 15:46:20ID:liCu6Ubc
みなさまありがとうございます。とりあえず、再考します。
0484nobodyさん2006/11/14(火) 18:01:16ID:???
>>478
>>482

ありがとうございます。
早速使ってみます
0485nobodyさん2006/11/14(火) 20:20:23ID:???
>>468
あなたの回答じゃ役不足ですよ
0486nobodyさん2006/11/14(火) 22:17:10ID:CEutkM32
下らねぇ質問はここに書き込みやがれスレの元祖スレがみたいのですが
どこかにおちてませんか?
お金払ってまでしてみたくはありません
0487nobodyさん2006/11/14(火) 22:21:21ID:???
【にくちゃんねる】
0488nobodyさん2006/11/14(火) 22:25:37ID:???
初期シリーズは「下らねぇ」じゃなくて「くだらねぇ質問」だった
他にも試験的にくだ質たってたけどそっちはシラネ
0489nobodyさん2006/11/14(火) 22:29:49ID:???
ググレカスについて教えてください。
先日、某スレで質問したところ『ググレカス』と回答を頂きました。
初めて聞いた単語なのでググレカスのもつ動作?役割?意味?がわかりません。
ググレカスとは何ですか?
0490nobodyさん2006/11/14(火) 22:33:15ID:???
>>489
good google less cut spell.
0491nobodyさん2006/11/14(火) 23:09:07ID:???
    / ̄ ̄ ̄ ̄ ̄ ミ          
    /   ,――――-ミ           
  /  /  /   \ |          
  |  /   ,(・) (・) |          
   (6       つ  |          
   |      ___  |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   |      /__/ / <   なわけねーよ!
 /|         /\  \____________
04924562006/11/14(火) 23:12:57ID:liCu6Ubc
すいません。やはり、配列の内容をデータベースのレコードへの書き出し方が
分からないので教えてください。

foreachでループしたときの配列 $value
Array ( [0] => ツール [1] => tool [2] => tools )
Array ( [0] => ユーザー [1] => user [2] => ゆーざー )
Array ( [0] => ファイル [1] => file [2] => ふぁいる )

データベース名 word テーブル名 thesaurus
$db_open=sqlite_open("SQLiteManager/word");
foreach($value as $val) {
$encode_val = mb_convert_encoding($value,"EUC-JP","Shift_JIS");
sqlite_query($db_open, "INSERT INTO thesaurus(word,dougigo1,dougigo2,dougigo3,dougigo4,dougigo5,dougigo6)
VALUES ('$encode_val[0]','$encode_val[1]','$encode_val[2]','$encode_val[3]','$encode_val[4]',
'$encode_val[5]','$encode_val[6]')");
}
sqlite_close($db_open);
このようにしたり、他にも少々変更して試してみました。一応、レコードに書き出しては
いるようなのですが、意図したとおりではなく。。。
テーブルにword,dougigo1,dougigo2,dougigo3といったフィールドを用意し
Array ( [0] => ツール [1] => tool [2] => tools )の[0]をword,[1]をdougigo
といった具合に書き出して、他の配列でも同じように処理していきたいのです。

0493nobodyさん2006/11/14(火) 23:22:08ID:???
> foreach($value as $val) {
> $encode_val = mb_convert_encoding($value,"EUC-JP","Shift_JIS");

2行目の $value は $val のタイポ?
あとmb_conv...()は配列なんか受け付けないよ

foreach ($value as $val) {
 $encode_val = array();
  foreach ($val as $vah) {
   $encode_val[] = mb_conv...($vah, ...
   sqlite_query( ...
 }
}
0494nobodyさん2006/11/14(火) 23:23:28ID:???
>>462
意図した結果ではない結果を書けよバカ
04954932006/11/14(火) 23:26:38ID:???
コピペみすった

foreach ($value as $val) {
 $encode_val = array();
 foreach ($val as $vah) {
   $encode_val[] = mb_conv...($vah, ...
 }
 sqlite_query( ...
}
0496nobodyさん2006/11/14(火) 23:34:18ID:???
>>485
「役不足」という語について典型的な誤用をしてるな、お前。
知ったかぶって難しい言葉使う前に、辞書で調べるクセをつけるように。
04974562006/11/14(火) 23:40:48ID:liCu6Ubc
>>493
$encode = mb_convert_encoding($val,"UTF-8","Shift_JIS");
でした。しかし・・やはり駄目か
あと、495の方法を試させていただきましたが、全てnullになってしまいました。

>>494
ひとつのフィールドにframeと書かれるはずが、f,r,a,m,eというように
別々のフィールドに書き出されてしまいます。
0498nobodyさん2006/11/14(火) 23:55:16ID:???
>>492によれば $val は配列なんだからコンバートしようとした段階で
Warningが出ているはずだけど? 最初から疑問なんだけど何でエラーを無視してるの?

配列をmb_convert_encoding()に渡すことは出来ない
foreachでまわして一つずつ変換する必要がある

一文字ずつ出力されるのは $encode_val が配列ではなく文字列になってる証拠
$str = 'frame'; とある場合、$str[0] は f だし、$str[1] は r

変数の内容が期待したものかどうか、適当な位置で echo や var_dump() して
確認しながら作業しなきゃだめ
0499nobodyさん2006/11/15(水) 00:01:43ID:???
$double = array( array('a', 'b', 'c'), array('A', 'B', 'C') );

foreach ($double as $single) {
}

foreach ($double as $single) {
foreach ($single as $string) {
}
}
0500nobodyさん2006/11/15(水) 00:02:09ID:???
おまえらに必要なもの

<form method=GET action=http://www.google.com/codesearch>;
<input name=q value="">
<input type=submit value="Search Code" name=btnG>
</form>
0501nobodyさん2006/11/15(水) 00:04:59ID:???
>>468=<<496乙
論点をすりかえなくていいよ。
0502nobodyさん2006/11/15(水) 00:07:54ID:???
>>493

あぁ、明日の夜まで解決しなかったらこたえてやる。
もうねむいから回答保留する
0503nobodyさん2006/11/15(水) 00:17:09ID:ylGAVv6P
テンプレートエンジン「Smarty」についての質問なのですが....

$smarty -> assign("name", $name);
$smarty -> display("template.tpl");
これだと、「<, >, &」などがHTMLエンティティに変換出来ないので心配です。
マニュアルを読んでみたのですが、Smartyサイドで変換することは出来ないのでしょうか?

$smarty -> assign("name", htmlspecialchars($name));
こうすると、何も出力されないのです(エラーさえも)。
0504nobodyさん2006/11/15(水) 00:18:16ID:???
>>503
http://sunset.freespace.jp/Smarty/SmartyManual_2-6-6J_html/language.modifier.escape.html
0505nobodyさん2006/11/15(水) 00:22:53ID:ylGAVv6P
>>504
おお! ありがとうございました。
0506nobodyさん2006/11/15(水) 00:27:27ID:???
配列をvar_exportしてreturnをつけたファイル
-----
<?php return array (
...
); ?>
-----
があって、これを
<?php
$a = require('hoge.php');
?>
として$aに読み込みたいんですが、実行すると標準出力にファイルの中身が吐かれてしまいます。
何が間違ってるんでしょうか?
0507nobodyさん2006/11/15(水) 00:33:05ID:???
>>492
テーブル設計がおかしい
Array ( [0] => ツール [1] => tool [2] => tools ) とあるとき
ツールの同意語を検索するのは容易だが、tool の同意語は検索しづらい
全ての組み合わせを登録する必要がある

が、普通こういうテーブルは作らない。正規化をググるべき
05085062006/11/15(水) 01:01:26ID:???
もしかして、凄く大きいファイルをrequireするとエラーになったりするんでしょうか?
0509nobodyさん2006/11/15(水) 01:03:15ID:???
何がしたいか知りませんが、require/includeにそのような用法はありません
0510nobodyさん2006/11/15(水) 01:14:33ID:???
何がしたいかというと、そもそも「<?php return array (...); ?>」という形式で
静的なデータを持っているウェブアプリがあって、このデータを、
他のデータベースから引っ張ってきた対応する日本語に書き換えるスクリプトを書きたいんです。

そのウェブアプリ自体は$a = require('hoge.php');の形で、そのデータを使っているんですが、
自分でやるとできないんです。
どうも、hoge.phpのサイズが小さいうちは読み込めるのですが、500KBになるとエラーを出すようで。

実のところ、phpは全然分かっていないんですが、何か設定みたいのがあるんでしょうか?
0511nobodyさん2006/11/15(水) 01:21:16ID:???
>>506
requireは読み込みしてメインルーチンに取り込みであって
実行して結果を返すようなものじゃないから
requireファイルにreturnとか書いても無駄。

requireするファイルの中で
$a = array(...);
と書くか、
変数名を固定にしたくない場合は
function hoge() {
return array(...);
}
と関数化して
require('hoge.php');
$a = hoge();
と読み込んだ後に関数実行するとか。
関数名も固定にしたくないと言われたら知らん。

>>508
requireするファイルは特にサイズの問題はないと思うが、
PHPで確保できる配列のサイズには限界があるので
requireの中身が巨大な配列だとメモリ確保できなくて
エラーになることはある。(その場合、エラーメッセージが出る)
05125112006/11/15(水) 01:23:42ID:???
ごめん。嘘書いた。requireファイルからreturnで値を返すことは可能だった。
0513nobodyさん2006/11/15(水) 01:25:09ID:???
>>510
エラーメッセージは何になってる?
500KBくらいならメモリ確保できないってこともないと思ったが、
そもそもそれ以前にメモリ食いすぎのプログラムなのかもね。
0514nobodyさん2006/11/15(水) 01:27:30ID:???
>>509
ttp://www.php.net/manual/ja/function.include.php
> 値の返し方: 読み込まれたファイル内では、ファイルの実行処理を終了し呼出側の スクリプトに戻るために
> return()文を実行することが可能です。 読み込まれたファイルから値を返すことも可能です。
> 例 16-9. include()とreturn()文
> return.php
> <?php
> $var = 'PHP';
> return $var;
> ?>
>
> noreturn.php
> <?php
> $var = 'PHP';
> ?>
>
> testreturns.php
> <?php
> $foo = include 'return.php';
> echo $foo; // 'PHP'と出力されます
> $bar = include 'noreturn.php';
> echo $bar; // 1が出力されます
> ?>
0515nobodyさん2006/11/15(水) 01:30:09ID:???
なんか、元のファイルが「<?php return array(....); ?>」ではなくて
「<? return array(...); ?>」となっているのが原因のようです。
「<?php」にすると、requireで読み込むことができました。

一応、http://jp2.php.net/manual/ja/function.include.phpの例16-9で似たようなことはしているようです。
ただ、皆さんのおっしゃる通りあんまり正攻法ではないようですね。
どちらにせよ、なんで「<?php」になってないのに、元アプリで読み込めているかは謎です。
0516nobodyさん2006/11/15(水) 01:43:05ID:???
>>515
ああ、そういうことか。
それはphp.iniの設定でshort_open_tagsってのがあるため。
これをONにすると<? 〜 ?>形式でのPHPコードが許可される。
(OFFだと単なるHTMLとして扱われるため、そのまま画面に表示されてしまう)
記述が楽で<?=変数?>というテンプレートモドキの書き方もできるメリットがあるが
XMLなど他の<? 〜 ?>を使う言語との相性が悪いので推奨はされていない。
0517nobodyさん2006/11/15(水) 01:47:59ID:???
>>514
いやStdoutを開くってやつ
0518nobodyさん2006/11/15(水) 01:53:32ID:???
>>517
話が見えない
0519nobodyさん2006/11/15(水) 01:55:00ID:???
>>516
なるほど。
色々勉強になりました、ありがとうございます。
0520nobodyさん2006/11/15(水) 02:28:58ID:wkc8v1DY
昔これってオッパイ括弧に直せってエラーでなかったっけ。
OKになったのか?
$str = "asdf; echo $str[2];
0521nobodyさん2006/11/15(水) 02:46:13ID:???
>>520
本当に下らないなおっさんよ・・・
0522nobodyさん2006/11/15(水) 03:34:43ID:???
>>492
例えばカラム名noの値が2、nameの値にうんこ、を入れたい時、配列のキーをカラム名にして
$value['no'] = 2;
$value['name'] = "うんこ";
foreach($value as $key => $val) {
$hoge[] = $key;
$hogehoge[] = "'{$val}'";
}
$k = implode(" ,",$hoge);
$v = implode(" ,",$hogehoge);

できあがった$kと$vをクエリに使ってみてはどうか。
05235222006/11/15(水) 03:37:33ID:???
最後の二行は
$k = implode(", ",$hoge);
$v = implode(", ",$hogehoge);
のほうがいいか。動作に支障はないけど。
0524nobodyさん2006/11/15(水) 03:46:46ID:???
>>492
あっちでも言ってるけど
$valueをforeachした$valは配列
配列をmb_convert_encodingはできぬ

MLマルチ乙
0525nobodyさん2006/11/15(水) 03:55:28ID:???
配列を一括コンバートするならmb_convert_variables()だね。
0526nobodyさん2006/11/15(水) 04:01:45ID:???
オントロジーの定義データをRDBに詰めるのって楽じゃなさそう
結局は双方向リストの束かしらん
05274962006/11/15(水) 04:20:37ID:???
>>501
>>>468=<<496乙
>論点をすりかえなくていいよ。

ハァ?? 何言ってんのお前??? 俺は468ではないけどwww
単にお前の間違った単語の使用法を指摘してやっただけだ。感謝しろ。
0528nobodyさん2006/11/15(水) 04:49:09ID:???
つか、その誤用は典型的なものともまた違うな。
そんな変な使い方はなかなか見ないよね。
0529nobodyさん2006/11/15(水) 07:13:03ID:???
スレ違いぽいんですが、お願いします。
当方、HTML→CSS→PHPとあらかたマスターしてきたのですが、次に何を勉強しようかなと迷ってます。
PHPは力技も使えばほとんどやりたいことはできます。
サーバー関連(Apache?UNIX?よくわからんす)の勉強か、ajaxかXMLあたりをやろうと思うんですが、どれがどんな特徴があるか、私的な意見になると思いますが、聞かせてもらえるとありがたいです。
05305292006/11/15(水) 07:14:15ID:N4vSt0D0
IDだします。JSも多少使えます。
0531nobodyさん2006/11/15(水) 07:47:00ID:???
JAVA
0532nobodyさん2006/11/15(水) 07:55:17ID:???
あらかたマスターしたという自信があれば
人に聞くまでもあるまいに。
思うがままに
0533nobodyさん2006/11/15(水) 08:01:36ID:???
>>529
何がしたいのかよく読めない。
ネットワークエンジニアの勉強したいのか?プログラマの勉強したいのか?
どれがどんな特徴といっても、分野が違うから困るんだよね。

Apache,Unix,Ajax,XMLと名前を出してるということは、
この言葉に興味があるってことでしょ?
HTML→CSS→PHPときてるなら、前者2つは全く違う分野で、
覚えるべきことが多くなってややこしくなるから触れないほうがいいと思う。
残るはAjaxとXML好きなほうやればいいよ。
Ajaxやるなら、まずはJavaScript勉強すればいい。
ついでにFlashのActionScriptと類似点も多いので、Flashも同時にマスター。
XMLはいろいろ使えるけど、勉強してきた経緯からして、
XSLTと組み合わせて、XMLでWebページを作る技術でも身につければいいと思う。
0534nobodyさん2006/11/15(水) 09:12:48ID:???
世間の流れは、ajaxだわな。
0535nobodyさん2006/11/15(水) 09:14:06ID:???
そういやXSLTって聞かなくなったなぁ
0536nobodyさん2006/11/15(水) 10:16:33ID:N4vSt0D0
>>531-534
なるほど、参考にします。
まぁ目標みたいなものもないので(既に仕事としては考えてないので)マターリ修得してこうかなと思ってました。
JAVAという手もありましたね…とりあえずはJavaScriptをガッチリやってからAjaxを勉強してみたいと思います。レスありがとうございました。
0537nobodyさん2006/11/15(水) 11:30:37ID:DsSvM2t5
SQLiteについてお聞きしたいことが。
SQLiteはEUC-JPを使うはずなのに、Shift-JISから
EUC-JPに変換して・・・ mb_convert_encoding($abc, "EUC-JP", "Shift_JIS")
文字化けがあるのは何故なのでしょうか?
0538nobodyさん2006/11/15(水) 11:34:21ID:???
>>537
よくは知らないけどSQLは一般的にUTF-8だと思いますよ。
0539nobodyさん2006/11/15(水) 11:36:39ID:???
クソッタレニートか
0540nobodyさん2006/11/15(水) 11:41:39ID:DsSvM2t5
>>538
ありがとうございました。確かにUTF-8で文字化けしなくなりました。
本にSQLiteはEUC-JPを使うと書かれていたので、ひっかかってしまいました。。。
0541nobodyさん2006/11/15(水) 11:43:46ID:???
>>537
SQLiteは関係ない。
Shift-JISからEUC-JPに変換する時に化ける。
0542nobodyさん2006/11/15(水) 11:59:36ID:???
>>529
では、PHPを使ってWeb版ギコナビ作ってくれ
データはもちろんDBな
0543nobodyさん2006/11/15(水) 12:52:36ID:???
functionごとにファイルを分けて使用時にrequire_onceは
オブジェクト指向と言えますか?
クラスとかはよく分かりません。
05445292006/11/15(水) 13:43:05ID:N4vSt0D0
>>542
一応マジレスしときます。
鯖と2chの仕様(もしくは参考サイト)とあとお金を用意してくれれば作りますよ。DBもMySqlでよければ扱えます。
2chについてはあまり詳しくないんで(ギコナビってなんだろうと思ってググった)、正直仕様を調べる時間と手間が面倒ですね。マジな話ならその分の金をいただきます。
スレ違いに反応スマソ。
0545nobodyさん2006/11/15(水) 13:48:44ID:???
>>544
なんじゃそりゃ
勉強なんだから自分で調べろよ
それに金はお前が払うんだろ
0546nobodyさん2006/11/15(水) 13:53:07ID:???
でもさ、なんでWeb版ギコナビなんだ?
p2だっけ?Web版2chブラウザなら既にあるじゃん
0547nobodyさん2006/11/15(水) 13:59:09ID:uyXfKD17
タイム関数みたいなのってあるのでしょうか?

「フォームのsubmitを押してから○秒後に送信」とかやりたいのですが、
手持ちのリファレンスには記載がありませんので、質問しました。
0548nobodyさん2006/11/15(水) 14:00:42ID:???
>>544
糞仕様のDB設計とオナニー程度のコードしか書けない
ボウヤに金払う奴なんていないだろw
0549nobodyさん2006/11/15(水) 14:02:23ID:???
>>547
普通に考えてサーバーサイドなスクリプトでそんな事出来るわけないだろw
0550nobodyさん2006/11/15(水) 14:02:46ID:???
>>547
sleep()使えばいいんじゃないかな
0551nobodyさん2006/11/15(水) 14:03:16ID:???
>>547
そんな変な物、何の役に立つんだ?

JS使えば要求仕様は満たせるけど・・板が違う
0552nobodyさん2006/11/15(水) 14:17:20ID:???
>>551
PHPでのWEBメール一括送信とかに利用出来ないかなって思いまして。
クッキーとか使ったら出来るかな?って思ったけど無理だったし。
JSは基礎知識しかないので、出来ればPHPでなんとかならないかと。。

とりあえずもう少し調べます
05535472006/11/15(水) 14:21:48ID:???
>>550
すみません、レス見逃してました。
そして、550さんのいうsleepをググったら下記のような方法で出来ました!
echo date("h:i:s");
sleep(10); //10秒遅らせる
echo date("h:i:s");

アドバイスありがとうございました
0554nobodyさん2006/11/15(水) 14:25:05ID:???
>>544
これは酷い。 まぁPGかじり始めは何でも出来ると思って自分に酔う時期なんだろうね。
俺も全く同じ道のり(HTML→CSS→PHP)辿ったが、
PHP5をやる時にオブジェクト指向と言う概念がよく分からなくて調べた時は自分の未熟さを恥じた過去があったりなかったり…。

まぁPHPとSQL使えるがサーバは不明てことは金は取らん方がいいよ。
金取る以上XSSやらSQLインジェクションみたいな脆弱性が書いたコードの中に見つかったらどうなるか分かってるよね?

と偉そうな事言ってる俺もPHP→Linux弄り(FC、CentOS、BSD)までの半人前だからアレなんだけど。
0555nobodyさん2006/11/15(水) 14:29:13ID:???
これをもっとスマートに書く方法ってある?教えてえらいひと。
$config = parse_ini_file('config.ini', true);
$config = $config['hoge'];
0556nobodyさん2006/11/15(水) 14:30:22ID:???
金とるといっとけば、玄人っぽい気がすると思ってた時期が俺にもありました。
0557nobodyさん2006/11/15(水) 14:31:38ID:???
554みたいに思っている人に金出して依頼したのに
まともなもの作れなくて投げ出されたわw
05585422006/11/15(水) 14:33:05ID:???
>>544
お金取るのかよ(`ω´)
取るとして、要求定義書〜テスト仕様書までのドキュメントはもちろん付いてくるんだよね?
(でも、お金払うぐらいなら自分で作るよ Javaでw)
>>546
2ch以外にも使いたい掲示板があるので・・・あと右上のアニメーションが欲しい
0559nobodyさん2006/11/15(水) 14:35:04ID:???
俺も昔2chで金出して依頼したら
ばっくれられた事あるよ
最初銀行振り込みで話付いてたのに、書留で送ってくれとか言い出して
ちょうど、イーバンクの振込み入金口座が廃止された時期だったから
身元明らかにしないで金振り込ませてバックレようとしたみたい
0560nobodyさん2006/11/15(水) 14:38:47ID:???
そもそも2chで依頼とかする方が馬鹿
0561nobodyさん2006/11/15(水) 14:43:19ID:???
スレにメアド晒すと、私もここに頼んで作ってもらいました
みたいな自作自演メールが来るよ

きょうつけて!
0562nobodyさん2006/11/15(水) 14:48:42ID:???
>>544
>ならその分の金
逃げの文句には最適ですね。
0563nobodyさん2006/11/15(水) 15:06:44ID:DsSvM2t5
こちらで、配列内容をDBのレコードへ書き出すということについてお聞きした者
ですが。

if ($db = sqlite_open("SQLiteManager/word", 0666, $sqliteerror))
{
$value2 = array(array( 'ツール', 'tool', 'tools' ),
array( 'ユーザー', 'user', 'ゆーざー' ),
array( 'ファイル', 'file', 'ふぁいる' ));
foreach($value2 as $nkey => $arrValue)
{
foreach($arrValue as $nkey2 => $strValue)
{
$arrValue[$nkey2] = mb_convert_encoding($strValue, "UTF-8", "Shift_JIS"); //EUC-JPでなくUTF-8
}
$sql = <<< EOM
INSERT INTO thesaurus(word, dougigo1, dougigo2, dougigo3) VALUES
('{$arrValue[0]}', '{$arrValue[1]}', '{$arrValue[2]}', '{$arrValue[3]}');
EOM;
sqlite_query($db, $sql);
}
}
sqlite_close($db);
上記のように、配列の内容を直に書くと、レコードに書き出せるのですが、
配列が格納された変数($value)を指定するとうまくレコードに書き出されません。
どのようにすればよろしいでしょうか?
0564nobodyさん2006/11/15(水) 15:08:36ID:???
いいかげんに死ね
0565nobodyさん2006/11/15(水) 15:18:55ID:???
>>563
まず、どの不具合の発生箇所を特定しなよ。
特定できたら、その箇所に対して別のコーディングが出来ないか試してみるとかすれば?

スレタイに見合った素晴らしい下らない質問だけど、
回答する度に、新たな、しかも大して進歩の無い質問を繰り返されるといい加減だれも相手しなくなるよ
0566nobodyさん2006/11/15(水) 15:22:06ID:DsSvM2t5
これは失礼。もっと粘るようにします。
0567nobodyさん2006/11/15(水) 15:26:01ID:???
エコーデバッグしろ
そして氏ね
0568nobodyさん2006/11/15(水) 15:32:36ID:DsSvM2t5
>>565
障害箇所はわかってます。別のコーディングができないかどうかも
試しました。しかし、うまくいかないんです。
0569nobodyさん2006/11/15(水) 15:38:30ID:???
答える気がないならスルーしろやw
0570nobodyさん2006/11/15(水) 15:40:59ID:???
>>560
アホだからしかたない。
>>544も本気にしてないみたいだし。いいんじゃね。
0571nobodyさん2006/11/15(水) 15:45:17ID:???
たった10分で「粘った」ですか?
SQLliteは知らないけど
>>567が言うように、エコーバックしたSQLステートメントを
クライアント通して直接DBに対して実行してみた?
その場合、SQLLiteからはどんな反応(メッセージ)が帰ってきた?

「わかんない、わかんない」じゃマジで誰も相手しなくなるよ
0572nobodyさん2006/11/15(水) 15:48:57ID:???
もっと粘って質問繰り返すって意味だよ
0573nobodyさん2006/11/15(水) 15:50:20ID:???
>>566
粘るといいつつどうせすぐにメーリングリストへ
05745632006/11/15(水) 15:50:26ID:DsSvM2t5
なんとか解決しました。弱気になっていたけど、奮起させてくれて
ありがとう。
0575DsSvM2t52006/11/15(水) 15:51:41ID:???
うほ(゚∀゚)釣れた釣れた。
0576nobodyさん2006/11/15(水) 15:53:17ID:???
この馬鹿はうまくできないじゃ意味が分からんとか
なぜエラーをスルーするんだとかいうレベルじゃない
0577nobodyさん2006/11/15(水) 15:54:02ID:???
小学生相手に何をムキになっているのやら・・・
0578nobodyさん2006/11/15(水) 16:00:53ID:???
なんか頭が痛くなるようなデータ構造だな。Wordが主キーとかIndex無しとか。
0579nobodyさん2006/11/15(水) 16:08:57ID:???
何故語彙の関係がこんなBBSのログみたいになってしまうのかw
3年に一人の逸材だ
0580nobodyさん2006/11/15(水) 16:12:13ID:???
>>578
俺ならwordだけを一つのテーブルにする。もちろんid付き
で同義語テーブルとidでリレーション
05815442006/11/15(水) 16:14:31ID:N4vSt0D0
レスするか迷ったけど最後に。

>>558
当たり前でしょ、別に依頼を受けてるわけでもないのに、知らん奴に匿名でいきなり依頼されて、自分の時間裂いてまでタダで作る奴は普通はいないでしょ。

これは釣られてるのだろうかw
どうせまた煽りレスがつくんでしょうね。いい回答者さんもたくさんいるのに少数の煽りでスレが荒れる(しかも自分のレスで)のは嫌な気分ですね。
0582nobodyさん2006/11/15(水) 16:19:16ID:???
生きてる価値ぁるのぉ〜?
05835632006/11/15(水) 16:19:17ID:DsSvM2t5
>>578
データベースを初めて使う素人に上手なデータベースの作り方を
お教えください。
0584nobodyさん2006/11/15(水) 16:24:29ID:???
これは釣りとしか思えん
0585nobodyさん2006/11/15(水) 16:26:47ID:???
>>583
言われたことを全部やって、その結果を全部書けば教えてやるよ。やらないうちはもうくんな。
0586nobodyさん2006/11/15(水) 16:26:50ID:???
>>581
お前もついでに氏ね。厨房が来るような板じゃないですよ

>>583
自分で調べてから出直して来い。
大体日本語が可笑しい時点でDBが何か把握できてないんじゃないの?

>上手なデータベースの作り方
何これ?料理教室にでも通うつもりか?
0587nobodyさん2006/11/15(水) 16:27:58ID:???
>>581
煽りとか以前に
お前にオープンソースを使う価値はネェヨ

>>583
おまえ、自分で努力とかしないの?
0588nobodyさん2006/11/15(水) 16:29:24ID:???
>>581
>どうせまた煽りレスがつくんでしょうね。

当たり
0589nobodyさん2006/11/15(水) 16:34:31ID:???
>>581
友達いる?

>>583
煽られて頭にくるだけの気力があるなら、もう少し真面目にPHPに取り組んだら?
0590nobodyさん2006/11/15(水) 16:35:26ID:???
むしろ銀河に向かって飛べよ
0591nobodyさん2006/11/15(水) 16:38:43ID:???
ここが銀河なわけだがw
0592nobodyさん2006/11/15(水) 16:40:51ID:???
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
0593nobodyさん 2006/11/15(水) 16:41:17ID:???
ここにいる連中は四六時中パソコンにべったりで、他人の非難や中傷
をする奴が多いな。そんな暗いことやってて楽しいのか?
0594nobodyさん2006/11/15(水) 16:42:00ID:???
自問自答乙w
0595nobodyさん 2006/11/15(水) 16:48:00ID:???
>>594
きたきた。お前みたいな奴のことを言うのだよ。
0596nobodyさん2006/11/15(水) 16:50:27ID:???
>>595
煽ってる時点でお前も同類だろ
基地外は>>581,>>583で十分だ
ウザイからレスすんなよ

05975952006/11/15(水) 16:53:18ID:???
>>596
おれを煽ってるからお前も同類だな。
0598nobodyさん2006/11/15(水) 16:55:02ID:???
また変なの沸いたよ。
こういう奴に限って四六時中パソコンにべったりで、他人の非難や中傷しかしない暗い奴なんだよな。
こんな事やってて楽しいか?
0599nobodyさん2006/11/15(水) 16:58:53ID:???
>>598
それに加わったお前も仲間入りだな。おめでとう。
0600nobodyさん2006/11/15(水) 16:59:35ID:???
>>593のように他人を卑下して快楽を得ることに呵責を感じないタイプの
人間はいる、というか自分がそうなんだから、楽しいか?なんて聞く必要は
ないと思うけど?
0601nobodyさん2006/11/15(水) 17:02:33ID:???
今日は池沼が多いですね。
0602nobodyさん2006/11/15(水) 17:04:34ID:???
>>597
お前さ、何がしたいの?
真面目に回答をしようとしている奴だっているのに、そんな人に対して失礼じゃないのか?
0603nobodyさん2006/11/15(水) 17:05:19ID:???
手取り足取り教えて欲しいんだよ。察してやれ
0604nobodyさん2006/11/15(水) 17:07:29ID:???
>>593
多くないけど?
同類とか言ってることから、お前が「四六時中パソコンにべったりで、他人の非難や中傷
をする奴」だってことは真であるとして、それがどうしたの?
0605nobodyさん2006/11/15(水) 17:08:12ID:???
子供の喧嘩ではあるまいし
0606nobodyさん2006/11/15(水) 17:11:03ID:???
>>581も>>593も同じ様な変な改行の仕方をしていますね。

sageを覚えた感想はいかがですか、根暗の人
0607nobodyさん2006/11/15(水) 17:11:06ID:???
どうして欲しいのかよく分からんやつだな。恐らくは自分でも分かってないんだろう。
0608nobodyさん2006/11/15(水) 17:11:17ID:???
子供の喧嘩だよ。スルーできない時点でみんなガキだ。
0609nobodyさん2006/11/15(水) 17:12:48ID:???
どこがどういう風に喧嘩なんだろう
>>608が一方的にわけのわからないことを喚いてて
まわりは理解に苦しむという展開だが
0610nobodyさん2006/11/15(水) 17:16:10ID:???
情けない奴
0611nobodyさん2006/11/15(水) 17:18:11ID:???
>>608
つーことはスルーしたほうがいいって思ってるんじゃん
なんで突如煽り始めたの?
0612nobodyさん2006/11/15(水) 17:18:16ID:???
>>609
同意。
喫茶店で雑談してたら、横からDQNの一行が大声ではしゃぎだして迷惑してる感じだな。
0613nobodyさん2006/11/15(水) 17:19:10ID:???
大人になったほうがいいと思ってるなら何故煽る?
0614nobodyさん2006/11/15(水) 17:20:39ID:???
>>613
だから喋りかけるとまた何か言い出すから(ry
0615nobodyさん2006/11/15(水) 17:32:36ID:N4vSt0D0
みんな必死だなあ
0616nobodyさん2006/11/15(水) 17:41:02ID:???
>>593から「他人を非難すること」に不満をもっていることが分かるが、なぜ
この流れでそんな主張が飛び出したのか?

質問スレで「非難・中傷」を否定するということは、その逆のことを要求している、
つまり「丁寧に回答するのが当然だ、煽りなど許せない」と思っているということになる

期待する回答がえられず、逆切れして荒らしたり捨て台詞吐いたりする質問者の類と
見るのが合理的だろう。わざわざIDを隠す必要があったのもそのためだ
0617nobodyさん2006/11/15(水) 17:43:09ID:???
>>615
ついさっきまで必死だった奴が何言ってんだか?wwwwwww
0618nobodyさん2006/11/15(水) 17:44:35ID:???
うぜえよゴミッカス
0619nobodyさん2006/11/15(水) 17:46:13ID:???
なぜ「みんな必死だ」なんて感想を、しかも感嘆文で書く必要があったのか
「みんな」は必死だが、自分はそうではないよ、とアピールしなきゃいけないものかね
書き込みは状況と照らすと意外に多くのことが分かるものだ
0620nobodyさん2006/11/15(水) 20:28:41ID:???
>>616

俺は>>593ではないんだけどさ、
よく分からんが、あんた見たいにネチネチ相手がいかにダメなやつか
説明するやつに、普通なやつはいないってことは確か

韓国ではもっと深刻的な問題になってるぞ

所詮2chだからな、まともか、能力ある人間は毎日チェックして
人を中傷するようなこといわないだろうな
0621nobodyさん2006/11/15(水) 21:09:54ID:???
なんだこの馬鹿w
0622nobodyさん2006/11/15(水) 21:12:24ID:???
能力あって、人付き合いがヘタなやつが、けっこう2chに多数いるわけ
だがw
0623nobodyさん2006/11/15(水) 21:13:08ID:???
>>620が言いたいことをもっとストレートに書いてやろうw

ここにいる連中は四六時中パソコンにべったりで、他人の非難や中傷
をする奴が多いな。そんな暗いことやってて楽しいのか?

0624nobodyさん2006/11/15(水) 21:14:55ID:???
ワロタ
0625nobodyさん2006/11/15(水) 21:48:28ID:???
ここまで読んだ

つもりになって全部読み飛ばした
0626nobodyさん2006/11/15(水) 22:06:05ID:???
ボランティアで回答できるおまえらは偉いよ。
IE7も無料でデバッグしてたらさらに偉いよ(笑)
0627nobodyさん2006/11/15(水) 22:49:38ID:kZ4689iH
WEB開発において、PHPの関数を全部使えるようにする意味はありますか?
0628nobodyさん2006/11/15(水) 23:01:53ID:???
あります。
0629nobodyさん2006/11/15(水) 23:03:50ID:???
>>627
ない。

反例
http://www.php.net/manual/ja/ref.ncurses.php
http://www.php.net/manual/ja/ref.printer.php
06306272006/11/15(水) 23:10:30ID:kZ4689iH
>>628さんと>>629さんのどちらのレスが有力なのかがわかりません。
0631nobodyさん2006/11/15(水) 23:12:28ID:kZ4689iH
男ならPHPのマニュアルを暗記するべきですか?
0632nobodyさん2006/11/15(水) 23:13:23ID:???
>>630
Ncurses 端末画面制御関数を使ったWebアプリがあるというなら、
どういうものなのかぜひとも聞きたい。
0633nobodyさん2006/11/15(水) 23:33:57ID:???
鯖ローカルで動かす管理ツールとか普通にあるだろ
0634nobodyさん2006/11/15(水) 23:39:58ID:???
HTTPD作るのもWEB開発といえばそうかもしれないけど
そう偏屈じーさんになる理由もないんじゃないの
0635nobodyさん2006/11/15(水) 23:44:39ID:???
>>634
管理ツールだからhttpd.confの編集をするCUIツール(curses使用)をWebアプリと呼ぶ、みたいな喩えのほう適当だな
0636nobodyさん2006/11/16(木) 00:05:25ID:???
関数を覚えるのはナンセンスとしても、どんなモジュールがあるのかマニュアルに目を通しとくのは
いいんじゃないかなあ
文字列処理や配列関数なんかは皆一通り知ってると思う
実際全体の何割くらい使ってるんだろうね
0637nobodyさん2006/11/16(木) 00:37:28ID:???
ちょっとお馬鹿な質問にお付き合いください。
EXCELのデータを取り込みたいんですが、検索したところEXCELにODBCで
接続して云々・・というページを見たのでPHPのODBC関数で接続を
試みています。
EXCELが入っているマシンだとドライバも一緒に入るので、以下のような
スクリプトを書いてみるとエラーは返りませんでした。

<?php
$conn = odbc_connect( "DRIVER={Microsoft Excel Driver (*.xls)}; DBQ=hoge.xls;", "", "");
if (odbc_error()) {
echo odbc_errormsg($conn);
}
?>

ktkrと思い、以下のコードを加えて見ましたが、エラーが発生してしまいます。

$sql = "select count(*) from Sheet1";  // Sheet1のデータ件数が取れるかな?
$rst = odbc_exec($conn, $sql);
if (odbc_error()) {
echo odbc_errormsg($rst);
}

恐らくシートの指定方法が間違っていると思うのですが。

そもそもこのようなことはできるのか?
できる場合は簡単なサンプルを見せていただけませんでしょうか。

よろしくお願いします。
0638nobodyさん2006/11/16(木) 00:48:39ID:???
Windows XP に Zend Studio をインストールしてみました。
mb_language(); を呼ぶと Fatal error: Call to undefined function mb_language() in ...
となってしまいます。
mb_string.dll はパッケージ内には見当たりません。
追加でコンポーネントをインストールしなければいけないのでしょうか?
それとも設定でしょうか?

0639nobodyさん2006/11/16(木) 00:55:37ID:???
>>637
http://pc8.2ch.net/test/read.cgi/php/1150088761/928
0640nobodyさん2006/11/16(木) 01:03:29ID:???
エクセル側でSheet1がテーブル名として設定されてないとか?
0641nobodyさん2006/11/16(木) 01:07:15ID:???
>>638
入ってるはずだけどねえ
まあ普通にオフィシャルから落としてきてextフォルダに放り込んでphp.iniの該当個所を
コメントアウトすれば動くんじゃないかしら
06426372006/11/16(木) 01:09:34ID:???
>>639
すみません。
今手元に再現できる環境が無いので。
明日ちゃんとしたエラーメッセージを張ります。

>>640
うーん。よく分かりません。
EXCEL側でテーブル名としてSheet1を登録する必要があるのですか?
ちょっと調べてみます。
0643nobodyさん2006/11/16(木) 01:12:41ID:???
dll非表示とか
0644nobodyさん2006/11/16(木) 01:28:09ID:???
>>637
ADOだとワーキングシートは[sheet1$:]?だっけ?
ODBCはしらんけどPHPよりM$のマニュアルに相談したほうがいいかもよ。
0645nobodyさん2006/11/16(木) 01:30:33ID:???
Zendってお布施してもサポートないのか
06466372006/11/16(木) 01:38:25ID:???
>>644
そうなんです。
まさにM$のVBとかC#での作法が分かっていないための質問でした。
AccessのサンプルはPHPのマニュアルにもあるのですが・・・。
明日もうちょっと気合を入れてググッてみます。
0647nobodyさん2006/11/16(木) 04:08:47ID:???
http://jp-typo3.com/
欧州大人気の超高機能CMS TYPO3はついに日本に公開

TYPO3はPHP、MySQLによって実装されているLAMPアプリケーションです。
大規模サイトを構築することを想定した高機能CMSで、リッチテキストエディタに
よるコンテンツのWISIWYG編集、キャッシング、サイト内検索、静的HTMLの
出力など対応です。

# 2000個以上の自由に使える機能拡張モジュール
# 文書・プロジェクト管理・オンラインショップなど他多数
# サイト分析、アドミンツール、ワークフロー
0648nobodyさん2006/11/16(木) 06:49:55ID:???
なんでLAMPと言い切れるのかが謎いな。
0649nobodyさん2006/11/16(木) 09:28:38ID:???
いまどき、リッチテキストエディタ
ってのがいいなw
0650nobodyさん2006/11/16(木) 12:39:04ID:GG+ftSx9
現在ディレクトリ内のファイルの更新日時一覧を↓のように
ファイルを読み込んだ順に表示しているのですが、

foreach($allfile as $temp){
print "$temp -";
echo date("m/d H:i:s",filemtime($temp));
}

これを更新日時が新しい順に表示するようにするには
どのようにしたらよいのでしょうか?

PHP4です。
0651nobodyさん2006/11/16(木) 12:43:01ID:73q/908c
各要素を
$arr[] = filemtime($temp);
に入れてソートしてからforeachすればいいのでは?
0652nobodyさん2006/11/16(木) 12:45:03ID:???
$tempが数値なんだろうからそれをソートしてからまわせば良いだろ
0653nobodyさん2006/11/16(木) 12:46:16ID:???

sort($allfile);
foreach($allfile as $temp){
print "$temp -";
echo date("m/d H:i:s",filemtime($temp));
}
0654nobodyさん2006/11/16(木) 12:59:03ID:73q/908c
filemtime();
してるからファイル名じゃね?
0655nobodyさん2006/11/16(木) 13:03:45ID:???
あ、ほんまやw
06566502006/11/16(木) 13:15:24ID:GG+ftSx9
$tempはファイル名です。
まだてこずってます・・・

みなさんありがとうございます
0657nobodyさん2006/11/16(木) 13:19:17ID:???

foreach($allfile as $temp){
$t = filemtime($temp);
$in[$t.$temp] = "$temp -".date("m/d H:i:s",$t);
}
sort($in);

とでもしといたら
06586502006/11/16(木) 13:22:12ID:GG+ftSx9
みなさん、ありがとうございます。

結局usortを使い
function new_sort($xx , $yy){
$xx1 = date("mdHis",filemtime($xx));
$yy2 = date("mdHis",filemtime($yy));
if($xx1 > $yy2){ return -1;}
elseif($xx1 == $yy2){ return 0;}
else{ return 1;}
}

usort($allfile ,"new_sort");
foreachでまわす前に
としてみたのですが、効率わるいですかね?
0659nobodyさん2006/11/16(木) 13:45:14ID:73q/908c
foreach($allfile as $key => $temp){
$arr[$key] = filemtime($temp);
}
$arrを値でソート
foreach($arr as $k => $v){
$arr2[] = $allfile[$key];
}
print_r($arr2);

とか?適当に書いたから間違ってるかも。
0660nobodyさん2006/11/16(木) 13:57:57ID:0z6MBXcS
ここで聞いていいのかな?

現在テキストファイルに出力したテーブルをCOPYコマンドでテーブルに入れるという処理をやっているのですが、
その方法は、VBからOBDCを使用してADODB.ConnectionのExecuteコマンドで
テーブルを更新するという方法です。

コマンドは、
COPY TABLE FROM '/apache/...../test.txt';
です。


この方法でとあるテキストファイルをDBに落とし込もうとしたところ、

ERROR: invalid byte sequence for encoding "UTF8" : 0x95

という文字コードに関するエラーが出て失敗してしまいます。


しかし、psqlから手動でCOPYコマンドを打つと普通にコピーに成功してしまいます。
両方失敗するのなら分かるのですが、何故VBからの処理が失敗するのでしょうか?
何が原因として考えられますか?
ちなみに開発環境はWin2k+PostgreSQL8.1(Windows)+VB6.0SP5です。
0661nobodyさん2006/11/16(木) 14:00:02ID:0z6MBXcS
ごめん、Postgresの質問だこれは。無視してください・・・
0662nobodyさん2006/11/16(木) 14:33:40ID:7s9N5dRH
呼び出されたスクリプト自身のURLを取得する方法ってありますか?
例えば、
https://example.com/index.php/hoge
こんなURLで呼び出された場合に、このURL自身を取得したいんですが。

もしかして、こいつら↓使って自分で組み立てるしかない?
$_SERVER['HTTPS']
$_SERVER["HTTP_HOST"]
$_SERVER["REQUEST_URI"]
エクセレントな方法ってある?
0663nobodyさん2006/11/16(木) 14:49:18ID:???
>>658
echo `ls -tr`;

>>662
http://jp2.php.net/manual/ja/reserved.variables.php
それだと要求されたURLで、呼び出されたスクリプトのURLじゃないね
0664nobodyさん2006/11/16(木) 14:53:57ID:???
降順だった
`ls -t`
どうでもいいけど
06656622006/11/16(木) 15:06:02ID:???
>663
あ、ブラウザのURLに表示されてるのと同じものを取得したいのです。
こんな感じでいいのかな。
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER["REQUEST_URI"]}";
他に良い方法ないですか?

一度別ページに飛ばして
$_SERVER["HTTP_REFERER"]
だと値なんてあてにならないし。
0666nobodyさん2006/11/16(木) 15:30:42ID:???
>>665
多分それしか無いと思う。
他に手があるなら俺も知りたい。
06676602006/11/16(木) 15:57:58ID:???
誤爆スレで返答するのもなんですが、解決しました。
COPYコマンド自体止めて、テキストファイル直読みしてINSERT文にしたら
あっさりコマンド通りました。

何故にCOPYコマンドでは駄目なんだ?よく分からん・・・。
0668nobodyさん2006/11/16(木) 16:01:51ID:???
馬鹿はサイレンで泣くしエラーメッセージは見なかったことにする
0669nobodyさん2006/11/16(木) 16:15:48ID:???
日付とFilterで5.2とはマイナーバージョンの水増しではないか。
0670nobodyさん2006/11/16(木) 16:22:44ID:???
>>669
日付関数はバージョンで処理分けないと互換性保てないとか何とか。
というか水増しって何?
0671nobodyさん2006/11/16(木) 16:37:58ID:???
フィルタはまだexperimentalだったと思うが・・・
0672nobodyさん2006/11/16(木) 16:50:26ID:OjN5tFoy
FC6でファイルのアップロードが設定上10ギガはアップロードできるはずなのにできないんですがなぜでしょうか

ポストファイルサイズ
アップロードファイルサイズとか実行時間も十分にしたのですが・・・・
スワップ領域以上はできないんですか?
1ギガなんですがそれより上ができません
perlならできるんですがアップロード速度がだいぶ違うので
0673nobodyさん2006/11/16(木) 17:17:13ID:???
>>672
/tmpのサイズとかは?
0674nobodyさん2006/11/16(木) 17:23:21ID:???
PHPのアップロードってメモリに読み込まないんだっけ?
0675nobodyさん2006/11/16(木) 17:43:22ID:???
ログにSwap不足って出たのかね。考えにくいが
0676nobodyさん2006/11/16(木) 22:18:24ID:???
できなかったら、エラーが出るだろ?
それになんて出たんよ。
0677nobodyさん2006/11/17(金) 00:49:47ID:RSjPLNDu
多次元配列をキーでソートする方法について質問させてください。

$hairetu['A'][1] $hairetu['A'][5] $hairetu['A'][7] $hairetu['A'][9]
$hairetu['B'][3] $hairetu['B'][4] $hairetu['A'][6] $hairetu['A'][12]

このような多次元配列(キーは一つ目が文字列で、二つ目が数字)が仮にあったとして、
数字が入ったキー「だけ」に注目してソートして、若いキーから順にn個を取得したいです。
この例で言うと、数値キーで昇順ソートして3つだけ取り出す場合、
$hairetu['A'][1]、$hairetu['B'][3]、$hairetu['B'][4]・・・の要素を取得したいです。

このようなことをやるにはどういう手法を使ったら良いのでしょうか?
0678nobodyさん2006/11/17(金) 01:05:48ID:???
>>677
$hairetu['A'][1] = 'A1';
$hairetu['A'][5] = 'A5';
$hairetu['A'][7] = 'A7';
$hairetu['A'][9] = 'A9';
$hairetu['B'][3] = 'B3';
$hairetu['B'][4] = 'B4';
$hairetu['A'][6] = 'A6';
$hairetu['A'][12]= 'A12';

$list = array();
foreach($hairetu as $dat) {
foreach($dat as $k => $v) {
$list[$k] = $v;
}
}
ksort($list);
$list = array_slice($list, 0, 3);

var_dump($list);
とか
0679nobodyさん2006/11/17(金) 01:16:03ID:???
>>677
アルゴリズムに適したデータ構造を持たせることもまた重要な設計だと思う。
0680nobodyさん2006/11/17(金) 01:52:49ID:???
Vine3.2 PHP5 で
http://www.php.net/manual/ja/features.file-upload.php
の 例38-1,例38-2を試したところ、極めて小さいファイルはアップ出来るのですが、
1196byte以上のファイルだとタイムアウトを起こすのか、まともに動きません。
(FireFoxだと「接続がリセットされました」が出ます。)
メモリは free -mt で見た範囲で200MB以上空いています。

最終的には120MB程度のファイルがアップ出来るような仕組みを作りたいのですが
1MB程度で躓いてしまっています。(´・ω・`)ショボーン

「陥りやすい落とし穴」に書いてある
memory_limitには150M post_max_sizeには128M upload_max_filesizeには120Mを
設定し、phpinfo()でちゃんと適用されているか確認しました。

他に何か確認すべき所はあるでしょうか?
0681nobodyさん2006/11/17(金) 02:00:14ID:???
> タイムアウトを起こすのか

30秒で停止する設定になってるとか?
0682nobodyさん2006/11/17(金) 02:11:12ID:???
>>680
エラーコードは何になってるの?
06836802006/11/17(金) 02:29:47ID:gKQvCF/I

>681
30秒というと、どこの設定の事でしょうか?

>682
ブラウザ上では
FireFoxだと>680に書いたとおりブラウザが出すエラー画面で「接続がリセットされました」
IE6だと「ページを表示できません。」「サーバーが見つからないか、DNS エラーです。」
が出ます。

Apacheのエラーログには関係ありそうなエラーは見当たりません。
0684nobodyさん2006/11/17(金) 02:31:35ID:???
>>683
いや、アップロード処理のとこでPHPでエラーがチェックできるでしょう。
['error']に入ってる値。
0685nobodyさん2006/11/17(金) 02:35:28ID:???
>>683
ttp://www.php.net/manual/ja/ref.info.php#ini.max-execution-time
06866802006/11/17(金) 02:41:12ID:???
>684
動きを見ていると、
OKの時
例38-1からPOST → Apache PHP → 例38-2で処理&結果表示
NGの時
例38-1からPOST → Apache? PHP? → 行方不明・無反応 → ブラウザがエラー表示
になっているようです。

ソースの中でなおした部分は、
例38-1の__URL__を例38-2を保存したphpのファイル名に変更
例38-1を<html><head></head><body>〜</body></html>の〜部分に記述
例38-2の$uploaddir =を実態にあったパスに変更
です。
0687nobodyさん2006/11/17(金) 02:41:34ID:???
PHPのエラーをApacheに吐いてるの?
デバグには向かないよ
0688nobodyさん2006/11/17(金) 02:48:07ID:???
>>678
foreach($hairetu as $dat) {
・・・
}

この外側のforeachって意味あるか? 不要じゃネ??
06896802006/11/17(金) 02:51:44ID:???
>685
max_execution_timeを120に、 max_input_timeを120にしてもダメでした。

>687
実はPerlベースでデータをアップする仕組みを実装してあるんですが、
段々データ容量が増えて来たせいでエラーに遭遇する事が多くなったんです。
そこで、色々調べたところ、
http://xxx.upken.jp/report/foradmin/

>Perl CGIは受信サイズの3倍強の空きメモリを使用します。
- 略 -
>なお、PHPの場合は、ファイルの1.1倍程度ですのでPerlよりも効率が良いのですが、仕様上2GB以上のファイルを受信できません。

という記述を見つけ、急遽PHPを学びがてら実装しているところなので、
デバグ向きの環境がどういうものなのかとか、PHPがどんなものなのかとか
まだよくわかっていない状態なのです。

0690nobodyさん2006/11/17(金) 03:07:20ID:???
>>686
処理の頭に
echo "error=".$_FILES['userfile']['error']."\n";
flush();
ob_flush();
って入れて画面上にerror=○って出てくるか確認。
途中で強制終了されてると>>683みたいなエラーになる。
0691nobodyさん2006/11/17(金) 03:08:00ID:???
>>688
じゃあお前の実装を見せてみろよ。
06926802006/11/17(金) 03:17:48ID:???
>>690
やってみましたが、同じ現象です。
ソースを載せます。
-------
<?php
echo "error=".$_FILES['userfile']['error']."\n";
flush();
ob_flush();
$uploaddir = '/home/foo/data/upload/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>
-------
Apacheの設定が悪いのでしょうか・・・orz
0693nobodyさん2006/11/17(金) 03:21:23ID:???
>>692
プログラム先頭でflushしても何も出力できないんなら
リクエスト時点でApacheがタイムアウト起こしてる可能性は高いな。
httpd.confまたは.htaccessのTimeout設定をいじってみては?
0694nobodyさん2006/11/17(金) 03:25:24ID:???
けどローカルで100MB程度そんな時間かかんないよね
Apacehからなら408が返るだろうし
0695nobodyさん2006/11/17(金) 03:29:26ID:???
>>692
プログラムを
<?php
echo "error=".$_FILES['userfile']['error']."\n";
?>
だけにしたらどうなるの?やっぱ接続リセット?
0696nobodyさん2006/11/17(金) 03:30:22ID:???
>>694
100MBどころか1MBじゃなかったっけ?
0697nobodyさん2006/11/17(金) 03:35:24ID:???
1kbyteだった
レスポンスコードはどうなのかしら
06986802006/11/17(金) 03:37:33ID:???
>693
httpd.confのTimeoutは300だったので、1000にしてみましたがやはりダメでした。
>694
実はリモートで両方ともBフレ経由のインターネット環境です。
今引っかかってるのは1MB強のラインでテストデータは
「test」を羅列したテキストです。
(横に168文字縦に7行まではOKなんですが8行になるとダメです。)
>695
試してみます。
06996802006/11/17(金) 03:38:35ID:???
>698
書き間違い。1MBじゃなくて1KBです。
07006802006/11/17(金) 04:00:28ID:???
すみませんorz
マジですみません。m(_ _)m
自宅のLAN環境が原因でした。

この前までNEC製のADSLルータ(Web Caster 610M)+コレガの無線ルータで有線LANと無線LANを隔離して
無線経由でインターネットは見れるけどNASやプリンタはいじれないように設定していたのを、
Bフレに変えた時にADSLルータ(NEC製)をOKI製の光電話ルータ(RT-200KI)に変えられたせいで、
無線LAN環境からFTPでファイルをアップ出来ない等の不具合が出てたんでしたorz

普段HTTPでは特に問題は発生しなかったんでFTP固有の問題だと思っていたんですが・・・。
有線LANに繋いで見たら、とりあえずテスト用のテキストファイルも56KBのバイナリもアップ出来ました。

やっぱ116にTELしてNEC製のルータ(RT-200NE)に変えてもらおうかな・・・。
0701nobodyさん2006/11/17(金) 08:14:15ID:???
どこ製だとかいうのは別に関係ないと思うよ
0702nobodyさん2006/11/17(金) 08:33:50ID:???
[Fri Nov 17 08:15:22 2006] [error] [client 192.168.1.2] PHP Warning: POST Content-Length of 2051799559 bytes exceeds the limit of 1776287744 bytes in Unknown on line 0, referer: http://*******/
これってなんですかね・・・・?設定は9997MまでOKなんですが・・・こんな数字に設定してないし
0703nobodyさん2006/11/17(金) 08:58:15ID:???
リミットが1776287744bなのに2051799559bをPOSTしたってこと
0704nobodyさん2006/11/17(金) 10:27:17ID:???
負荷の高い処理をかける際に非同期処理をかけようと思うのですが、どういった手段が適切
でしょうか? JAVASCRIPTを使うかコマンドライン命令をshellで投げるか程度しか思いつかなかった
のですが、前者はユーザ環境次第、後者はサーバー環境次第で使えないのであまり気に
いりません。
0705nobodyさん2006/11/17(金) 11:14:50ID:???
>>704
PHP板なんだからPHPで非同期処理するしかないだろう?w
0706nobodyさん2006/11/17(金) 11:20:37ID:???
>>JAVASCRIPTを使うかコマンドライン命令をshell

この時点で考えていることがおかしいと思う
0707nobodyさん2006/11/17(金) 11:51:42ID:???
>>702
PHP自体の限界値
07086802006/11/17(金) 12:16:19ID:???
>>701
�dクス。 ADSL→BフレでMTU値が変わったのが原因みたいです。ハズカシorz
スレ違いスマソ。
0709nobodyさん2006/11/17(金) 12:28:15ID:Kg6mrgCw
質問なんですが、
ログファイルに書き込むときのデータごとの区切り文字と、
データ中に同じ文字があった場合のときってどうしたらいいんでしょうか?
例えば 区切り文字が","(コンマ)の場合で、
データが aiueo,kakikukeko といった場合は
データの中の","で、aiueoとkakikukekoとに分かれてしまうんです。
0710nobodyさん2006/11/17(金) 12:37:46ID:???
データをダブルクォーテーションでくくりゃいい。
0711nobodyさん2006/11/17(金) 12:39:34ID:???
>>709
データにありえない文字を区切りに使えばいいのでは。
区切りにはTAB文字とかのコントロールコードを使って、データからはきちんと除去しとくとかね。
HTMLタグをhtmlspecialcharsかけた上で<>を区切りに使う人も(古いCGIからの人とかに)多い。
データをXMLで記録する、という手もある。
いっそRDBMS使ってもいいと思う。というか推奨。

カンマ区切りデータでの一般的エスケープ方法(Excel方式)ってのもあるにはあるけど
データの生成とパースが無駄に遅くなるだけだから、
CSVファイルで外部とやり取りしたいわけでなければ
内部データでCSVを使うのはナンセンスだと思う。
0712nobodyさん2006/11/17(金) 12:48:55ID:wH2IZbEg
http://jp.php.net/manual/ja/function.fputcsv.php
http://jp.php.net/fgetcsv

これ楽じゃね?
0713nobodyさん2006/11/17(金) 12:51:41ID:???
データに日本語SJIS使うとこけるけどね。
07147092006/11/17(金) 12:57:29ID:Kg6mrgCw
返信ありがとうございます。
どのサーバでも動作するシステムを作りたいと思っているので、
データベースを使うと、設定とかでめんどくさくなってしまうのではないかと思うのです。
CSVにこだわりがあるわけではないので、いくつか教えていただいた方法で試していってみたいと思います。
0715nobodyさん2006/11/17(金) 13:54:39ID:iYTLwrM4
,→&#44;
に変換する(&は半角)
0716nobodyさん2006/11/17(金) 14:10:25ID:???
>>714
DBの初期設定項目なんて3.4個でしょ。
面倒ということはないはずだが・・・
0717nobodyさん2006/11/17(金) 14:32:36ID:P7ghOTn+
>>703
>>707
リミットがそこでないはずなので悩んだのですが
phpの限界ですか?
ちゃんと設定読んでくれるCMSで見たのにー
0718nobodyさん2006/11/17(金) 14:38:49ID:???
9997MB * スレッド数だぞ、死ぬだろ常識的に考えて・・・
0719nobodyさん2006/11/17(金) 15:32:19ID:/mn+LtBq
もっとメモリ積め
0720nobodyさん2006/11/17(金) 15:50:16ID:???
>>718
別に全プロセスが最大メモリをいきなり使うわけじゃないから
そうそう死なないけどな。
0721nobodyさん2006/11/17(金) 16:06:37ID:???
メモリ制限使ってない奴多いの?
0722nobodyさん2006/11/17(金) 16:22:43ID:P7ghOTn+
>>718
スワップしないでそのまま書けばまあ動くかなぁーと思ってました

ちなみにスワップはいつもmaxだよ。
0723nobodyさん2006/11/17(金) 16:59:46ID:xFjRjRSM
DBに接続して認証を行うシステムをPHPとMySQLで作っています。
これで何とか動くには動くのですがセキュリティ的に何か問題があるでしょうか?
またもっと簡単にコードが書けるのなら教えてほしいです。
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" accept-charset="EUC-JP">
id<input type="text" name="id" value="<?php echo htmlspecialchars($_POST['id']);?>"><br>
<font size="2">パスワード<input type="password" name="pass" value=""><br></font>
<input type="submit" name="foo" value="送信">
</form>
<?php
include "/virtual/nyahi/db_connect.php";//DBに接続
if($_POST['id']){
$post_id= $_POST['id'];
$post_pass= $_POST['pass'];
if(ereg("'",$hoge) ){//シングルクオーテーションはDBに接続させない
die("'←これは嫌い。");
}
if(ereg("'",$_pass) ){//シングルクオーテーションはDBに接続させない
die("'←これは嫌い。");}
$sql = "SELECT *";
$sql.= "FROM user ";
$sql.= "WHERE id='$post_id' and pass='$post_pass'";
$rs = mysql_query($sql,$conn);
if($rs == FALSE){
die ("エラーですよ");}
while($rec = mysql_fetch_array($rs,MYSQL_ASSOC) ){
$ok = 1;//whileループに入ったことで取得を確認
$id = $rec['id'];
$pass = $rec['pass'];}
if(!isset($ok) ){
echo "IDまたはログインパスワードが誤っています。ご確認のうえ、再度ご入力ください。";
}else{echo "ようこそ${id}さん。";}}
?>
0724nobodyさん2006/11/17(金) 17:13:44ID:???
>>723
> include "/virtual/nyahi/db_connect.php";//DBに接続
DBへの接続は入力値があった場合だけでいいのでは。

> if(ereg("'",$hoge) ){//シングルクオーテーションはDBに接続させない
> die("'←これは嫌い。");
> }
普通、mysql_escape_string等でエスケープした上でそのままSQL文に渡すとこだと思う。
まぁ、IDとパスでそんな文字はありえない、ってことならいきなり終了でもいいけど。
あと変数名の間違いについてはスルーでいいんだよね?

> while($rec = mysql_fetch_array($rs,MYSQL_ASSOC) ){
> $ok = 1;//whileループに入ったことで取得を確認
1回しか取得する必要がないものをあえてwhileで回す必要はないんでは。
if($rec = mysql〜) でいいんじゃないの?
まぁ、大して変わんないけど。

> if(!isset($ok) ){
issetじゃなくif($ok)で真か偽か見るようにして、最初に$okは$ok=0;で初期化するようにした方がいい。
register_globalsがOFFだから汚染されるはずがない、という思い込みはミスしたときが危険。
つか、fetchをwhileでなくifにしちゃえば、こんなフラグ判定は要らないと思うけど。
0725nobodyさん2006/11/17(金) 17:20:45ID:???
でかい配列のエイリアスを作ってカウントすると
カウントが遅いんですがなぜですか?

$a = array_fill(0, 100000, 0);
$b = & $a;
count($a);
0726nobodyさん2006/11/17(金) 17:28:00ID:???
>>723
eregよりstrposの方が数倍早いよ。
if (strpos($hoge, "/") !== FALSE) { echo "$hogeに/が含まれる"; }

>>725
でかいからでは?
0727nobodyさん2006/11/17(金) 17:31:37ID:???
それが$b = & $aを$b = $aに変えると遅くないんですよ。
でもエイリアスじゃなくするとreset($a)が遅くなるし・・。なんで?
0728nobodyさん2006/11/17(金) 17:33:48ID:???
便乗質問だけどeregって使い道が全くわからんだけど。
1バイト文字列の正規表現ならpreg系でいいし、正規表現使わないならstrposでいいし、マルチバイトならmb_ereg使うよね?
違うのかな?
0729nobodyさん2006/11/17(金) 17:39:50ID:???
>>728
その認識でほとんど問題ないよ。
Perl系正規表現を使うのに抵抗が無いならそれ使うのがいい。
ただ、ereg系ってのは伝統的な正規表現なので、
昔からのUNIX使いにはそっちの方が馴染みがある人も少なくない。
pregはあくまでPerlで勝手に拡張した方言なので。
慣れた方法を使えるよう複数のI/Fを提供するのがPHP流だよね。
それにpregとmb_eregを混在して使うと正規表現の記法がバラバラで
混乱を招きやすいって問題も出るね。
0730nobodyさん2006/11/17(金) 17:42:03ID:???
>>725
どの辺がどう影響してるのかはPHPのソース読まないとちと即答しかねるが、
PHPのリファレンス機能は基本的に劇遅です。
0731nobodyさん2006/11/17(金) 17:54:11ID:???
>>725
countは値渡しでresetは参照渡しだから

>>728
pregはNFAでeregはDFA
07327232006/11/17(金) 18:00:48ID:xFjRjRSM
>>724
>>726
ありがとうございます。
早速改善してきます。
0733nobodyさん2006/11/17(金) 18:27:40ID:???
mysqlとphpでブックマークプログラムを
作ろうと思うんですが、
ディレクトリ情報ってどんな感じでデータベースに格納すれば
いいでしょうか?
固定ならかんがえやすいのですが、あとから
特定のリンクを別ディレクトリへ、と考えると
何かよい定義方法があるとおもうのですが。
0734nobodyさん2006/11/17(金) 18:29:53ID:???
>>725
やや抽象的な書き方になるけど、一般的に

$a = 大きな文字列or配列;
$b = & $a; // $a、$b、共に「自分のエイリアスが1つ以上存在する」というフラグみたいなのが立つ。

$x = $a; // エイリアスさえなければ働くはずの参照カウントが働かなくなり、コピーし始める。
$x = $b; // この場合も同様にコピーし始める。

って感じで、別の変数($x)への代入が遅くなる。
count($a);という呼び出し前には「$countの引数 = $a;」という内部動作が加わるから遅くなるんじゃないかな。

余談だけど、この応用で、
function hogehoge(& $b) {
という関数があると、この関数内での$hensuu = $b;は全て、&なしの場合より遅くなる。
0735nobodyさん2006/11/17(金) 18:45:17ID:???
}// ,=ミ、ヽ    `ー、_;:;:;:;:;:;:;:;:;:;:;:;:;ヽ
/ /,.- 、 ヽヽヽ      `゙''‐、;:;:;:;:;:;:;:;:|
  _rー、ヽヽ     ー 、_    ブ;:;:;:;:;:} 
  ミヽ● ! | |    `ー‐ 、ヽ、 /;:;:;:;:;:;/
   `ー' V  , -──一ミ、 l/:;:;:;:;:/
 ___   /  r'´,二二`ヽ | |/;:;:;:;:;/
,',',',' (    /  〈 ● 〉l l/ /;:;:;∠
,','il',',',ヽ   ヽ  ヽ二    /'´ ノ
,','ヾ、',','`ー'ー^!      / _r-'´
, ' , ' `ヽ、__, ' !、    //
' , ' , ' `ー, ' , '! `ー'/ ̄   
ヽ、, ' , ' , ' , ', -' ,'/   
  ` ̄ ̄フT ´
-----一'´ |
::::::::::::::::::::::::/
::::::::::::::::::::::/ 
07367232006/11/17(金) 19:34:07ID:xFjRjRSM
ご指摘のあったところを改良してきました。
2chに張るとソースが見にくいのでほかのところにうpしました。
http://onegaisiamsu.ojaru.jp/php.txt
それとDBのパスワードの認証はcrypt関数で暗号化したほうが良いのでしょうか?
まだ何かあったらよろしくお願いします。
0737nobodyさん2006/11/17(金) 21:07:29ID:???
>>725
とりあえず$b使い終わったらcountなりresetする前にunset($b)しとけ

>>734
このへんが参考になると思われ
>References Explained (by Derick Rethans)
>http://derickrethans.nl/php_references_article.php
0738nobodyさん2006/11/17(金) 23:52:52ID:???
>>736
2行目の
if($_POST['subcheck']){
を
if(isset($_POST['subcheck'])){
に書き直すのがよろしいかと。
07392ちゃん工作員2006/11/18(土) 00:22:40ID:???
質問町あげ
0740nobodyさん2006/11/18(土) 02:55:41ID:???
真に下らない質問で申し訳ないのですが、なぜトップがこれなのでしょう・・・
ttp://www.google.co.jp/search?hl=ja&q=php+%E3%82%AF%E3%83%A9%E3%82%B9&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0741nobodyさん2006/11/18(土) 03:10:04ID:+NG79cWW
指定したURLの画像を、phpの変数に読ませたいのですが、
どのようにしたらいいでしょうか?
0742nobodyさん2006/11/18(土) 03:16:19ID:???
ファイル出力するときfopenしたまんまDB接続とかしても大丈夫なんですかね?
0743nobodyさん2006/11/18(土) 03:25:49ID:???
>>741
$image = file_get_contents("http://server/image.jpg";);
でいけねー?
0744nobodyさん2006/11/18(土) 03:27:38ID:???
>>742
何の関係もない。くだらん心配すんな。
0745nobodyさん2006/11/18(土) 03:33:42ID:???
無料でメール送信を利用した
アクティベーションサービスを利用できる
ASPサービスってないですか?

自分のメアドを登録すると、そこにメールが
送られてきて、メールを開くとURLが書いてあって、
それをクリックすると、
「登録が完了しました」
って出る、例のアレのことです。

そこのアクティベーションの部分だけお借りしたいのです。無料で。
0746nobodyさん2006/11/18(土) 03:36:04ID:???
>>743
いけました。こんな簡単にできるとは…。
ありがとうございました。
0747nobodyさん2006/11/18(土) 03:39:11ID:???
>>744
どもども
0748nobodyさん2006/11/18(土) 03:39:41ID:???
>>745
残念ながらここは自分でプログラムする人用の質問スレなんだ。
0749nobodyさん2006/11/18(土) 05:25:27ID:???
ファイル作成時文字エンコードを指定するにはどうすればいいんでしょうか?
0750nobodyさん2006/11/18(土) 05:37:33ID:???
そんな指定はできない
0751nobodyさん2006/11/18(土) 05:42:33ID:???
あ、マジですか
変な質問してすいませんでした
0752nobodyさん2006/11/18(土) 10:28:28ID:Ta87IDDV
session.auto_startをOnにしようとしています。
レンタルサーバーなのでphp.inはいじれません。
そこで.htaccessを使って何とかしようとしているのですがうまくいきません。
php_flag session.auto_start On
php_value session.auto_start 1

検索したところこれらを書けばいいとのことでしたが変化ありません(phpinfo()で確認)。
よろしくお願いします。
0753nobodyさん2006/11/18(土) 10:31:56ID:???
>>752
そもそも.htaccessが使える鯖なんですか?
0754nobodyさん2006/11/18(土) 10:34:13ID:Ta87IDDV
>>753
.htaccsessは使えます。
0755nobodyさん2006/11/18(土) 10:37:16ID:???
$ vi abc.php
require'/rl.php';

$vi rl.php
echo 1;

とした場合にrl.phpがhttp://localhost/abc.php で呼び出されたのかhttp://localhost/rl.phpで
呼び出されたのか調べる方法はないでしょうか?
07567552006/11/18(土) 10:51:55ID:???
$_SERVER['SCRIPT_FILENAME']で行けるのかな
自己レス
0757nobodyさん2006/11/18(土) 11:04:35ID:???
>>752
.htaccessではどこまでの設定が許可されてるの?
httpd.confのAllowOverrideは何に設定されてるんだろ。
0758nobodyさん2006/11/18(土) 11:04:41ID:???
>>752
htaccessに関しては
アクセス制限に関しての設定しかできないようにサーバ側で規制してるかもしれないよ。
もっかいサーバのマニュアル読んでこい。
0759nobodyさん2006/11/18(土) 11:06:14ID:???
>>755意味がわからない
0760nobodyさん2006/11/18(土) 11:12:46ID:???
>>759
rl.phpってのが実行されたとき、それが直接呼び出されたのか
あるいは他のファイルにincludeされたのかを知りたい、ってことでしょ。
>>756や$_SERVER['PHP_SELF']見てファイル名違ったら後者、でいんでないの。
0761nobodyさん2006/11/18(土) 11:13:58ID:???
>>755
$ vi abc.php
$GLOBALS['require_id'] = 'abc';
require'/rl.php';

とかしないと無理じゃね
07627552006/11/18(土) 11:27:58ID:???
if ($_SERVER['SCRIPT_FILENAME'] == strtr(__FILE__,'\\','/'))
としたけどPHP_SELFの方が良いのでしょうか?
なんかSCRIPT_FILENAMEってdllとかで動かすと環境変数なかったような・・・
0763nobodyさん2006/11/18(土) 11:40:30ID:???
script_filenameなんて余計なもの含まれてないよ。
自分の結果がでるのがphp_selfならそれ使えばいいじゃん。
0764nobodyさん2006/11/18(土) 12:59:56ID:???
メソッドの因数の基本値に、
メンバ変数を指定することは出来ないんでしょうか?

var $table= 'テーブル';

function test($table_name = 'this->table') {

echo $$table_name; //テーブルを出力させたい

}

これだと何も出力されません。
0765nobodyさん2006/11/18(土) 13:03:24ID:???
eval ('$'. $table_name);
0766nobodyさん2006/11/18(土) 13:08:09ID:???
>>765
ありがとうございます
0767nobodyさん2006/11/18(土) 13:11:31ID:???
>>765
ごめんなさい。
Parse error: parse error, unexpected $end in と出てしまいます・・・
0768nobodyさん2006/11/18(土) 13:24:04ID:???
ところで、なんで可変変数なんて気持ち悪いことをしないとダメなの?
0769nobodyさん2006/11/18(土) 13:29:02ID:???
>>764
俺ならこうする
function test($table_name = NULL) {
if(! isset($table_name)) $table_name = $this->table;
echo $table_name;
}
0770nobodyさん2006/11/18(土) 13:29:21ID:8ao0Px63
初歩的な質問ですみません。

フォルダの中にある画像を001〜100.jpgまでナンバリングしています。

それらを「次へ」をクリックしたときに

001>002>003と順番に表示させたい場合はどうしたらいいでしょうか?

ググってみたのですが、さっぱりわかりません…
0771nobodyさん2006/11/18(土) 13:33:32ID:???
>>770
<?php $no = (isset($_GET['no']))? intval($_GET['no']): 1; ?>
<html><body>
<img src="<?php echo sprintf("%03d", $no); ?>.jpg">
<a href="<?php echo sprintf("%03d", $no + 1); ?>.jpg">次へ</.a>
</body></html>
07727712006/11/18(土) 13:34:53ID:???
ごめん。間違い。
<?php $no = (isset($_GET['no']))? intval($_GET['no']): 1; ?>
<html><body>
<img src="<?php echo sprintf("%03d", $no); ?>.jpg">
<a href="<?php echo $_SERVER['PHP_SELF']?>?no=<?php echo $no + 1; ?>">次へ</.a>
</body></html>
07737702006/11/18(土) 13:48:03ID:8ao0Px63
ありがとうございます!
成功しました!!

先ほど書けばよかったのですが…
100枚を超えたときに「index.html」に戻したい場合はどうしたらいいでしょうか?

何度もすみません…
0774nobodyさん2006/11/18(土) 13:55:38ID:???
質問と言うより丸投げですね
100枚を超えたらindex.htmlへ戻るように条件分岐させれば良いんじゃないすか?
0775nobodyさん2006/11/18(土) 14:09:06ID:???
おまえ、それゼミの宿題だろ。
同じような宿題やってるんだが、同じゼミ生か貴様w
07767702006/11/18(土) 14:11:41ID:8ao0Px63
違いますw
同人誌のサイトを作りたくて・・
0777nobodyさん2006/11/18(土) 14:15:37ID:???
どこが分からないのか書けば教えてやる
07787702006/11/18(土) 14:19:40ID:8ao0Px63
<img src="http://hoge.com/img/<;?php echo sprintf("%03d", $no); ?>.jpg">
<a href="<?php echo $_SERVER['PHP_SELF']?>?no=<?php echo $no - 1; ?>">
<br />
戻る</a> ・ <a href="<?php echo $_SERVER['PHP_SELF']?>?no=<?php echo $no + 1; if($no == 100 or $no == 0) { ?>">

次へ</a>

条件分岐ってこんな感じでいいのでしょうか?
if 100 or 0 だったときにindex.htmlへの飛ばし方がわかりません・・
0779nobodyさん2006/11/18(土) 14:28:00ID:???
if ($no < 0 or $no >= 100) {
 header('Location: http://example.com/index.html');
 exit;
}


クラナドでもやろっか
0780nobodyさん2006/11/18(土) 15:09:04ID:???
>>779
$noに変な文字列がくるかもしれんので
「if(!($no>0 AND $no <=100)){」の方がいいかも新米。
# 小数点な数がきたりして
07817702006/11/18(土) 15:30:27ID:8ao0Px63
>>779さん
>>780さん

成功しました!
これで次に進むことができます!ありがとうございました!
0782nobodyさん2006/11/18(土) 15:32:32ID:???
>>775
ゼミ担当教官、同人誌サイト鋭意開発中ワロス

サイトの品質はゼミ生の出来に
掛かってるんだから超ガンガレ
0783nobodyさん2006/11/18(土) 17:23:16ID:???
$charset="Shift_JIS";
print('<meta http-equiv="Content-Type" content="text/html; charset={$charset}">');

という感じのソースなんですが、
{$charset}の部分がそのまま出てしまいます。
""で囲んで、"をエスケープ処理orヒアドキュメントでもできるのはわかりますが、
この''で囲んだ場合、どのようにしたら思い通りになるか教えていただけませんか?
0784nobodyさん2006/11/18(土) 17:29:28ID:???
>>783
print('<meta http-equiv="Content-Type" content="text/html; charset=' . $charset . '">');
クオート範囲の外に出して文字列連結。
0785nobodyさん2006/11/18(土) 17:31:19ID:???
>>784
おぉ!お早いレスどうもありがとうございます!
なるほど、一回出して連結すればいいのですね。
大変助かりました。どうもありがとうございます。
0786nobodyさん2006/11/18(土) 17:36:24ID:lFfXscZq
PHPとは直接関係ないかもしれない質問ですが、
どなたかnotepad++でPHP書いてる方いませんか?
コメントの部分に日本語を使うと文字化けするのですが、
私だけでしょうか・・・?
0787nobodyさん2006/11/18(土) 19:00:05ID:???
>>786
フォントの設定を変更しる
0788nobodyさん2006/11/18(土) 19:59:10ID:???
>>787
個別に指定しないとだめなんですね。
PHPのコメントのところのフォントを変えたらできました。
どうもお騒がせしました。
0789nobodyさん2006/11/18(土) 20:21:15ID:???
>>788
フォントの指定を1番上の空っぽのにしてしまえばデフォルトのを使うようになる。
元々の設定がコード部分とコメント部分とで異なるフォントにしてあるだけ。
0790nobodyさん2006/11/18(土) 20:38:38ID:IiQLRyMs
PHPからINSERT〜っていうSQL文を実行しようとしているのですが
うまくいきません。。。

DBにぶち込むソースは既に動作確認できている部分かたとってきたので
動かないことはないかと思うんですが、SQL文の中に特定の文字が入っちゃいけないだとか
動かないときの常套手段なんかありましたらお願いします。
0791nobodyさん2006/11/18(土) 20:43:32ID:???
>>790
SQLのエラーメッセージ表示。

例えばmysqlなら
$result = mysql_query($conn, $sql);
echo mysql_error();
みたいな感じ。
0792nobodyさん2006/11/18(土) 20:43:43ID:???
コピペっていうんだからアカウントとパスワード、SQL側の設定等々とかも疑わないといけん
範囲広すぎ、エスパー居ませんか?となるわけだ
0793nobodyさん2006/11/18(土) 21:23:00ID:PIy0ZcR3
PHPから彼女にデータを挿入したいのですが
彼女にインサート権限がありません。どうしたらいいですか?
0794nobodyさん2006/11/18(土) 21:46:13ID:???
}// ,=ミ、ヽ    `ー、_;:;:;:;:;:;:;:;:;:;:;:;:;ヽ
/ /,.- 、 ヽヽヽ      `゙''‐、;:;:;:;:;:;:;:;:|
  _rー、ヽヽ     ー 、_    ブ;:;:;:;:;:} 
  ミヽ● ! | |    `ー‐ 、ヽ、 /;:;:;:;:;:;/
   `ー' V  , -──一ミ、 l/:;:;:;:;:/
 ___   /  r'´,二二`ヽ | |/;:;:;:;:;/
,',',',' (    /  〈 ● 〉l l/ /;:;:;∠
,','il',',',ヽ   ヽ  ヽ二    /'´ ノ
,','ヾ、',','`ー'ー^!      / _r-'´
, ' , ' `ヽ、__, ' !、    //
' , ' , ' `ー, ' , '! `ー'/ ̄   
ヽ、, ' , ' , ' , ', -' ,'/   
  ` ̄ ̄フT ´
-----一'´ |
::::::::::::::::::::::::/
::::::::::::::::::::::/  
0795nobodyさん2006/11/18(土) 23:31:58ID:???
Zend社等の製品を使用しない限り、PHPは実行時に毎回コンパイルされ、キャッシュは
されないそうですが、その場合、実行するファイルは小さい方が高速なのでしょうか?

例えば、たくさんの関数を定義してあるcommon_func.phpというファイル1つを作って毎回include
するのと、関数毎に細かくfunc1.php, func2.php, func3.phpとファイルを分けて必要な場合だけ、
必要なファイルをincludeするのでは、後者の方が高速なのでしょうか?
0796nobodyさん2006/11/18(土) 23:42:24ID:???
ホントに初歩的で申し訳ないのですが、
tp://bbslabo.breeze.jp/c001_spam_lib_php_letsphp_ibbs.html
のスパム耐性 PHP-I-BOARDをお借りしてローカルで動かしたのですが、

通常の書き込みはできるものの、返信をしようとするとなぜか関係ないページに飛ばされます。
(YouTubeだったり)

phpのソースをみて youtubeのアドレスを探してもみつからず、なぜそうなるのかがわかりません。

なお、強制移動させられたあと戻るとちゃんと書き込みはできています

すいませんがどこをいじったらこの現象が直るかおしえていただけないでしょうか?
0797nobodyさん2006/11/18(土) 23:54:54ID:???
>>793
板違いです、コチラへどうぞ
【彼女にINSERT権限がありません】
http://pc8.2ch.net/test/read.cgi/db/1057289721/
0798nobodyさん2006/11/19(日) 00:00:36ID:???
>>793
板違い。DB板逝け
07997982006/11/19(日) 00:02:58ID:???
まさかこんなのが被るとは思わんかった...
0800nobodyさん2006/11/19(日) 00:10:23ID:???
>>793,>>797-798
DB板の宣伝乙
0801nobodyさん2006/11/19(日) 00:17:53ID:???
>>795
> Zend社等の製品を使用しない限り、PHPは実行時に毎回コンパイルされ、キャッシュは
> されないそうですが、

zend社以外でもキャッシュは可能。
eacceleratorとか。

残りの質問は実際に作って試してみれば?
PHPでクリティカルだったりリアルタイムな処理はしないだろうし、
性能向上はハードに任せてメンテナンス性を重視して設計するのも
ありでは?

あ、実験したら結果を発表してね。
つ ttp://pear.php.net/package/Benchmark
これ使うと便利だよ。
0802nobodyさん2006/11/19(日) 02:13:59ID:qt8hCJ5U
質問させてください。
PHPでメタ検索のようなものをつくって居るのですが
検索サイト側がPOST形式の場合はどのように組み合わせばいいのでしょうか
get形式では
$data = 2ch
$url="http://www.google.com/search?hl=ja&q=";;
で
$url$dataでhttp://www.google.com/search?hl=ja&q=2chというようにできるのですが
postの場合はどのようにすればよろしいですうか?
0803nobodyさん2006/11/19(日) 02:19:01ID:???
>>802
PEAR::HTTP_Requestとか使うと吉
0804nobodyさん2006/11/19(日) 02:19:29ID:???
>>795
キャッシュならAPCとかもあるね。
関数定義に関しては、1つにまとめるのも分けるのも
どっちも速度低下の可能性があります。
まず無駄な関数定義は速度低下の元です。
それから読み込むファイルの数が増えるのも速度低下になります。
ってことでバランスの問題でしょう。
0805nobodyさん2006/11/19(日) 02:30:16ID:qt8hCJ5U
>>803
なるほど、そんな感じの事になってしまうのですね
ありがとうございました
0806nobodyさん2006/11/19(日) 03:51:16ID:Zd3ixGQK
PDOで
odbc:Driver={Microsoft Access Driver (*.mdb)};
な接続を行う場合、エンコードは指定可能でしょうか?

デフォルトで CP932 (Shift_JIS) のようですが、
Unicode文字 (UTF-8) を扱えずに困っています。

Windows Server 2003 / IIS / PHP 5.2.0
0807nobodyさん2006/11/19(日) 04:38:56ID:???
php-5.2.0のインストールで、makeでエラーが出ています。

make: *** [sapi/apache/sapi_apache.lo] Error 1

configureで--with-apxs=/usr/local/apache/bin/apxsを付けています。
何が問題なんでしょう?
Solaris10 x86です。
以下エラーあたりのログです。

In file included from /usr/local/apache/include/buff.h:32,
from /usr/local/apache/include/httpd.h:36,
from /var/spool/pkg/php-5.2.0/sapi/apache/php_apache_http.h:47,
from /var/spool/pkg/php-5.2.0/sapi/apache/sapi_apache.c:24:
/usr/local/include/openssl/ssl.h:747: error: syntax error before "X509_VERIFY_PA
RAM"
/usr/local/include/openssl/ssl.h:755: error: syntax error before '}' token
/usr/local/include/openssl/ssl.h:896: error: syntax error before "X509_VERIFY_PA
RAM"
/usr/local/include/openssl/ssl.h:976: error: syntax error before '}' token
In file included from /usr/local/include/openssl/ssl.h:983,
from /usr/local/apache/include/buff.h:32,
0808nobodyさん2006/11/19(日) 04:41:23ID:???
ログの続きです。

from /usr/local/apache/include/httpd.h:36,
from /var/spool/pkg/php-5.2.0/sapi/apache/php_apache_http.h:47,
from /var/spool/pkg/php-5.2.0/sapi/apache/sapi_apache.c:24:
/usr/local/include/openssl/ssl3.h:414: error: syntax error before "EC_KEY"
/usr/local/include/openssl/ssl3.h:441: error: syntax error before '}' token
/usr/local/include/openssl/ssl3.h:443: error: syntax error before '}' token
In file included from /usr/local/apache/include/buff.h:32,
from /usr/local/apache/include/httpd.h:36,
from /var/spool/pkg/php-5.2.0/sapi/apache/php_apache_http.h:47,
from /var/spool/pkg/php-5.2.0/sapi/apache/sapi_apache.c:24:
/usr/local/include/openssl/ssl.h:1520: error: syntax error before "EC_KEY"
/usr/local/include/openssl/ssl.h:1521: error: syntax error before ')' token
/usr/local/include/openssl/ssl.h:1523: error: syntax error before "EC_KEY"
/usr/local/include/openssl/ssl.h:1524: error: syntax error before ')' token
make: *** [sapi/apache/sapi_apache.lo] Error 1

ご教授お願いします。
0809nobodyさん2006/11/19(日) 05:46:39ID:???
>>807
スレ違いとはいわないが、その手の話題なら、
http://pc8.2ch.net/unix/
こっちにいったほうがいい答えもらえるんじゃないかね。
0810nobodyさん2006/11/19(日) 11:07:15ID:EVuH/Yur
>>736です。
特に質問というわけではないのですが
また少し改良したのでうpします。何か問題があればご指摘お願いします。
http://onegaisiamsu.ojaru.jp/php2.txt
0811nobodyさん2006/11/19(日) 11:07:41ID:???
>>801
> 性能向上はハードに任せてメンテナンス性を重視して設計するのも
> ありでは?
それはひょっとしてメンテナがタコだったりろくに設計能力が無いと永久に救われないという事を言っているのか?
0812nobodyさん2006/11/19(日) 11:15:41ID:???
>>811
いや、そんな深読みせんでもw
0813nobodyさん2006/11/19(日) 12:30:46ID:Zd3ixGQK
>>809
UNIX で適当なスレが見当たらなくて…

あんまし、こんな構成で組んでいる人っていないんですかね。
私自身も、インターネットじゃ絶対にこんな構成では組まないのですが、
イントラ用に検討しているので。
0814nobodyさん2006/11/19(日) 13:06:44ID:???
>>807
opensslのヘッダファイルでエラーが出てるんだから
openssl周りじゃね?--with-opensslはつけてるのか?
0815nobodyさん2006/11/19(日) 13:36:52ID:???
そのログを見てわからないレベルって事は何もわかってないんだろうし
素直に素人でも使えるパッケージ系を使った方が良いと思う
0816nobodyさん2006/11/19(日) 13:39:36ID:???
PHPのinclude文でファイルを読み込む場合、これは実行時に読み込まれる
のでしょうか?例えば、

if($flag == 1) {
  include("a.php");
} else {
  include("b.php");
}

のようなプログラムの場合$flagが1の場合はb.phpは読み込まれないって
考えでいいでしょうか?それとも、初回のコンパイル時に全てのincludeファイル
は読み込まれて、実行はされないってことでしょうか?
0817nobodyさん2006/11/19(日) 13:41:50ID:???
>>816
前者
実行時に読み込まれる
0818nobodyさん2006/11/19(日) 13:49:07ID:???
>>817
>>816ではないが便乗質問。

ということは、APCやeacceleratorでキャッシュされる場合は条件が
変わるごとに書き換えられるのかな?
0819nobodyさん2006/11/19(日) 13:55:50ID:???
>>818
APCやeacceleratorのキャッシュの仕組みを
ちゃんと把握してるわけじゃないから確信はもてないが
書き換えというか一度includeされた時点でそのスクリプトの
キャッシュが作成されるっていう感じじゃないかな
0820nobodyさん2006/11/19(日) 14:32:29ID:???
とういうことは、たくさんの関数を1つのファイルに定義しておいて、
いろんなところで使いまわすより、関数を細かくファイルに分けておいて、
使う場合のみ、適宜includeした方のが、高速ということになりそうだね。
0821nobodyさん2006/11/19(日) 14:54:22ID:???
確認したわけではないけど確かAPCはインクルードファイルはキャッシュしないとか
何処かの記事で見たけど良くはしらね
0822nobodyさん2006/11/19(日) 15:33:25ID:???
おれの経験からいうと、インクルードではキャッシュ生成されない
0823nobodyさん2006/11/19(日) 15:36:11ID:???
pearのcache_liteだっけ?あれはわざとinclude使ってないとか書いてあったような
0824nobodyさん2006/11/19(日) 15:57:45ID:EVuH/Yur
会員登録制のシステムを作ろうとしています。
自分の考えている流れとしては、

1, 登録ページでIDとメールアドレスとパスワードの3点を入力してもらう
2, 登録されたメールアドレスにsession(?)とIDを後ろにつけた登録URLを送る
   http://example.com/register.php?session=hogehoge&id=piyopiyo見たいな感じで。
3, 上記URLのアクセスがあった時点で会員登録完了
   ただし24時間以内にアクセスがない場合無効。

という感じにしようと思います。(この時点で間違っているようでしたらご指摘ください)

そこで、今2の仮登録の情報をどこに保管するかで困っています。
自分の考えられる方法としては
1, 2の時点でMySQLに挿入してしまう(自分はMySQLを使っています)
2, どこかに一時ファイルとして作成して保管する

この二つです。
1はSQLの操作なのでなんとなくわかるのですが、24時間で消す方法がわかりません(クローン?使えばできる?)。
2はファイル操作をしたことがないので良くわからないです。

このような処理を行う場合どのようにすればいいでしょうか?
1,2のどちらのほうが良いか、また、それ以外に良い方法があるのなら教えていただきたいです。
よろしくお願いします。
0825nobodyさん2006/11/19(日) 16:17:43ID:???
どっちでもいいよ
仮登録した日時を取得しておいて本登録されるタイミングで
24時間過ぎていたら無効、んでその時とかに24時間過ぎてる情報は破棄
08267962006/11/19(日) 17:00:23ID:???
>>796
よろしくお願いします

他のCGIではならないのでどっかソースをいじるのだとは思うのですが
こんな症状になるのは自分だけでしょうか?
0827nobodyさん2006/11/19(日) 17:04:06ID:???
>>826
1、お前のパソコンが犯されている
2、お前の脳味噌が腐っている
3、宣伝
4、配布者が犯人
0828nobodyさん2006/11/19(日) 17:07:50ID:???
>>821-822
するする。設定によるかもしらんが。
うちでAPC使ってて、rsyncのミスでincludeファイルを
タイムスタンプを過去のもので上書きしちゃったら
思いっきり誤動作したもの。
includeファイルはそれぞれ個別にキャッシュを生成してる。
0829nobodyさん2006/11/19(日) 17:09:55ID:???
「戻る」(back)で戻ってる部分を探せよ。
そのせいだろ。
0830nobodyさん2006/11/19(日) 17:12:34ID:???
>>824
うちはDBに記録してる。
で、毎日1回のメンテナンスをcronで動かして
24時間以上経過してるのは削除してる。
08317962006/11/19(日) 17:34:07ID:???
>>827
PCがおかしいのですかね?
IEでやるとページが表示できませんってなって更新すると書き込みできてます。

戻る時のアドレスも ibbs.php 本体のままなのです

他の人がならないということがわかっただけでも助かりました。
0832nobodyさん2006/11/19(日) 18:56:56ID:???
2、
0833nobodyさん2006/11/19(日) 20:28:13ID:???
>>824
別にcron使わんでも、register.phpにアクセスされたときに、
ついでにその仮登録情報のチアムスタンプが24時間以内のものかどうか確認して、
期限を過ぎてたらDBから削除、過ぎてなかったら本登録処理、ってやればいいでしょ。
0834nobodyさん2006/11/19(日) 23:12:50ID:afBb4Sje
クラス名とその中のメソッド名は同じ名前が使えないのでしょうか?
0835nobodyさん2006/11/19(日) 23:13:23ID:???
this と selfの違いってなに?
0836nobodyさん2006/11/19(日) 23:13:35ID:???
それコンストラクタ
0837nobodyさん2006/11/19(日) 23:15:54ID:???
>>835
thisは自身のオブジェクト、オブジェクトの中からじゃないと使えない
selfは単なる自分のクラス名、スタティックコール内からでも使える
0838nobodyさん2006/11/19(日) 23:16:19ID:???
>>837
あthx!
08398342006/11/19(日) 23:26:24ID:afBb4Sje
コンストラクタって
newしたときに実行される関数というふうにとらえて間違いないでしょうか?
0840nobodyさん2006/11/19(日) 23:28:28ID:???
間違いないよ
0841nobodyさん2006/11/19(日) 23:55:33ID:QPerEU0+
Javaって最強ですか?
0842nobodyさん2006/11/20(月) 00:03:04ID:???
>>833
仮登録されたまま放置された登録レコードのゴミ掃除の話だと思ってたよ。
0843nobodyさん2006/11/20(月) 00:04:20ID:zRxNwc2j
レス遅くなりましたが>>824です。
答えてくれた方々ありがとうございました。
>>833のチアムスタンプがググってもわからなかったのですが何のことでしょうか?

今のところDBに入れてcronで削除していこうと考えています。
0844nobodyさん2006/11/20(月) 00:04:25ID:???
>>841
C++が最強。
0845nobodyさん2006/11/20(月) 00:05:09ID:???
>>843
833じゃないけどタイムスタンプの打ち間違いかと。
0846nobodyさん2006/11/20(月) 00:07:42ID:???
>>843
で、833+ゴミ掃除ってことで、「誰か」が本登録処理にアクセスしたときに
SQLで「delete from 登録 where 仮登録日付 < 24時間前」流せば一発で全部掃除できない?
最後の1人が放置したまま誰もアクセスしてこなくなったら掃除できないけど
そこまで気にするほどのものじゃあるまい。
0847nobodyさん2006/11/20(月) 00:16:51ID:zRxNwc2j
>>845
なるほど、ありがとうございます。
>>846
これならクローン使わずにもできますね。
こっちの方がよさそうです。
ありがとうございます。
0848nobodyさん2006/11/20(月) 00:26:33ID:???
>>847
この辺はユーザの登録数と登録アクセス頻度次第だよ。
ファイルでもDBでも数が多いところに削除の検索処理を入れると重くなる
(特にSQLのdeleteはロックがかかってその間のselectが停止する)ので、
全体のレスポンスに問題が出るケースもある。
そういう場合はcronでアクセス頻度の低い時間帯にメンテした方がいい。
その辺のTPOは踏まえた上で設計すべし。
0849nobodyさん2006/11/20(月) 00:38:19ID:zRxNwc2j
>>848
将来のことを見据えて(どうなるかわかりませんがw)
cronを使ってみます。
わからないことばかりですいませんでした。
いろいろとありがとうございました。
0850nobodyさん2006/11/20(月) 01:13:15ID:???
最初は逐次でやっといて困ってからcronにすりゃいいじゃん
0851nobodyさん2006/11/20(月) 02:38:25ID:fzLhPh+i
初心者ですが、セッションについて教えてください。
今、例えば、トップページがあって、そこからログイン→mypageでmixiみたいに
自分のページが表示されるような感じで、写真を投稿できるようになってます。
トップページには検索ができて、それは誰でもできるようになってるのですが、
ログインしたユーザー(セッションを持っている)は、その検索結果(写真)を
自分のページに保存できるような感じになってます。
これは、セッションを持つなら登録ボタン表示、持たないならボタンを非表示みたいな
感じにしています。
ここで、質問なんですが、このようにセッションを持つユーザーと持たないユーザーが
同じページを見れるのは危険でしょうか?
セッションを持つユーザーが、セッションが必要なページと必要じゃないページを行ったり来たり
できるのは、危険でしょうか?
どうかアドバイスお願いします。
0852nobodyさん2006/11/20(月) 06:53:32ID:???
PHPアクセラレータで一番高速なのはどれか?
http://gigazine.net/index.php?/news/comments/20061103_php_accelerator/

このページで、
「ほかにはZend Optimizer、Zend Platform、ionCube PHP Acceleratorなどがありますが、
どれも最初の3つと比べるとあまり「おすすめできない」レベルとのこと。」
って書いてあるけど、その根拠が何も書かれてないのが謎。
要するに「有料のやつは最初から論外」というニート特有の考え方なのかな??
0853nobodyさん2006/11/20(月) 07:43:01ID:???
>>852
根拠は上の方に書いてあるこれ。
> で、この「PHPアクセラレータ」の種類がいろいろあるということはそれぞれ一長一短なワケですが、
> とりあえずあっちこっちのネット上における各種試用レポートなどを総合すると
> 「APC (Alternative PHP Cache)、eAccelerator、XCacheのうちのどれか」が無難なようです。
本人の考えってより、この人が発見できたネット上の試用レポートってのがどれなのか、が問題みたいね。
でもアクセラレータの試用レポートの類で「有料だから無視」とか言ってるのはほとんど無いと思うけど?
0854nobodyさん2006/11/20(月) 08:29:53ID:???
>>853
それじゃ根拠になってない。
「おすすめできない」と判断するに至ったソースも一切書かれてないし。
0855nobodyさん2006/11/20(月) 09:01:52ID:???
GIGAGINEの記事とかアテにすんなよ
自分でちゃんと調べてどれがいいのか決めた方がいい
0856nobodyさん2006/11/20(月) 09:09:50ID:???
>>855
それもそうだな。
じゃあお前の意見もアテにしないことにするわ。
0857nobodyさん2006/11/20(月) 09:26:38ID:???
そうそう。他人の意見なんかに耳傾けず自分で全部調査しなさいね。
0858nobodyさん2006/11/20(月) 09:57:32ID:???
うちは Zend Optimizer + eAccelerator の同居で成功していると思うけどな
>>181 の5000までの素数ベンチプログラムで

平均3.20-3.25 位

環境は
Athlon2800
M PC3200-512 x 2

OS WinXP
Apache 2.0.59
PHP 5.2
Zend Optimizer
eAccelerator

参考までに
0859nobodyさん2006/11/20(月) 10:20:38ID:???
MySQLでsort というフィールドに一意性を持たせて
順番データを保持させようとしています。
指定行の「一個上に上がる」をクリックしたら、
そのデータのsortを-1して、
そのままだと同じ値になってしまう行データのsortを+1したいと考えています。

ところが一意性を持たせてあるので、
「そのsortを-1して、」という時点で、
一意性がないぜゴルァというエラーが出てしまいます。
指定行の-1と
別指定行の+1を同時に処理させる方法はないでしょうか?
0860nobodyさん2006/11/20(月) 10:48:14ID:a1LEez8m
一意性を持たせない
一回削除しといて再度INSORTするとか
0861nobodyさん2006/11/20(月) 11:40:49ID:???
配列1つを引数にとって配列を返す関数 return_array($array) があるとして、
その戻り値の最初の要素の値を取り出したいのですが、
 $result = return_array($array)[0];
と書くとParseErrorになります。
どう書けばよいのでしょうか?
0862nobodyさん2006/11/20(月) 11:47:33ID:???
>>861
$tmp = return_array($array);
$rsr = $tmp[0];
って書けば?
08638612006/11/20(月) 12:04:17ID:???
なるほど、やはり一度変数に入れるしかないのですね。
ありがとうございます。
0864nobodyさん2006/11/20(月) 12:04:47ID:???
>>858
実際のWebシステムでは、スクリプト本体よりもむしろ
サーバやDB入出力の部分がボトルネックになるので、
素数ベンチなんてほとんど意味がないけどな。
0865nobodyさん2006/11/20(月) 12:05:42ID:???
>>861
素直に$result[0]を使えば?
0866nobodyさん2006/11/20(月) 12:30:30ID:???
>>863
じゃあ
list($result, ) = return_array($array);
0867nobodyさん2006/11/20(月) 13:31:12ID:???
ありがとう。
08688592006/11/20(月) 13:40:57ID:???
>>860 さんの方法以外に良か方法なかとでしょうか
0869nobodyさん2006/11/20(月) 13:50:01ID:???
>>868
0をスワップ用にしといて片方を0にupdateしてから後2回updateするとか
08708592006/11/20(月) 15:13:58ID:???
>>869
天才を発見しますた
シンプルで楽層ですね、
ありがとうございます、その方法で行きます
0871nobodyさん2006/11/20(月) 15:33:46ID:???
いや最大で全件変えなきゃだめじゃん。
そういう関数作ったけど俺は。
0872nobodyさん2006/11/20(月) 15:53:05ID:???
>>859
一意性はスクリプト側で担保しろ。
別に難しいことじゃない。
任意のsortの値をINSERTかUPDATEする前に、
事前にSELECTしてみて存在するか否かを確認すればいいだけだ。
0873nobodyさん2006/11/20(月) 16:08:58ID:???
複数のレコードを一斉に変更してかつ一意を保とうとするなら
前後でのテーブルのLOCKを忘れるなよ。
0874nobodyさん2006/11/20(月) 16:34:42ID:???
オブジェクト指向PHPを意識しはじめたんですが、
肝心のオブジェクト指向がよくわからない・・・
従来のプログラムを、適当に部分部分でパーツ化して、
それをメソッドにすればいいんでしょうか?
オブジェクトにするメリットがわからない状態なので、
とりあえず適当にやってればそのうちわかるだろう程度に
考えているのですが、やっぱちゃんとした本買って勉強するべきですか?
0875nobodyさん2006/11/20(月) 16:59:23ID:???
>>874
とりあえず、この辺読んどけ
ttp://itpro.nikkeibp.co.jp/article/Watcher/20061117/254159/
0876nobodyさん2006/11/20(月) 17:25:55ID:???
焦らなくても、マニュアルを眺めていたらそのうち書けるようになる
0877nobodyさん2006/11/20(月) 20:11:41ID:???
書くのは慣れだけでいくらでもできるようになるが
設計はそれじゃいつまでもできるようにならんよ。
せめて他人が書いた(腐ってない)ソースを読むくらいしないと。
0878nobodyさん2006/11/20(月) 20:35:36ID:???
腐ってないソースを見つけるのが難しいんだけど・・・
0879nobodyさん2006/11/20(月) 20:38:05ID:???
さらに言えば、ソースが腐っているか否かを見極めるのがまた難しく、
それが出来るくらいの能力がある人なら既に設計能力も高いと思う。
0880nobodyさん2006/11/20(月) 20:47:59ID:???
結局、OOPの良書と言われている本を読まなきゃ駄目、でFA?
0881nobodyさん2006/11/20(月) 20:50:02ID:???
PEARなりフレームワークなりのソース読めばいいじゃん
0882nobodyさん2006/11/20(月) 20:57:28ID:zRxNwc2j
>>824です。
1,の部分を今作っています。
入力が正しいか確認するだけのプログラムですが作りました。

腐ったソースの話題の中で公開するのもあれですが
添削してほしいです。
よろしくお願いします。
http://onegaisiamsu.ojaru.jp/php3.txt
0883nobodyさん2006/11/20(月) 21:00:31ID:???
もう時代はAOPらしいけどね。
アスペクト指向だっけか?
アスペクトPHPとかそのうちくるんだろうか・・・
0884nobodyさん2006/11/20(月) 21:19:15ID:???
そしてコンポーネント指向、次にエージェント指向
0885nobodyさん2006/11/20(月) 21:20:30ID:???
念のため、AOPはOOPを補助するものであってサヨナラOOPってわけじゃない。
0886nobodyさん2006/11/20(月) 21:28:37ID:???
言わばただのフィルタじゃん、AOPって
0887nobodyさん2006/11/20(月) 21:30:15ID:BPin2pz1
mb_ereg系はデフォルトで^が改行直後、$が改行直前にもマッチするってあちこちで書かれてるけど、
実際やってみたらマッチしませんでした。
で、オプションでmを指定したらマッチするようになりました。

サンプルコード:
    echo mb_ereg_replace("^.", "", "123\n123") . "\n\n";
    echo mb_ereg_replace(".$", "", "123\n123") . "\n\n";
    echo mb_ereg_replace("^.", "", "123\n123", "m") . "\n\n";
    echo mb_ereg_replace(".$", "", "123\n123", "m") . "\n\n";
結果:
    23
    123
    
    123
    12
    
    23
    23
    
    12
    12
バージョン: 5.0.5

でもマニュアルには

> m を指定した場合、マルチラインモードとなり、 改行文字も "." に含まれるようになります。
(http://www.php.net/manual/ja/function.mb-ereg-replace.php)

としか書かれてません。

結局、デフォルトで^$が改行直後直前にマッチせず、mを指定するとマッチするようになるのが正しい挙動なんでしょうか。
それともこれはバグなのでしょうか。
0888nobodyさん2006/11/20(月) 21:48:35ID:???
あちこちってどこ?
0889nobodyさん2006/11/20(月) 22:30:16ID:efSEaAzM
PHPのモジュールをコンパイルしてインストールするに際に、phpizeコマンドが必要
ですよね?
それで、PHPマニュアルに「もし phpize コマンドが見つからない場合は、
適切な devel 版の PHP パッケージをインストールしましょう。 PHP や拡張
モジュールをビルドするために必要なヘッダファイルや phpize コマンドは、この
パッケージに含まれます。」
と書かれていたので、PHP-5.2.1-devをインストールしたのですが、phpizeコマンド
が認識されません。phpizeコマンドを使うためには他に何が必要なのでしょうか?
0890nobodyさん2006/11/20(月) 22:42:20ID:???
>>889
パスが通ってないだけでしょ多分
08918892006/11/20(月) 22:55:01ID:efSEaAzM
>>890
確かに、パスを通す必要があったようです。
しかし、WindowsでPHPを使っているのですが、パスを通すといっても
phpizeを使うためにはどこを指定すれば良いのか分かりません。
よろしければ、教えていただきたいのですが。
0892nobodyさん2006/11/20(月) 22:57:30ID:???
ぐぐったほうが早い
0893nobodyさん2006/11/20(月) 22:59:03ID:???
phpizeってwinなら関係ないかと
具体的に何を入れたいんだよ
08948892006/11/20(月) 23:04:45ID:efSEaAzM
>>893
PHPでNamazuを呼び出すためのモジュールです。
phpizeコマンドを使えるようにして、configure,makeはcygwinでやろうと
思ったんですが。
>phpizeってwinなら関係ないかと・・・windowsでは必要ないんですか?
0895nobodyさん2006/11/20(月) 23:09:42ID:???
またおまえか
ソースに付いてるREADME.WIN32-BUILD-SYSTEMは読んだのか?
0896nobodyさん2006/11/20(月) 23:11:56ID:???
ああwin用のPHPじゃなくてcygwinか、、、
でもcygwinでphp入れたならbinにphpize入ってないか?
0897nobodyさん2006/11/20(月) 23:13:50ID:???
>>894
linuxやcygwinでビルドしてもそれをwinのphpでは使えないよ
08988892006/11/20(月) 23:20:34ID:efSEaAzM
>>897
そ、そうだったんですか。。。
じゃあ、PHP自体もcygwinを使ってWindows用のではないPHPを入れなければ
いけないんですね?
0899nobodyさん2006/11/20(月) 23:28:15ID:???
>>898
うん、つーかcolinuxとかVMwareの方がいいと思うがcygwinなんかより
09008892006/11/20(月) 23:33:46ID:efSEaAzM
ありがとうございます。モジュール組込みの前に環境自体が
整っていなかったようですね。
0901nobodyさん2006/11/20(月) 23:56:43ID:???
初歩的な質問で申し訳ないのですが、
PHPをCronで実行する方法が判らなくて困っています。
どなたかご教授下さい。Fedora5です。
0902nobodyさん2006/11/20(月) 23:58:48ID:???
>>901
crontabにCLI版PHPで作ったスクリプトファイルをフルパスで登録してやるだけ。
0903nobodyさん2006/11/21(火) 00:02:57ID:???
CLI版PHPで作ったスクリプトファイルとは一体何でしょう(つд`;)
0904nobodyさん2006/11/21(火) 00:20:54ID:???
>>903
#!/usr/local/bin/php
<?php
 :
?>
みたいなスタイルで書いたスクリプト。
1行目でCLI(コマンドラインインターフェース)版としてインストールしたPHPのフルパスを書く。
0905nobodyさん2006/11/21(火) 00:39:44ID:???
もしくは、crontabに
/usr/local/bin/php スクリプトファイルのフルパス
って指定をするのもアリ。
これならスクリプトファイルのパーミッションを実行可にしなくてもOK
0906nobodyさん2006/11/21(火) 00:43:56ID:+Nuu4hvh
超初心者ですがWAMPでデータベースを作ろうとMySQL5.0.27、PHP 5.2.0をインストールしたのですが、
ふと気付いたら鯖(Xserver)のスペックが以下の通りでした。

PHPバージョン 4.3.9 ( セキュリティパッチ適用済 )
MySQLバージョン 4.0.26

これって、自宅鯖や他の鯖を使わずにあくまでも今使ってるXserverでDBを利用するなら、
インストールし直してPHP4.3.9・MySQL4.0.26の環境でDBを作成しないと駄目なのでしょうか?(´・ω・`)
0907nobodyさん2006/11/21(火) 00:59:00ID:???
>>906
駄目ってことはないけど、どこが違うのか常に意識しとく必要はある。
初心者ならインストールし直して揃えといた方が無難。
0908nobodyさん2006/11/21(火) 01:07:51ID:???
>>904
何度もすみません;

#whereis phpとやったら
php: /usr/bin/php /etc/php.ini~ /etc/php.ini /etc/php.d /usr/lib/php
となったのでcrontabに
0,10,20,30,40,50 * * * * /usr/bin/php [対応スクリプトへのフルパス]
とやったものの10分経過しても更新されずでした・・・
service crond restartもやったのですが駄目でした('A`)
0909nobodyさん2006/11/21(火) 01:16:42ID:???
それでどうしろと?
0910nobodyさん2006/11/21(火) 01:18:54ID:+Nuu4hvh
>>907
有難う御座います、インストールし直してチャレンジしてみます!
0911nobodyさん2006/11/21(火) 01:29:05ID:???
>>908
まずスクリプトが実行されたのかどうかを確認してみては?
スクリプトの先頭にファイルへのログ出力を入れてみるとか。
ちなみにコマンドラインで
/usr/bin/php [対応スクリプトへのフルパス]
を実行したらそれはちゃんと動くんだろうね?
特にカレントディレクトリには気をつけた方がいいよ。
試しにrootディレクトリ上で実行してみるといい。
0912nobodyさん2006/11/21(火) 12:25:05ID:???
function dt ($method='select') {

$array = $this->$method();
}

こんな感じで因数内の文字列を使い、
メソッドを呼び出すと、エラーが出てしまいます。

Fatal error: Method name must be a string in

これはあきらめるしかないんでしょうか・・・
0913nobodyさん2006/11/21(火) 13:04:27ID:???
いんすう!?
0914nobodyさん2006/11/21(火) 13:06:16ID:???
なんかデジャブ・・・764か?
call_user_func()使えば。

あと因数でなく引数な。
0915nobodyさん2006/11/21(火) 13:12:38ID:???
>>914
ありがとうございます
0916nobodyさん2006/11/21(火) 13:14:44ID:???
>>912
$method ってちゃんと文字列になっているの?
0917nobodyさん2006/11/21(火) 16:00:58ID:???
nullか何かだろうな。変だと思ったらvar_dump()しろよ
0918nobodyさん2006/11/21(火) 16:25:26ID:bLvv9/Ln
class Hoge{
  function A() { }

  function B() {
    function C() { }
  }
}

上記の場合、

B ( )の中からA ( ) を呼び出すには
$this->A()

ですが、

B ( )の中からC ( ) を呼び出すには
どう記述すればいいんでしょう???
0919nobodyさん2006/11/21(火) 16:30:48ID:???
functionをネストした場合実行時の定義になるから
B()をコールした時に普通にグローバル関数としてC()が定義されるはず
09209182006/11/21(火) 16:34:42ID:???
>>919
天才サンクス
0921nobodyさん2006/11/21(火) 17:28:27ID:???
>>912
function dt ($method = 'select') {
$array = call_user_func(array($this, $method));
}
試してないから動かないかもしれないけど...
0922nobodyさん2006/11/21(火) 17:30:03ID:???
>>914,921
call_user_func()でも可変関数でもどっちでもいいんじゃないの?
09239212006/11/21(火) 17:40:18ID:???
>>922
シングルトンパターンで、クラス内でオブジェクトを生成するときなんかは
$class = __CLASS__;
return new $class();
みたいにすると楽チンだよな。
0924nobodyさん2006/11/21(火) 17:46:22ID:???
912のコードをcall_user_func()を使って書き換える意義は何か、という意味なんだけど
0925nobodyさん2006/11/21(火) 18:02:58ID:???
諦めるよりは意義あるんじゃね
09269212006/11/21(火) 18:02:59ID:9jzN//PM
>>924
とりあえず、$methodにnullぶちこんでも警告が出るだけでエラーにはならなくなる。
0927nobodyさん2006/11/21(火) 18:09:01ID:???
>>925
まあその程度の話か
0928nobodyさん2006/11/21(火) 18:41:14ID:???
「とりあえずそれで動いた」な対策は、phpがアップデートしたときに、
謎の不具合現象が発生し意図した動作をしない!どこだ、何だ!と
悩むことになるでしょう...。
0929nobodyさん2006/11/21(火) 18:48:12ID:???
クラスの関数に比べての優位性がよくわかりません、
プログラムを車にたとえば、
クラスはタイヤ、と表現してる本とかありますが、
それは関数も同じでは・・・?

単一関数で片付けられないようなものは
クラス、という認識を持ってるのですが間違ってますよね?
0930nobodyさん2006/11/21(火) 18:53:51ID:???
関数はギアボックスの中の歯車でクラスはギアボックスの事を言う
タイヤだとどちらでも良いイメージだな
0931nobodyさん2006/11/21(火) 19:00:10ID:???
スレ違いだけどタイヤはどう見ても式じゃない
0932nobodyさん2006/11/21(火) 19:00:11ID:???
いや、俺らのレベルが高いんじゃなくてキミのれべry
0933nobodyさん2006/11/21(火) 21:31:39ID:PV0heR9Q
定型の決まった文字を、自動的に2chの掲示板に書き込んでくれるようなソフトって作れますか?
0934nobodyさん2006/11/21(火) 21:33:20ID:???
次の質問どうぞ
0935nobodyさん2006/11/21(火) 21:43:54ID:???
メソッドがタイヤ
って書いてるんじゃないか?
0936nobodyさん2006/11/21(火) 21:53:55ID:???
GD使って棒グラフを生成したいのだが、どっかにライブラリ落ちてない?
0937nobodyさん2006/11/21(火) 21:56:00ID:???
ぐぐれば出てくるんじゃないの
jpgraphとかpearのimage_graphとかsparklineとか
0938nobodyさん2006/11/21(火) 22:42:42ID:d5GN+nTA
windowsXPにapache1.3とphp4.4です。
初期設定の段階なんですが<?php phpinfo(); ?>
がブラウザでそのまま表示されます。
どこが悪いんですか?
0939nobodyさん2006/11/21(火) 22:44:12ID:???
頭ですね。手遅れです。
0940nobodyさん2006/11/21(火) 22:54:35ID:???
そりゃ大変だ
0941nobodyさん2006/11/21(火) 22:55:24ID:???
>>938
httpd.confに
AddType application/x-httpd-php .php
09429832006/11/21(火) 23:02:05ID:d5GN+nTA
httpd.confに
AddType application/x-httpd-php .php入ってます
0943nobodyさん2006/11/21(火) 23:03:04ID:???
apache再起動
09449832006/11/21(火) 23:06:58ID:d5GN+nTA
再起動しました
0945nobodyさん2006/11/21(火) 23:16:57ID:???
LoadModule/AddModule
0946nobodyさん2006/11/21(火) 23:22:26ID:???
コマンドプロンプトから
format c:
0947nobodyさん2006/11/21(火) 23:39:34ID:???
>>946
自分のPCでやれよ、ボケ。
0948nobodyさん2006/11/21(火) 23:40:46ID:???
何も起こりませんでしたが何か?
0949nobodyさん2006/11/22(水) 00:31:40ID:???
非WindowsでPHP書いてる方は何人いるのかな?
うちはWindows使えない時だけだけど。。。
0950nobodyさん2006/11/22(水) 00:37:30ID:???
うちはむしろUNIX使えないときだけWindows。
0951nobodyさん2006/11/22(水) 02:16:11ID:3AXcb0+r
フォームで$_GETを使用したいのですが
セキュリティ上の不安があります。
たとえば、値が未入力であったり不正な場合
TOPページに飛ばしたいのですがどうすればよいでしょうか
0952nobodyさん2006/11/22(水) 02:20:40ID:???
if (empty($_GET['hoge'])) {
header("Location: http://www.orenopage.com/top.html";);
exit();
}
とか?
最近はこんなんもあるけど http://jp2.php.net/filter
0953nobodyさん2006/11/22(水) 02:26:10ID:???
format c:を打てば実行されると思ってるバカがいるスレですね。
0954nobodyさん2006/11/22(水) 02:27:21ID:aJWjKYEf
オブジェクト指向について教えてください。
0955nobodyさん2006/11/22(水) 02:29:16ID:???
>>954
PHP = オブジェクト指向でないから、スレ違い。。。火星にでも行ってろ
0956nobodyさん2006/11/22(水) 02:34:50ID:3AXcb0+r
>>952
わお ありがとうございます。未入力の場合はこれで解決しそうです。
あと、値にタグを入力された場合、表示が少しおかしくなるのですが
タグの無効化的なものはありますでしょうか
0957nobodyさん2006/11/22(水) 02:45:46ID:???
strip_tags()かhtmlspecialchars()
0958nobodyさん2006/11/22(水) 05:40:34ID:???
>>956
XSSとかわからないなら配布済みのスクリプト使えば
strip_tags()かhtmlspecialchars()もわからないのなら致命的だとおもうよ
0959nobodyさん2006/11/22(水) 10:05:40ID:???
ちょいと質問です。
WindowsXP/Apache2.0.58/PHP5.2.0 を自PCに入れ、Webアプリをぽちぽち作っているんですが

・php.ini側で"session.use_trans_sid = 0"にして、URLにもSIDを埋め込まず
・かつ、クライアント側で 全てのCookieを拒否、念のため全てのゾーンのセキュリティを'高'にしても

Cookie受け入れ拒否&URLに差し込んでもいないのに、セッションが成立してしまっています。
(ただセッション変数が引き継がれているからってセッションが成立してない、とか?あるんかなそんな事…)
これって何故なのでしょうか?

------------------以下テスト.phpソース------------------
<?
session_start();
if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0 ;}
$_SESSION['count']++;
?>

<html>
<body>
あなたは <?= $_SESSION['count'] ?> 回目の訪問です。
<a href="<?php echo $PHP_SELF ?>">カウントを増やす</a>

<?php
echo '<BR><BR>TEST<BR><BR>' . $PHPSESSID ;
?>

------------------以上テスト.phpソース------------------
.phpへのアクセスは ttp://localhost/***.php で行っています。
0960nobodyさん2006/11/22(水) 10:09:16ID:???
すみません、書き忘れで追記です。
複数ブラウザを立ち上げて同時に前述の.phpにアクセスした時に
$PHPSESSIDは毎回違う値になってます。
%USERPROFILE%\Cookies\ 配下には(当然ながら)当該Cookieが存在しない…様に見えます。
ボスケテ。
0961nobodyさん2006/11/22(水) 11:42:15ID:???
セッションクッキーを受け入れてるから
0962nobodyさん2006/11/22(水) 11:45:49ID:???
SIDは別に1PCに1IDではないので複数のブラウザで開けば当然そうなります。
アカウントか何かを発行しているサイトであればアカウントから割り当てるが
宜しいかと。
0963nobodyさん2006/11/22(水) 11:46:57ID:???
<script>document.write(document.cookie)</script> みたいなのを入れてcookieが
どうなってるのかみてみたら

ブラウザのURL入れるところに javascript:alert(document.cookie) と入れるとか
09649592006/11/22(水) 12:11:38ID:???
>>961,962,963
ご教授ありがとうございます。
恥ずかしながら普通のクッキーとは別物の"セッションクッキー"なんてのがあるなんて知りませんでした。
確かに >>963 の scriptで見てみたら見事に $PHPSESSID=*********** が入ってました。
# これって単一のCookieファイルに保存されてるんじゃ無いですね。

また、Cookie関連設定全て拒否にしても >>959で書いた.phpにてカウンタが回っていたのは
.phpにアクセスする際に ttp://localhost/ にしていたからでした。
hostsに "(自IP)   testtest.net" と記述、 ttp://testtest.net/***.php でアクセスしたらば
期待通りカウンタが常に1になる結果となりました。
お騒がせしてすみません…

セッションクッキーにSIDが入ってる即ちそれを読みとればハイジャック出来てしまうので
何かCookieにtokenでも入れて正当性を確保するロジックでも作ってきます。

>>961,962,963 、ありがとうございました。
0965nobodyさん2006/11/22(水) 12:17:39ID:???
>>961-963ではないが、どういたしまして。
0966nobodyさん2006/11/22(水) 12:41:51ID:???
>>965
お呼びでなくてよ
0967nobodyさん2006/11/22(水) 13:26:13ID:???
            ____
         __,,/  _, ----`ヽ  :.
     :.  / _     ___   、\
       / /   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     : : ヘ     : : {: : :/:.::∧|
0968nobodyさん2006/11/22(水) 13:47:29ID:???
こういう女が実際に回りにいたらむかついてくる
0969nobodyさん2006/11/22(水) 14:16:54ID:???
>>964
># これって単一のCookieファイルに保存されてるんじゃ無い
ん?

>.phpにアクセスする際に ttp://localhost/ にしていたから
んん??

>Cookieにtokenでも入れて正当性を確保する
んんん???
0970nobodyさん2006/11/22(水) 15:08:02ID:???
>>964
セッションクッキーは普通のクッキーだ
ワンセッション限りのクッキーはファイルには保存されない(オンメモリ)
0971nobodyさん2006/11/22(水) 15:22:33ID:???
> ワンセッション限りのクッキーはファイルには保存されない(オンメモリ)

この「ワンセッション限りの」の「セッション」(ブラウザのセッション)と
PHPの「セッション」の区別が付いてないやつは意味がわからないだろうね
0972nobodyさん2006/11/22(水) 15:28:55ID:???
うちのブラウザは賢いからクラッシュしてもセッション復元できるよ
0973nobodyさん2006/11/22(水) 17:31:21ID:???
PHPのマニュアルに、

> year
> 年。2 桁または 4 桁の値を指定可能で、 0-69 の間の値は 2000-2069 に、
> 70-100 は 1970-2000 にマップされます。 今日最も一般的なシステム、
> すなわち time_t が 32 ビットの符号付き整数である システムでは year
> として有効な範囲は 1901 から 2038 の間ですが、この制限は
> PHP 5.1.0 以降なくなりました。

ttp://jp.php.net/manual/ja/function.mktime.php

と書いてあるけど、

% uname -a
FreeBSD xxx.yyy.zzz 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Fri Oct 6 13:59:46 JST 2006 [email protected]:/usr/src/sys/i386/compile/GENERIC i386
% php -v
PHP 5.2.0 (cli) (built: Nov 16 2006 17:47:45)
の環境で、

% php -r "echo mktime(0, 0, 0, 2, 1, 2038);"
としても値が返ってこないのですが・・・。

上記の引用部分はどういう意味ですか?
2038年1月19日までは値が返ってきます。
0974nobodyさん2006/11/22(水) 17:33:24ID:???
2005|aaaaaaaa|12345
2005|bbbbbbbb|12345
2005|cccccccc|12345
2006|aaaaaaaa|12345
2007|aaaaaaaa|12345

みたいな感じのテキストファイルから、
2005の部分だけを取り出して表示するスクリプトを作りたいのですが、
(結果が下のようになるように)
2005|aaaaaaaa|12345
2005|bbbbbbbb|12345
2005|cccccccc|12345

fopenでこのテキストファイルを開いた後、
どういう処理を書けばいいのかわかりません。
どなたか使うべき関数とか手法などヒントいただけませんでしょうか?
0975nobodyさん2006/11/22(水) 17:33:29ID:???
そのときだけのSIDをのっとってどうするってか?
そんなに怖いんなら、SSLにすべきだろう。
0976nobodyさん2006/11/22(水) 17:43:01ID:???
mixiみたいにログインを自動化(=cookieにSIDを残してる)ならば
問題あるだろうけど、そうじゃないなら心配する必要ないわな。
>>975の言うとおり。
0977nobodyさん2006/11/22(水) 17:58:30ID:???
>>973

「値が返ってこない」ってのがどういう状態かよくわからんけど。


英語のマニュアル見ると、

the valid range for year is somewhere
between 1901 and 2038, although this limitation is overcome
as of PHP 5.1.0.

と、かいてあって、俺の読解力だと、
5.1.0以降、PHPでの制限はないんだけど、それにもかかわらず、
システム(OS?)によっては(システムの制限があって)2038年までしか
使えないんだよ、って書いてあるようにも読めますけど。

(5.1.0の前は、OSが対応しててもPHPがヘッポコで2038年までに
なっていたんでは)

ちなみにうちのLinuxだとこうなる。

$ php -r "echo mktime(0, 0, 0, 2, 1, 2038);"
-14462

$ php -v
PHP 4.3.10-16 (cli) (built: Aug 24 2005 20:25:01)

ここらへん、全然知らないんだけど、2038年以降は時間はマイナスになる、、、のでは? 違うん?
0978nobodyさん2006/11/22(水) 18:01:34ID:???
ビットが溢れるだけ
0979nobodyさん2006/11/22(水) 18:02:44ID:???
>>974
usort
0980nobodyさん2006/11/22(水) 18:04:17ID:???
>>972
クラッシュする時点で馬鹿だろw

>>974
lineとってstrposで2005が0なら良いんじゃね
0981nobodyさん2006/11/22(水) 18:05:51ID:???
次スレまだかよボンクラ
0982nobodyさん2006/11/22(水) 19:05:54ID:Dl80shfx
vodafone(softbank)の3G携帯にphpから絵文字付きでメール送る方法をいろいろ模索してるのですが分かりません。
どなたか情報をお持ちで無いでしょうか?
0983nobodyさん2006/11/22(水) 19:21:31ID:???
>>977
値が返ってこないというのはそのままの意味で、何も表示されずにプロンプト(%)が
返ってきます。

システムに依存するのはいいんだけど、日本語マニュアルの書きっぷりでは
システムに関係なく2038年以降のタイムスタンプも取得できそうな気がしたので・・・
0984nobodyさん2006/11/22(水) 19:29:30ID:???
>>983
そもそも他の関数は返って来るの?
configureの問題もあるきがするしエラー表示しないようになっているオチでは??
0985nobodyさん2006/11/22(水) 19:44:37ID:???
>>983
例えば?

php.iniでは
error_reporting = E_ALL
にしてるけど?
0986nobodyさん2006/11/22(水) 19:49:24ID:9Mp292iZ
質問します!
windowsでPHPを使用しているのですが、
ローカル環境で
<? include("../home/httpd/html/template/top.html"); ?>
の相対パスを
<? include("/home/httpd/html/template/top.html"); ?>
に変えて表示する事ってできるのでしょうか?
0987nobodyさん2006/11/22(水) 19:50:24ID:???
falseだろ
値が帰って来ないってフィルタアプリじゃねーんだからよ
0988nobodyさん2006/11/22(水) 20:03:35ID:???
>>983
何も表示されないのは改行コードが入ってないから
\nつけるかvar_dumpしたらfalseが返ってるはず
0989nobodyさん2006/11/22(水) 20:23:06ID:???
>>986
意味がわからんが、その上のコードを下のコードにPHPで書き替えたいってことか?
0990nobodyさん2006/11/22(水) 20:36:46ID:???
>>986
<?php
$directory = realpath("../home/httpd/html/template/top.html");
include($directory);
てこと?
0991nobodyさん2006/11/22(水) 20:51:58ID:???
>>
Googleで "vodafone 絵文字コード" と検索しる。
0992nobodyさん2006/11/22(水) 20:52:29ID:???
やっちまった・・・
↑は >>982 ね
0993nobodyさん2006/11/23(木) 00:01:01ID:???
誰か次スレ頼む。俺は無理だった
0994nobodyさん2006/11/23(木) 00:13:11ID:???
スレは立てるけど後は頼むw
09959942006/11/23(木) 00:14:22ID:???
立てれなかったorz
0996nobodyさん2006/11/23(木) 00:20:00ID:???
テンプレの修正はあるの?
09979962006/11/23(木) 00:31:34ID:???
立てたよ

【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
0998nobodyさん2006/11/23(木) 00:44:52ID:???
>>996
あなたが弄るっていうなら私にはなにもできない
0999nobodyさん2006/11/23(木) 01:10:51ID:???
おせーよw
1000nobodyさん2006/11/23(木) 01:12:19ID:???
次スレ
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。