ラウンジで作るphpカウンター

このエントリーをはてなブックマークに追加
1名無しさん?
phpの事は全然知らないけど
一日一回、今日昨日総合をそれぞれ画像で表示するカウンターを作りたいです。

一から作りましょう。
2名無しさん?:04/08/26 09:45 ID:???
一日一回しか見れないのかよ
3名無しさん?:04/08/26 09:46 ID:9+fNGhGs
いえ、一日一回カウントするという意味です。
さっきgif画像を連結するスクリプトを見っけたので今探してます
4名無しさん?:04/08/26 09:47 ID:???
俺の肛門も連結したいです
5名無しさん?:04/08/26 09:47 ID:9+fNGhGs
ここのGIF画像連結って所にgif画像を連結するソースが埋まってるので
カウンターでgifを使う場合はこれを使うといいと思います。
ttp://www.spencernetwork.org/

まず、phpの基本から学ばないといけないのが大変そうです。

<?
   ...ソースをここにかく
?>
は覚えました。
6名無しさん?:04/08/26 09:48 ID:9+fNGhGs
>>4
こちらを読むことで気を紛らわせてください。
ボクの肛門も閉鎖されそうです
http://corn.2ch.net/test/read.cgi/entrance/998806721/
http://corn.2ch.net/entrance/kako/998/998806721.html
7名無しさん?:04/08/26 09:49 ID:9+fNGhGs
まず、phpを動作できる環境を整えないといけないのが大変だと思いました。
8名無しさん?:04/08/26 09:50 ID:9+fNGhGs
ここのスレで自宅サーバーからphpを導入など色々やってるみたいなので
ここを見て参考にします。

自宅鯖立てたいんだけど
http://etc3.2ch.net/test/read.cgi/entrance/1085015270/

phpの勉強はこのサイトでやろうと思います。
もしもっと良いサイトがあれば教えてください。
ttp://ww7.tiki.ne.jp/~inabah/php/
9名無しさん?:04/08/26 09:54 ID:9+fNGhGs
Apache2というのがダウンロード完了しました
今からインストールをします。
10名無しさん?:04/08/26 09:55 ID:9+fNGhGs
typicalとかいうのでインストールしてます。
11名無しさん?:04/08/26 09:57 ID:9+fNGhGs
インストールが完了しました。
12名無しさん?:04/08/26 10:00 ID:9+fNGhGs
13名無しさん?:04/08/26 10:01 ID:9+fNGhGs
うんこの匂いがする…
助けて…
14名無しさん?:04/08/26 10:04 ID:9+fNGhGs
phpの初期設定はこのサイトを参考にすると上手に出来るでしょう。
ttp://www.dream-seed.com/server/php_apache.html
15名無しさん?:04/08/26 10:07 ID:9+fNGhGs
今回はphp4ではなくphp5なので
>>14だと情報が足りないようです。

こちらを参考にしましょう。
ttp://www.ds-island.com/modules/bwiki/index.php?Apache%A4%CBPHP%A1%CAISAPI%C8%C7%A1%CB%A4%F2%C6%B3%C6%FE%A4%B9%A4%EB
16名無しさん?:04/08/26 10:10 ID:9+fNGhGs
Apache2のhttpd.confにAddmoduleが無いなぁ
17名無しさん?:04/08/26 10:11 ID:9+fNGhGs
やっぱりここを参考にするとよさそうです。
ここならApache2+PHP5+WinXPなので
ttp://www.goodpic.com/mt/archives/000577.html
18名無しさん?:04/08/26 10:28 ID:9+fNGhGs
Apache2が文字化けする
19いぬ ◆14.9.5.jpg :04/08/26 10:30 ID:???
楽しい?
20名無しさん?:04/08/26 10:34 ID:9+fNGhGs
どうやら基本キャラクタセットというのを設定すると直るらしい。
ここを参照
ttp://acorn.zive.net/~oyaji/faq/apache_char.htm
21名無しさん?:04/08/26 10:37 ID:???
自分から進んで学ぼうとするのはとても良いと思うのだけど、
何故ラウンジに立てたの?
22名無しさん?:04/08/26 10:48 ID:9+fNGhGs
>>21
ラウンジなら立てても許されそうだったから
23名無しさん?:04/08/26 10:51 ID:???
この前小田急線の車内でぶつぶつ独り言言ってたのお前かーっ!
24名無しさん?:04/08/26 10:58 ID:9+fNGhGs
何のこと?
25名無しさん?:04/08/26 11:11 ID:9+fNGhGs
良く解らないけど
外部から(LAN内の人も含め)接続されたくなければ

