【PHP】自作スクリプト発表会
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/03/30 11:55ID:M/C/V7hb初心者が書いた入門スクリプト、ベテランが書いたすげースクリプト。
発表してね。
予めスクリプトの内容を明記してURLを貼り付けるのがよろしいかと。
マターリ進行でいきませう。
PHPが使える無料サーバ情報(レッツPHP!):
http://php.s3.to/php/
0002nobodyさん
02/03/30 12:13ID:???0004nobodyさん
02/03/30 17:14ID:???ttp://www.orb-2.info/other/source.php?sql_img_bbs.php
厨なスクリプトかもしれないけど、どんなもんでしょう?
ちなみに画像掲示板です。
0005nobodyさん
02/03/30 22:45ID:???0006なると
02/03/31 03:05ID:???晒していいのかなぁ、、
0007nobodyさん
02/03/31 12:20ID:e940DqcPHello world!でもいいですよ!
0008nobodyさん
02/03/31 20:50ID:BQ+/DH6NCSVデータの変更プログラム
列A,列B,列C
11,22,33
44,55,66
・
・
・
これを
列A,列B,列C
11,22,33
44,XX,66
・
・
・
55のところをXXに変更。
つまり、指定した列の指定した行を任意に変更できるロジック。
もちろん、なるべくメモリを食わないように。
0009nobodyさん
02/03/31 21:47ID:???0010どっかであぷろだ晒し中
02/03/31 22:18ID:???フォームを echo で表示してるとこ、
「"」をいちいちエスケープするくらいなら「'」で書きゃいいのに、
と思った。
あと、他の表示の部分も、毎回変わる内容じゃなければ
上の方に変数にして固めておけば、少しはさっぱりするんじゃないかな。
それか、かちゅ〜しゃみたいに他のファイルにしとくとか。
他は、なんか自分よりコード綺麗でいいなと思ったり。
0011nobodyさん
02/03/31 22:52ID:???書き方のスタイルの違いかもしれないけど、
echoじゃなくて、?>で閉じて普通に出力したほうが
見やすいと思った。
Dreamweaverで編集もできるし。
001211
02/03/31 23:17ID:???echo "<a href=\"xxx.php?a=$a\">$a</a>";
?>
<a href="xxx.php?a=<?= $a ?>"><?= $a ?></a>
<?
俺は後者。
001310
02/03/31 23:30ID:???げ、、、こんな書き方始めて知った。
?>で外すとき、いつもこう書いてたよ。
?>
<a href="xxx.php?a=<? echo $a; ?>"><? echo $a; ?></a>
<?
面倒、面倒と思ってたのに、そんなことが出来たとは・・・
00144
02/03/31 23:34ID:???10&11氏の意見は参考になるのでどうもありがとうございます。
エスケープするのは'だとなんか自分的にややこしいので\"使ってます。
12のは見てもらえばわかる通り前者です。
001511
02/04/01 00:49ID:???どのバージョンからできるようになったかは知らんが、
最近のはできる。
俺は<?= ?>より<? echo $a ?>のほうがいいだと思う。
互換性だけでなく見た目的にも。
<?php echo $a; ?>
にしてるなぁ・・・。
面倒とは思うんだけど。
あと、タグとかは外に出す方かな。
0017なると
02/04/01 21:49ID:???カウンタを作ってみました。
自分でもわからないことが多いけど、とりあえず動くみたいです、、
<?
$file = "log.txt";
if(!($fp = fopen($file, "r"))){
/* ファイルが開けないときは終了 */
echo " ファイルが開けません!!";
exit;
}
$count = fgets($fp, 256);
fclose($fp);
$count = (int)$count;
$count++;
if(!($fp = fopen($file, "w"))){
echo " ファイルが開けません!";
exit;
}
fputs($fp, "$count");
fclose($fp);
?>
あなたは、<font color=#ff0000> <? echo $count; ?></font> 人目のPHPマニアです。。。
<br>
0018なると
02/04/01 21:52ID:IORYSc+w0019nobodyさん
02/04/01 22:20ID:???あと
$count = fgets($fp, filesize($file));
とかの方がいいのかもしれない。
あとflockとかも入れたほうがいいのかな。
0020なると
02/04/01 22:50ID:IORYSc+wアドバイスありがとうございます!
$count = fgets($fp, filesize($file));ってことは、
つまり、漏れのやつだと256バイトを読み込んでるんだけど、
これだとファイルのサイズに合わせて読み込めて、軽くなるってことかな。。
flockはファイルロックですよね。。
0021なると
02/04/01 22:53ID:IORYSc+wカウンタが1から動かなくなってしまった。
0022nobodyさん
02/04/01 23:12ID:???逝って来る
0023apacheuserさん
02/04/01 23:46ID:???一応マニュアルにはfgetsの二つ目の引数の大きさは
ファイルサイズを越えても問題ない、とあった気がする。
個人的にはエラーが出て終了するんじゃなくて、$countに
エラーを代入して数字の代わりにエラーメッセージを出力、
ってほうが好き。
0024なると
02/04/02 00:53ID:SHbCbPK7おお、なるほど。
じゃあ、これでも問題はないと。。ありがとうございます。
というか今見てみると、
if(!($fp = fopen($file, "r")))の
if(!
の意味がわからない、、、調べてきます。。
0025nobodyさん
02/04/02 02:21ID:???0026apacheuserさん
02/04/02 07:38ID:???>あれ。$count = fgets($fp, filesize($file));に変えたら
>カウンタが1から動かなくなってしまった。
以下php.netより。
>string fgets ( int fp [, int length])
>Returns a string of up to length - 1 bytes read from the file
>pointed to by fp.
freadのほうは長さいっぱいまで読んでくれると書いてある。
>string fread ( int fp, int length)
>fread() reads up to length bytes from the file pointer
>referenced by fp.
試しにログファイルに2バイト以上のデータを突っ込んでみれ。
何かわかるかも。
0027なると
02/04/02 12:55ID:4fz1y7Df自己レス。「!」は否定の演算子なので、
この場合は、ファイルが開かなかった場合、という意味っぽい。
>>25
初心者にもわかりやすくて、楽しいですよヽ(´ー`)ノ
>>26
わかったような、わからないような…。
0028nobodyさん
02/04/02 17:51ID:???fgetsだと-1バイトで終わるからfreadに変えるのが正解かな
例えばlog.txtに1バイトしか入ってないと
fgetsだと1-1で0になるから
次の$count++で1になっていつまでたっても1から進まないのでは?
つうか分かりづらいので
fgetsの後に$count2とか作って、後で表示させた方が分かりやすいかもん
002928
02/04/02 17:55ID:???fgets
http://jp.php.net/manual/ja/function.fgets.php
fread
http://jp.php.net/manual/ja/function.fread.php
0030なると
02/04/02 18:22ID:4fz1y7Df<html>
<body bgcolor="#EEEEFF">
<blockquote>
<form method="post" action="<? echo $PHP_SELF; ?>"><b>名前</b><input name="name" type="text" size="20">
<b><br>内容</b><input name="mes" type="text" size="40"><input type="submit" value=" Send "><P>
<?
$lines = file("log.txt");
for($i = 0; $i < 10; $i++) {
echo $lines[$i];
}
if($name && $mes){
$mes = htmlspecialchars ($mes);
$name = htmlspecialchars ($name);
}
if(!($name)){
$name = "名無しさん\n";
}
$dat = "<b>$name</b> <br> <br>$mes<br><hr>\n";
$lines = file("log.txt");
$fp = fopen("log.txt","w");
fputs($fp,$dat);
for($i = 0; $i < 20; $i++)
fputs($fp, $lines[$i]);
fclose ($fp);
?>
</form>
</blockquote>
</body>
</html>
■ このスレッドは過去ログ倉庫に格納されています