PHP PHPって
■ このスレッドは過去ログ倉庫に格納されています
>>22
それもだな
なお「GNU」とは、「Gnu is Not Unix.」の略で、略語の展開形に略語自身が含まれる言葉遊びとなっている。 PHP, Rubyなどは金のない学生さんがあそぶおもちゃでしょ?
「昨日、武富士に行ったんでしょ?」
「いい感じだったよ」
「へー、やっぱそうなんだ」
「やっぱり、PHPはPHP」
「そういうこと」
「そう、PHPがPHP」
「PHP PHPって…」 サイトを作ろうと思っています。
メモサイト。
ちょっとメモっておきたいと思ったことを
手軽に保存できるサイトです。
もともとはWEB制作板のスレで始めたのですが
板違いのような気がしたのでWebProg板に移ることにしました。
http://pc2.2ch.net/test/read.cgi/hp/1043575085/8- ちなみにPHP初心者です。
他の言語もほとんどわかりません。
まあ気楽にやっていきます。
構想としてはそのメモサイトをOpenJaneで読めるように
subject.txtとDATファイルで保存しようと思ってたんですが、
DBを扱ってみたいというのがあって変更することにしました。
(DB保存できて、しかもOpenJaneで読める方法ってあるのかな?)
設計が大事だと言うことなのでちょっとイメージを書いてみます。
基本的には3つのファイルです。
index.php、read.php、admin.php
index.phpには最新のメモを表示。
read.phpでデータを見る。./read.php/00000000/で読める。
admin.phpで新規投稿、修正・削除。
といったところです。
(・・・設計ってこんなモノでいいのかなあ?) んでDBのテーブルですが必要な項目はID、タイトル、本文の3つだけですね。
もしかするとメモ毎のアクセス数を保存してランキングのようなものを
作ってもいいかな、なんて思ってるんでヒット数も作っておくことにします。
んでよくわからないのですがスクリプト公開しているサイトを見て
結局下のようなテーブルにすることにしました(初心者の判断)。
これで大丈夫なんですかねえ?
一応read.php/ID/ってアクセス方法の予定なので
IDは登録時のmktimeの値をいれようと思います。
$query = "CREATE TABLE memo (
id int(10) DEFAULT '0' NOT NULL auto_increment,
hit int(10) NOT NULL default '0',
subject varchar(100),
comment text,
PRIMARY KEY (id)
)"; または、登録カテゴリを作って test/read.php/CATEGORY/ID/ のように
アクセスするのもいいかなと思っています。(2ちゃんねる風のURLで)
その場合は下みたいな感じでいいのかな?
$query = "CREATE TABLE memo (
id int(10) DEFAULT '0' NOT NULL auto_increment,
hit int(10) NOT NULL default '0',
category varchar(10),
subject varchar(100),
comment text,
PRIMARY KEY (id)
)";
ここで気づいたのがメモが複数ページになるときは
どうすればいいんでしょうか?
初心者の私にとっては非常に難しい問題ですね。 レス関係を保存したテーブルを別に作れば出来そうです。
もっといい方法がありそうな気もしますが、私にはこれが限界です。
memoテーブルに保存したIDと同じIDでレス関係を保存するテーブルは
どのような感じでしょう?ちょっと悩んでいます。 メモテーブルに親メモかそうでないかの項目を作るのはどうでしょう?
親なら0を、子ならば親のIDを保存する項目です。
そしてレス関係テーブルには親の場合のみ新規登録、
子を登録する場合は親記事のレス項目に下のように保存する、です。
2番目のレスの子のID<>タイトル
3番目のレスの子のID<>タイトル
4番目のレスの子のID<>タイトル
流れとしては
・read.php/CATEGORY/IDという値を受け取る
・メモテーブルから該当IDのデータを取得
・取得したメモデータからレス関係IDを取得
親IDの場合
・レス関係テーブルから親IDのデータを取得
0の場合
・レス関係テーブルから自分のIDのデータを取得
これでメモを表示する際に以下のことが表示できる用になるはずです。
・複数ページの何ページ目であるか
・今のメモ以外の他のページのID
多分コレでいいと思うんだけど、初心者の考えだからミスってそうだよなー。。。 言い遅れましたがこのサイトの目的ですが
自分自身や他の誰かに情報を提供するってのもありますが
サイトを作ること自体が1番の目的です。 まとめると作るテーブルは以下の2つです。
$query = "CREATE TABLE memo (
id int(10) DEFAULT '0' NOT NULL auto_increment,
hit int(10) NOT NULL default '0',
resid int(10) NOT NULL default '0',
category varchar(10),
subject varchar(100),
comment text,
PRIMARY KEY (id)
)";
$query = "CREATE TABLE res (
id int(10) DEFAULT '0' NOT NULL auto_increment,
resdata text,
PRIMARY KEY (id)
)";
おそらく詳しい人からするとつっこみどころ満載だと思います。
ツッコミキボンヌ(*´д`*)ハァハァ とりあえずadmin.phpのDB新規登録のみα版出来ました。
なんとか期待する動きをしています。 レス関係DBに登録させるの忘れてましたがそれはまた今度(w レス関係テーブルにも反映させるようにしました。
あとやっぱりミスってたんでそれを修正。 DBに登録させる文字で、セキュリティ上問題になりそうな文字を
自分でテーブルを作って変換させようと思うんですが
どういう文字をテーブルに加えればいいのでしょう?
ちなみに関数はもう作りました。(もっと効率のいい方法ってありますか?)
変換テーブルはこんな感じです。
$tradeTable = array("123"=>"[123]");
んで関数が下の二つ。
function tradeString($text){
global $tradeTable;
$keys = array_keys($tradeTable);
$values = array_values($tradeTable);
$text = str_replace($keys, $values, $text);
return $text;
}
function unTradeString($text){
global $tradeTable;
$values = array_keys($tradeTable);
$keys = array_values($tradeTable);
$values = array_reverse($values);
$keys = array_reverse($keys);
$text = str_replace($keys, $values, $text);
return $text;
} 考えても解りそうもないので質問スレにいってきます・・・ 質問してきました。
「'」「"」「_」「\」「%」「;」「\r」「\n」「NUL(\x00)」「\x1a」
あたりを変換しておけば大丈夫なようです。
つーことで
$tradeTable = array(
"'"=>"[trade1]",
"\""=>"[trade2]",
"_"=>"[trade3]",
"\"=>"[trade4]"
"%"=>"[trade5]",,
";"=>"[trade6]",
"\r"=>"[trade7]",
"\n"=>"[trade8]",
"\x00"=>"[trade9]",
"\x1a"=>"[trade10]"
);
で大丈夫なようです。登録の際はこれを変換、読むときは逆変換ですね。
さて、どれに変換関数を組み込むべきか・・・ mysql_escape_stringでエスケープして
stripslashesでもどしたら >>54
あれ?なんか勘違いしてたみたいです・・・
最初それやってて変な動きしてたんで自分で作ろうと思ってたんですが
今やると全然問題無しです。今までの頑張りはなんだったんだろう(´・ω・`)
とりあえず変換は下の2つでいいかな。
//データをSQLに入れられる形にする
function sanitize($text){
if(get_magic_quotes_gpc()){ $text = stripslashes($text); }
$text = ereg_replace("(\r|\n|\r\n)", "", $text);
$text = str_replace("<>", "[trade1]", $text);
$text = str_replace("_", "[trade2]", $text);
$text = str_replace("%", "[trade3]", $text);
$text = str_replace(";", "[trade4]", $text);
$text = trim($text);
$text = mysql_escape_string($text);
return $text;
}
//データを戻す
function unsanitize($text){
$text = stripslashes($text);
$text = str_replace("[trade4]", ";", $text);
$text = str_replace("[trade3]", "%", $text);
$text = str_replace("[trade2]", "_", $text);
$text = str_replace("[trade1]", "<>", $text);
return $text;
}
str_replaceのところは>>51の関数を使っても良かったんですが
恐らく変換リストは増えないだろうということと、速度的にもこちらのほうがいいだろう(多分)
という2つの理由からつかってません。 よく考えてみると改行は削除しなくていいですね。
function sanitize($text){
if(get_magic_quotes_gpc()){ $text = stripslashes($text); }
$text = str_replace("<>", "[trade1]", $text);
$text = str_replace("_", "[trade2]", $text);
$text = str_replace("%", "[trade3]", $text);
$text = str_replace(";", "[trade4]", $text);
$text = trim($text);
$text = mysql_escape_string($text);
return $text;
} その他いろいろ修正。
そろそろ登録関連は落ち着いてきたので
メンテナンスを作りたいと思いますがそれはまた今度。 登録のところでいろいろ修正がありましたが
とりあえずメンテナンスβ版ができたところでまとめてアップ予定。 随分と時間が空いてしまいました。
全然進めてなかったので近いうちにまた続きを始めたいと思います。。。 そうだな、PHPって金の無い所がコスト削って採用してるだけ。
当然単価が安い。
長期運用するなら、開発コストも開発速度も無視できるように成るけどね。
ろくにアクセスも増えない糞サイトが妥協する終着駅がPHP。
zend買って足掻くよりjavaで組み直した方が遥かにいいし。 ID:szZvbyxN
こいつ、化石スレ浮上させまくってるけどなにしてんの? これってどういう意味ですか?
<?
exit('終了');
?> >>66
全部マニュアルに書いてあったです
exit
(PHP 3, PHP 4, PHP 5)
exit -- メッセージを出力し、カレントのスクリプトを終了する 2chブラウザ入れたら糞スレ発見
フン・クソ
3年半ものくさっとる。
レスつけたけど3ヶ月たってる。
WebPro板を見るとこのスレタイも分かる肝するが・・・
奇跡のレスだage 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
I33JQ0GXFZ ■ このスレッドは過去ログ倉庫に格納されています