Apache2\conf\httpd.confの一番下に
<VirtualHost 127.0.0.1:80>
ServerAdmin [email protected]
DocumentRoot "C:\www"
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

<VirtualHost 192.168.1.xxx:80>
ServerAdmin [email protected]
DocumentRoot 404
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
これを加えると見れなくなります。
下の192.168.1.xxxは自分のLAN内のIPです。
26名無しさん?:04/08/26 11:14 ID:9+fNGhGs
諸設定が出来たらphpが動作するか確認

<?
phpinfo();
?>
と埋め込んだファイルをapacheを通して読み込んでみましょう。
27名無しさん?:04/08/26 11:14 ID:9+fNGhGs
人居ないとこのスレ消されそうで怖い
28名無しさん?:04/08/26 11:43 ID:cFAu2oMB
IDチェック
29名無しさん?:04/08/26 11:46 ID:9+fNGhGs
ナイス
これでセーフかも
30名無しさん?:04/08/26 14:03 ID:???
perlじゃ駄目なの?gif連結するスクリプトもあるよ。
31名無しさん?:04/08/26 14:07 ID:9+fNGhGs
>>30
はい、元はperlなのは知ってます。
>5で一応php版を張っておきました。
これではダメでしょうか?
32名無しさん?:04/08/26 14:07 ID:9+fNGhGs
perlは汚いとよく言われてるそうですね。
phpは綺麗だとも言われます。

でも俺は良く知らないんですけどphpはキモいスクリプトだと思いました。
3330:04/08/26 14:27 ID:???
あんまり詳しくないので、申し訳ないです。
phpはやったことがないので良く分かりません。
perlは趣味程度ですが、十分実用的なものが割合簡単に作れます。
カウンターもそれほど苦労しないと思います。私でさえ数日で出来上がりました。
34名無しさん?:04/08/26 14:30 ID:9+fNGhGs
>>33
まるで俺がperlは使えないみたいな発言をしたような感じだな
俺はperlは嫌いじゃないしむしろ何とも思ってない。
実用的な物が出来るのは知ってるというかperlで串を作ったりできるのも知ってる。

知ってる知ってるで肝心な何を知ってるかを知らないかも知れないけど、
とりあえずperlは嫌いじゃないです。

phpでカウンターそろそろ作ろうかなっと
35名無しさん?:04/08/26 14:32 ID:???
>phpは綺麗だとも言われます。

初耳。

きれいなの書きたきゃrubyにしとけば?
36名無しさん?:04/08/26 14:33 ID:???
どーでもいいけど、phpで作って公開してもあんま需要ないんだよな
どこの鯖もperlばっか
37名無しさん?:04/08/26 14:35 ID:9+fNGhGs
>>35
俺も良く知らないんだけど、
内部処理が綺麗なのかなぁ?
ソースが綺麗なのかとか何が綺麗かは知らないんだけどperlと対比されてた気がする。

>36
そうだけどperlよりphpのが書きやすそうなんで。
38名無しさん?:04/08/26 14:38 ID:???
PHPは長くても2週間あれば覚えられるよ。
カウンターなら簡単だし、10〜20行程度で作れるから、がんばれ。
39名無しさん?:04/08/26 14:42 ID:9+fNGhGs
>>38
ありがとう。
このスレ立ててから初めて応援された・・・
ほんとありがと
40名無しさん?:04/08/26 16:16 ID:9+fNGhGs
ちょっと出かけてたw
41名無しさん?:04/08/26 16:25 ID:???
1さー。
カウンター作ったらちょうだい?

ね?いいでしょ?減るもんじゃないし。
42名無しさん?:04/08/26 16:34 ID:9+fNGhGs
>>41
もちろん。
というかココにソースを張りながら作っていきますから
ご自由に使ってください
43名無しさん?:04/08/26 16:35 ID:???
まじ?
俺ももらっちゃおう・・・
44名無しさん?:04/08/26 16:38 ID:???
さすがだね
がんばれ1
45名無しさん?:04/08/26 16:39 ID:9+fNGhGs
よくわかんない。
カウンターなんてそんな凄いもんなのかな?
ファイル入出力ができれば作れるんじゃないの?って思ってる俺はバカ?
46名無しさん?:04/08/26 16:41 ID:???
ore馬鹿だからカウンターなんて作れないモン(*゚v゚*)
47名無しさん?:04/08/26 16:50 ID:9+fNGhGs
虹板で手に入れたゑ浪漫画が面白くてphpがそっちのけになっちゃう
48名無しさん?:04/08/26 17:03 ID:???
馬鹿っていうのはスクリプトの勉強をしてもスクリプトが作れない人間のことであって、
キミらのような人間は決して馬鹿ではなく、むしろ自己犠牲主義という一種の道徳的な美意識
からくる倫理観に蝕まれたかわいそうな人間だと思う。きっと人あたりが良いとか
穏やかだとか言われているあなた、あなたは知らず知らずのうちに狡猾な人間によって
都合の良い踏み台となっています。
49名無しさん?:04/08/26 17:14 ID:9+fNGhGs
>>48
そうだね。
でも俺が欲しいもん俺が作って何が悪い?
50名無しさん?:04/08/26 17:25 ID:9+fNGhGs
配列関数意味不明
ソートとかどういう仕組みでソートすんのとか理解できりゃいいんだろうけどな
51名無しさん?:04/08/26 17:30 ID:9+fNGhGs
ちょっと気になった事があった

$a = 10;
$a < 5 || print "\$aは5以上の値です。<br>";

という文だけど。

これはスクリプトだからできるんだなぁと。
もしもコンパイル型だと||の時に左を先に評価するか右を先に評価するかがコンパイラによって変わったりするから出来ないんだなぁ。
スクリプトの良いところだね
52名無しさん?:04/08/26 17:49 ID:9+fNGhGs
雑談スレってかなり馴れ合いだよな…
鹿とされた
53名無しさん?:04/08/26 17:55 ID:9+fNGhGs
>>8をずっと読んでたけど
肝心のファイル操作の部分からかかれてない事に今気付いた。

萎えた
54名無しさん?:04/08/26 18:18 ID:???
PHPの勉強ってマニュアルで充分だろ。
あそこまでマニュアル整ってるのはそうないぞ。
55名無しさん?:04/08/26 18:23 ID:???
アニマル?
56名無しさん?:04/08/26 18:24 ID:???
公式マニュアルの分かりやすさには確かに驚いた。
でも参考書の一冊くらいあってもいいかもな。マンモス本じゃなくてもいいから。
57名無しさん?:04/08/26 18:26 ID:9+fNGhGs
文字列が整数かどうかを判定してくれる関数って無い?
関数じゃなくても済む方法があればそれに越した事はないんだけど
58名無しさん?:04/08/26 18:26 ID:9+fNGhGs
isdigitで出来るかなぁなんて思ったけど無理だった
59名無しさん?:04/08/26 18:27 ID:9+fNGhGs
<?
$count = file ('./log.dat');
$count[0]++;
$fp = fopen ('./log.dat', "w");
fputs ($fp, $count[0]);
fclose ($fp);
print "貴方は$count[0]人目のお客様です<br>";
?>

phpと同じフォルダにlog.datというファイルを作らないとバグります。
気をつけてください。
60名無しさん?:04/08/26 18:28 ID:9+fNGhGs
やっぱそんな難しくなかったな。

ファイル開く

カウンタ増やす

増えたカウンタを保存

カウンタ表示
61名無しさん?:04/08/26 18:29 ID:9+fNGhGs
整数かどうかを判定したかったのは
log.datに何も無い状態で$countに文字列を記入してそれを保存するとArrayという名前で保存されるからです。
もしも整数でない場合は$count=0としたかったんですけど、どうもどうやるか解らないです
62名無しさん?:04/08/26 18:39 ID:???
何が言いたいのかわからんが、

if (preg_match('/^\d+$/', $string)) {
    $string = 0;
}
63名無しさん?:04/08/26 18:45 ID:???
if (pekochan_mattyo('/^\d+$/', $sting)) {
????$sting = :p
}
64名無しさん?:04/08/26 18:49 ID:9+fNGhGs
>>63
?の部分ぐらい自分で直せw
65名無しさん?:04/08/26 18:54 ID:9+fNGhGs
is_intって関数があった
66名無しさん?:04/08/26 18:58 ID:???
is_intは文字列には使えんよ。

$count += 0;

して数値文字列を数値に置き換えてから使うなら良いけど。
67名無しさん?:04/08/26 19:15 ID:9+fNGhGs
ファイル無くても勝手に作ってくれる
意地悪で文字列が含まれててもエラー返さない。
更にソースを短くできた。

<?
$count = file ('./log.dat');
if (!is_int($count[0]))
settype ($count[0], "integer");
$count[0]++;
file_put_contents ('./log.dat', $count[0]);
print "貴方は" . $count[0] . "人目のお客様です<br>";
?>
68名無しさん?:04/08/26 19:23 ID:9+fNGhGs
>>66
$count++じゃなくて
$count += 1;
ってやれば簡単に問題が解決したのか…
ありがとん
69名無しさん?:04/08/26 19:36 ID:9+fNGhGs
<?
$log = './log.dat'; // ログファイル名
$keta = 20; // 桁数
$count = 0;

  if (file_exists ($log)) {
    $fp = fopen ('./log.dat', "r");
    $count = fgets ($fp, $keta);
    fclose ($fp);
  }
  $count += 1;
  $fp = fopen ('./log.dat', "w");
  fputs ($fp, $count);
  fclose ($fp);

  print "貴方は" . $count . "人目のお客様です<br>";
?>
70名無しさん?:04/08/26 19:48 ID:???
X1[tab]Y1[改行]
X2[tab]Y2[改行]
X3[tab]Y3[改行]
・・・・

みたいなdatファイルがあって、
これをプロットした画像を出力させるにはどうしたらイイの?
71名無しさん?:04/08/26 19:51 ID:9+fNGhGs
X1とY1はそれぞれどういう意味ですか?
72名無しさん?:04/08/26 20:08 ID:9+fNGhGs
俺でも画像カウンター作れそうな予感
73名無しさん?:04/08/26 20:12 ID:???
おまえさんなら余裕だろ
74名無しさん?:04/08/26 20:22 ID:9+fNGhGs
無理な予感
75名無しさん?:04/08/26 20:24 ID:9+fNGhGs
マニュアルには画像編集の関数が書いてあったのに
実際使ってみたらそんな関数無いとか言われた。
imagecreateとかね
7670:04/08/26 20:25 ID:???
>>71
XnはX軸の数値、YnはY軸の数値です
つまり

1.4 3.4
2.5 6.7
3.3 6.8

みたいな感じで
77名無しさん?:04/08/26 20:33 ID:9+fNGhGs
どうやら画像編集はこれを入れないと出来ないようです。
でもそんなの汎用性が無いんでそろそろ諦めるかな
ttp://www.boutell.com/gd/
78名無しさん?:04/08/26 20:36 ID:???
確かに、サーバーによってGDをインスコしてない場合があるから、汎用性には欠けるな。
ちなみに最近のPHPにはGDが最初からバンドルされているから、自宅鯖の場合は設定を直すだけでOK
1. PHP.INIの extension=php_gd2.dll のコメントはずす
2. 付属している php_gd2.dll をWindowsのシステムフォルダにコピーする

でOKのはず。
79名無しさん?:04/08/26 20:40 ID:9+fNGhGs
>>78
マジで出来た
80名無しさん?:04/08/26 20:43 ID:9+fNGhGs
どうやらAAA!CAFE!ではimagecreateが使えた。
81名無しさん?:04/08/26 22:32 ID:9+fNGhGs
<?
$log = './log.dat'; // ログのファイル名 パーミッション606か666
$keta = 5; // 桁数 // 画像が表示する桁数
$image = "./gazou/"; // 画像のディレクトリ
$red = 0, $green = 0, $blue = 0; // 透明色の設定
/*------------------------------------------------*/
/* ココまでが初期設定 */
/*------------------------------------------------*/
$bgcolor;/*透明色*/ $count;/*カウント*/ $wpng;/*画像の横幅*/ $hpng;/*画像の縦幅*/
// 通常のカウンタ
if (file_exists ($log)) {
$counter = file ($log);
$count = $counter[0];
}
$fp = fopen ($log, "w"); fputs ($fp, $count += 1); fclose ($fp);

// 画像描画用
for ($a = 0; $a <= 9; $a++) $countImagePng[$a] = imagecreatefrompng ($image.$a.'.png');
$wpng = imagesx ($countImagePng[0]), $hpng = imagesy ($countImagePng[0]);
$countImage = imagecreatetruecolor ($wpng * $keta, $hpng);
for ($a = 0, $c; $a < $keta; $a++) {
$c = $count % 10; $count /= 10;
imagecopy ($countImage, $countImagePng[$c], $wpng * $keta - ($a+1)*$wpng, 0, 0, 0, $wpng, $hpng);
}
$bgcolor = imagecolorallocate ($countImage, $red, $green, $blue);
imagecolortransparent ($countImage, $bgcolor);
// 出力
header("Content-type: image/png");
imagepng ($countImage);
?>
82名無しさん?:04/08/26 22:34 ID:9+fNGhGs
<html>
<head>
</head>
<body>
...
<img src="./counter.php">
...
</body>
</html>
と使ってください。

また、log.datは作った上でcounte.phpと一緒にアップしてください。

画像は0.png〜9.pngという名前を使ってください。
上部の初期設定で画像のあるフォルダを指定しましょう。
83名無しさん?:04/08/26 22:38 ID:9+fNGhGs




             数字を表示する時に使う画像を募集



84名無しさん?:04/08/26 22:50 ID:9+fNGhGs
ちなみに、画像のサイズは全部一緒にしてください。
85名無しさん?:04/08/26 22:55 ID:9+fNGhGs
画像によるカウンターも出来たし。

あとは
・カウントアップ制御(10分に一回とか1日一回とか)
・画像全体をまとめる”フレーム”の表示
・画像をくっつけない方法(文字を画像化した出力)
・アクセス解析?

とか出来たらいいな
86名無しさん?:04/08/26 23:04 ID:???
もうできたのかっ
はえー
87名無しさん?:04/08/26 23:29 ID:9+fNGhGs
>>86
カウンターは

ファイルを開く
カウントする
表示する

これが出来れば完成だからね。
88名無しさん?:04/08/26 23:30 ID:9+fNGhGs
枠線できた
89名無しさん?:04/08/26 23:31 ID:9+fNGhGs
<?
//------------------------------------------------
// Powered by ラウンジャーのうちの一人
// ------------------------------
//phplounge + counter.php phpが実行できるパーミッション
// + log.dat log.datがphpから読めるパーミッション
// + gazou1 + 0.png
// | + 1.png
// | + 2.png
// | + 3.png
// | ...
// + gazou2 + 0.png
// | ...
// + num + 0.png 画像のディレクトリの名前は何でもいい
//------------------------------------------------
// ログのファイル名 パーミッション606か666
$log = './log.dat';
// 表示する桁数
$keta = 5; // 桁数
// 画像の場所
$image = "./gazou/";
// 透明色の設定
$red = 0;$green = 0;$blue = 0;
/*------------------------------------------------*/
/* ココまでが初期設定 */
/*------------------------------------------------*/
$bgcolor;// 透明色
$count;
$wpng;$wmax;
$hpng;$hmax;
// 通常のカウンタ
if (file_exists ($log)) {
90名無しさん?:04/08/26 23:33 ID:9+fNGhGs
$counter = file ($log);
$count = $counter[0];
}
$fp = fopen ($log, "w");
fputs ($fp, $count += 1);
fclose ($fp);

// 画像の連結
for ($a = 0; $a <= 9; $a++)
$countImagePng[$a] = imagecreatefrompng ($image.$a.'.png');
$wpng = imagesx ($countImagePng[0]);
$hpng = imagesy ($countImagePng[0]);
$wmax = $wpng * $keta + 6;
$hmax = $hpng + 6;
$countImage = imagecreatetruecolor ($wmax, $hmax);
for ($a = 0; $a < $keta; $a++. $count /= 10) {
$c = $count % 10;
imagecopy ($countImage, $countImagePng[$c], $wmax - 3 - ($a+1)*$wpng, 3, 0, 0, $wpng, $hpng);
}
$bgcolor = imagecolorallocate ($countImage, $red, $green, $blue);
imagecolortransparent ($countImage, $bgcolor);

$color = ImageColorAllocate($countImage, 1, 1, 1);
imageline ($countImage, 1, 1, $wmax-1, 1, $color);
imageline ($countImage, $wmax-1, 1, $wmax-1, $hmax-1, $color);
imageline ($countImage, $wmax-1, $hmax-1, 1, $hmax-1, $color);
imageline ($countImage, 1, $wmax-1, 1, 1, $color);

// 画像描画
header("Content-type: image/png");
imagepng ($countImage);
?>
91名無しさん?:04/08/26 23:40 ID:9+fNGhGs
ココまで来ると書いてる自分でもわけわからんな。

少し整理したほうがよさそうだ
92名無しさん?:04/08/27 00:16 ID:u0rEakG9
やっぱ難しく見えるソースはみんなに嫌われるかな。
まぁいいや、俺が使えれば
93名無しさん?:04/08/27 00:21 ID:???
センスなさすぎ
94名無しさん?:04/08/27 00:29 ID:EayxjEXf
>>93の素晴らしいセンスを見てみたいっす!
95名無しさん?:04/08/27 18:25 ID:u0rEakG9
>>93
ごめんね。
php初めてまだ1日目なんだ
本当にごめん。上手にかけなくて悪いと思ってる。
96名無しさん?
どうも画像を連結するとサーバーに物凄い負荷が掛かるみたいだから使わないほうがよさげ
あきらめて他人が作ったのつかおっとw