【PHP】下らねぇ質問はここに書き込みやがれpart20
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/04/28(金) 04:12:33ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
過去スレは>>2-3あたり
0002nobodyさん
2006/04/28(金) 04:13:11ID:ICV8N6RN【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
0003nobodyさん
2006/04/28(金) 04:13:42ID:ICV8N6RNhttp://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
0004nobodyさん
2006/04/28(金) 04:14:12ID:ICV8N6RNextractは極力使わないほうがいいと思います。
例えば、
hoge.php?_SESSION[user_pw]=hogehoge
って形で送られてきたとします。これを
extract($_GET)
しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。
もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。
それを避けるために
extract($_GET, EXTR_SKIP)
ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。
extract($_GET, EXTR_PREFIX_ALL, "get")
と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
0005nobodyさん
2006/04/28(金) 04:31:15ID:???ttp://search.net-newbie.com/php/function.usort.html
こことか見たんですがよくわかりません
超初心者の俺にPHP詳しい人教えてください
よろしくお願いします
0006nobodyさん
2006/04/28(金) 05:43:54ID:???usort使おうとしてるということは配列なんだろうけど
取得したRSSを・・・と言われてもどのように配列に入っているかわからなければ
答えようも無い。
0007nobodyさん
2006/04/28(金) 05:53:54ID:???こんなんでダメ?
0008nobodyさん
2006/04/28(金) 10:04:43ID:???item単位でソートなのかrss単位でソートなのか知らんが、
日付を元にitemソートすればいいんじゃないの?
0009nobodyさん
2006/04/28(金) 12:02:48ID:???RSSが最新のものに更新されたかどうかをどうやって取得すればいいのでしょうか?
現在わたしがやっているのは最新のRSSを自分のサーバーに置き、
クローンで一定間隔で再取得し、違いがあった場合に自分のサーバーにある
RSSを更新するというやり方をとっています
しかしこれだとあまりにも無駄が多いような気がします。
何か良い方法が教えてもらえませんか?
0010nobodyさん
2006/04/28(金) 12:20:52ID:???一番賢い方法教えてくれませんか?
0012nobodyさん
2006/04/28(金) 13:03:23ID:???っていうのをヘッダーに記述する以外で、phpで実現する方法はありますか?
全てのページに対して
ヘッダー周りは別途ファイルを分けてincludeしているためです。
0013nobodyさん
2006/04/28(金) 13:16:01ID:???PHPはページを表示させる前の処理をするんだよ。
表示させた後の処理はクライアントサイドで動作する言語で書け。
0014前スレ994
2006/04/28(金) 14:26:27ID:Na6jyHe3>.htaccess「のようなもの」をディレクトリに置くだけでcron代わりになるんだったら
>鯖選びでcronが使えるかどうかなんて見ない。
そうですよね。確かに良く考えてみれば分かるようなことでした。
>cronが使える安鯖か自分のPCにあるブツ(cronでもタスクスケジューラでも)から
>wgetでも叩かせれば、定期的にスクリプトが走るよ。
今あるサーバのスクリプトを、自鯖にあるCRONでも命令可能ってことですか!!?
何だか危険な気もしますが、それが出来れば便利ですね!
wgetを叩けば良いのですね!調べてやってみます!!
どうもありがとうございました。。
0016nobodyさん
2006/04/28(金) 14:59:53ID:???0017nobodyさん
2006/04/28(金) 17:56:10ID:UkqacfT1例えば、カラムが5列ほどの表があり、ユーザ設定で表示のON・OFFをしたいです。
今考えてる処理では、下のようにPage1.phpでDBに表示するカラム名を直接保存し、
Page2.phpでDBからカラム名を呼び出しSELECT文に加えて表を出力、という流れです。
項目が増えたりなど後々の汎用性も考慮して、カラム名DB保存→表示と
かなり考えて最終的に今はこういう処理を思いついたのですが、
一般的にもっとスマートな方法があるような気がしまして、
ヒントなどありましたら御教示おねがいします。
/* Page1.php ユーザ設定画面 */
// 表示されるHTML
□身長 □体重 □視力 □住所 □電話番号 [表示項目の更新]
※チェックがあった項目を表示
// HTMLソース部分
print '<input type="checkbox" name="display[]" value="height">身長';
print '<input type="checkbox" name="display[]" value="weight">体重';
// 処理部分(実際にはサニタイズ処理などします)
$sql = "UPDATE DisplayColumn SET display='" .join(",", $_POST["display"]). "'";
$rs = mysql_query($sql);
/* Page2.php データ表示画面 */
$sql = "SELECT display FROM DisplayColumn";
$rs = mysql_query($sql);
$dispay = mysql_result($rs,0,0);
$sql = "SELECT $display FROM Profile";
$rs = mysql_query($sql);
while ( $row = mysql_fetch_array($rs) ) { }
0018nobodyさん
2006/04/28(金) 18:25:30ID:bvVZ5vZVhoge.php(カレンダー表示のphpです。)
をhtml内に表示させるには
html内で <? include "hoge.php";?>
と説明があったのですが、 html内に埋め込んでも
表示されません。
hoge.phpに直接アクセスすると表示されるのですが…
超ド素人な私に表示させる方法を教えてください。
0019nobodyさん
2006/04/28(金) 18:57:17ID:???拡張性があると考えたんならいいんじゃないの?
DisplayColumnテーブルのdisplayフィールドにjoinする時に
表示しちゃいけないフィールドを更新しないようにね
(というか表示できるフィールドだけ更新するようにチェック)
>>18
htmlという拡張子もphpで処理するようにすればできるけど
普通はそういう設定してない。
htmlじゃなく拡張子をphpにすれば動くんじゃない?
またはSSIが使えれば少し修正すれば使えると思うけど。
0021nobodyさん
2006/04/28(金) 19:07:54ID:???>>またはSSIが使えれば
0022nobodyさん
2006/04/28(金) 19:10:38ID:???002318
2006/04/28(金) 19:24:34ID:???拡張子をphpに変えたら表示出来るようになりました。
有難うございます。
SSIも使えます。
その場合はどのようにしたら
使えるようになるのでしょうか?
0024nobodyさん
2006/04/28(金) 19:35:49ID:???>>19は少し言葉足らず
SSIが使えればではなく
SSIのincludeVirtualなどでPHPが読み込めれば が正しい
これはApache2からしか出来ない
0025nobodyさん
2006/04/28(金) 19:38:21ID:???0027nobodyさん
2006/04/28(金) 20:46:02ID:???セッションを解放する方法はありますか?
002818
2006/04/28(金) 22:16:32ID:???SSIのinclude Virtualはまだまだ勉強が必要なようなので
とりあえず拡張子をphpに変えてやってみます。
有難うございました。
0029nobodyさん
2006/04/28(金) 23:06:59ID:???そのサーバーで.htaccessが使えるなら、それで.htmlをPHPとして解釈させるように設定すれば動くと思う。
AddType application/x-httpd-php .html
でもサーバー負荷が増えるから、可能なら.phpで使う方がいいと思うけどね。
0031nobodyさん
2006/04/28(金) 23:12:04ID:???サーバ負荷はphpに処理させないファイルが無い場合は変わらないよ。
検索エンジンに最適化するには拡張子がhtmlの方が良い。
(Googleは拡張子によってクロール頻度が変わる。
動的に生産されるページと認識されるとクロール頻度が下がるなどの悪影響がある。
Googleによれば相手のサーバの負荷を考慮しているとのこと。)
0032nobodyさん
2006/04/28(金) 23:15:29ID:???>サーバ負荷はphpに処理させないファイルが無い場合は変わらないよ。
↑はぁ??何言ってんの???
HTMLとしてApacheに処理させれば済むものを
わざわざPHPエンジンを通せば当然遅くなる(負荷が増える)。
003331
2006/04/28(金) 23:28:25ID:???誤解を招いたようですまない。
「phpに処理させないファイルが無い」ってのは、ようするに静的に生産されるページが1個も無いって事。
全ページphpで構築していると、phpエンジンに通さないファイルは無いと思って、、、
0036nobodyさん
2006/04/28(金) 23:49:36ID:???「誤解」じゃなくて、完全に認識を間違っている。
HTMLは「静的に生産される」云々の話ではない。
「すでに生産されている静的なファイル」がHTMLである。
0042nobodyさん
2006/04/29(土) 03:26:54ID:???0043nobodyさん
2006/04/29(土) 09:44:01ID:???あるサイトのスクリプトを参考に作ったのですが
編集するたびにとデータとデータの間に改行が増えていきます。
どの部分を修正すれば改行せずに編集できるのかがわかりません。
大変失礼かと思いましたが教えていただけないでしょうか。
//編集プログラム
$ID=$_POST["id"];
$Cat=$_POST["cat"];
$ImageLink=ShapeStr($_POST["image"],0,0);
$TextLink=ShapeStr($_POST["text"],0,0);
$Comment=ShapeStr($_POST["comment"],1,1);
$Price=ShapeStr($_POST["price"],0,0);
//配列の格納後文字列へ変換
$lines=array("$ID",$Cat,$ImageLink,$TextLink,$Price,$Comment,"","","","1");
$lines=implode(",",$lines);
$lines=$lines."\n";
//配列を入れ替え
$Data=file("item.csv");
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",",$Data[$i]);
if($line[0]==$_POST['id']){
array_splice($Data,$i,1,$lines);
}
}
0044nobodyさん
2006/04/29(土) 09:44:38ID:???//CSVファイルに書き込み
$fp=fopen("item.csv","w");
flock($fp, LOCK_EX);
foreach($Data as $item)fputs($fp,$item);
fclose($fp);
print "編集しました";
(参考にしたサイトのURLを載せていいものか迷ったので
編集部分だけ記載させていただきました。)
どうぞよろしくお願いします
0045nobodyさん
2006/04/29(土) 10:08:52ID:???併存させると何か問題発生するかな。っていうかそもそも不可能?
0046nobodyさん
2006/04/29(土) 10:10:13ID:???を
$line=explode(",",trim($Data[$i]));
に(ざっとしか見てないので適当)。
0047nobodyさん
2006/04/29(土) 11:42:15ID:6qKEu+sv0049nobodyさん
2006/04/29(土) 12:10:52ID:???0050nobodyさん
2006/04/29(土) 12:38:22ID:???読み込み,書き込みさせないようにロックかけたり解除したり
ttp://jp.php.net/manual/ja/function.flock.php
マニュアル読んで
0051nobodyさん
2006/04/29(土) 13:47:35ID:???>>31
> サーバ負荷はphpに処理させないファイルが無い場合は変わらないよ。
そりゃそうだ。でも今まで.htmlをPHP扱いしてなかった上に.
htmlでPHPを動かす方法が分かりません!って言ってるのに
それで全ページがPHP生成のはずだと思い込む君の脳みそが心配です。
0053nobodyさん
2006/04/29(土) 15:47:35ID:???投稿画面で色(投稿色)を設定するのですが、現在$colorsに配列として色をいれています。
それを以下のようにしてます。
<select name="color" style=color:white;>
<option value="{$colors[0]}" style="background-color:{$colors[0]};">{$colors[0]}
・
・
・
-------------------------------ここまで-----------------------------
しかし、$colorsに色を追加しても、手動で<option value= …を追加しなければいけません。
そこで、$colorsに色を追加したら自動で<option value=…を追加するというのはできないでしょうか?
日本語がおかしくてすいません。
0055nobodyさん
2006/04/29(土) 16:17:35ID:???echo <<<EOT
<select name="color" style="color:white;">
EOT;
foreach ($colors as $val)
echo <<<EOT
<option value="{$val}" style="background-color:{$val};">{$val}
EOT;
でいけるっしょ
0059nobodyさん
2006/04/29(土) 17:53:27ID:???0060nobodyさん
2006/04/29(土) 18:01:12ID:???ノノノハヽヽ ノノノハヽヽ
∋oノノハヽ(0^〜^)ノノハヽ#ノノハヽo@ノハ@|(‘〜‘ 川
从*`、っ´) ( つと)( ^▽^)(’ー’川 (‘д‘ ) (つと )
( つと) | | | ( つと) (つと ) (つと ) | | |
oOノハヽOoノハヽ*∈_)__) .(__(_) (_ノノノハヽヽ〉ノノノハヽヽ
( ・e・) 川o・-・) @@@ ノlVvV从(´ー`●)
.( つと) ( つと∋oノハヽo☆@.*ノノノハヽヽつと ) (つと )
(_)__) (_)__)(〜^◇^)@+@(`.∀´ )__(_) .(__(_)
〆〃ハハ ☆ノハヽ ( つつ \|⊂⊂ ) oノノ人ヽo ¶¶¶¶ ∋oノハヽo∈
∬∬´▽`) ノノ*^ー^) (_)__) (__(_)从・ 。.・*从[~~~~~] (´v(`* )〜♪
( つと) (つと) . ( つつ .[~~~~~~~] ●⊂ )
(_)__) (_)__) (_)__)|| ̄ ̄ ̄|| (__(_)
006154
2006/04/29(土) 18:01:20ID:???"をそのまま使ってるので、echo(やprint)では無いらしいからテンプレートエンジンを使ってると思った次第。
0062nobodyさん
2006/04/29(土) 18:03:37ID:???0063nobodyさん
2006/04/29(土) 18:04:45ID:???Smartyではあるまいか?と予想する54も間違っちゃいないと思う。
0064nobodyさん
2006/04/29(土) 18:38:57ID:???こちらの書き方が悪くて勘違いをさせてしまって申し訳ありません。
>>55
上手くいきました。
ありがとうございました。
0067nobodyさん
2006/04/29(土) 19:34:16ID:???0068nobodyさん
2006/04/29(土) 19:47:32ID:???0069nobodyさん
2006/04/29(土) 19:53:10ID:???0070nobodyさん
2006/04/29(土) 23:27:54ID:???0071nobodyさん
2006/04/30(日) 00:16:43ID:???xreaでcronを使うシェルファイルを
#!/bin/sh
#PHP
/usr/bin/wget -q --spider http://xxx.com/mmm.php > /dev/null 2>&1
exit
と設定したんですが
/virtual/legnabea/public_html/cron.sh: line 3: 1: ambiguous redirect
とエラーが出ます。これはどういう意味なんでしょうか?
0073nobodyさん
2006/04/30(日) 02:28:33ID:???ちょースレ違いを通り越して板違い。うにっくすの板向けだろそりゃ。
「2>&1」のりダイレクトのリダイレクト先が書かれてないからエラーになってる。
見よう見まねでそんなの書いてるんじゃないよ。
0074nobodyさん
2006/04/30(日) 02:47:40ID:???あのさ、オブジェクト指向が俺全然解らなかったんだよ。
で、実際にお仕事初めて半年ぐらい起ったんだけど、ずっとPHPとPerlのプログラミング
しててなんとなくオブジェクト指向のすばらしい理由ってのが解った気がするんだけど、
なんかグローバル変数とかが散在しなくて、メンテしやすい!ってのが理由なのかな?
0076nobodyさん
2006/04/30(日) 04:01:20ID:???0077nobodyさん
2006/04/30(日) 09:02:25ID:???GWだから?
こんなとこ着ても意味無いのにな。
0078nobodyさん
2006/04/30(日) 09:04:17ID:???0079nobodyさん
2006/04/30(日) 12:15:38ID:msE59x+3ことはできますか?
0082nobodyさん
2006/04/30(日) 13:27:35ID:msE59x+3具体的にはどうすれば実現出来るのでしょうか?
Perlのモジュールなら「libwww」というのは知っているのですが、PHPにはありません。
よろしくお願いします。
0083nobodyさん
2006/04/30(日) 13:37:32ID:???どうすればいいんですか?
$str = "あ";
if(mb_ereg("あ",$str)){
print "OK";
}
$str = "一";
if(mb_ereg("一",$str)){
print "OK";
}
0084nobodyさん
2006/04/30(日) 13:44:31ID:???0085nobodyさん
2006/04/30(日) 13:48:57ID:???どこまで真面目にやるかにもよるんだが、
単純にHTMLファイル1枚だけ拾ってくるなら標準でfile()などが対応するし、
libwww並のことがしたいならPEARでHTTP_Requestってのがあるよ。
0086nobodyさん
2006/04/30(日) 13:51:23ID:msE59x+3ありがとう(・∀・)! 調べてみるよ。
0087nobodyさん
2006/04/30(日) 16:20:47ID:???(言語は共にja)これって文字化けしますか?
初歩過ぎてすいません。
0088nobodyさん
2006/04/30(日) 16:23:47ID:???>これって文字化けしますか?
>
>初歩過ぎてすいません。
やってみればわかるだろ。
とりあえずmb_convert_encoding()しとけ。
0090nobodyさん
2006/04/30(日) 16:30:52ID:???0091nobodyさん
2006/04/30(日) 16:36:26ID:???0093nobodyさん
2006/04/30(日) 16:43:12ID:23/3bPSVShift-JISで出力されてしまいます。
fputs($file,"にほんご");
etf-8で出力したいのですが、
毎回、mb_convert_encoding()で変換してから
fputs関数に渡さないと出来ませんか?
最初から、文字コードを指定してファイル出力する
方法があるならば教えてください
0094nobodyさん
2006/04/30(日) 16:43:41ID:???0095nobodyさん
2006/04/30(日) 16:48:37ID:???0097nobodyさん
2006/04/30(日) 16:51:34ID:???毎回すればいいじゃない。
fputs($file,mb_convert_encoding("にほんご", "UTF-8"));
ってしとくだけでしょ。
0098nobodyさん
2006/04/30(日) 17:01:19ID:???有難うございます。調べてみます
>>95
これは僕へのレスですかね?
>>97
マジレスですか?
一様、釣られるてみます。
それが面倒だから質問してるのに・・・
0099nobodyさん
2006/04/30(日) 17:02:34ID:???0101nobodyさん
2006/04/30(日) 17:03:42ID:???0102nobodyさん
2006/04/30(日) 17:07:37ID:???> 一様、釣られるてみます。
一様に釣られたの?
それとも一応釣られたの?
もし「一応」の誤用だったらカッコワル(´・ω・')
0105nobodyさん
2006/04/30(日) 17:25:12ID:???$name に$_POST['name']が入っていて、
setcookie(namecookie','$name);と設定し、$COOKIE['namecookie']を投稿フォームの名前のvalueに設定しています。
しかし、それでは投稿後名前欄に$nameと出力されるだけで、先ほど投稿した名前は表示されません。
このような場合、どうしたらよろしいでしょうか?
010687
2006/04/30(日) 17:31:54ID:???mb_convert_encoding()
この関数はインクロードする時(UTF-8のファイル)に記述?出力する(eucのファイル)時に記述?
どちらでも良いでしょうか?
0107nobodyさん
2006/04/30(日) 17:40:55ID:???というかオマエさんのソースファイルのエンコードは何なんだ?
>>105
まずソースをしっかり晒せ
それじゃシンタックスエラー出まくりだ
#おそらくこれ↓で直る
# setcookie( 'namecookie', $name )
# $_COOKIE['namecookie']
0109nobodyさん
2006/04/30(日) 17:42:36ID:???0110nobodyさん
2006/04/30(日) 17:43:05ID:???typoが多すぎるな。。
$nameになる -> $_COOKIE['namecookie']を表示するなどしてチェックする
-> $_COOKIEをチェックする
-> setcookieを疑ってみる
ぐらいやって欲しいものだ。
>>106
だから、俺はどのエンコードで喋ればいいんだ!?
0111nobodyさん
2006/04/30(日) 17:52:28ID:???cronでphpを実行するにはphpの記述を変える必要があるんですか?
というかcronの書き方がわかんないのでphpを起動させるシェルスクリプト書いて下さい
0112nobodyさん
2006/04/30(日) 17:57:48ID:???うん、マジレス。
HTTPへの文字列出力(標準出力)だけならともかく、
バイナリが含まれるかもしれない各ファイルへの出力を
自動文字コード変換なんて設定あったら確実にバグるって。
これを実現するには「絶対に文字列しか出力しない出力関数」を用意する必要があって、
だったら
function fputs_utf8($fp, $str) {
return fputs($fp, mb_convert_encoding($str、"UTF-8"));
}
とか自前で用意するだけで事が足りる。
> 皆さん、ホントに>>97さんの方法でやってるんですか?
というか、エンコードの必要なものと必要じゃないものをそれぞれ区別して処理してるから
「出力するすべてのものをUTF-8変換」なんてアホなこと自体やったことないっす
0118nobodyさん
2006/04/30(日) 18:13:10ID:???実装の方法を分かる方いますか?
http://tv.yahoo.co.jp/tv_show/nhk/komyo/photo/index.html?p=17_01
プロパティの画像URL
http://img.yahoo.co.jp/images/clear.gif
実際の画像URL
http://tv.yahoo.co.jp/tv_show/nhk/komyo/photo/shot/17/01.jpg
0119nobodyさん
2006/04/30(日) 18:16:30ID:???0120nobodyさん
2006/04/30(日) 18:20:20ID:???何気ない書き込みだったとしても、多数の typo をする奴はマには向いてない。
0121nobodyさん
2006/04/30(日) 19:00:32ID:???HTMLソースくらい見れ
<td background="images/h_photo01.jpg"><img src="http://img.yahoo.co.jp/images/clear.gif"></td>
0124nobodyさん
2006/04/30(日) 23:05:56ID:23/3bPSVサーブレットでの処理をいくつかのファイルに分けようと思っています。
そのため、以下のようなファイルを一つ生成し
クライアントは、このファイルにまずリダイレクトしてしました。
hoge1.php,hoge2.php,hoge3.phpが
それぞれ異なる処理ロジックを持つようにしています。
ですが、これだと入力フォームの情報がhoge1,2,3.php
に渡りません。
どうしたらhoge1,2,3.phpに入力フォーム情報を
渡す事が出来ますか?
<?php
header("Location: hoge1.php");
header("Location: hoge2.php");
header("Location: hoge3.php")
header("Location: hoge.html")
?>
0125124
2006/04/30(日) 23:14:11ID:???入力フォームからリダイレクトされたサーブレットから
それらを呼び出すようにした方がいいっすかね?
0126nobodyさん
2006/04/30(日) 23:16:48ID:???<?php
require("hoge1.php");
require("hoge2.php");
require("hoge3.php");
header("Location: hoge.html");
?>
でいいと思う
0127nobodyさん
2006/04/30(日) 23:18:38ID:???phpにアクセスしてヘッダー送信→RSSソース表示という手順を踏めばしっかり表示されるのですが、
RSSのソースのファイルをphpに生成してRDFファイルにアクセスすると表示してくれません・・・・
解決方法ありますでしょうか。。。
サーバーはロリポップです。
0128124
2006/04/30(日) 23:21:25ID:???本当に本当に有難うございました
0129nobodyさん
2006/04/30(日) 23:23:06ID:???0131nobodyさん
2006/05/01(月) 00:13:12ID:???0132nobodyさん
2006/05/01(月) 00:33:09ID:???ttp://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=******&Operation=ItemLookup&IdType=ASIN&ItemId=B000AYEI5Y&ResponseGroup=Large
ttp://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=******&Operation=ItemLookup&IdType=ASIN&ItemId=B000AYEI5Y&ResponseGroup=SalesRank
上記二つを試したけど、期待した結果XML(<SalesRank>〜</SalesRank>)が
返されなくて困ってます。。。
0133nobodyさん
2006/05/01(月) 00:59:11ID:???0134nobodyさん
2006/05/01(月) 01:04:11ID:???0135nobodyさん
2006/05/01(月) 01:10:54ID:???0136127
2006/05/01(月) 01:14:33ID:???.htaccess入れたら正常に閲覧できるんですが、何かほかの方法ってありますでしょうか?
phpで出力の方は成功しました。
0137nobodyさん
2006/05/01(月) 01:22:37ID:W7/kimMe指定すると追加でファイル出力されるんですが、
ファイルの最後に出力されてしまいます。
どうしたら、ファイルの最初に追加(挿入)する
事ができますか?
0138127
2006/05/01(月) 01:30:35ID:???もとのログファイルを
$lines = file("ログファイル");
で読み込んでおいて、
fputs(ファイルポインタ,"文字列");
fputs(ファイルポインタ,$lines);
とするか
fopenの第二引数にr+を指定するといいと思います
0140137
2006/05/01(月) 02:09:05ID:???レス有難うございます。
$lines = file("hoge.txt");
fputs(ファイルポインタ,"test");
fputs(ファイルポインタ,$lines);
出力結果を見ると
testは出力されるのですが、$linesはArrayと表示されてしまいます。
あと、fopenの第二引数にr+を指定すると挿入されてしまいます。
確かに挿入できるか質問しましたので質問の仕方が悪かったです。
これは、
例えば、hogehogehogeという内容のhoge.txtがあった場合、
$file=fopen("hoge.txt","?");
fputs($file,"HOGE");
というコーディングを書いた場合、
"HOGEhogehogehoge"という出力結果が欲しいです。
0141nobodyさん
2006/05/01(月) 02:27:22ID:???file()をfile_get_contents()にするといいよ。
基本的にファイルに対して「途中に内容を増やす」というのは無くて、
元ある内容に上書きするか末尾に追加するしかないっす。
(元々のデータの位置はどうやっても変わらない)
なので挿入しようと思ったら、1度読み込んだ上で
ファイル全体を出力しなおす、という手段が必要になる。
0142137
2006/05/01(月) 02:41:17ID:???file()は行毎の配列を戻り値とするという事が今解りました。
以下の方法で、やりたい事ができました
ありがとうございました。
$arr = file("hoge.html");
$file=fopen("hoge.html","w");
flock($file,LOCK_EX);
fputs($file,"test\n");
foreach ($arr as $line) {
fputs($file ,$line);
}
flock($file,LOCK_UN);
fclose($file);
>>141
レスありがとうございます
file()とfile_get_contents()、何が違うんでしょうか?
マニュアル引用
string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset]]] )
offsetで指定した場所から開始し、 ファイルの内容を全て文字列に読み込むこと以外はfile()と等価。
つまり、ファイルを最初から全部読み込む場合は、file()で大丈夫ですかね?
0143nobodyさん
2006/05/01(月) 02:54:05ID:???file()は1行ごとに分解した配列で取得。
file_get_contents()は全部まとめて1個の文字列として取得。
0145nobodyさん
2006/05/01(月) 15:46:56ID:???session.save_handler files
session.save_path no value
の状態で、セッションを利用できているのですが、
この場合、セッションファイルはどこに保存されていますか?
0146nobodyさん
2006/05/01(月) 16:07:35ID:???インストール出来ないのは私だけ?
0149nobodyさん
2006/05/01(月) 16:16:10ID:???まだ生きてたんだ。namazuがバージョンアップしてから使えるかわからずほったらかし。
でも、前(PHP4.1?とnamazu2.0.12?あたり)は素直にインスコできたよ。
0150nobodyさん
2006/05/01(月) 16:32:43ID:???去年の11月にphp-usersに投稿にあったよ。
ttp://ns1.php.gr.jp/pipermail/php-users/2005-November/028127.html
0151nobodyさん
2006/05/01(月) 22:10:25ID:???ありがとうございます。
事例と同じでautoconf(2.13,2.53,2.59)がインストールされています。
同様にすると解決出来るかもしれませんね。
リンクして今後に弊害が出ると思うとちょっと怖いのであきらめます。
0152nobodyさん
2006/05/01(月) 23:12:18ID:???preg_matchで↑より16進数の簡単な表現ない?
0155nobodyさん
2006/05/01(月) 23:48:06ID:???0157nobodyさん
2006/05/02(火) 07:22:20ID:???0158157
2006/05/02(火) 07:23:29ID:???エラーが発生した時点でスクリプトを強制終了して、空白のHTMLや
CGI/Perlみたいに 500 Internet Server Error を返したいんです。
※1
ini_set("error_reporting", E_ALL | E_STRICT)
0159152
2006/05/02(火) 07:41:22ID:???preg_matchでマッチした部分を取り出すのが目的なので...
^とか$使って紛らわしくしてましたね
でもctype_xdigit知らなかったのでサンクス
0160152
2006/05/02(火) 07:51:13ID:???ttp://jp.php.net/manual/ja/function.set-error-handler.php
まだ詳しく読んでないけどこれ無理かな?
0162nobodyさん
2006/05/02(火) 14:25:42ID:???.php .cgi .html
の3つだとそれぞれ違いがあるのでしょうか?
0163nobodyさん
2006/05/02(火) 14:37:56ID:???全部同じように処理しようと思えばできるし、.htmlをPHP、.phpをCGI、.cgiをHTML出力にすることもできる。
0166nobodyさん
2006/05/02(火) 18:36:18ID:???返すのはどうしたらよいですか?
0167166
2006/05/02(火) 18:49:20ID:???return $return_array;
ありがとうございました。
0168nobodyさん
2006/05/02(火) 19:56:21ID:???0169nobodyさん
2006/05/02(火) 23:39:23ID:rocsvmuHうざいよ
0170nobodyさん
2006/05/02(火) 23:45:46ID:???0171nobodyさん
2006/05/02(火) 23:48:27ID:???0172nobodyさん
2006/05/03(水) 01:18:16ID:???0173nobodyさん
2006/05/03(水) 01:27:38ID:???それより、死んで。
0174nobodyさん
2006/05/03(水) 02:20:40ID:Zf4m7aAt0175nobodyさん
2006/05/03(水) 03:52:15ID:???○ ← ラジオボタン
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
こんな感じでループさせたいんですけど・・・。
今の状態では、
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
というようにqst,opt1,opt2,opt3を行ごとにループさせて表示することは出来ています。
ラジオボタンを表示するには、qstとoptを別に取り出してoptの前にラジオボタンを表示するタグをくっつけてループさせるしかないんでしょうか?
説明下手ですいません;;
0176nobodyさん
2006/05/03(水) 03:55:33ID:???0177nobodyさん
2006/05/03(水) 03:59:34ID:???普通にまとめて取り出して、表示するときにラジオボタンのタグをくっつけて表示するだけ。
ぶっちゃけ「めちゃめちゃ当たり前」のことでしかないので、話だけ聞いてると
どこで困ってるのか想像もできない。何故そんなので困る??
まず、今はどういうプログラムで取り出しと表示をやってるのか具体的に書け。話はそれからだ。
0178175
2006/05/03(水) 04:15:58ID:???--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
0179175
2006/05/03(水) 04:16:56ID:???--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
0180175
2006/05/03(水) 04:18:21ID:???<?php
class DataTableView {
private $table;
private $tid = null;
private $tcls = null;
public function __construct($datatable) {
$this->table = $datatable;
}
public function setId($id) { $this->tid = $id; }
public function setClass($cls) { $this->tcls = $cls; }
public function render() {
$html = "<table " ;
if (isset($this->tid))
{
$html .= "id=\"$this->tid\" ";
}
if (isset($this->tcls))
{
$html .= "class=\"$this->tcls\" ";
}
$html .= ">\n";
続きます
0181175
2006/05/03(水) 04:18:52ID:???if ($this->table->numRows() > 0 )
{
// now render table contents
// get table iterator
$html .= "<tbody>\n";
$iterator = $this->table->getIterator();
while($iterator->valid()) {
$html .= $this->renderRow($iterator->current());
$iterator->next();
}
$html .= "</tbody>\n";
}
// now render table end
$html .= "</table>\n";
return $html;
}
private function renderRow($row){
$rowhtml ="";
if (count($row) > 0 )
{
$rowhtml .= "<tr>";
foreach($row as $item)
{
$rowhtml .= "<td>$item</td>";
}
$rowhtml .= "</tr>\n";
}
return $rowhtml;
} }
?>
0182175
2006/05/03(水) 04:22:07ID:???とりあえず今こんな感じです。
授業中にもらったサンプルスクリプトを元に作ってみました。
2カラム目から4カラム目(ans1,ans2,ans3)までだけにラジオボタンのタグをくっつけるというのがよく分からないです。
0183nobodyさん
2006/05/03(水) 04:29:05ID:???0184nobodyさん
2006/05/03(水) 04:39:25ID:???function render()を改造するかextendして、ラジオボタンつきのrender()を作ればいいだけかと。
個人的にはデザインをメソッドで組み立てるこの設計は気に入らないけどな >class DataDetailView
デザインの出力が分かりにくいしいじりにくいしデザイナーと分業できねーし。
0185175
2006/05/03(水) 04:50:53ID:???私がちゃんと理解できてないだけだと思います。
最初から勉強し直してきます。
スレ汚しすいませんでした。
>>184
レスどうもありがとうございます。
1度スクリプトを見直し理解してから184さんがおっしゃった方法を考えてみます。
そうですね。でも私にはこれでいっぱいいっぱいの状態なので、もっとPHPを勉強してからデザインのほうも考えてみることにします。
早朝にどうもありがとうございましたm(_ _)m
0186nobodyさん
2006/05/03(水) 04:56:27ID:???凝ったデザインをするならクラスでなんてやらんと思うぞ。
汎用性を持たせて拡張しようと思うといたずらに複雑になるし、その割に使えないし。
(たまにいるけどな。無駄に巨大で複雑なクラス作って何でもできるぜ!とか息巻いてるやつ)
0187nobodyさん
2006/05/03(水) 04:57:38ID:???0188nobodyさん
2006/05/03(水) 04:59:54ID:???0189175
2006/05/03(水) 05:06:38ID:???あ、確かに授業のときに先生は、とりあえずテーブルをHTML化させるためのスクリプトとしてこのクラスを紹介してました。
あとはテンプレートとCSSを使うように言ってました。
>>187
はい。私自身全く基礎が分かってないと実感しています。
なのにこの課題クラスを使わないと点が貰えないみたいなんでかなり焦っていますorz
とりあえず提出までにあと数日あるので基礎とか見直しつつなんとかやってみたいと思います。
アドバイスどうもありがとうございます^^
0190175
2006/05/03(水) 05:09:43ID:???え、既存のテンプレート・・・?
PHPのこと全く分かってない・・・orz
やっぱり基礎からやり直してきます。
PHPがどういう物か分かってきたら次のステップとして188さんのおっしゃったものを勉強してみます。
0191nobodyさん
2006/05/03(水) 05:56:55ID:???これをアンインストールしたいと考えております。
make install 時に表示された情報(下記)に載っているパスのファイルは消すだけで良いと聞いたことがあるのですが、
コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
その情報はどうやって削除すれば良いのでしょうか?
教えて下さい。
0192191
2006/05/03(水) 05:57:56ID:???/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp5.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp5.la /usr/local/apache2/modules/
cp .libs/libphp5.so /usr/local/apache2/modules/libphp5.so
cp .libs/libphp5.lai /usr/local/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /root/tmp/php-5.1.2/libs'
chmod 755 /usr/local/apache2/modules/libphp5.so
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/lib/php/
[PEAR] Archive_Tar - already installed: 1.3.1
[PEAR] Console_Getopt - already installed: 1.2
[PEAR] PEAR - already installed: 1.4.6
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/include/php/ext/pdo/
0193nobodyさん
2006/05/03(水) 07:11:27ID:???> コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
意味が分からん。PHPを消せばそんなの表示されなくなるだろう。
0194191
2006/05/03(水) 07:32:07ID:???ありがとうございます。
php を消してから、php -i を実際にやったわけではありません。
何処のディレクトリがカレントディレクトリであっても、php -i が使えるということは、
OSのシステムに php というコマンドがインストールされているか、環境変数に設定されているということですよね?
(たぶん後者)
例えば、 php が /user/local/lib/php_hoge (これは例です) に関連付けられてたとして、
削除したら php -i はできなくなると思いますが、それでも環境変数の定義のごみが残ると思うので
それも消したいのです
0195nobodyさん
2006/05/03(水) 07:40:13ID:???UNIXのお約束で、コマンドラインで呼び出すプログラムはどれも
/usr/local/bin等、パスを通してあるディレクトリに置かれることになってる。
だから環境変数は特に定義されていない。該当ファイルを消せば終了。
0196191
2006/05/03(水) 07:45:11ID:???そうなんですか。
Windowsの感覚でいたので何処かで定義されていると思っていました。
おかげさまで解決しました。
ありがとうございました。
0197nobodyさん
2006/05/03(水) 07:45:55ID:???ようにする方法はあるのでしょうか?
0200nobodyさん
2006/05/03(水) 11:53:34ID:???0201nobodyさん
2006/05/03(水) 13:51:52ID:???どうしたらいいんでしょう・・・
0202201
2006/05/03(水) 13:52:54ID:Zf4m7aAtp2参考にしようとしたけどfsockopenで叩いてるんで意味不明でした
0203nobodyさん
2006/05/03(水) 15:43:09ID:???0204nobodyさん
2006/05/03(水) 18:02:05ID:???$no = array('1','2','3','4','5','6'); こんな感じにいれたいのですが、手動でいれるのはさすがに大変なので、
ループ処理かなんかでうまくいれられないかと試行錯誤してみたのですが、よくわかりません。
教えてください。
0205nobodyさん
2006/05/03(水) 18:16:17ID:???$i = 0;
while($i < 45){
$no[] = $i;
$i++:
}
print_r($no);
0206nobodyさん
2006/05/03(水) 18:16:54ID:???http://jp.php.net/manual/ja/function.range.php
0207nobodyさん
2006/05/03(水) 18:19:02ID:???$i = 1;
while($i <= 45){
$no[] = $i;
$i++;
}
print_r($no);
0210nobodyさん
2006/05/03(水) 18:30:18ID:???0211nobodyさん
2006/05/03(水) 18:35:13ID:???0213nobodyさん
2006/05/03(水) 18:46:54ID:???掲示板をつくっていて、たとえば名前が入力されないで投稿ボタンがおされたら
名前が入力されていません。とだけ表示するようにしたいのです(そのほかは何も表示されない)
そのような場合はどうすればいいのでしょうか?
0214nobodyさん
2006/05/03(水) 18:57:24ID:???if(名前が入力されているか調べる){
通常の処理
}else{
名前が入力されていません、と表示
}
0215nobodyさん
2006/05/03(水) 19:10:19ID:???ファイル書き込み
}else{
名前が入力されていません、と表示 ここがつまっています。
}
0216nobodyさん
2006/05/03(水) 19:10:34ID:???インクリメント逆のほうが速いらしいよ
for( $i=1; $i<=45; ++$i ){
$no[] = $i;
}
0217nobodyさん
2006/05/03(水) 19:18:48ID:???if ($name === "") {
...処理...
} else {
echo "名前が入力されていますん";
}
0218nobodyさん
2006/05/03(水) 19:20:47ID:???if ($name != "") {
...処理...
} else {
echo "名前が入力されていますん";
}
0219nobodyさん
2006/05/03(水) 19:22:14ID:jSHHm/CAそれだけではフォームなども表示されたままになってしまいませんか?
ページにその文字だけ表示したいのですが、不可能なんでしょうか?
0220nobodyさん
2006/05/03(水) 19:29:21ID:???mb_internal_encoding('EUC-JP');
$numbers = array();
for ($i = 1; $i <= 45; $i++) $numbers[] = mb_convert_kana($i, 'N');
var_dump($numbers);
0222nobodyさん
2006/05/03(水) 19:47:04ID:???if(名前が入力されている){
通常の処理
}else{
名前が入力されていません
}
}else{
フォームの表示
}
0225nobodyさん
2006/05/03(水) 21:26:09ID:???0226nobodyさん
2006/05/03(水) 22:16:46ID:???0227nobodyさん
2006/05/03(水) 23:15:39ID:igkulSN30228nobodyさん
2006/05/04(木) 00:04:04ID:???0229nobodyさん
2006/05/04(木) 00:10:04ID:rpOcOacz0230nobodyさん
2006/05/04(木) 00:18:10ID:???0234nobodyさん
2006/05/04(木) 00:32:41ID:???0236nobodyさん
2006/05/04(木) 01:37:59ID:???>>1 >>200
ここは下らねぇ質問に答えるスレだ
マニュアルも読んでない「下らねぇ質問にも値しない」質問には答える必要が無い
0237nobodyさん
2006/05/04(木) 02:04:15ID:???0238nobodyさん
2006/05/04(木) 06:27:36ID:wXjTBXc2PEAR::DBを勉強していてプレスフォルダなるものを知ったのですが、これだけでSQLインジェクションは防げると思っていいのでしょうか。
0239nobodyさん
2006/05/04(木) 13:52:57ID:???このエラー文ってなに?
0240nobodyさん
2006/05/04(木) 14:11:27ID:???で、マニュアル(Perl互換の正規表現関数のページ)をみると、
> 式は、デリミタ、例えばスラッシュ (/) で囲まれる必要があります。
> 英数字またはバックスラッシュ(\)以外の全ての文字をデリミタと して使用可能です。
とある。
まぁよくやっちゃうのは、デリミタを使わずにいきなりパターンを書いちゃうってやつだな。
0241nobodyさん
2006/05/04(木) 14:36:02ID:???PHPのオブジェクト指向に特化して解説しているサイト(もしご存じの方がいられましたら教えてください)が見つからなかったので質問させてください。
例えば
class Hoge{
var $moge;
function test($string)
{
$this->moge = $string;
}
}
とは$mogeが継承というものに当たるのでしょうか?
また、継承されたもの($this->moge)をクラス外から参照することは出来るのでしょうか?
よろしくお願いします。
0242nobodyさん
2006/05/04(木) 15:08:11ID:???> オブジェクト指向プログラミング(とりあえずPHP4で)とやらを始めたいのですが、
phpでやるなら、php5にした方が良いと思う。
今持っている環境がphp4だからだと思うけど、近道のつもりが、奇妙な遠回りに
なりそうな気がする。
xampp使えば、windowsでも手軽にphp5入れられるし。
> PHPのオブジェクト指向に特化して解説しているサイト
php oopでぐぐれば色々と当たるけど、言語に特化せず、oopについて勉強した
方が良いと思う。書籍では、
http://www.amazon.co.jp/exec/obidos/ASIN/4822281957/qid=1146721919/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/503-3901566-8967151
http://www.amazon.co.jp/exec/obidos/ASIN/4886478158/qid%3D1146722209/503-3901566-8967151
あたりから入るのが近道かと思う。
参考までに、下記も挙げておきます。
http://www.doyouphp.jp/
> とは$mogeが継承というものに当たるのでしょうか?
継承には当たらない。
> また、継承されたもの($this->moge)をクラス外から参照することは出来るのでしょうか?
継承に当たらないので、設問自体が不適切。
0243nobodyさん
2006/05/04(木) 17:43:52ID:???0245nobodyさん
2006/05/04(木) 18:21:58ID:HFt+K4sbできました。ありがとうございます。
0246nobodyさん
2006/05/04(木) 19:40:38ID:???<input type="hidden" name="key" value="0000000000">
<input type="hidden" name="time" value="1111111111">
<input type="hidden" name="host" value="ex11.2ch.net">
<input type="hidden" name="ttitle_en" value="g4qDe4OTgsyLUo5tgsyDYINQg2KDZ5SDgqiCpILGjnaCpILxgr6Cr4LH">
<input type="hidden" name="csrfid" value="8d17ffb713ec7ccfbe05e75acf98c6ae">
この文字列の中から全てのvalue="(?)"の値を変数の中にいれるにはどういう記述をすればいいでしょうか?
0247nobodyさん
2006/05/04(木) 19:46:42ID:???0248nobodyさん
2006/05/04(木) 19:47:52ID:???0249nobodyさん
2006/05/04(木) 21:05:31ID:ItR85wzN下の記述だとできないっす。
実際、このようなことが出来るのでしょうか?
できるなら方法を教えてください。
function readhoge(){
var temp;
<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
?>
temp = $line;
document.hogeform.hogeelement.value = temp
<?php
}
?>
}
*readhoge()はjavascriptの関数。
htmlフォームのボタンを押した時などに
呼び出したい関数です。
0250nobodyさん
2006/05/04(木) 21:15:39ID:???ブラウザは受け取ったHTMLの中にJavaScriptが書かれているのを見つけるとその処理をする。
OK?
0252nobodyさん
2006/05/04(木) 22:17:14ID:zmM8hBMeそれとも、exitでエラー出力すれば良いのでしょうか?
0253nobodyさん
2006/05/04(木) 22:38:00ID:???お前がやろうしている事はphpではできねーよ、ボケ。
phpはサーバ、jsはクライアントで動くんだから
ちょっと考えてみればわかることだろ。
確かJSPなら出来たと思ったけど・・・すれ違いの事
言わすな、カス。
最初にページを読み込んだ時に
下の記述でhiddenに情報持たせて
後はjsで処理しろ
<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
echo <input type="hidden" name="hoge[$line]" />
}
?>
0258nobodyさん
2006/05/05(金) 01:58:16ID:???ページ生成=HTML形式で表示って意味?
だったらまー、どっちでも(text/htmlでもtext/plainでも)問題はないけど、
システムの致命的エラーならともかく、俺はちゃんとHTMLでデザインするかな。
あと、携帯だとHTML形式にしとかないと表示してくれないのがあったりするし。
0259nobodyさん
2006/05/05(金) 02:03:35ID:???function readhoge(){
var temp;
<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
?>
temp .= '<?=str_replace("'", "\\'", rtrim($line))?>';
<?php
}
?>
document.hogeform.hogeelement.value = temp
}
こんな感じかね?
で、このPHPが実行されるとページ上には
function readhoge(){
var temp;
temp .= 'aaaa';
temp .= 'bbbb';
temp .= 'c\'cc';
temp .= 'dddd';
document.hogeform.hogeelement.value = temp
}
という内容のJavaScriptが生成されることになる…と思う。
0260259
2006/05/05(金) 02:05:58ID:???temp .= '<?=str_replace("'", "\\'", rtrim($line))?>';
は
temp += '<?=str_replace("'", "\\'", rtrim($line))?>';
に差し替えで。(で、合ってたよな??)
0261nobodyさん
2006/05/05(金) 13:15:41ID:40gAgq8pform.php----------
<form name ="form1" method="post" action="5-1-2.php">
本文:<br>
<textarea name="contents" cols="30" rows"6"></textarea>
<br>
<input type="submit" value="送信">
</form>
5-1-2.php--------
echo nl2br($_POST["contents"]);
っていう簡単なのを作ったのですが。
$_POST["contents"]が微妙に文字化けします。
例えば
表示されてますか?
どんな感じですか?
いや〜ん
って入れて送ったら。
表\示されてますか?
どんな感じですか?
いや〜ん
ってなるんです。
php.iniの内容は
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
です。
あと、PHPの保存はShift-JISで保存しています。
0263nobodyさん
2006/05/05(金) 13:21:28ID:???それは文字化けじゃなくて、エスケープされてるの。
せっかくmbstringを見るところまでわかってるんだから、どこでエスケープされていて、
表示のときはどこでエスケープを外すか、>>291を見習って基礎から勉強しては?
0264nobodyさん
2006/05/05(金) 13:22:41ID:40gAgq8p基礎で躓いてるんです。。。orz
0265nobodyさん
2006/05/05(金) 13:48:06ID:???吐くときだけs-jisにすればいいよ。
0266nobodyさん
2006/05/05(金) 14:06:59ID:40gAgq8p解決しました。ググッたらすぐできました。
ご迷惑かけました。
>>265
EUC-JPで保存し
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.script_encoding = EUC-JP
としたら激しく文字化けするんです。。。orz
0267nobodyさん
2006/05/05(金) 14:21:20ID:???SJIS ShiftJIS
混在しててワケワカメヽ(゚ヮ。)ノ
最近のはどっちでもOKだっけ?
0269nobodyさん
2006/05/05(金) 15:55:48ID:???define (SELF_DIR, "bbs.php");
〜
print <<<_EOF
<form action="SELF_DIR" method="POST">
上記のような場合、actionの値をdefine定数で設定する方法はあるのでしょうか?
クォートで囲むと文字列になっちゃうし・・・
ちなみに定数でなく変数だと文字列とならずにちゃんと変数の値が反映されます。
0272nobodyさん
2006/05/05(金) 16:09:00ID:???0274nobodyさん
2006/05/05(金) 16:37:22ID:???0276nobodyさん
2006/05/05(金) 17:28:54ID:???0277nobodyさん
2006/05/05(金) 20:01:26ID:???0278nobodyさん
2006/05/05(金) 21:13:09ID:???ユーザに表示しないといけないエラーはエラー一覧のテンプレート作って
セッション>クッキー>GETでエラーIDを引き渡して表示するようにしてる。
ちゃんとMVCになるように分担させてるよ。
0279nobodyさん
2006/05/06(土) 00:40:00ID:FhNuLJWkelse if (isset($_POST['one_all']))
{
$model1 = ($model->main_one_record($_POST));
$id = $model1->risults['main_id'];
$model2 = ($model->items_search($id));
$model3 = ($model->bbs_search($id));
$view->bbs_view($model1,$model2,$model3);
}
3つのfunctionまとめて$model内でresults1,results2,results3,を作ったほうが良さそうです?
$viewの中で $model->results1 $model->results2 $model->results3って呼び出す感じで..
何書いてるのか解かんねくなってき;
解かってくれた方お願いします。
0280nobodyさん
2006/05/06(土) 00:45:29ID:0AyY+NP80282nobodyさん
2006/05/06(土) 00:58:42ID:FhNuLJWk0283nobodyさん
2006/05/06(土) 01:35:12ID:N1pGuqAz小さくすると表示される部分も小さくなったり、
大きくすると黒い部分が出たりして画像そのものをうまく伸縮できません。
使い方が間違っているのでしょうかよろしくお願いします
$sizer1="任意の数字";
$sizer2="任意の数字";
$img2=file_get_contents($icount);
$im2=imagecreatefromstring($img2);
imagejpeg ($im,"./doc/" .$file);
$size=getImageSize("./doc/" .$file);
$img_out=ImageCreateTruecolor($sizer1,$sizer2);
ImageCopyResampled($img_out,$im2,0,0,0,0,$sizer1,$sizer2,$size[0],$size[1]);
ImageJPEG($img_out,$aak."test.jpg");
imagedestroy($img_out);
0284nobodyさん
2006/05/06(土) 04:56:45ID:g3SbVbCd低レベルすぎる質問なのか、どこにも無かったので・・・
既出だったら本当にすみません。
Apacheをインストールしようとしたら
Installation Wizard Interrupted
The Installation Wizard was interrupted
before Apache HTTP Server 2.0.55 could be completely installed.
Your system has not been modified.
To complete installation at another time, please run setup again.
と出てインストール出来ません。
どうすればいいのでしょうか・・・
OSはWinMX プロフェッショナル
バージョンは2002 Service Pack 2 ・・・・です。
PC初心者です _| ̄|○
0285284
2006/05/06(土) 05:30:30ID:eGRayY93言語の設定が問題なのでしょうか・・・
0286nobodyさん
2006/05/06(土) 06:39:03ID:???>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
0289284
2006/05/06(土) 08:08:29ID:8bhnTskpPC初心者板往ってきます・・・・
0292nobodyさん
2006/05/06(土) 13:45:34ID:???0293nobodyさん
2006/05/06(土) 14:51:23ID:???0294nobodyさん
2006/05/06(土) 15:27:44ID:JnZkkTKPすげぇww
0295nobodyさん
2006/05/06(土) 15:33:10ID:???しかし、そんなエラー見たことないな。原因が分かったらフィードバックしてもらいたいな
0296nobodyさん
2006/05/06(土) 16:02:00ID:0AyY+NP80297nobodyさん
2006/05/06(土) 16:06:26ID:???C:の直下とかProgramFilesの下とかにApacheGroupとかそれっぽいのがあるなら
一回それを消してから再チャレンジしてみて
MySQLはそうだった
0298nobodyさん
2006/05/06(土) 20:20:01ID:???そりゃ上書きでインストールはできないんじゃないか?
停止させてアンインストールしてからインストール、が常道かと。
0299nobodyさん
2006/05/06(土) 20:36:05ID:???特に理由がない限り最新版を使うことをお奨めする。
めんどくさがらずアップデートしよう。
たまに、make install の前に Apache を停止しなければならないと思っている人もいるけど、その必要は通常は無い。
以下、Linux系のOSでのやりかた。
1. 新バージョン の php(tarボール)をダウンロード
方法は環境によって違う。
良く分からなければ、WinでDL&ウイルスチェックしてから、FTPとかで転送して、cp で適切な場所にコピー。
2. ハッシュ値の検証
$ md5sum -b ファイル名 (-b はバイナリを意味する。通常 -b は無くても結果は同じ。)
3. 旧バージョン の configre の構成が記録された config.nice を展開したディレクトリにコピーして実行
$ cp コピー元 コピー先
4. コンパイルする
$ make
5. rootになってインストールする
$ su -
# make install
6. Apacheの再起動をする(再起動しないとApacheは応答しない状況のままになる)
# service httpd restart など
0300nobodyさん
2006/05/06(土) 20:44:42ID:???0301299
2006/05/06(土) 20:57:07ID:???2.5. 解凍
$ tar -xzf ファイル名.tar.gz (-x アーカイブからファイルを取り出す; -z gzipでの圧縮/展開; -f アーカイブのファイル名を指定する;)
ちなみに、-z は環境によっては使えないので、その場合には、tar コマンドの実行後、
$ gzip -dv (-d 圧縮ファイルの解凍; -v 状況をメッセージとして出力;)
0304nobodyさん
2006/05/06(土) 21:34:03ID:???とか書こうとおもったらwww
0305nobodyさん
2006/05/06(土) 21:35:53ID:cPHKw6gtわかっているのは拡張子を抜いたファイル名だけです。
なにか素敵な関数はないでしょうか?
片っ端からpreg_matchとかするしかないでしょうか?
何しろファイルが多いのでやりたくない。
具体的にはファイル名はわかってるんだけど、それがjpgなのかgifなのか、
はたまたpngなのか、わからんとです。
ああ、これではファイル名がわかってるとは言えないですか、そーですか。
0308nobodyさん
2006/05/06(土) 21:54:03ID:???「鏡の国」の2ch風掲示板のCGIを、
自分のレンタルサーバーにて利用させてもらおうと検討している者ですが、
投稿者のログ(投稿者のip、投稿日時、内容等を記録したもの)などは、
投稿自体が削除されても残るのでしょうか?
初歩的な質問で申し訳ありませんが、
知ってる方がいらっしゃれば、よろしくお願いいたします。
0309nobodyさん
2006/05/06(土) 21:55:22ID:???0311nobodyさん
2006/05/06(土) 22:26:09ID:???マルチいくない
http://script.s16.xrea.com/2ch/test/read.php/php/1061295630/233
233 名前:名無しさん@PHP :2006/05/05(金) 20:50:13 ID:xeml72SQ
初めまして。
「鏡の国」さんのこの【PHP 2chBBS】を自分のサーバーで
使わせてもらおうと思っている者なのですが、
投稿ログ(投稿内容、投稿日時、投稿者のipなどの記録)は、
どの程度の期間残るのでしょうか?
また、投稿を削除したときに、その投稿ログは残るのでしょうか?
『実際に使ってみて試せばいいじゃないか』と思われるかもしれませんが、
回答よろしくお願いします。
0312nobodyさん
2006/05/06(土) 22:28:53ID:???逆だろ
一般ユーザーはある程度枯れていて実績のある方を選択すべきだろ
闇雲に新しいものを勧めるのは問題。 よってそのテンプレ案は却下
現に PHP 5.14 色々問題でてるじゃん
0313nobodyさん
2006/05/06(土) 22:41:48ID:???0314nobodyさん
2006/05/06(土) 23:04:51ID:???はぁ?
古いバージョンにはバグやセキュリティホールがあるわけですが。
PHP 5.1.4 は PHP 5.1.3 のバグフィックス版。
そして、PHP 5.1.2 以前にはセキュリティホールがある。
従って、5.1.2 以前の利用は推奨されるわけがない。
そして、5.1.3 と 5.1.4 ならバグフィックス版の 5.1.4 の方がバグは少ないだろう。
従って、5.1.4が推奨される。
0315314
2006/05/06(土) 23:05:39ID:???それをするスキルがないのならば、当然アップグレードすべき。
0316nobodyさん
2006/05/06(土) 23:18:47ID:???0318nobodyさん
2006/05/06(土) 23:35:34ID:???PHPの場合、既知のバグが減るだけで全体のバグはあまり減らない。
既知のバグは既知のノウハウで対処もできるが何が飛び出てくるか分からない新規のバグは非常に怖い。
で、PHP以外も含めて、開発の現場ではリリースされたばかりの十分に確認の取れてない
プラットフォームを本番で選ぶやつはかなりの間抜けだと思う。
入れるとしてもあくまで動作検証を目的とした実験・テストインストールでしょ。
そんなのいきなり本番で差し替えるような人はリスク意識がものすごく低い人にしか見えないよ。
せめて半月〜1ヶ月は様子見ろって。
0319nobodyさん
2006/05/06(土) 23:51:30ID:???imagecreatefromstringじゃなく
imagecreatefromjpegでいけるんじゃないかな
0320nobodyさん
2006/05/06(土) 23:54:22ID:???例えば4.4.1は4.3.11の致命的セキュリティホール対策版だったが
これはmb系があちこちバグりまくっててかなり使い物にならなかった。
選ぶなら4.4.2か4.3.11のどっちかであって4.4.1はたとえ特定の
セキュリティホールが潰されてたとしても選ぶものではないと思う。
また、この4.4.1は出て数日で致命的なバグが見つかってすぐにパッチまで出た。
毎回こんな致命傷リリースばかりではないだろうが、少しは様子を見た方がいいよ。
>>318
セキュリティホールは公開されるとそれを狙ったワームやクラックツールが出回るから、
ネットワーク系のプラットフォームはもう少し早いタイミングで差し替えた方がいいと思う。
0321nobodyさん
2006/05/06(土) 23:57:58ID:???そんな俺はいまだにWinXPのSP2は入れてない
0322nobodyさん
2006/05/07(日) 00:03:12ID:???0323nobodyさん
2006/05/07(日) 00:06:21ID:???0325nobodyさん
2006/05/07(日) 00:15:46ID:???そうだね。もうちょっと検証してからリリースすればいいのに、
全然確認もしないでユーザにテストさせてるとしか思えない節が…
0326nobodyさん
2006/05/07(日) 00:19:32ID:???セキュリティホールの修正は検証する時間なんてないだろ。
exploitが公表されたら、即座にリリースすべき。
Microsoftは緊急レベルの脆弱性でも特別な場合を除いて
月1回アップデートで管理者の手間を削減しているが、そのせいで、影響を受けやすいIEは修正までの間に攻撃を受けるので、
常に公開されている最新のパッチをあてていても、セキュリティレベル中でアダルト、アングラサイトを巡回すればすぐウイルス、スパイウェアに感染してしまう。
(表示されるActivX等のセキュリティ警告では全て「いいえ」を選んだ場合でも)
0327nobodyさん
2006/05/07(日) 03:19:54ID:???それを考慮すると
「致命的セキュリティホール修正のリリースは信用できないからしばらく待て。
普通に機能改良のときのリリースなら安心していいからすぐ入れて大丈夫」
ってことになるのかな?(そりゃまた微妙な…)
0328nobodyさん
2006/05/07(日) 06:14:52ID:???どうなっても(゚听)シラネ
0329238
2006/05/07(日) 06:33:15ID:kZFk4AOO遅くなりましたがレスありがとうございます。
これだけでいいんですかね。
これだけでいいのだとするとSQLインジェクション起こしてるサイトってこんな事もやってなかったって事なんでしょうか。。
ちょっと信じられなかったので質問してみました。
改めてレスありがとうございました!
0330nobodyさん
2006/05/07(日) 11:04:33ID:???カレンダーにある8桁数字のクエリ処理などは、もっといい方法ありますでしょうか?
if(ereg("^[0-9]{8}",$qry)){
$yr = substr($qry,0,4);
$mon = substr($qry,4,2);
$dy = substr($qry,6,2);
$today = getdate(mktime(0,0,0,$mon,$dy,$yr));
// 普通は今日
}else{
$today = getdate();
}
0332nobodyさん
2006/05/07(日) 12:33:58ID:???0333nobodyさん
2006/05/07(日) 12:42:19ID:???0334nobodyさん
2006/05/07(日) 12:43:23ID:???list($y, $m, $d) = explode('-', $_SERVER['QUERY_STRING']);
こんなん駄目?サニタイズが面倒か
0335nobodyさん
2006/05/07(日) 13:52:42ID:???$sql="SELECT * FROM tbl WHERE name LIKE %:name%";
$stmt->paramBind(":name")
みたいな事をしたいんだけど、うまくいかない。
%%ってどういう扱いになるの教えて
0336nobodyさん
2006/05/07(日) 14:46:29ID:???シングルコーテ????
0337nobodyさん
2006/05/07(日) 15:35:02ID:???レッツが古いって言っても主に全体の作り方とか設計とかの話だから
個々の記述については使えるとこは使えるんじゃないかと思うよ。
その辺はもう個人の好き好きだから。
個人的には「8桁の数字」ってのが扱いにくいから「-」区切りとかにして
strtotimeでUNIX秒変換しちゃうけど、これはこれでアリなんじゃないのかな。
まー自分なら
if(preg_match('/^(\d{4})(\d{2})(\d{2})/', $qry, $m)) {
$today = getdate(mktime(0,0,0,$m[2],$m[3],$m[1]));
}
とか書いちゃいそうだけど。
0338nobodyさん
2006/05/07(日) 15:46:21ID:???%はファイル名のワイルドカード「*」とほぼ同じ。
それより、文字列データはちゃんと '〜' で括らないと動くわけがない。
0339nobodyさん
2006/05/07(日) 16:53:03ID:???0340nobodyさん
2006/05/07(日) 16:57:44ID:???0341nobodyさん
2006/05/07(日) 17:12:12ID:???先にeregでチェックしてる時点でレッツのも速度的にはあんまり速くないし。
それが無ければsubstrの方がやっぱ速いと思うよ。
ただ、ereg+substr版は桁と配置の情報が何箇所にも分散してるから
うっかりミスでバグを出しやすいのがイヤだな〜と思う。
0342nobodyさん
2006/05/07(日) 17:30:51ID:???0343nobodyさん
2006/05/07(日) 17:42:18ID:???これが50万回ループの中に入ってる処理とかならさすがに神経質になるけど。
ま、そういうボトルネックになる場所でタココード書かないために
普段から意識しておくのは悪いことじゃないと思う。
0344nobodyさん
2006/05/07(日) 18:14:39ID:???さっきのクエリチェックくらいなら、(phpMyAdmin風)0.0001も変わらんかもしれんけどね。
携帯サイトとかだとさ、出力するHTMLを極限まで少なくしたいから(パケット節約)
GETでURL付加やHIDDENでPOSTしたりとか、そういう時にクエリを無茶して
処理側で頑張ってる場合が多いと思う。
んで処理側が遅いと、同時接続とかあった場合に一瞬でも待たせることになり
相手がナローバンドで尚且つ移動端末な「携帯」だと、お客を逃す場合もあるかもしれない
0345nobodyさん
2006/05/07(日) 18:27:44ID:???まぁ、言いたいことは判らなくもないし、異論は無いけど、
うちでやっているサイトはどれも、ここ最近は全てパケとか一切無視でやってるよ
まぁau公式サイトがほとんどだけどw
0346nobodyさん
2006/05/07(日) 18:29:15ID:???ユーザの声を聞く気のないサイトならそれでも別にいいんじゃね?
どんだけ遅かろうとパケ代かかろうと。
大手なんてどこも評判良くないしね。
0347nobodyさん
2006/05/07(日) 19:00:15ID:???0348nobodyさん
2006/05/07(日) 19:11:19ID:???docomo は第2世代(mova)がまだ多いからなあ
voda はウンコということしか分からん
0349nobodyさん
2006/05/07(日) 19:15:35ID:???利益の出る様なコンシューマサービスの提供者側にはなれない罠
勝手サイトで好き勝手にやってろって幹事
0350nobodyさん
2006/05/07(日) 19:24:02ID:???0352nobodyさん
2006/05/07(日) 20:41:55ID:IxA6YfPNif (getlastmod() != FALSE) {
header ("Last-Modified: " . date("D, d M Y H:i:s", getlastmod()) . "GMT");
}
しかし出力結果は[ Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT
]になってしまいます。
ですがエラーは出ていません。
どうしたらよろしいのでしょうか?
0353nobodyさん
2006/05/07(日) 20:53:14ID:???スクリプトの更新日なのであれば
filemtime($_SERVER['SCRIPT_FILENAME'])
のほうが確実じゃまいか。
0354352
2006/05/07(日) 21:00:01ID:IxA6YfPN現在のスクリプトの最終更新時刻を取得するのに、getlastmod() と filemtime() って区別する必要はあるのでしょうか?
わざわざ $_SERVER["SCRIPT_FILENAME"] までしても filemtime()の方が確実な理由ってを教えて頂けませんでしょうか。
0355352
2006/05/07(日) 21:04:08ID:IxA6YfPN同じUnixタイムを吐くはずなのになんでだろ??
0356nobodyさん
2006/05/07(日) 21:26:41ID:???http://jp.php.net/manual/ja/function.getlastmod.php
のUser Contributed Notes嫁や
0357352
2006/05/07(日) 21:48:15ID:IxA6YfPNありがとうございました。
0358nobodyさん
2006/05/07(日) 23:26:35ID:???俺、8000円ぐらいで小さな奴使ってるんだけど、ノートと本を広げたらもう
何も置けないぐらい小さいんだよ。
何かお勧めある?抽象的だけど、ディスプレイが二つぐらい置けるような大きさキボンヌ
0359nobodyさん
2006/05/07(日) 23:35:30ID:???0361nobodyさん
2006/05/07(日) 23:51:05ID:???モニターを並べたいのか?
両袖机でも使えば?黒壇使ってたらベストかもな
おれは脇机を利用してるけどな
0362357
2006/05/07(日) 23:58:23ID:???いや、マジでスレ違いごめんね。スレ違いの純情じゃ済まされないのは分かってる。
なるほど、脇机もひとつの手だな。ちょっとSOHO系のスレ探してみる。
0363nobodyさん
2006/05/08(月) 00:50:39ID:OM28BwPFどういう風にしたらよいでしょうか
0364nobodyさん
2006/05/08(月) 01:26:21ID:???PHPや他の言語でもいいですが、最終的にOSが提供している関数のようなものを
呼び出すことになるのですが、OSは行数のカウントやそれぞれの改行位置まで把握していないので
当然ながらそれに該当する関数(のようなもの)を持ち合わせていません。
ファイルの最後の方から一定のサイズづつ読み出して、
そこに改行コードが含まれているかをチェックし、それが見つかるまで繰り返す。
見つけたらそれまでに読み出したものを返す、というのが具体的な手法になります。
ファイルサイズが小さければ、先頭から調べる(一行だけ読み込む関数をファイル終端まで繰り返す)というのもありでしょう。
0365nobodyさん
2006/05/08(月) 02:45:41ID:???そこそこなサイズなら
$a = file("file");
echo $a[count($a) - 1];
とか
0366363
2006/05/08(月) 03:20:12ID:???出来ました!(TдT)アリガトウございました!
いろいろサイトを回ってみたんですがずっと分からなくて困ってました
ほんとにありがとうございました
0367nobodyさん
2006/05/08(月) 04:43:58ID:???時々、リターンコードが成功を返しているのに、
画像ファイルが生成されていないことがあります。
これはimagemagickが不安定なのでしょうか?
同じような現象に会った人、いますでしょうか?
0369nobodyさん
2006/05/08(月) 11:56:11ID:???trigger_error()が1023バイトしか取ってくれないんですが、
どこをいじればいいでしょう?
log_errors_max_len = 0;
にはしてるんだけどなぁ…
error_reporting(E_ALL);
set_error_handler('test')l
trigger_error(str_repeat('a', 1024). 'b');
function test($no, $str, $file, $line) {
echo $str. "\n";
echo strlen($str). "\n";
}
0371370
2006/05/08(月) 12:09:33ID:???0372369
2006/05/08(月) 12:25:42ID:???うまくできた人いたら、報告してもらえるとうれしいす
0373nobodyさん
2006/05/08(月) 15:05:08ID:wZI7Xo6Autf-8と書くときと、utf8と書くときがあります。
文字コード系の関数を使うときはutf8(ハイフン無し)で
htmlのヘッダのcharsetはハイフン無いと読まなかったり。
このへんの正確な定義はなんですか?
0374nobodyさん
2006/05/08(月) 15:21:47ID:w88YtdTUその後に時間のかかる処理をしたいのですが、どうしたらよいでしょうか?
構造では、
Locationで別のページへリダイレクトさせておき、
リダイレクトさせた後、サーバー側で残りの時間のかかる処理を終わらせたいのです。
現状だと、Locationを指定してもプログラム全てが終わらないとheaderが実行されてないような感じです。
PHP4.4.2 + Apache2.0 Handlerを使用しています。
0375nobodyさん
2006/05/08(月) 15:52:55ID:???>utf8と書くときがあります。
お前が勝手に書いてるだけだろ
ハイフンは入れましょう
http://jp.php.net/manual/ja/ref.mbstring.php#mbstring.supported-encodings
0376nobodyさん
2006/05/08(月) 16:16:48ID:???処理済のログを加算しない方法、どんな方法があるでしょうか?
たとえば、1か月分1つのログファイルにためるとして、
15日/月末の半月毎に測定プログラムを走らせる場合です。
月末に処理するときは15日までを加算してはだめですよね。
ぱっと思いついたのが別のファイルに処理済の日数を書いておいて
それを処理前に読み込んで処理開始の日を決める、
という方法なのですが、非常にまんどくさいです。
もっとシンプルでよい方法ありましたらきぼんぬ
0377373
2006/05/08(月) 16:35:36ID:wZI7Xo6Aえー!そうだったのか。レスどうもです。
でもutf8って書いてあるサンプルコードとかある気がします。
utf8でググってもたくさん出るし。
ハイフンなしは通常ありえないんですかね?
0378nobodyさん
2006/05/08(月) 16:51:30ID:???Shift_JIS
EUC-JP
UTF-8
が正式?
mb_系の関数はsjisとかテキトーに指定しても判別してくれるけどね。
0379nobodyさん
2006/05/08(月) 16:52:46ID:???0380nobodyさん
2006/05/08(月) 16:54:52ID:???ttp://dev.mysql.com/doc/refman/5.1/en/charset-charsets.html
0383nobodyさん
2006/05/08(月) 18:43:31ID:???ja、Japaneseなどなど混在しててイラッと来るときはある。
統一してほしいよね。
0385nobodyさん
2006/05/08(月) 18:48:00ID:???0386nobodyさん
2006/05/08(月) 18:48:06ID:wZI7Xo6A値段を入力するところで、桁数を表すカンマ付きで入力すると、
5,000円よりも50円の方が高くなって
値段順ソートができません。
こういう場合は一般的にどうしているのでしょうか?
データ型はfloatとvarcharを試しましたがイマイチです。
0388nobodyさん
2006/05/08(月) 18:56:38ID:???ftpってセキュリティの面で色々問題ありかと思うのですが、
そのプログラムへのアクセスをHTTPS通せば、
セキュリティ的にはほぼ問題なくなる(盗み見されなくなる)と考えてよいでしょうか?
MyPC--(HTTPS)--Server--(localなんで覗き見気にしなくて良い)--アップロード先
間違いがあったら指摘よろしこ
0390386
2006/05/08(月) 19:14:47ID:wZI7Xo6A最悪それでしょうがないかなと思ってます。
phpのスクリプト側で何文字目にカンマとか
表示するときにそういう処理をするのかなとも思ったのですが
結構手間なので。
なんかいい方法ないですかね?
0392nobodyさん
2006/05/08(月) 19:18:42ID:???http://jp.php.net/manual/ja/function.number-format.php
これですか。
0393374
2006/05/08(月) 19:21:35ID:???無駄レスすみませんでした。
0394369
2006/05/08(月) 21:40:26ID:a7rUGxAuサーバーのはいじれないからWinでテストしてるんですが、
そっちだと駄目なんだよね…
unix系ならいくかなぁ
0396376
2006/05/08(月) 23:29:30ID:???0397nobodyさん
2006/05/09(火) 02:06:25ID:???0398nobodyさん
2006/05/09(火) 12:54:15ID:???とやると普通は「2006年05月09日」と表示されるはずなのですが、
「2006・05月09日」と年が・に化けてしまいます。
Shift_JISエンコードなのですがどうすれば宜しいでしょうか、ご伝授お願いします。
ちなみにphpはバージョン5.1.2です。(Linux版)
0399nobodyさん
2006/05/09(火) 13:20:06ID:???PHP5.1.0からdate()のフォーマットに"N"が追加された。
sjisの"年"は"N(0x4E)"を含んでいるのでそうなる
対策は文字コードを変える
または
$year = date("Y");
echo $year . "年" . date("m月d日");
0400nobodyさん
2006/05/09(火) 13:21:43ID:???ありがd。 ってそういうことだったのね(´;ω;`)ブワッ
sjis派の自分としては何かメンドクサイことになりそうです。。。
0401nobodyさん
2006/05/09(火) 13:32:34ID:???試行錯誤の結果こうなった
マンドクセのは変わらないか
echo date("Y\x94\Nm月d日");
0402nobodyさん
2006/05/09(火) 13:41:06ID:???echo strftime("%Y年%m月%d日");
を使うことにする
0403nobodyさん
2006/05/09(火) 13:49:39ID:???んー何故かSyntaxエラーが返って着ました。。。 文字コードの直打ちはムリポなのかな(´・ω・`)?
>>402
ぉお!そういえばそんな関数が;;; 記憶量の差が露呈してきた希ガス;
0404nobodyさん
2006/05/09(火) 13:51:36ID:???編集中のコードで実験してみたのですが、その時既に一行上が間違ってました;;; ハズカシス;
0408nobodyさん
2006/05/09(火) 16:25:22ID:???マジレスするならサーバ側でlogrotateして、ローテート処理されたログを対象に集計するのが現実的。
Apacheのログなんて、平気で時系列前後するよ。
0409nobodyさん
2006/05/09(火) 16:34:53ID:???最近webじゃなくwindowsで動作するソフト作りたいなと思い始めたんですが、
web言語とは全く別物?
0410軟式PHP
2006/05/09(火) 17:28:33ID:???phpからだと別物に感じるかもなぁ。.Net ASPなら違和感なかったろうけど。
でもプログラムが好きなら、きっと楽しいからやってみるといいよ。
0411nobodyさん
2006/05/09(火) 18:19:51ID:???F-BoardというPHP+MySQLの掲示板をいじっているのですが、
Fatal error: Call to undefined function: numrows()
in /virtual/ホニャララ/public_html/php/board/post.php on line 191
上記のようなエラーが出てまいってます。
このエラーの下部に、その原因となってるであろうファイル名と行数が表示されているものの、
その箇所は特に手を付けたわけでもなく、恐らく正常な記述だと思うんです。
これはどこか別の場所に問題が起きてるのでしょうか・・・。
いじっていたのは確かにこのpost.phpで、例のBBQとかいうのを組み込もうとしていました。
ですがどうやらうまくいかなかったようで、いじった内容を全て削除したんですがこのザマです。
どなたかこのエラーの原因になってるであろう問題がわかる方いらっしゃいませんでしょうか。
0412nobodyさん
2006/05/09(火) 18:43:34ID:???エラーメッセージを読めば判るとおり、numrowsという関数が無い。
間違って関数を消したか、関数名を書き換えたか、
関数を読み込む部分を消したか。
差分を取るなりしてどこを書き換えたか確認。
どこをいじったかわからないなら元に戻す。
xreaか?
0413nobodyさん
2006/05/09(火) 18:57:43ID:???ご指導ありがとうございます。
お察しの通りxreaです。よくわかりますね・・・。
指摘していただいた内容をもう一度確認してみます。
0414411
2006/05/09(火) 19:44:03ID:???無事に元通りにできました。
どうもありがとうございました。
0415nobodyさん
2006/05/10(水) 12:41:02ID:???つWinBinder(ttp://pecl.php.net/package-info.php?package=WinBinder)
PHPでGUIアプリが作れる...らしいです。
0416nobodyさん
2006/05/10(水) 13:15:35ID:???IEだとwwwあってもなくてもセッションは同じサイトとして扱われるのに、
Fxだとwwwありとなしで別のサイトとして扱われるんですね。。。
最初それに気づかなくてなんでセッションが勝手に増えたり減ったりしてるのか無駄に時間を費やしてしまったorz
こういうのってW3C絡みで何か取り決めがあるのでしょうか。
それともブラウザの開発者が勝手に判断してるのでしょうか。
無論ドメインを統一すれば問題は解消されますが、
例えばwwwとwww2みたいに複数の鯖を経由する時などに弊害が出そうな気がしまして。。。
ところでセッションが余りに便利過ぎてセッションばかり使ってるのですが、
クッキーを使うのとどちらがブラウザに優しかったりするのでしょうか(期限は同じ設定だったとして)。
0417nobodyさん
2006/05/10(水) 14:29:03ID:???あとセッションとクッキーって、
セッションidをcookieに格納するもんが普通だぜ
0418nobodyさん
2006/05/10(水) 16:58:34ID:???http://php.s3.to/simple/#updaterss
ソース
http://php.s3.to/simple/source.php?updaterss.php
$logmax = 10; // ログ記録最大行、RSS出力記事数
これを機能させる記述が抜けている様に思うのですが、実際に機能させる為にはどのようにすればよろしいのでしょうか?
0419軟式PHP
2006/05/10(水) 18:19:32ID:???0420nobodyさん
2006/05/10(水) 18:48:16ID:???サーバー側?の$_POSTの値が初期化されないためブラウザで更新をかけるたびに同じ値を連続投稿してしまいます。
もしかすると、PHPというよりアルゴリズムの問題になってしまうのかも知れませんが
$_POSTや$_GETの値を初期化する方法など無いでしょうか?
0421nobodyさん
2006/05/10(水) 18:57:58ID:???それはサーバー側じゃなくてブラウザが毎回同じ値を送信してるだけ。
そういうもの。
投稿完了時にLocationで別のページに飛ばしてしまえば多重送信は防げるよ。
0422nobodyさん
2006/05/10(水) 19:50:30ID:???Firefoxが正しい実装だよ。
IEの実装はセキュリティ上の問題がある。
あと、パス指定しないのが悪い。
example.com に対してセッション発行すれば、
www.example.com と example.com で共有できるでしょ。
0424nobodyさん
2006/05/10(水) 21:59:29ID:???<[;゚Д゚]> ア゙ー!? ソコマデカンガエルナラ ナゼマニュアルヲミナイカナァ!
[_]
< >
0425420
2006/05/10(水) 22:21:00ID:???なるほど・・・
ありがとうございます!
Locationとはheader()関数のことですね?
試しに組み込んでみます
0427nobodyさん
2006/05/11(木) 01:09:43ID:???CookieもセッションCookieも同じ「Cookie」という技術を使ってるんだよ。
何がいいたいかというと、有効期間の指定が違うだけ。
(有効期間を何も指定しないとセッションCookieになる)
セッションCookieならパス指定ができない、ってわけはない。
0428nobodyさん
2006/05/11(木) 01:15:57ID:???寒気がする。
0429428
2006/05/11(木) 01:24:28ID:???>>423はセッションのCookieと言ってるわけで、PHPのセッション機能で発行されるCookieを指してると思うのだがどうか(>>416>>423から)。
>>423
で、結局はPHPのセッション機能を使っても出来る。session.cookie_domainにini_set。
0431nobodyさん
2006/05/11(木) 04:32:27ID:???マテ。教えてもらったらその関数はなんなのかとか、他に方法が無いのかとかいろいろ調べて見れ
絶対後々役に立つ・・いやたぶん、恐らく、ま・ちょっとぐらいは
0432nobodyさん
2006/05/11(木) 04:57:26ID:???0433nobodyさん
2006/05/11(木) 07:12:35ID:???法人でも個人でも仕事としてPHPでのシステム制作を請け負った場合、
スクリプトの設置場所・設置方法ってどうしてる?? サーバー運用込みで受託?
客のサーバーに入れるとソースばれるからイヤだし、トラブったときにスクリプトのせいじゃなく
サーバー側の問題だったとしても、責任をなすりつけられそうでなぁ。原因解明のために相手のサーバいじるのも怖いからイヤだし。
かと言って、こちらが管理するサーバーに入れて使わせる契約だと
サーバー管理のための人員が必要になるし、サーバー代(レン鯖やハウジング)もかかるし。
それぞれメリット・デメリットあるだろうけど、おまいらはどのようにしてますか?
俺が前にちょこっと知り合いの会社で手伝ったときは後者を選択してますた。
0435416
2006/05/11(木) 09:35:32ID:???パス指定とは ini_set()で session.cookie_domain を独自指定汁という意味で解釈すれば宜しいのでしょうか。
結局セッションもクッキーも期限の違いでブラウザ側としてはどちらも優劣はないと言うことですね。
>>433
名前は覚えてないので申し訳ないのですが、PHPのソースをコンパイルする方法があったと思います><
確かphp.iniにモジュールを組み込ませる形で利用できたと思います。
0436nobodyさん
2006/05/11(木) 09:50:49ID:???つapc
ttp://www.stackasterisk.jp/tech/php/apc01_01.jsp
使ったことないけど
0437433
2006/05/11(木) 11:24:43ID:???単なるキャッシュ用だけなら>>436のよりももっと新しいのやZend公式のがある。
キャッシュ用&暗号化できる製品があるのも知ってる。
だからソースの件はまあどうにでも出来るんだけど、問題はそれ以外の部分なんだよね。
トラブったときの対処とか。
実際構築を請け負ってる人(または会社)の体験談を聞きたいです。
0438nobodyさん
2006/05/11(木) 11:26:26ID:???436以外にコードを他人に知られないようにする方法きぼんぬ
0439nobodyさん
2006/05/11(木) 11:43:32ID:???0440軟式PHP
2006/05/11(木) 11:43:41ID:???0441823
2006/05/11(木) 18:19:10ID:???hogehoge
ABC;
なら問題ないのですが、
(タブ)$var = <<<ABC
(タブ)hoge
(タブ)ABC;
にするとエラーが出ます。
対策方法はあるでしょうか?
ヒアドキュメント大好き人間なんですが、
上の理由のため、インデントできずソースがかなり見づらくなってしまいます。
0442nobodyさん
2006/05/11(木) 18:27:57ID:???http://jp.php.net/manual/ja/language.types.string.php
非常に重要なことですが、終端 ID がある行には、セミコロン (;) 以外の他の文字が含まれていてはならないことに注意しましょう。
これは、特に ID はインデントしてはならないということ、 セミコロンの前に空白やタブを付けてはいけないことを意味します。
終端 ID の前の最初の文字は、使用するオペレーティングシステムで定義された 改行である必要があることにも注意を要します。
これは、例えば、Macintoshでは \r となります。 最後の区切り文字 (たいていはその後にセミコロンが続きます) の後にもまた、改行を入れる必要があります。
マニュアル読もうね
(タブ)ABC; が×ってこと
0443nobodyさん
2006/05/11(木) 21:38:54ID:???>>437
ソースがばれるのが嫌だってなんでなの?
客の視点から言えば、コンパイルされたりして自由に修正できないのは不便。
せっかく、phpなのに。
どういうシステムだか知らないけど、例えばショッピングカートだとして、
管理画面から自由に項目が編集できるようなシステムだったとしても
それ以外の部分を修正したいときがあるわけよ。
製作を委託した会社がソースコンパイルして保守契約結んだりしてると
ちょっと修正したいだけでも委託せんといけんから面倒なんだよね。
極端な例だけど、「text/html; charset=shift-jis」と文字コード指定が間違ってるせいで
IE以外のブラウザで文字化けする不具合があったときがあって、保守契約結んでる委託した会社に電話して修正しろといったら
「IE以外のブラウザはサポート対象外。IEだと正しくshift_jisと認識されるはず。」と付き返された。
もうはっきりいって腹立つ。
普通企業が下請けに委託するのは社内で作成する技術がないわけじゃなくて、
自社の社員に給料払って作るよりも下請けに任せた方が安いからなわけで、
ちょっとした修正なら、わざわざ保守契約結んだ会社にいちいち電話して説明するよりも
ちょっとソース弄って直した方がはやいんだよね。
わざわざ、ソースから技術盗もうなんてする人そんないないと思うんだけど
あとあと細かなことで文句つけられて修正しろ修正しろ、って言われる方が面倒じゃない?
0444nobodyさん
2006/05/11(木) 21:46:59ID:???ttp://www.stackasterisk.jp/tech/php/php02_02.jsp;jsessionid=au7d2dDCrCMb
を参考にshellでやるように > /dev/null &でバックグラウンドで、かつ、出力を捨てるとあったのですが、もっと詳しくと思ってマニュアルの
http://jp.php.net/manual/ja/function.system.php
をみてみましたが関連する記述はありませんでした…。
> /dev/null &は本当に有効なんでしょか?
0445nobodyさん
2006/05/11(木) 21:53:24ID:???以前試して、有効なサーバと有効でないサーバがあった記憶がある。
(xreaで無理で、自宅サーバでOK)
何の設定が影響してたかはしらん・・・
0446nobodyさん
2006/05/11(木) 21:55:41ID:???>は標準出力をファイルに
/dev/nullを指定するとデータ破棄
&はバックグラウンドで実行
0447nobodyさん
2006/05/11(木) 22:06:30ID:???配列 改行
配列 改行
・
・
・
ファイル内容がこのような内容になっている場合に
「3行目の配列だけ読み込む」ことは可能ですか?
0448nobodyさん
2006/05/11(木) 22:17:58ID:???どこに改行があるのか分からんので最初から読んでいくしかない。
まぁ、一行のサイズが固定されているなら、ファイルポインタを移動させることもできるが。。
>>364を参照。
0449nobodyさん
2006/05/11(木) 22:20:49ID:???0450nobodyさん
2006/05/11(木) 22:25:02ID:???ちゃんとサイトライセンス組んで契約どおりに使ってくれる客ばっかりじゃないよ。
スクリプト売り(但し再販は不可)とか、サイトライセンス作ってどっちにします?
と提示して、安いのが良いから特定サイトにのみに限定したライセンスにしてくれ
と言われて納品したらコピーしまくり、スクリプト転用しまくりのたちの悪い客も結構多い。
それでこっちから苦情を申し入れても平然としたもんだったり...
まあソースごと渡すなら改造可、コピー可のライセンスで
値付けも最初からそういったものにしてりゃ良いんだけどね。
汎用性のないアプリなら問題は少ない。
表示に関してはテンプレ使うだろうから、レイアウトとかの体裁に関して
弄るのはソース隠蔽しても普通は大丈夫だと思うよ。
IE以外云々は、最初から条件に含めなとけって。
0452nobodyさん
2006/05/12(金) 00:36:52ID:???echo require("hoge.html");
とする場合、"を考慮して <FONT size=\"2\"> のようにエスケープしとかなきゃいけない
と思いますが、それのみに適した関数ありますでしょうか?
addslash()でOKでしょうか?
または str_replace()で " を \" に置き換えとかでも問題ないしょうか?
またどの時点でエスケープは必要になるのでしょうか?
こんがらがってきました orz
0454nobodyさん
2006/05/12(金) 05:40:59ID:???お前みたいなバカに安く買い叩かれないように、ソースを隠蔽するんだよ。
修正とかはもちろん保守契約または随時追加費用をもらえばやるよ。
あと>>450も書いてるように、ソースが欲しいならそれなりの値段で渡すけど、
お前(の会社)では出せない金額になると思うがなwwww
0456nobodyさん
2006/05/12(金) 08:56:57ID:???アクセスして時間を取得して実行させるしかないのでしょうか。
0457nobodyさん
2006/05/12(金) 09:51:27ID:p/0gq46aテンプレート用変数$templeteの内容によってCSSが変化するとします。
if($templete=="赤"){
<link href="css/red/style.css" rel="stylesheet" type="text/css" />
}elseif($templete=="青"){
<link href="css/red/style.css" rel="stylesheet" type="text/css" />
}elseif($templete=="緑"){
<link href="css/green/style.css" rel="stylesheet" type="text/css" />
}elseif(同様に続く)
この方法でも問題はないのですが、ソースが増えすぎます。
何か良い方法はないでしょうか?
0458nobodyさん
2006/05/12(金) 11:05:30ID:???俺なら$templateをディレクトリ名にしておいて
<link href="css/<?php echo $template; ?>/style.css" rel="stylesheet" type="text/css" />
0459nobodyさん
2006/05/12(金) 11:13:05ID:???PHPだけでやるならソレかスクリプトを常駐させるしかないと思う。
ただWindowsにタスクマネージャがあるようにそのサーバにもcronがあると思う。
cronについてはこのスレじゃないから割愛・・・というか、ググればすぐ出てくる
0460457
2006/05/12(金) 11:44:27ID:???$templeteがディレクトリ名なら良いのですが、名称を付ける場合もあります。
例えば「夏デザインA」「スポーツB」など。
登録する時などは日本語名で登録するので、そのような場合に
ディレクトリ名に変換する方法はないでしょうか?出来るだけソースが短くて。
0462nobodyさん
2006/05/12(金) 12:12:20ID:???じゃあ名称とディレクトリを配列にしておく
$css_dir = array('赤'=>'red', '青'=>'blue', '緑'=>'green', '夏デザインA'=>'summerA', 'スポーツB'=>'sportsB');
?>
<link href="css/<?php echo $css_dir[$template]; ?>/style.css" rel="stylesheet" type="text/css" />
0465nobodyさん
2006/05/12(金) 15:45:10ID:tJvRMikHregister globalsをonにしろと書いてあるのですが、
使っているレンタルサーバはoffになっています。
こういうときはどうすればいいのでしょうか?
色々と調べていたら、register globalsがonなのは
ダメだということが分かったのですが、
offの状態でフォームによる値の受け渡しを行うには
どうしたらいいでしょうか?
0466nobodyさん
2006/05/12(金) 15:49:19ID:???$_GETとか$_POST配列で取得
0467465
2006/05/12(金) 16:03:36ID:tJvRMikHロリポップのサーバのアカウントももっているのですが、
そちらは同じフォームのスクリプトでも問題なく動きます。
この場合、ロリポップはセキュリティ的に問題があるということですか?
0468軟式PHP
2006/05/12(金) 16:40:11ID:???>register globalsをonにしろと書いてあるのですが
まず、その本を窓から投げ捨てろ。
0469nobodyさん
2006/05/12(金) 16:48:53ID:???ロリポップは聞いたことあるけど使ったことはないので
・register globals に関係ないスクリプトである
・セキュリティが重要なスクリプトは動かさないのが前提
・セキュリティポリシーの相違
・etc
と、色々ある。
おまいさんの言葉だけでセキュリティが高いだの低いだの判断することはできない。
商用でSSL対応のサーバプランとかあるなら、それで環境が違ってるという可能性もあるし
0470nobodyさん
2006/05/12(金) 17:16:46ID:???プププ、苦しい煽り乙wwwwwwwwwwww
そんなら文句ばっか言ってないで、自分でスクリプト書けばぁ???www
なぁ、>>443よ。お前みたいなケチな馬鹿に無料でソースくれてやるほど
こちらは「いい人」じゃないぜwwwwwwwwwwwww
0472nobodyさん
2006/05/12(金) 17:56:42ID:???phpの書籍でお勧めできる物がありましたらお願いします。
当方田舎なもので立ち読みして品定めしたいところなのですが、
phpなんてマニアックな本の取り扱いがありません(´;ω;`)ブワッ
Amazonのレビュー読んでも余計に混乱してどれを買えば良いのか分かりませんorz
金銭的にも余り余裕が無いのでできればあまり大量に買わずにマスターしたいです。
0473nobodyさん
2006/05/12(金) 19:18:59ID:???ばーか。どこの誰だかわからん低脳のソースなんかくれたほうが迷惑だろ?
まあせいぜい人様の迷惑にならないようなプログラム書けるようになろうね。
0474465
2006/05/12(金) 19:21:51ID:tJvRMikHどっちにしてもこの本は捨てないとだめですかね?
何冊か買ったPHP本の中ではかなり参考になった本なのですが...。
>469
ロリポップでphpinfo()をしたらregister globalsはonでした。
自分はメールフォームを作ったのですが、
基本的には、$_POST["hoge"]で受け取っておけばいいのでしょうか?
例えば、name="fuga"を$_POST["fuga"]で受け取って、
その直後に$fuga = $_POST["fuga"]とやった場合は
あんまり意味ないんですかね?
egister globalsはonである時点で$_POST[]でもダメなのかな?
0475nobodyさん
2006/05/12(金) 19:48:54ID:???プププゲラゲラ プゲラゲラwwwwwww
お前は>>443で自分が書いたマヌケな文章をもう一度よく読み返すこったなwww
だからそんな偉そうなこと言ったり他人に文句つけてるヒマがあったら
自分で開発しろっつーのwww どうせ出来ないから暴れてんだろうけどwww
0476nobodyさん
2006/05/12(金) 19:52:26ID:???0477nobodyさん
2006/05/12(金) 19:58:37ID:???0479nobodyさん
2006/05/12(金) 20:05:06ID:???0482nobodyさん
2006/05/12(金) 23:42:52ID:???プログラム全体が見えてない奴が勝手に触ってそれが次回の機能追加のときの障害になるとか、考えないの?
うちでは、勝手に触った場合は、以後、そこに起因するトラブルが起きても責任とらないってことにしてる。
ブァカ客に触らせるとプログラマの士気に関わるんで。
0483nobodyさん
2006/05/13(土) 00:01:06ID:???0485nobodyさん
2006/05/13(土) 04:21:46ID:???ウチではソースはクライアントに開示してるよ。
マスターソースはこっちで持ってるんで、クライアントがサーバ上のソースをいじっても
次の仕様追加・変更がされたときにこっちが持ってるソースで上書きされるんで無意味。
というか、ソース云々言う以前に契約で勝手に触らないようにしてあるし。
コンパイルなんかしなくてもWebアプリの速度なんてたかが知れてるし、
余計な手間増やしたくないしね。
あ、ソースはSubversion(CVSっぽいヤツ)で管理してるから変更履歴とかも残ってるよ。
0487nobodyさん
2006/05/13(土) 06:46:28ID:???正直もううんざりだぜ!
これからはPHPとJavaScriptの時代か?
JavaScriptはもっとブラウザ同士が同じ動きしてくれたらな〜
PHPは・・・その・・・もっとグラフィックスを・・・
0488nobodyさん
2006/05/13(土) 08:50:03ID:???なぁに、数年後にはWeb3.0にうんざりしてるさ。
どうでもいいけどそろそろW3Cみたいにブラウザ間の取り決めをちゃんとして欲しい。
何がIEオリジナルタグだ。ばっかじゃないの。少しはおりこうなFxも見習えての。
0489nobodyさん
2006/05/13(土) 09:27:11ID:???たぶんもう見ていないと思うけど、自分も同じ症状に陥ったのでとりあえずの回避策を。
IISが停止している・Apache関連のフォルダがないのにもかかわらず
ApacheのMSI版インストーラで”Installation Wizard Interrupted”エラーが出る人は、
古いバージョンで試してみるとうまくいくかも。
http://archive.apache.org/dist/httpd/binaries/win32/
私の環境では、apache 1.3.31 または apache 2.0.52 ならうまくいきますた。
CPU:Pentium3 MobileCPU: 866MHz
Memory: 512MB
OS:WinXP Pro SP2
アンチウイルスソフト:ノートンインターネットセキュリティー2006
CドライブにWin2000、DドライブにWinXPの構成
apacheインストール暦:2000・XPともになし
IIS:Windowsコンポーネントから削除済み
0490nobodyさん
2006/05/13(土) 21:15:37ID:???$a = ($b) ? $c : $a ;
みたいな文法があったんですが、これはどういう意味ですか?
0491nobodyさん
2006/05/13(土) 21:19:24ID:???0492nobodyさん
2006/05/13(土) 21:19:50ID:???三項演算子でぐぐってみ。
0493nobodyさん
2006/05/14(日) 00:48:40ID:???0494nobodyさん
2006/05/14(日) 01:06:23ID:???なるほどね。勝手に触った部分はないものとして無視。
これシンプルでいいかも。いじりたきゃいじれ。だけど次の機能追加までの命ね。ってことか。うちも今度それやってみよう
0495nobodyさん
2006/05/14(日) 02:58:39ID:???契約違反にはどう対処してる?やっぱ泣き寝入り?
0496nobodyさん
2006/05/14(日) 04:17:12ID:???0498nobodyさん
2006/05/14(日) 10:16:50ID:???初心者、上級者一切問いません。ダーツを愛する方ならどなたでも結構です。
実はあるダーツ店のマスターが客が来なくてとても困っているようです。
↓↓↓ 詳細はこちら ↓↓↓
http://sports9.2ch.net/test/read.cgi/bullseye/1111230059/431-452
できればこのマスターに励ましの言葉をお願いします。
また、もしこの店の近くにお住まいの方はお店の方にも行ってあげてください。
困ったときはお互い様です。ダーツを愛するもの同士助け合いましょう!
0499nobodyさん
2006/05/14(日) 12:39:59ID:AA1LZHii0502nobodyさん
2006/05/14(日) 14:42:05ID:???オートコンプリートOFFは<input>の属性でautocomplete=offって指定するだけ
特定データ削除はムリ
0503nobodyさん
2006/05/14(日) 14:44:05ID:???ひょっとして止まったら24時間対応やってんの?すげーなおい。
サーバ管理なんて金もらえばできるってもんじゃないぞ。
0504nobodyさん
2006/05/14(日) 14:50:10ID:???ファイルの指定で絶対パスの指定ってできますか。
0505nobodyさん
2006/05/14(日) 14:57:16ID:???0506nobodyさん
2006/05/14(日) 14:57:50ID:???まっとうな業者なら自分の得意分野をきちんと理解した上で
得意でない分野はパートナー業者に依頼するのが普通。
0507nobodyさん
2006/05/14(日) 14:58:51ID:???客側のサーバに納品したら、それはそれで
何かトラブれば24時間365日呼び出されるんじゃないの?
しかもこちらの想定しない設定とか運用がされてるサーバだから
原因特定に時間かかりそうだし。こちらのせいじゃないトラブルまで責任押し付けられそうだし。
>>503はそういう経験なかった??
0508nobodyさん
2006/05/14(日) 15:26:45ID:???トラブルの内容にもよるけど、サイトが停止するようなトラブルを
プログラムミスで発生させることはかなり稀な事態だから
土日祝はともかく夜中呼び出し食らった経験は無いなぁ。
ほとんどの場合、平日昼間の対応だけで済んでるよ。
一体どんなの作れば夜中に即修正が必要なバグを出せるの?
ただ、サーバー側の問題をこっちに押し付けられることはあるね。
でも不得手な仕事を引き受けてそれが改善できるとは思えない…
>>506にあるように親切なパートナー業者を見つけるのが手なのか。
でも結局、すべての問題がまとめてやってきて忙しくなるのは変わらないような…?
お客に「サーバー側の問題はこちらへ連絡してください」とか通達してるのかな。
0509nobodyさん
2006/05/14(日) 16:25:54ID:???echo TEMPLATE::fill($this->getTemplate(log),$data);
という文でデータを出力しているのはわかるのですが、
::と->がわかりません
ぐぐで検索しても区切り文字になってしまってなかなか目当ての検索結果が得られないので
質問してみます。
とりあえず朝からにらめっこして、->は
データの構造体(?)にアクセスする表記(?)ためのポインタというものを
指しているのではないかと思うのですが、
::と->と上記の行の説明を出来ればお願いしたいです。
0510nobodyさん
2006/05/14(日) 16:27:02ID:???0511nobodyさん
2006/05/14(日) 16:28:02ID:???うちの場合は、サーバ管理とプログラム開発をはっきり分けて、
たとえばルートのパスワードを教えてもらっても即廃棄して、
どんな小さなサーバの設定の変更でもいちいち管理者を通す。
常にそうやった上で、システムの不調で
緊急対応した場合は、プログラム開発のミスか、運用ミスかをはっきりさせて
運用ミスなら報告書をつくって緊急手当を上乗せして費用を請求する。
あらかじめ責任範囲を明確にしておけば、きちんと費用は出してくれるよ。
でもやっぱり角が立つから、信用のおけるホスティング会社以外では極力運用と
開発を分けない事にしてる。これが呑めない新規客なら仕事を断ることもある。
ホスティングって、けっこうひどい所もあるからねぇ。
0512nobodyさん
2006/05/14(日) 16:29:02ID:???思って間違いないと思う。
0514509
2006/05/14(日) 17:13:05ID:???見当がつかないと、しらべようがないので助かりました。
読んでまたわからなければ参上させてもらうかもしれません。
いってきます。
0515509
2006/05/14(日) 17:22:40ID:???http://www.php.net/manual/ja/language.oop.php
ここを参照したのですがここの説明で->が出てくるのですが
->についてはどこを調べたらよいでしょうか?
何を表すものなのかがわからないので、どこを調べて良いかわからなくて・・・すみません。
0516nobodyさん
2006/05/14(日) 17:24:03ID:???なんでだろう、マニュアルだと分かりにくいと感じるのは
0517nobodyさん
2006/05/14(日) 17:25:15ID:???0518nobodyさん
2006/05/14(日) 17:31:54ID:???ttp://www.scollabo.com/banban/php/php_11.html
オブジェクト指向のみだけど、ここも読んでみたら?
ttp://www.rfs.jp/sb/perl/04/01.html
ページ自体はPerlの説明だけど、「パッケージ」について
勉強してみてくらはい
上記の二つのページだけど、お前の疑問の大半は解決できると思う
0519nobodyさん
2006/05/14(日) 17:41:31ID:???0520nobodyさん
2006/05/14(日) 17:42:25ID:???0521nobodyさん
2006/05/14(日) 17:42:51ID:???> パス名のセパレータは、 -> となります。
この辺。要するにオブジェクトに入ってるメソッドやメンバを示すための単なる区切り記号。
0522nobodyさん
2006/05/14(日) 17:46:34ID:F/h4hhycセッションへ値を追加する。
と言ったことがやりたくて、
<a href='hoge.php?val=1'></a>
GETで受け取ってセッションへ渡して行こうかと思って以下のようにして見たのですが、うまくいきません。
$_SESSION['valval[]'] = $_GET[val]
<a href='hoge.php?val=1,2,3,4'></a>
後はこんな感じに、クリックされる度にリンクを生成するしかないでしょうか?
0526nobodyさん
2006/05/14(日) 19:02:16ID:5bNipnnQまずは落ち着け。落ち着いたらレスアンカーに注目。
0527nobodyさん
2006/05/14(日) 21:37:55ID:???Cとかならコンパイル時に教えてくれるけどPHPは実行時にしかチェックしないし
そもそも融通が利きすぎるから文法チェッカーとかも作るのが難しそうだ
0529nobodyさん
2006/05/14(日) 23:05:50ID:/vYEQzDW$idに値が入っていない(つまりデータが登録されていない)場合、
「登録されていません」というメッセージを出したいと思っています。
$conn=mysql_connect("localhost","hoge","hoge");
$sql = "select * from list where id='$id'";
$rst=mysql_query($sql,$conn);
while($row=mysql_fetch_array($rst)){
echo $row[$id];
}
whileの中にifを入れて出来ると思ったのですが、無理でした。
どうすればいいのでしょうか?
0530nobodyさん
2006/05/14(日) 23:21:59ID:???whileの中は「データがある場合」しか実行されないんだから出るわけねーし。
whileの前にmysql_num_rows()で件数出して、0件ならエラーメッセージ。
0531nobodyさん
2006/05/14(日) 23:28:11ID:???質問の文章もスクリプトも適当すぎるなぁ。。
やりたい事は、PHPの変数$idとMySQLのフィールドidの値が同じになるレコードが1つも無かった場合に
「登録されていません」って出力したいんだよね。
mysql_num_rows()を使うと結果セットの行数を取得できるから、whileより前でチェックすればよい。
0533nobodyさん
2006/05/15(月) 00:00:22ID:ZEWPSNXY例えば、静的なページを作りその下部にコピーライトのようなものを書くとします。
いくつもの静的なページを作りその全てにコピーライトを書きます。
しかしコピーライト中の一部を改変する(メアド変えるとか)全部のページを修正するので手間です。
方法を二つ考えました。
1.フレームにしてコピーライトだけのhtmlを読み込む
2.インラインフレームにして同上
3.phpにしてincludeとかrequireで読み込む
1はページ最下部というデザイン上の要求が満たせません
2はスクロールとかで使い辛い感じになるので出来たらイヤです
3はできたらphpを使わないでデザインしたい
何か他の方法は無いでしょうか?
phpスレなのにphp使わないでって辺りがスレ違いなんですけどよろしくお願いします。
0534nobodyさん
2006/05/15(月) 00:05:07ID:???そんなことのためにフレームやPHPを使うという発想が理解できない。
俺なら、DWのテンプレート機能や、DWやテキストエディタの一括置換を使う。
以上。
0537533
2006/05/15(月) 00:17:49ID:???置換はファイルの数が増えると手間かなぁと。
とりあえずDWをググってみます。
>>535
phpが使えない鯖に置くかもしれないんです。
あとつかえるとしても検索エンジンで拡張子がphpだと
ちゃんとクロールしてくれないと聞いて。
0538nobodyさん
2006/05/15(月) 00:18:22ID:???> phpスレなのにphp使わないでって辺りがスレ違いなんですけどよろしくお願いします。
自分で分かってるんだから他所池よ
0539nobodyさん
2006/05/15(月) 00:20:48ID:???.htmlでPHP動かせば検索エンジンの問題は回避できる。
PHPが入ってない鯖はすでに論外だわな。
その場合、SSIも使えない場合を考慮すべきなの?
だったら後はJavaScriptでdocument.writeとかしかないんじゃないかと思うぞ。
俺もそれはDreamWeaverでテンプレートにしちゃうかなー
0541533
2006/05/15(月) 00:32:18ID:???>htmlでPHP動かせば検索エンジンの問題は回避できる。
なるほど、そんな方法があるんですね。
Javaはまだあんまよく分からないっすがメモだけしときやす。
安い鯖は当然SSIもダメなんすね。へこむわ。
DWってDreamWeaverの事でしたか。もってないもんくすん。
0542nobodyさん
2006/05/15(月) 01:25:08ID:???そういう動的に差し替えるにも値しない箇所は、
アップロード前に事前にツール使って差し替えてるけど。
ただ作業者が複数いる場合は、アップロード後にhtmlを書き換え、
ちゃんと正常に書き換えられたことが容易に確認できるような
ツールをPHPで組んで置いとく。無論書き換えツールのセキュリティは強固にね。
0543nobodyさん
2006/05/15(月) 02:38:53ID:???gooleとyahooとMSNしかチェックしてないが
0544nobodyさん
2006/05/15(月) 03:01:53ID:???googleとMSNはそうではないが、
Ya!Japanは拡張子の違いであからさまに結果が違う。
(回収ロボットの動作に差は無いが、回収したデータの扱いに差がある)
まあYa!の出来が悪いと言えばそうだが、SEOのためにはそうも言ってられん訳で。
# 検索結果の最適化はともかくロボットの熱心さの点では、最近のMSNは感心するな。
0545nobodyさん
2006/05/15(月) 04:22:14ID:???客の認識不足で、「サーバとプログラムは別で・・・」って言っても理解してくれなさそうな希ガス。
「いいから直せ!」って。それと親切なパートナーってどういうこと?? 鯖の運用部分を客の代わりに委託するってこと?
>>511
ごめ、最後の3行がいまいち意味が分かりにくいんだが。。。
特に「運用と開発を分けない事にしてる」ってどういう意味?
0547nobodyさん
2006/05/15(月) 05:26:26ID:???客が運用する鯖や客の指定する鯖運用業者でなく
プログラムとセットで鯖もこっちから提供&その業者はこっちのパートナー企業、
ってことじゃない?
確かにうちで使った外注でもそんな条件を出してきたとこが1箇所あった。
で、そのあっちで指定した鯖運用会社ってのがセキュリティに無頓着なとこだったんで
その開発会社含めて初回こっきりで2度と仕事しないことにした覚えが。
0548nobodyさん
2006/05/15(月) 05:29:55ID:???別にDWじゃなくても、オリジナルのHTMLにはCopyright部分にキーワードを埋め込んどいて、
アップロード前に全ファイル一括置換した上でアップ実行、くらいは簡単にできるんじゃない?
複数ファイル一括置換くらいならその辺のテキストエディタでもできるしフリーのツールもあるし
なんならPHPで組んだっていいと思うけど。
0549nobodyさん
2006/05/15(月) 06:22:05ID:???あ、なるほどね、あなたは「客側」だったってことかな?
ちなみに俺が>>497で書いた「サーバーをこちらで用意」というのは、
「こちらで専鯖をレンタルして、開発したシステム入れて、それを又貸し(再販)する」という意味であって、
別に自社内とかにサーバーを物理的に設置して運用する…というわけじゃないです。
0550nobodyさん
2006/05/15(月) 06:37:35ID:???http://www.vector.co.jp/soft/win95/util/se142895.html
0551nobodyさん
2006/05/15(月) 08:45:56ID:???0552nobodyさん
2006/05/15(月) 13:14:31ID:???いいじゃん別に。
話題というのは常に発展していくからこそ有益で面白いんだから。
板とかスレとかいうのは出発点を絞るだけ。
0553nobodyさん
2006/05/15(月) 14:27:16ID:???0554nobodyさん
2006/05/15(月) 15:16:38ID:???現在は日本語のファイルをアップ出来ないようにしているのですが、
これまでアップされたファイルをどうにか変換して表示出来るようにしたいです。
そのような事は可能なのでしょうか?それとも一旦すべての日本語ファイルを
削除して、再度アップし直して貰うしかないのでしょうか?
0555nobodyさん
2006/05/15(月) 15:24:43ID:???デザイン(設計)のミスだな。
スクリプトをデザインする際に先の事を考えないと恒久的なモノは出来ない。
日本語のファイル名が使われたファイルをアップロード出来ないようにするのはいかがなものかと。
最初から違うファイル名に置き換えするとか、rawurlencode()すればよかったんだよ。
0556nobodyさん
2006/05/15(月) 15:42:53ID:???DB2と接続した上で、prepare→bind_param→executeの流れで
ストアドを実行したいと思っています。
bind_paramの段階で
db2_bind_param($stmt, 1+$cnt, 'param1[' . $cnt . ']', $tmpparam);
バインド変数に配列を指定したいと考えて、上記のように記述してみましたが
この書き方ではエラーとなってしまいます。
バインド変数に配列を指定する場合の方法をどなたかご存知ではないでしょうか?
0557nobodyさん
2006/05/15(月) 16:19:58ID:???写メール対応の掲示板を作りたいのですが・・・
サーバーは「さくらのレンタルサーバー」です。
phpで動かす際に
<?php
// 受信メールサーバーの設定
// POP3サーバー
$host = "takurou.sakura.ne.jp";
// ユーザーID
$user = "takurou";
// パスワード
$pass = "0000";
例をあげると、これで合ってるのでしょうか・・・
takurou=は例です。
済みませんが、此処で詰まってしまって困難してます。
何方か、アドバイス宜しくお願いします。
サーバーのプランはスタンダードです。
0558nobodyさん
2006/05/15(月) 16:50:41ID:???0559nobodyさん
2006/05/15(月) 17:12:15ID:???画像ファイルをどのように保存しているか知りませんが、
フォルダ管理だと同名のファイルが送られたら困るので
>555が言うようにファイル名置き換え(ex:スレ名+投稿時間とか)が無難ですよ。
0560nobodyさん
2006/05/15(月) 17:35:49ID:???その$hostとか$userがどう使われてるか分かんねーから分かんねー
DBの接続に使ってんのかそれとも管理者用の機能でもあんのか?
0561nobodyさん
2006/05/15(月) 18:15:11ID:???DBサーバーを入れても「サーバーが接続できません」となるんです・・・
ttp://php.s3.to/bbs/bbs7.php
ここの掲示板を設置したかったのですが、どうしても作動しないのです・・・
ごめんなさい・・・下らない質問してしまって・・・
0562nobodyさん
2006/05/15(月) 18:50:47ID:???DB関係ないでしょ。
なんで向こう(レン鯖板)で板違いって言われたのかはわかんないけど
$host = 'MUAに設定するときと同じ';
$user = 'MUAに設定するときと同じ';
$pass = 'MUAに(ry';
うろ覚えだけど、さくらってPOP3ログオンのときのユーザ名が
account@sakura.ne.jp とか account%sakura.ne.jp じゃなかったっけ。
「メールソフトの設定のしかた」がわかればいけると思うよ。PHPと関係なく。
0563nobodyさん
2006/05/15(月) 19:15:34ID:???済みません、本当にありがとう御座います!!!
御蔭様で言われた通りに設定しましたら、ちゃんと作動しました。
本当に下らない質問に細かく説明して頂いて、有難う御座いました!
本当に感謝です・・・有難う御座いました!
0564nobodyさん
2006/05/15(月) 20:42:06ID:???echo $htmlstr;
とすると問題ないのに、
$htmlstr = preg_replace("/##(banner[^#]*)##/",file_get_contents("/path/to/$1.html"), $htmlstr);
echo $htmlstr;
とすると動きません(空白に置き換わる)。使い方間違っていますか?
0565nobodyさん
2006/05/15(月) 20:55:01ID:???0566nobodyさん
2006/05/15(月) 21:37:38ID:???$htmlstr = preg_replace("/##(banner[^#]*)##/e",'file_get_contents("/path/to/$1.html")', $htmlstr);
0567nobodyさん
2006/05/16(火) 00:09:31ID:???ハードウェアは自社で持たずに、専用レン鯖やハウジングを利用するってことか。
それならウチも客の鯖なんか使わずに、鯖ごとこちらで提供したいね。
客鯖なんか使ってトラブルでも起きたら、原因解明だけで一苦労だ。
0569nobodyさん
2006/05/16(火) 00:48:03ID:Q3oWbdgp1のPHPマニュアルを読んでもあまりわからないようです
基本的なプログラムに対する考え方がわからないのですが
こういう人間はまずどういうところを勉強すると良いでしょうか?
能力的には
HTMLは大体わかります。
パソコンも基本的なことはわかります。
プログラム的なことは切り貼りでperlをいじることしかしたことがありません
0570nobodyさん
2006/05/16(火) 00:59:27ID:???順次、選択、繰り返し。まずはこれをちゃんと覚えることだな。
オブジェクト指向も手続き指向も飛び越えて基本中の基本だ。
配列の添え字の動きとかにも気をつけろ!
で、慣れてきたら、色々調べながら画像掲示板とかでも作ってみれば?
もちろん自サーバで。
PHPだけじゃなくて色々勉強になるよ。
0571569
2006/05/16(火) 01:30:37ID:Q3oWbdgp順次、選択、繰り返しというのはなんですか?
配列の添え字の動きというのは、添え字が動く??
せっかくコメントいただいたのに、アホなのでよくわかりません
関係ないですが''と""の使い分けがよくわかりません、
0572nobodyさん
2006/05/16(火) 01:40:22ID:???1.まず、自分が作りたい"なにか"を見つける
2.本屋行って立ち読み。「自分が作りたい"なにか"」またはソレに近いものが載っている本を探す
※立ち読みついでに基本的な事も覚えておく
3.その本を買って帰り、書いてある通りに作ってみる。
4.動かなかったら何がおかしいのか動くまで考える
5.動いたらソレを改良してみる
6.ソレを数年繰り返す
7.その技能を活かして社会に出る ←オレ今ココ
0573569
2006/05/16(火) 01:45:57ID:Q3oWbdgp>>512でPHPのマニュアルをよめばいいのか、と思ったのですが
最初はとりあえず本かってみたほうがいいですかねぇ?
0574nobodyさん
2006/05/16(火) 04:02:43ID:???perlやってるならphpのマニュアル読めばたいていの感じは掴めると思うよ。
構造そのものはそんなに変わるわけじゃないし。
自分で作ったperlをphpに移植してみるとか、どこかでフリーなphpスクリプト
を入手していじってみるとか。
本を買うなら一回↑の感じをやってみてから本屋で立ち読み、自分のレベルに合うのを買えばいいかと。
俺は572さんの1はとても大事なことだと思うぜよ。
0575nobodyさん
2006/05/16(火) 07:20:57ID:???でも独学でコーディングなんて滅茶苦茶。
どうスクリプトを組んでいけばいいのか、どう設計すればこうなるのかが
まだつかめていない。
と、いうわけで他人のスクリプト見て勉強中。
このスレもROMってます。
0576nobodyさん
2006/05/16(火) 07:37:21ID:???言語を習得してからも実用的な物を作れるようになるまでの道のりは長い。
[プログラム言語の習得] [英語の習得]
関数・構文を覚える 単語・構文を覚える
簡単なものを作る 簡単な文章を作る
必要な知識(プロトコルとか)を習得 ジョークの理解に必要な歴史的背景や風俗を知る
より効率的な作り方を身に付ける 古典的なアメリカンジョークを聞きつづける
実用的な物を作る どっかんどっかん受けるようなアメリカンジョークを作る
0577nobodyさん
2006/05/16(火) 09:46:57ID:???>基本的なことだけ覚えて後は関数調べるだけ
その認識で正解だと思うが。
もちろん高度なことをやろうと思えばもっと奥が深いけどね。
でもたいていのことは「基本文法+関数(リファレンス調べれば良い)」でOKでそ。
0578nobodyさん
2006/05/16(火) 11:23:40ID:???0580nobodyさん
2006/05/16(火) 11:31:02ID:???> パソコンも基本的なことはわかります
じゃあこのコマンド知ってるか?
これが分かればパソコンを理解してると判断できる
[Windowsキー]押す [U]を二回押す。
0581nobodyさん
2006/05/16(火) 11:40:52ID:???0583nobodyさん
2006/05/16(火) 12:08:16ID:???0584nobodyさん
2006/05/16(火) 12:37:33ID:???safe_mode_exec_dir配下(又は直下)のディレクトリにあるSystem関数が使えません。
例えば safe_mode_exec_dir =/var/www/html
と指定して/var/www/html/test.phpに、
system("ls");
と書くとエラーが帰ってきます。
これは指定の方法が間違っているのでしょうか。ご指摘お願いします。
それと少し反れますが、safe_modeをOffで
system("ls -la /home/hoge");
だと何も帰ってこないのに
system("ls -la /var/www/html/");
と書くとディレクトリ一覧が丸見えになってしまいます。
アクセス権限はhomeと同じ状況を再現したつもりなのですがphpはhomeに対して何か特別な設定がされているのでしょうか。
実はsafe_modeをOnにしているのも/var以下のファイルが見えてしまうからです。
0585nobodyさん
2006/05/16(火) 13:30:51ID:???0588nobodyさん
2006/05/16(火) 14:35:39ID:???どんなエラーが出力されたの?
>>585
ディレクトリ一覧を取得するためにsystem()を用いるのは気持ち悪いな。
つ opendir() & list()
0589nobodyさん
2006/05/16(火) 14:59:11ID:2DWA6EEGabcdefgの中のcからfまで抜き出すとか…
0590nobodyさん
2006/05/16(火) 15:27:33ID:???その場合のsafe_mode_exec_dir には lsコマンドのあるディレクトリを指定しないといけない
safe_mode_exec_dir = /bin
system("ls -la /home/hoge");
hogeのパーミッションを707か757か777に
0592nobodyさん
2006/05/16(火) 16:31:52ID:???0594nobodyさん
2006/05/16(火) 16:46:56ID:ivYPrAjt通常サイトへ戻ってくるとsessionに格納したデータが消えてしまいます。
これはバグのせいでしょうか?それとも設定の問題?
0596nobodyさん
2006/05/16(火) 17:38:48ID:???include "ヘッダー";
include "メニュー";
include "本文";
include "フッター";
?>
な感じでページを管理する時に
ページのタイトルに関する情報は本文ファイルに含めるのが効率的だと思うんだけど、
上のやり方だとヘッダのところで先にタイトルを出力しないといけません。
どうやって本文ファイルからタイトルを出力するのが効率いいのでしょうか?
できればファイルのI/Oは上の4回に抑えたいのです。
0597nobodyさん
2006/05/16(火) 17:47:43ID:???0598nobodyさん
2006/05/16(火) 18:21:06ID:???禿同
まあなんか理由があるんだろうが
>>596
includeの内容を直接出力しないで、(ob_start()等で)一旦変数に蓄え、
本文ファイル内でヘッダの内容を書き換えるようにしては?
0599nobodyさん
2006/05/16(火) 18:59:09ID:1Q+rAczY正規表現はどのように書けばよいでしょうか。ちなみに、javascriptです。
<hoge34>本日は54位<hoge34>
inner.match(/[0-9]+位|-位/g);
とやりますと位まで入ってしまうので・・・お願いします。
0600nobodyさん
2006/05/16(火) 19:25:37ID:???0601nobodyさん
2006/05/16(火) 19:56:40ID:???0603602
2006/05/16(火) 20:38:48ID:???0604nobodyさん
2006/05/16(火) 20:57:41ID:???レコードの一部を入れ替える質問
http://pc8.2ch.net/test/read.cgi/db/1140154701/529-546n
レコードにソート用のフィールドを加える質問
http://pc8.2ch.net/test/read.cgi/db/1140154701/785-799n
まあ一回のクエリではなく何回もクエリ発行すれば難しい問題ではない
0605nobodyさん
2006/05/16(火) 20:58:37ID:???すいません、説明不足でした。
レコードの上下関係を入れ替えたいのです。Bレコードより上にあるAレコードをBレコードの下にもっていきたいのです。
0606nobodyさん
2006/05/16(火) 21:07:45ID:???取り出す時になんらかの条件で順序を指定してやることで順番が生まれる(order by)。
とは言っても、順序を指定しない場合でもなんらかの順番でデータを取り出していく必要があるので、
それがたまたまABの順番に並んでいただけ。
0607nobodyさん
2006/05/16(火) 21:08:27ID:???元のAレコードは削除したいです。移動後のAレコード1つ、ということです。
0608nobodyさん
2006/05/16(火) 23:25:13ID:???0609nobodyさん
2006/05/17(水) 00:44:18ID:2nYaOrw7$_POST['f_name'];
$_POST['f_mail'];
$_POST['f_sex'];
$_POST['f_age'];
$_POST['f_add'];
$_POST['f_blad'];
$_POST['f_comment'];
$_POST['f_time'];
書き方はこれじゃないですか?
フォームでPOSTで別のPHPに飛ぶのですけど
変数を受け渡しできません。なぜでしょうか?
0611nobodyさん
2006/05/17(水) 01:04:38ID:2nYaOrw7すみません、空白でした。
うpしてみたのですけど、これではなぜだめか
よければ教えてください。お願いします。
http://venus.aez.jp/uploda/data/dat6/upload324523.zip
0613nobodyさん
2006/05/17(水) 01:16:49ID:???未定義の予感…
0614nobodyさん
2006/05/17(水) 01:17:27ID:???<form action="<?php echo $PHP_SELF; ?>" method="POST" name="form" target="_parent" id="form">
今回の質問には直接関係ないけど、PHP_SELFの使い方が間違ってるぞ
0615nobodyさん
2006/05/17(水) 01:17:34ID:???試しにprint_r($_POST);使ってみ
<?php
print_r($_POST);
//時間の取得
...略
0616nobodyさん
2006/05/17(水) 01:41:04ID:???使っているPHPは4.2.0以前?
以降ならば
$PHP_SELFを$_SERVER['PHP_SELF']
129行にextract($POST);
と書くと動くようになると思うけど
こういう書き方は良くないから書き直した方がいいと思う。
それから、ファイルに書き込んでるところがバグっぽいね。
0617nobodyさん
2006/05/17(水) 01:42:55ID:???×$POST
○$_POST
0618nobodyさん
2006/05/17(水) 02:11:53ID:2nYaOrw7無理だったので別ページのは消しました、すんません
>>613
未定義ですか?
PHPの小部屋というサイトを参考にしたのですが
>>614
同じくPHPの(ry
>>615
使ってみました。
Array ( [f_name] => ああああ [f_mail] => ああああ [f_sex] => 男性 [f_age] => 11 [f_add] => 静岡 [f_blad] => O [f_comment] => ああああああ [regist] => 投稿する ) 「」
これで格納されたのでしょうか?
>>616
どういう意味でしょうか?
0619nobodyさん
2006/05/17(水) 02:20:59ID:???> 無理だったので別ページのは消しました、すんません
「動かない」と言ってるものを見せないと動かない原因なんて分かるわけが無い。
> PHPの小部屋というサイトを参考にしたのですが
そこに
「*PHP4.2.0以降において、GETとPOSTでのデータの受け取り方に大きな変更点があります。必ずお読み下さい。」
と書いてないか?
アップロードされたスクリプトでの書き方はもう古いからそのままでは動かない。
> Array ( [f_name] => ああああ [f_mail] => ああああ [f_sex] => 男性 [f_age] => 11 [f_add] => 静岡 [f_blad] => O [f_comment] => ああああああ [regist] => 投稿する ) 「」
> これで格納されたのでしょうか?
$_POST['〜']形式の変数なら動くはずだ。もう1度書き直せ。
0620nobodyさん
2006/05/17(水) 02:29:43ID:2nYaOrw7$_POST['f_name'];
$_POST['f_mail'];
$_POST['f_sex'];
$_POST['f_age'];
$_POST['f_add'];
$_POST['f_blad'];
$_POST['f_comment'];
$_POST['regist'];
//時間の取得
これでいいのですか?
0621nobodyさん
2006/05/17(水) 02:30:47ID:???違う。$f_nameとか書いてる場所を$_POST['f_name']に差し替えろ。
今のPHPでは$f_nameなどの変数は自動的には生成されなくなってる。
0622nobodyさん
2006/05/17(水) 02:34:00ID:???例えば
<input name="f_name" value="ああああ">
でPOSTすると古いバージョンか設定によっては
$f_nameに"ああああ"が格納される場合があって、新しいバージョンの場合は$f_nameという変数は無くて
$_POST["f_name"]="ああああ"と格納される。もちろん$_POST["f_mail"],$_POST["f_age"]も格納される
615の指示でそれが確認できたわけだ。
ここら辺の状況(バージョンや設定)は下を参照
ttp://jp.php.net/manual/ja/language.variables.external.php
でだ、616に書いてある
>129行にextract($POST); <-617に書いてある通り $_POSTが正解
を追加するとだ、$_POST["f_name"]とか$_POSTという配列に入っている
連想配列のキー(f_nameとか)の名前で変数を作ってくれる
ttp://jp.php.net/manual/ja/function.extract.php
で解決すると思われる。がっあまりよろしくないのでできることならば
extractされる変数を全て$_POST["f_name"]のように書き直して
extractを使わないほうが良い。
ttp://jp.php.net/manual/ja/security.globals.php
以上612から勝手にまとめますた
0623nobodyさん
2006/05/17(水) 02:34:35ID:???いくら下質でもここまで下らないと涙が出てくるな
0624nobodyさん
2006/05/17(水) 02:38:25ID:2nYaOrw7$〜の形じゃなく$_POST['〜']になるんですか!?
0626nobodyさん
2006/05/17(水) 02:46:22ID:???0627nobodyさん
2006/05/17(水) 02:47:33ID:???0628nobodyさん
2006/05/17(水) 02:54:41ID:2nYaOrw7$f_name ⇒ $_POST['f_name']
$f_mail ⇒ $_POST['f_mail']
$f_sex ⇒ $_POST['f_sex']
$f_age ⇒ $_POST['f_age']
$f_add ⇒ $_POST['f_add']
$f_blad ⇒ $_POST['f_blad']
$f_comment ⇒ $_POST['f_comment']
にすればいいのですよね!
0629nobodyさん
2006/05/17(水) 07:46:11ID:???0631584
2006/05/17(水) 10:04:49ID:???語弊を招く表記をしてしまいスミマセン。
具体的には何も出力されません。 要するにセーフモードなので関数が実行されていないようでした。
system("ls"); (こう書きました
>>590
ということは実行を許可されるプログラムがあるフォルダを指定するのでしょうか。
当方プログラムを実行することが許可されるphpのフォルダと認識しておりました。
逆にその様に 特定のディレクトリ配下のphpはプログラムの実行が許可されるような設定は可能でしょうか。
具体的にはhome以下のディレクトリではプログラムが実行されなければこちらとしては何の問題もありません。
もっと言えばプログラムは実行されてもよいのですが /var/www/ 以下が見えてしまう状況を阻止できれば問題ありません。
>system("ls -la /home/hoge");
>hogeのパーミッションを707か757か777に
こちらも語弊を招く表記をしてしまいスミマセン。
逆です。homeの様にvar以下も見えない様にしようとしています。
試しに /var -> 0701 /var/www/ -> 0701 /var/www/html/ -> 0701 としましたが、
/var/www/html/test/test.php のソースがcatで出力されてしまいました。
ちなみに所有者は全てrootです。実験ユーザは/home/hoge/test.php からhogeユーザー権限で
system("cat /var/www/html/test/test.php"); を実行しました。
safe_modeをOnでは見えなくなりますが逆にこちらもfreeなどが実行できなくて支障がでています。
よろしくお願いします。
0632nobodyさん
2006/05/17(水) 10:43:47ID:???日記などのプログラムで、日付をセレクトメニューで選んで登録出来るものがあるとします。
日記プログラムにアクセスすると、今日の日付が選択されています。
そして過去の日付は選択出来ないようにします。
dateを取得してifで判別し、適合するセレクトメニューのoptionにselectedを
付けたら選択されている状態になるかと思うのですが、どうもソースが増えすぎます。
何か簡略的に表示出来て、「今日の日付を選択・過去の日付は表示されない」
ようにする方法はありませんでしょうか?
0634nobodyさん
2006/05/17(水) 10:58:24ID:???いま、ログファイルが丸見えで、アクセスしたら、個人情報も丸見えなんだけど…
.htaccess?
0635nobodyさん
2006/05/17(水) 10:59:42ID:bNJTvUbhfor(当日から月末まで){
echo "<option ".(本日 ? "selected" : "" )." >日付<option>";
}
</select>
みたいなかんじでだめなの?
0639nobodyさん
2006/05/17(水) 12:26:23ID:???0640nobodyさん
2006/05/17(水) 13:15:44ID:???Document_rootって?
いま、
/new
├index.php
└/log
└hoge.log
ってなってるんだけど
>>637
サンクス、試してみるよ
0642nobodyさん
2006/05/17(水) 14:09:30ID:???やりたいのは pukiwiki の全頁の出力を html としてファイルに保存なんですが。
pukiwiki ではスキンファイルを用意して
<html>
hogehoge
</html>
のようになっているのを require(スキンファイル); のように最終的に出力しているようです。
外から http 経由させるしかないのかしら。
0644nobodyさん
2006/05/17(水) 16:01:09ID:???ファイルの先頭に
<?php
ob_start();
最後に
file_put_contents("hoge.html", ob_get_contents());
ob_end_clean();
exit;
?>
0646nobodyさん
2006/05/17(水) 16:55:29ID:???何か便利な関数(またはモジュール?)などありましたら教えてください
0649646
2006/05/17(水) 17:21:41ID:???データベース側を変更することができない場合はPHP側でどうします?
(下流プログラム変更のみ可能、またはDB件数が多く修正が事実上不可能)
0650nobodyさん
2006/05/17(水) 17:25:26ID:???0653nobodyさん
2006/05/17(水) 17:52:32ID:???と書いて
「いちにさん」なのか
「ひゃくにじゅうさん」なのか
「ひふみ」なのか
人間にだってわかんないもんがコンピュータにわかるわけないじゃん。
0654nobodyさん
2006/05/17(水) 17:54:38ID:Li0DlXrb値のない月もあるため、毎月の値があるわけではありません。
プログラムする上で、
流れをどうのように考えたらよいか教えてください。
0657nobodyさん
2006/05/17(水) 18:09:52ID:???はじめの設計が悪かったんだ。あきらめて漢字のままソートしれ。
0658nobodyさん
2006/05/17(水) 18:32:06ID:???0659nobodyさん
2006/05/17(水) 18:47:28ID:nPnNtFXbこの配列の要素に直接アクセスしたい場合はどうすればいいですか?
{$this->getarray()}[0]
じゃだめですよね。
0660nobodyさん
2006/05/17(水) 18:48:52ID:???0662nobodyさん
2006/05/17(水) 19:12:26ID:???とかを作る
0663nobodyさん
2006/05/17(水) 19:22:27ID:nPnNtFXbサンキューです。
perlも好きでよく使うので、ついついこう書いてしまいたくなるんですよね。
できないのであれば、とりあえず一時変数に入れてやっておきます。
0664nobodyさん
2006/05/17(水) 19:29:45ID:???Perlも最近は構造化とかクラス化とかの概念を取り入れてるとか聞く。
そうするとそういった書き方はあまり好ましくないんじゃないか?
どーでもいいけど。
0665nobodyさん
2006/05/17(水) 21:25:35ID:???0666nobodyさん
2006/05/17(水) 21:40:17ID:???どうしたら、apache以外に出来ますか?
0667nobodyさん
2006/05/17(水) 21:41:48ID:???最近ってPerl5が出たのはPHP5の何年前だとおもってるんだ!
でもoooの考えから行くと、なんでもオブジェクトと想定できるのは好ましいんじゃないの?
0668nobodyさん
2006/05/18(木) 00:15:24ID:???PerlのCPANライブラリは大半がクラスで作られてるが
それでも>>659くらいの書き方は当たり前のようにやる。
oopごときでPerlの信念は揺るがない。
0669nobodyさん
2006/05/18(木) 00:18:40ID:???繋がれる側メソッドでreturn $this;してるのですがパースエラーとなってしまいます。
0670nobodyさん
2006/05/18(木) 00:25:59ID:???キリ番野郎め
rootにはなれないのか?
じゃあ、PHPで作成してディレクトリを作ったんだから
もう一回PHPでディレクトリを削除してみてはどうだろう
上手く行ったらお前のおっぱいうp
0673nobodyさん
2006/05/18(木) 01:22:13ID:???0674nobodyさん
2006/05/18(木) 04:32:45ID:???function hoge() {
static $called;
if ($called) {return 'do not call twice';}
$called = true;
}
みたいな関数があるのですが、そのコード自体は変更せずに
外からこの static 変数の値に無理やりアクセスして値を false に戻すような
ハックをしたいのですが、できますでしょうか?
0675674
2006/05/18(木) 10:21:47ID:???0676631
2006/05/18(木) 10:34:14ID:???そろそろマジレスクレクレ(´・ω・`)ショボーン
ガチで困ってるんです><;
0677nobodyさん
2006/05/18(木) 10:45:19ID:???ほれ
//他人が作ったやつ
function hoge() {
static $called;
if ($called) {return 'do not call twice';}
$called = true;
}
//抹消
unregister_tick_function("hoge");
//自分で作る
function hoge(){
....
}
0678nobodyさん
2006/05/18(木) 10:49:12ID:???0680nobodyさん
2006/05/18(木) 11:21:31ID:R6Lcg4C1どうやって使うのがいいですかね?おすすめの方法とかあったら教えてください。
0681nobodyさん
2006/05/18(木) 11:51:01ID:???現時点で使い道が判らないのなら、今は必要ないってこと。
ヤフオクで売れば?ソフトウェア時間が経つと普通どんどん価値は下がるから
(買ったときからの値段の面でね)
0682674
2006/05/18(木) 12:26:58ID:???ちょっと調べてみたんだけど、
それって register_tick_function で登録したものを解除するんじゃないの?
tick っていう仕組み用じゃないの?意図通り動かないんですが。
unregister_tick_function("hoge");
hoge();
で hoge() 呼べてるんですが。
0683nobodyさん
2006/05/18(木) 12:45:39ID:???関数名そのままの動作なんだが・・・
tickへの登録を解除するだけ
http://www.php.net/manual/ja/language.functions.php
>PHP は関数のオーバーロードをサポートしていません。 また、宣言された関数の定義を取り消したり再定義することもできません。
0687nobodyさん
2006/05/18(木) 14:13:06ID:???結局、何に困ってるの?
system() の外部コマンドの結果が気にくわないということだったら、
これはもうPHPとは関係ないよ。聞く場所を間違ってる。
0689nobodyさん
2006/05/18(木) 14:40:07ID:JEjNXrfu0691軟式PHP
2006/05/18(木) 14:50:22ID:???ここ見て自作して抽出しる。
ttp://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_png.html
0692nobodyさん
2006/05/18(木) 15:26:14ID:???■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
0693nobodyさん
2006/05/18(木) 17:08:09ID:???「Lvうpしたいので宿題ください」
http://pc8.2ch.net/test/read.cgi/php/1147830986/l50
0694nobodyさん
2006/05/18(木) 22:53:26ID:???Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)
お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?
print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );
私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
0695nobodyさん
2006/05/18(木) 23:11:35ID:???logファイルから、文字列を取得して、それが引数と同じならば、その文字列がある行のほかの文字列を出力するってどうするの?
1\t2\t3\t4\t5\t6
11\t12\t13\t14\t15\t16
21\t22\t23\t24\t25\t26
で、2列目が12であったら、その行の6列目を返すって感じで
0701nobodyさん
2006/05/18(木) 23:33:48ID:???なんか言ってる意味がよくわからんのだが
えーと、引数に "12" ってきたら
"11\t12\t13\t14\t15\t16" の中から"12"を削除して表示できればいいんかいな?
まぁとりあえず正規表現でググれ
0705nobodyさん
2006/05/18(木) 23:47:44ID:???<admin:generatorAgent rdf:resource=〜の項目を取得する方法がわかりません。
$root = simplexml_load_file($url);
$root->channel->children("http://webns.net/mvcb/")->children("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
とやって、$rootをvar_dumpしてみると
object(SimpleXMLElement)#70 (1) { ["@attributes"]=> array(1) { ["resource"]=> string(38) "http://www.movabletype.org/?v=3.01D-ja" } }
というところまでできたのですが、この先の取得方法がわからず、止まっています。。。どなたか、わかりますでしょうか。
↓取得するRSSデータの一部です。
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">
<channel rdf:about="http://hogehoge/">
<title>hogehoge</title>
<link>http://hogehoge/</link>
<description></description>
<dc:language></dc:language>
<dc:creator></dc:creator>
<dc:date>2006-05-12T02:13:52+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.01D-ja" />
0706nobodyさん
2006/05/18(木) 23:48:31ID:???12って入ってきたら、16って返したいんだ。
引数とログファイルの2行目を比較して、マッチすれば、その列の6行目を返す…
0707nobodyさん
2006/05/18(木) 23:59:35ID:???file() -- ファイルの中身全部を1行ずつ配列に格納する関数
explode() -- 区切り文字で文字列を分割する関数
foraezh() -- 配列を1つずつ取り出せるループ構文
if() -- 条件構文
これくらいヒントあればいいか?
0709nobodyさん
2006/05/19(金) 00:12:04ID:???しらべる方法はあるのでしょうか。
0710nobodyさん
2006/05/19(金) 00:45:32ID:???ない。
まあMLやメルマガの配送とかやってるなら、
User unknownのエラーメールが返ってきたら
配布リストの休止にマークとかいう処理で良いんじゃない。
配信に影響すんのはそういったエラーリターンとかだから、
相手のメールサーバはUser unknownのエラー返さなくて捨てても
その場合は自分には関係ないと思われ。
0711nobodyさん
2006/05/19(金) 00:47:29ID:???0714nobodyさん
2006/05/19(金) 01:30:06ID:???0715nobodyさん
2006/05/19(金) 01:36:22ID:???幸いなことに、ロケットのガイドソフトをJPLで開発しているような少数の例外を除けば、私たちの職業
ではミスは滅多に致命傷にはならない。だから、学ぶべきだし、学ぶことができるんだ。そして笑い、前
するんだ。
2:あなたの書いたコードはあなたの分身ではない。レビューのポイントは、問題を発見すること、そして問題は
見つけられるのだだということを覚えておくといい。誰かが指摘してくれるときのために、コードを公開しな
いのは良くない。
3:あなたがどれだけ「空手」について知っていようとも、ほかのだれかがもっと知っているのだ。あなたが教え
を乞えばだれかが教えてくれる。第三者からの情報を探して受け入れるんだ。特に、もう教えてもらうことな
んてないと思っていることに対して。
4:会議の一つもしないで、コードを書き直しちゃいけない。「コードを修正すること」「コードを書き直すこと」
この二つには明確な境界がある。違いを知り、一匹狼としてではなく、コードのレビューという形を通してスタ
イリッシュな変更を目指そう。
5:あなたよりも知識が劣っていると思う人たちに対して、尊敬、尊重、寛容の気持ちを持つことだ。例外なく、技
術系でない人間は、次の通説を支持している。できる技術者とできない技術者の違いはプリマドンナと泣き喚く
赤ん坊ほどの差があると。こんな怒りと絶望に満ちた決まり文句は、広めてはいけない。
0716nobodyさん
2006/05/19(金) 01:36:53ID:???プラットフォーム、ツールの変化は、拒否すべき不便なことではなく、新しいチャレンジだと受け取ろう。
7:真の尊厳は地位ではなく、知識にある。知識は権威を起こし、権威は尊敬を起こしてくれる。エゴレスな環境に
おいて、尊敬が欲しいなら、知を探求することだ。
8:あなたは自分の信じていることを突き崩し、そして敗北を受け入れなければならない。あなたのアイデアはしば
しば踏みにじられるものだということを理解しよう。あなたの意見が正しかったことがのちにわかったとしても、
「だから言ったのに」なんてうらみごとは言っちゃいけない。そして葬られたアイデアは、殉教者や、左翼の集会
のように扱ってはいけない。
9:「引きこもり」になっちゃいけない。真夜中のオフィスで、コーラを買うためだけに部屋をでる、そんなプログ
ラマになっちゃいけない。そんなことをしていると、コミュニケーションもなく、かえりみられることもなく、
コントロールも効かなくなってしまう。オープンで、協調的な環境を築くことはできない。
10:人ではなくコードを批判しよう。プログラマには優しく接して、コードには厳しく接しよう。できるかぎり、
あなたの発言はポジティブでコードを改善するものでなくてはならない。コーディング標準や、プログラムの構
造、パフォーマンスの改善に向けられた発言をすべきなんだ。
0717nobodyさん
2006/05/19(金) 01:52:55ID:???これにはクッキーは必要ないのでしょうか?
私が試しに作ったログイン処理コードは、よく見たらsetcookieなどを使っていません。
つまりクッキーを使用せず、セッション関数のみです。
(※ログインフォームで入力されたIDとパスがDBに保存しているものと一致したら、$_SESSION['login'] = "true"とフラグを立てる。
そのフラグがtrueでなければログインしていない状態と判断する。)
上記のようにクッキーを使っていませんが、期待した通りの動作(ログイン処理)をしているように見えます。
しかし以前に何かで読んだのですが、「ログイン処理ではセッションIDをクッキーに保存して云々」とか
書かれていたような気もします。
セッションを使ったログインには、クッキーは必須なのでしょうか、必須ではないのでしょうか。
そもそもクッキーが何のためにあるのか、よく分からなくなってきました。
0718nobodyさん
2006/05/19(金) 02:06:29ID:???PHPではセッションIDの保存は自動でしてくれる
大抵Cookieに保存してるがCookieが使えない場合URLの末尾に自動的に付記される
Cookieはデータをクライアント側に保存する技術
セッションはデータをサーバ側に保存する技術
0719717
2006/05/19(金) 02:34:29ID:???セッションIDはURLの末尾には付加されてませんが。。。。
php.iniではクッキーのみ使うような設定にしてありますが、
実際にスクリプト内で明示的にSetCookie関数を使わないと
クッキーは使用されませんよね??
0720nobodyさん
2006/05/19(金) 02:59:03ID:???よく嫁
>"Cookieが使えない場合"URLの末尾に自動的に付記される
それとCookieが使える場合はセッションIDはCookieに保存される
SetCookieはコッチがCookieに保存したいときに使う関数だ
マニュアルにもちゃんと書いてあっからまずマニュアル読んで来い
0721nobodyさん
2006/05/19(金) 03:59:15ID:???で紹介されていることをやりたいー
ためしにそのページにあるやつコピペして
phpで保存して鯖にうpしたら
そこで説明されてるとおりにならなかった・・・
知りたいのは・・・・
たとえば「ttp://www.japan.co.jp」があるとして
indexページから001.phpに移動したときに
「ttp://www.japan.co.jp/001.php」と表示されますよね?
これを「ttp://www.japan.co.jp/?aaa=link」 ←このような感じにしていんです
知ってるかた教えてください
0722nobodyさん
2006/05/19(金) 06:02:21ID:???そのページのドコでやってるのか分からんが
ttp://www.japan.co.jp/?aaa=link ってのはレンタルサーバじゃまず不可能
やるとしたらApacheの方でやるしかないが・・・多分そのスクリプト以外動かせないWebサーバになるぞ
ttp://www.japan.co.jp/001.php?aaa=link なら可能
どっちにしろPHPとは関係ない。
CGIの本でも読みなさい。
0723nobodyさん
2006/05/19(金) 07:40:11ID:???こういうことじゃないの?
index.php
<?php
switch ($_GET['aaa']) {
case "link":
include "001.php";
break;
case "hoge":
include "002.php";
break;
default:
header("Location: http://www.2ch.net/");
break;
}
?>
0724nobodyさん
2006/05/19(金) 08:10:56ID:???>それとCookieが使える場合はセッションIDはCookieに保存される
いや、自分もそうだと思っていたんですが、
自作スクリプトにアクセス直後(≒ログイン直後)にIEのクッキー保存フォルダを
開いてみても、該当するクッキーが見当たらないんですよ。
でもたしかにセッションによるログインはうまく行ってる・・・だから混乱してます。
0725nobodyさん
2006/05/19(金) 08:23:27ID:???ファイルが生成されるかどうか確かめて見ればいいんじゃないかな。
おいらは面倒くさがりなのでproxomitronとかのプロキシソフトを使って直接HTTPヘッダを覗いてるけど。
0726nobodyさん
2006/05/19(金) 08:39:57ID:???0729nobodyさん
2006/05/19(金) 11:28:09ID:???例)
index.php?hogehoge
index.php?you=hage
これ自体は普通にindex.phpが返るだけなのであまり気にしてなかったんですが、
少し前にミスったせいで
例)
index.php/hoge.php
index.php/?/hage
index.php/index.php/index.php
のようなリクエストが来るようになってしまいました。
前者の原因は不明なんですが、後者はミスって修正するまでの数十分の間に
クロールされてしまい、index.phpで表示するはずの画像ファイルのリクエストも
全てindex.phpに送られちょっと無視できなくなってきました。
これらのリクエストに対し404を返したいのですが、どのような方法がありますか?
apache1.3.34 php4.4.2 です
htaccessの方がいいでしょうか?
0733nobodyさん
2006/05/19(金) 12:59:46ID:b+EKMyUQ0736nobodyさん
2006/05/19(金) 13:52:56ID:b+EKMyUQありがとうございます。
0737nobodyさん
2006/05/19(金) 14:46:50ID:???$_SERVER['PATH_INFO']あたりで判定できないかな?
phpinfoを呼び出すプログラムを書いて
そのURIにいろいろくっつけて使えそうな引数探してみるといいかも。
404はheaderで飛ばせるはず。
0738nobodyさん
2006/05/19(金) 15:33:15ID:???0739nobodyさん
2006/05/19(金) 15:33:27ID:???if( ログイン判定 ){
内容表示
}
else{
echo 'ログインして下さい';
}
みたいな感じが基本?
if文の中でコンテンツがばーっと続くのがちょっと嫌な感じだったんだけど、どんな風にやるのがいいかな?
0740nobodyさん
2006/05/19(金) 15:47:07ID:???0741738
2006/05/19(金) 15:47:32ID:???・ログインできない人は同じ画面でエラーメッセージ表示
・OKな人は別ページへ飛ばす(飛ばした先でセッション確認)
<?php
if ( ログインできない人 ) { $error="ログインできません"; }
header("Location: ログイン後のページ");
?>
<html>ログインページ内容 <?= $error ?> </html>
0742nobodyさん
2006/05/19(金) 15:50:33ID:???else { header("Location: ログイン後のページ"); }
0743nobodyさん
2006/05/19(金) 16:49:30ID:???とでたんですが、
考えられる設定漏れはなんでしょうか?
0744nobodyさん
2006/05/19(金) 18:26:48ID:???0746nobodyさん
2006/05/19(金) 19:21:00ID:???>>741
ログイン画面ならそのような感じでいいんですが
私が今考えているのは、例えば投稿ページのように、ログインしていないとフォームが表示されないように
したいといったページについてです。
そういう場合はどうしていますか?
0747nobodyさん
2006/05/19(金) 19:30:50ID:???0748nobodyさん
2006/05/19(金) 19:35:07ID:???既に出ている答えで何が不満なのか良く分からんが、
俺の場合は殆どテンプレートファイルを切り替えるだけだから問題ないな。
あとは、ページ表示を関数化したら?
0749nobodyさん
2006/05/19(金) 19:37:08ID:???date関数で日を取得するのはわかるのですが、、、
0751nobodyさん
2006/05/19(金) 19:45:05ID:???$last_day = date("d", mktime(0, 0, 0, date("m") + 1, 0, date("Y")));
0752nobodyさん
2006/05/19(金) 20:05:30ID:???これってどういうときに生じるエラーなのでしょうか。
Warning: pg_query() [function.pg-query]:
Query failed: ERROR:
could not serialize access due to concurrent update in
/phpページのアドレス on line 94
ここでは
Postgresql7.4へupdateのクエリーを送っているのですが、
5人くらいが同時に何度もその問題のページへアクセスしてみると
100回に1回くらいでてきます・・・。
なお、updateするレコードはひとつなので、
取り合いになっていて、その処理がおかしいのかと考えて、
5時間くらいいろいろ試行錯誤してみましたが、
解決していません。
また、このWarning文をブラウザに表示させないようにする方法が
ありましたら教えていただきたいです。
よろしくお願いします。
0753nobodyさん
2006/05/19(金) 20:07:12ID:???0755nobodyさん
2006/05/19(金) 20:24:31ID:???それ、PHPの問題じゃないじゃん。
「could not serialize access due to concurrent update in 」でぐぐったら?
Warningを表示させたくないなら、
設定のdisplay_errorsディレクティブとか、
error_reporting関数を見てみな
0756nobodyさん
2006/05/19(金) 20:52:39ID:???preg_match( "/<title>.+<\/title>/i", $data, $matches);
$title = $matches[0];
0757nobodyさん
2006/05/19(金) 21:09:19ID:???なんかの宿題か?
0759nobodyさん
2006/05/19(金) 21:44:09ID:???preg_match('/<title>[^<>]+<\/title>/i', $data, $matches);
の方がいいんじゃないか
0760nobodyさん
2006/05/19(金) 21:47:00ID:???例えば、「2006年5月19日〜2006年5月25日までバイト」などの指定が出来る場合、
2006年5月19日〜2006年5月25日までの期間を一度に複数登録出来る必要が
あると思います。
1件ずつデータを追加するのはわかるのですが、どうやって複数の期間を
判別するのかがわかりません。配列に入れてcountで計算?とか思ったのですが、
なんか違うみたいだし・・。登録処理はforでその期間分を回すと思うのですが・・。
0762nobodyさん
2006/05/19(金) 22:10:34ID:???0763760
2006/05/19(金) 22:13:09ID:???すみません、、簡略化しました。
$main_time1= date("Ymd"); //現在の日時
$main_time2= "20060525"; //開催期間の最終日時
$main_time=$main_time2-$main_time1;
for($i=1;$i<$main_time;$i++){
$kaisai=$main_time1+$i;
echo"開催期間は"."$kaisai"."です。"."<br>\n";
}
これでとりあえず開催期間は表示されますが、20060520のような形になります。
これを2006-05-20のように表示出来ないでしょうか?
0768nobodyさん
2006/05/19(金) 22:24:09ID:???だからマニュアルを読め
substrでもstrtotimeでも好きなのを使え
あと日付差分のアルゴリスムはめんどいぞ、と忠告しておく
0769nobodyさん
2006/05/19(金) 22:33:13ID:???0771nobodyさん
2006/05/19(金) 22:41:49ID:???> あと日付差分のアルゴリスムはめんどいぞ
unix秒に変換→計算→再フォーマット
ってだけじゃないのか
0772nobodyさん
2006/05/19(金) 22:59:27ID:???1ヶ月を30日で計算するか31にするかとかのこと。
3ヶ月単位の作業があって、○月の3ヶ月後とか出すのがめんどかった。
90日後なら楽なんだが、11/29の3ヶ月後が2/28なのか2/29なのか、それとも3/1にするのかとかね。
作ること自体は簡単なんだがな。
その年の月の日数を計算する関数つくるだけだし。
0773nobodyさん
2006/05/19(金) 23:10:58ID:???0774nobodyさん
2006/05/19(金) 23:14:07ID:???$d++;
$main_time1 = mktime(0,0,0,$m,$d,$y);
echo"開催期間は".date("Y-m-d",$main_time)."です。<br>\n";
な感じ
0775nobodyさん
2006/05/19(金) 23:16:33ID:???最初の年月日を$y,$m,$d分解しておいて
$d++;
$main_time = mktime(0,0,0,$m,$d,$y);
echo"開催期間は".date("Y-m-d",$main_time)."です。<br>\n";
を最後の日($main_time2)までループする感じで
0776nobodyさん
2006/05/20(土) 00:18:10ID:???$a[] = 1;
とかをしてみたら
Fatal error: [] operator not supported for strings in *******
というようにその行がエラーだと言われるのですがこれはPHPのバグでしょうか?
PHPは5.0.4です。
0779nobodyさん
2006/05/20(土) 00:48:15ID:???PATH_INFOで判別できました。
headerがうまく動いてくれないんですが(他のスクリプトでは問題ないのに)
エラーを表示するようにしました。
助かりました。ありがとうございました。
0780nobodyさん
2006/05/20(土) 01:17:33ID:???くだ質じゃなくてPHP質問スレってどうなったの?
0782724
2006/05/20(土) 01:47:02ID:???phpinfoでsession.cookie_lifetimeを調べたところ、値は「3600」でした。
ということで期限の設定もされていると思うのですが、
もしかして調べるべきディレクティブを間違ってるでしょうか??
他には「session.cache_expire」は「60」、「session.use_cookies」は「On」です。
0784nobodyさん
2006/05/20(土) 04:00:40ID:???0785nobodyさん
2006/05/20(土) 04:20:40ID:???ワケ ワカ ラン♪
∧_∧ ∧_∧ ∧_∧
( ・∀・) ( ・∀・) ( ・∀・)
⊂ ⊂ ) ( U つ ⊂__へ つ
< < < ) ) ) (_)|
(_(_) (__)_) 彡(__)
0787784
2006/05/20(土) 05:03:45ID:???をIE5で開いても番組ファイルが残ってないのでクリックし直さなきゃなんないのです
0789724
2006/05/20(土) 05:04:48ID:???いえいえ、もちろんそんなこと思ってませんよ。
もし何か保存されてるとしたらセッションIDだけですよね。
自分では明示的にクッキーに何か保存するコードは書いてませんので。
っていうか、とにかくIEのクッキー保存フォルダに、該当ドメインのクッキーが
見当たらないんですよね。。。 他のサイト(たとえばyahooとか)のクッキーはもちろんそのフォルダにあります。
0790nobodyさん
2006/05/20(土) 06:32:41ID:???スレ違いかもしれないのですが、SQLiteってidentityって使えませんでしょうか。。
SQL文は通るのですが、値が入ってないみたいでして。。
PHPは5.1.4使ってます。
0791nobodyさん
2006/05/20(土) 07:23:44ID:???identity使えるのはSQL ServerとMS Accessだけ
SQLite含めOracleやpostgreSQL, MySQLでは使えない
0793nobodyさん
2006/05/20(土) 12:09:03ID:???なんで?
携帯サイトだから、SJISなんだけど
0794nobodyさん
2006/05/20(土) 12:11:52ID:???今までで、これは使いやすい・または優秀だと思ったWebアプリのUIは何ですか?
ちょっとPHPとは関係ない感じではありますが、(DHTMLよりかも)
デザイナーではなく、マの視点が聞きたいのもありますので。
Virtual Earth
http://local.live.com/
0796nobodyさん
2006/05/20(土) 14:40:18ID:???0798nobodyさん
2006/05/20(土) 15:13:58ID:???<head>
<title>aaa</title>
</head>
<body>
<?php
$hour = date('H');
if (3 <= $hour < 10) {
$greeting = 'おはようございます';
} else if (10 <= $hour < 18) {
$greeting = 'こんにちわ';
} else {
$greeting = 'こんばんわ';
}
echo $greeting."現在の時刻は".date('H時間')."です";
?>
</body>
</html>
Parse error: syntax error, unexpected 〜と出るんですが
何がおかしいですかね
うんこな質問だったらごめんなさい
0799nobodyさん
2006/05/20(土) 15:27:38ID:???とりあえず、この書き方がキモく感じるから、これが間違ってるんでね?
if (3 <= $hour < 10) {
0800nobodyさん
2006/05/20(土) 15:40:19ID:???0801nobodyさん
2006/05/20(土) 16:30:53ID:???ある会社が提供してるサービスを再販するために、システム開発のためのAPI提供してくれてるんですが、
その使用形式ってのが
http://その会社のアドレス/api.php?id=$id&pass=$pass&action=$action
というアドレスへシステム(php等)からアクセスするっていう方式なんです。
ここでかなり不安になったのが、
URLにID/PASSを含んでることです。
まずSSL使用しなければ危険性盛りだくさんな気がしますし、
このシステムはクライアントに対して利用してもらうことになるので
他にもなんかかなり不安です。
(たとえば、php.iniでエラー表示させる設定にしてて
何かエラーが発生したら簡単にID/PASSを漏らしちゃいそうな・・・
これの場合はその設定をoffにすればいいだけですが)
注意点とかあったら教えてください m(_ _)m
お願いします
0804nobodyさん
2006/05/20(土) 17:02:24ID:???ああああ
もしかして最後のline 7とか出てたのがそれだったんですか
>>780
お二人ともありがとうございました
0805nobodyさん
2006/05/20(土) 17:09:46ID:???例:「COUNT=1 COUNT2=2」のCOUNTの値を取り出したい場合は
$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
$count = $match_list[1][0];
とやってますが、この $match_listの後ろの配列っぷり([1][0])が苦手です。
もっとわかりやすい方法あったら教えてちょ
0806nobodyさん
2006/05/20(土) 17:26:52ID:???全てのページ分の数字を出すと、多すぎて邪魔になってしまいます。
そこで、「1 2 (3 表示中) 4 5」や「25 26 (27 表示中) 28 29」のように、指定した数だけ表示させたいのですが、
方法がいまいちわかりません。どのようにすれば良いでしょうか。
0807nobodyさん
2006/05/20(土) 17:59:24ID:???$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
これでOKなのかと小一時間?
0808nobodyさん
2006/05/20(土) 18:00:15ID:???表示中の位置(3とか27とか)はわかるんでしょ
ループの開始値は「現在の位置−2」、ループの終了値は「現在位置+2」
0810nobodyさん
2006/05/20(土) 18:12:09ID:???面倒なら一旦
$var2=explode(' ', $var);
とかやって、1つずつ分割してから
foreach ($var2 as $var3) { if (preg_match('〜
のように処理しては?
どっちが分かりやすいかは(゚听)シラネ
0811nobodyさん
2006/05/20(土) 18:36:42ID:???0812nobodyさん
2006/05/20(土) 20:54:02ID:poPXxmgLハッシュは見つかるのですが。。
0813nobodyさん
2006/05/20(土) 21:01:18ID:???つか可逆暗号化なんて使う機会なかったし。
Blowfishなら簡単に作れるから作ってみたら?
0814812
2006/05/20(土) 21:07:32ID:???PHPが出てから結構たつ気がするのですが、ライブラリはまだPerlに比べて貧弱なんですね。。orz
けれど、mod_phpで運用されているところが多いのを考えると。。
Blowish、CPANから引っ張って来て移植してみます。ありがとうございました!
0815nobodyさん
2006/05/20(土) 21:15:06ID:???変更することを
フォーム内容を変更して
って言っていたんですが、通じなかったのですが、通常なんて言うのですか?
0816nobodyさん
2006/05/20(土) 21:59:06ID:???0818nobodyさん
2006/05/20(土) 22:05:18ID:???「フォーム内容」だと漠然としすぎて(値だけじゃなく構成から何から全部含むので)
それで通じるとこは普通無いと思う。
素直に具体的に書け。
0820nobodyさん
2006/05/20(土) 22:08:22ID:???>>815は
http://pc8.2ch.net/test/read.cgi/hp/1141064508/
で暴れまわっている、◆uuPwxrB4qc というキティちゃんなので
完全放置してください。
0821nobodyさん
2006/05/20(土) 22:13:57ID:???せんせーわかりましたー(;´Д`)∩
0823nobodyさん
2006/05/20(土) 23:00:41ID:???0824nobodyさん
2006/05/21(日) 00:35:06ID:???http://pc8.2ch.net/test/read.cgi/hp/1141064508/
にてなぶり殺しの刑に処しましたのでお許しくださいませ。
0825nobodyさん
2006/05/21(日) 00:38:49ID:???せんせーわかりましたー(;´Д`)∩
0827nobodyさん
2006/05/21(日) 17:14:54ID:???なぜか受け取り側ではGETでしか値を取得できません。
きちんとPOSTでうけとりたいのですが、
どこをいじればいいんでしょう?
お願いします。
0829nobodyさん
2006/05/21(日) 17:33:39ID:???↓これがGETでしか受信できません。
<form action="top.php" name="top" method="POST">
<table>
<tr>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td><input type="submit" name="confirm" value="確認"></td>
</tr>
</table>
</form>
0830nobodyさん
2006/05/21(日) 17:46:10ID:DL+BRbj9なぜGETでしか「受信」できてないのかを書いたほうがいいかも
#どういう事象からGETでしか「受信」できてないかという結論を導き出したかってことね
0831nobodyさん
2006/05/21(日) 18:07:43ID:???これってかなり技術を要するのでしょうか?
解説するページ等があったら教えてください。
0832nobodyさん
NGNG直す方法ないでしょうか?
パンツがずり下がってきて困ってるんです。
0838nobodyさん
2006/05/21(日) 19:38:51ID:???変な文章だな。送信はGETでやれてんの?POSTでやれてんの?
ブラウザのアドレス欄を見ればどっちで送信されてるかは分かるだろう。
アドレス欄に「?〜」が付いていないのに、受け取り側では$_POSTが空っぽ、って話?
0839nobodyさん
2006/05/21(日) 19:40:09ID:???レンタルスペースだと使えるとこは限られるだろうけど
サーバー貸しのとこならそのくらいインストールできるんじゃね?
0842nobodyさん
2006/05/21(日) 23:32:31ID:???<?php
if (isset($logout)) {
unset($_SESSION['id']);
header("Location: ../login.php");
}else{
$mess .= "ログアウトしますか?";
$mess .= "<form method='POST' action='$PHP_SELF'>";
$mess .= "<input type='submit' name='logout' value='ログアウト'>";
$mess .= "</from>";
}
echo $mess;
?>
しかし、「ログアウト」のボタンを押すと、以下のようなエラーメッセージが出て
locationされません。どうしたらいいでしょうか?
Cannot modify header information - headers already sent by (output started at
0844842
2006/05/21(日) 23:39:51ID:???ファイル名は(というかファイルの場所は)
http://(ドメイン名)/admin/logout/index.php
にしています。
0845nobodyさん
2006/05/21(日) 23:46:17ID:???header()の代わりにexit()で終了させて何も出力されていないか確認してごらん。
「何も」にはスペースや改行コードも含まれる。
0846nobodyさん
2006/05/21(日) 23:49:40ID:???↓ここに書いてある通り、
headers already sent by (output started at
↓の行が実行される前に何かが出力されている
header("Location: ../login.php");
<?phpの前に空き行が無いか確認
というか、「started at〜」の所にその最初の出力がある行番号が出ているはずだが
あと、Location:のとび先は本来は絶対アドレスで書く
いずれも詳しくはマニュアルのheaderの項目を嫁
0847nobodyさん
2006/05/21(日) 23:49:58ID:???0849842
2006/05/21(日) 23:56:42ID:???exit();をしましたが、何も出力されませんでした。
>>846-848
もしかして同じページにheaderが2つあったらいけないのでしょうか?
というのも
<?
ログインを判別するソース。ログインしてない場合はheader("Location")で
ログインフォームに戻す
?>
<html>
〜
>>842のソース
</html>
となっています。
0852nobodyさん
2006/05/22(月) 00:03:25ID:???headerが二つ書いてあったって別に良いけど、
出力(実行)は一回だけ。
ただし、header関数実行以外でも<?php 〜 ?>の外側に何かが書かれていると、
その時点で、PHPはtext/htmlというMIMEヘッダーを出力する。
0853nobodyさん
2006/05/22(月) 00:29:24ID:???0855nobodyさん
2006/05/22(月) 00:44:06ID:???0857nobodyさん
2006/05/22(月) 00:51:04ID:???…真面目に相手しすぎ?
0858nobodyさん
2006/05/22(月) 00:54:58ID:???0859nobodyさん
2006/05/22(月) 00:57:05ID:???男らしく謝る心の広さw
0861nobodyさん
2006/05/22(月) 01:41:38ID:U9KQg94sエラーメッセージを返したいのですが、require()は取りこみに失敗しても「FALSE」を返しませんよね?
こういった場合、みなさんはどうします?
0863nobodyさん
2006/05/22(月) 01:56:59ID:???require()だと普通に「ファイル読ねエラー」吐いて停止するでそ?
include()掛けて、インクルードファイルの中に
定数定義でも仕込んでおいて、それを評価するとか。
思いつきだけど。
0865861
2006/05/22(月) 02:07:01ID:U9KQg94sヒント、ありがとうです。
$cmd = $_GET["cmd"];
if (file_exists($cmd . ".inc.php") {
include ($cmd . ".inc.php");
} else {
$error = "Not Found...";
}
0866nobodyさん
2006/05/22(月) 02:12:27ID:???そのままだとXSSの危険性があるので preg_match() で正規表現による
マッチングを行ったほうがいいと思う。念のため。
0867nobodyさん
2006/05/22(月) 03:10:50ID:???http://>>865サーバ/test.php?cmd=http://オレのサーバ/悪意のあるコードを含んだinc.phpのあるディレクトリパス
0868861
2006/05/22(月) 03:37:18ID:U9KQg94sこんな感じでどうでしょうか?
if ($_GET["cmd"]) {
$cmd = $_GET["cmd"];
if (preg_match ("[0-9A-Za-z]", $cmd, $m_cmd) ) {
if (file_exists ("./plugin" . $m_cmd . ".inc.php") != FALSE) {
include ("./plugin/" . $m_cmd . ".inc.php");
} else {
$error = "Plugin: " . htmlspecialchars ($m_cmd) . "is not implemented";
}
}
}
0869nobodyさん
2006/05/22(月) 04:34:06ID:???#define DEBUG
#ifdef DEBUG
デバグ用コード
#endif
に近いことを php でやるにはどうしたらいいでしょう?
デバグ用のコードに簡単に切り替えられればなんでもいいですが。
0870nobodyさん
2006/05/22(月) 04:47:43ID:???if (defined('DEBUG')):
デバグ用コード
endif;
0871nobodyさん
2006/05/22(月) 04:49:09ID:3WaYFEXjsystem("cvs checkout -d /usr/local/www/subdomain/cvs example.com");
system("chmod 707 /usr/local/www/subdomain/cvs/inc/class/smarty/app/templates_c");
必ず、1つめのsystemによる実行がすべて終わってから、2つめのsystemが実行されるのでしょうか?
(同時に実行してしまうことはないでしょうか?)
0876nobodyさん
2006/05/22(月) 05:18:08ID:???つ http://www.php.net/manual/ja/control-structures.alternative-syntax.php
俺も余り使わんが
0878nobodyさん
2006/05/22(月) 05:38:25ID:???ぐは
file_existsはリモートファイルでは使えないって書いてあったorz
みんな、マニュアルはよく読もうね(´・ω・`)
0883nobodyさん
2006/05/22(月) 06:42:45ID:???そのときは例の if を使わざるをえない?
0884nobodyさん
2006/05/22(月) 08:41:41ID:???その正規表現だと「0-9A-Za-z」しかマッチしないんじゃないか?
正しく書かれていても、0-9a-zA-Zが1文字も含まれない場合しかスルーしない
if (preg_match ("!^\w+$!", $cmd, $m_cmd) ) {
とすべきか(_も含まれちゃうけど)
まあ既出の通りその後で蹴られるけど、関数の仕様が変わった時問題になるので
ファイル名のチェックは必要
0885nobodyさん
2006/05/22(月) 08:50:14ID:???foreach( scandir(INCLUDE_DIR) as $filename){
if(!is_dir($filename)){
require_once(INCLUDE_DIR.$filename);
}
}
みたいにやってるんですが、こんな感じの関数とかってありませんか?
0886nobodyさん
2006/05/22(月) 09:12:27ID:QKaBTlkn上書きまたは削除というのはできませんか?
そういう関数はありませんか?
0888nobodyさん
2006/05/22(月) 09:20:46ID:QKaBTlknやっぱり、ループで一行ずつ読み込まないといけないですよね。
DBを使わずに作成したいのですが、データが大量になるとつらいです?
0889nobodyさん
2006/05/22(月) 10:13:56ID:???大した技術も持ってないので全然自信ないけど、もし自分がやるとしたらこんな感じにすると思う…というのを書いてみた↓
間違いのご指摘とか大歓迎。
$buf_ary = array();
$fp = @fopen($path, 'r+');
flock($fp, LOCK_EX);
while ($line = fgets($fp)) {
該当行に来たら$lineの中身を変更する処理
$buf_ary[] = $line;
}
ftruncate($fp, 0);
rewind($fp);
fputs($fp, implode('', $buf_ary));
fclose($fp);
例えばこれが掲示板なら、データファイルはある程度の大きさで分割する。
また、単なる表示処理とかにはキャッシュを使い、データファイルを読みに行くような処理にはしない。
0890889
2006/05/22(月) 10:18:41ID:???$buf_ary = array();
$fp = @fopen($path, 'r+');
flock($fp, LOCK_EX);
while ($line = fgets($fp)) {
該当行に来たら$lineの中身を変更/削除する処理
if ($line != '') { $buf_ary[] = $line; }
}
ftruncate($fp, 0);
rewind($fp);
fputs($fp, implode('', $buf_ary));
fclose($fp);
全然自信ないけどどうでしょう?
0891nobodyさん
2006/05/22(月) 11:13:30ID:???俺ならデータがかなり大きいと予想される場合は
固定長のレコードを使って、小さいならvar_export()とかのシリアライズ系
の関数をつかってすませてしまうかな。
まぁ、PHPで固定長のレコードを持つファイルを扱ったことなんて
ないんだけどね。
0893nobodyさん
2006/05/22(月) 12:07:12ID:???1行の長さが固定のファイルならfseek使って
ダイレクトに行単位の読み込みや上書きができるからそういうことじゃ?
0895890
2006/05/22(月) 12:15:08ID:???「KENT WEB」とか見てperlから独学で入ったクチで、Cとかの経験は全く無しなんで自信ないのよね。
要するに基礎がおろそかっていうか。
今はperlなんて忘れちゃったけど、「KENT WEB」見て勉強してた当時のソースは、
なんか配列にデータ全部読む→配列を処理する→ファイルに書き込む
みたいな事をしてた気がする。アレは駄目だよね?
0896nobodyさん
2006/05/22(月) 12:20:34ID:???$data_ary = @file($path);
foreach ($data_ary as $key => $value) {
なんか処理をごじょごじょ
}
$fp = @fopen…以下書き込み処理
↑これはやっぱりマズイだろと思い>>890を考えてみた。
MySQLばっかやってるので、ファイルベースの管理に疎い俺に勉強させて下さい。
0897nobodyさん
2006/05/22(月) 12:24:46ID:???ftruncate($fp, 0);
rewind($fp);
fputs();
よりも
rewind($fp);
fputs();
ftruncate($fp, ftell($fp));
の方が早いらしい
自分で確認したことはないので本当かどうかは知らないが
0898890
2006/05/22(月) 12:41:12ID:???どもです。
早いか遅いかというよりもむしろ、
ftruncate($fp, 0); って要するにファイルの中身を一度空っぽにしてしまうっていう事ですので、
もし何らかの原因でファイルロックに失敗してた場合、中身が全部消えてしまう可能性がありますよね。
書かれている
rewind($fp);
fputs();
ftruncate($fp, ftell($fp));
の場合、データの長さが変になる可能性はあっても、中身が全部消えてしまう事は無いのではないかと思います。
こんな書き方もあるんですね。勉強になりました。有難う御座いました。
0899nobodyさん
2006/05/22(月) 13:10:19ID:???ネ申KENT巨匠云々はどーだっていいが、perlとphpは脳内で確実に切り離して考えろ
phpはperlよりJavaScript寄りで脊髄反射で書ける代物から勉強するが良い
と、->のアローを使わないし今一存在意義の分からない俺が言うのだから
説得力なんて丸っきし無いのだけどな
0900nobodyさん
2006/05/22(月) 13:36:22ID:???ロックに間違いはないし、この1つのファイルだけでやりくりするならこれでいいと思う。
問題点としては、
ファイルの内容を全てメモリ上にロードしていることに対するシステムへの負荷
これはまあ、よほどでなければ無視できる。
それから、インデックスや、別のログファイルなど、
他のファイルを読み書きすることになった場合の整合性かな。
>>895
メモリ上に全て読み込んでいるからKENTとやってることは実質同じだよ。
KENTのは読み込みと書き込みで別々になってるけど
処理全体をロックして堅牢性を確保してる。
ロック時間が長すぎない分にはあの書き方の方がわかりやすいと思う。
0901nobodyさん
2006/05/22(月) 13:40:51ID:???Perlのロックはサーバによっては意味なかったり、
アンロックとファイルクローズの間隙に処理されるからアンロックせずにファイルクローズしたりと
あんまり信用できなかったけど・・・
0902nobodyさん
2006/05/22(月) 14:01:52ID:???追いかけやすいし、改変もしやすいかもしれない、
という利点もある。リッチプログラミングってやつだな。
スクリプト言語なんてリッチ以外の何者でもないし〜、
ってことで俺は人間の理解しやすさ重視で組むように昔方針変更した。
それでもソースコードレベルでの最適化を頑張るのも無駄じゃないし、
その人の方針しだいだよな。
0903890
2006/05/22(月) 14:01:53ID:???切り離すっていうか、perlとphpしかやった事ないしもうperl自体忘れちゃってるので何とも。
perlならゴチャゴチャ関数書いてたのが初めから何でもかんでも用意されてて、
その関数通せば1行で終わり…php始めた頃はそういうところに感動しましたね。
>>900
>ファイルの内容を全てメモリ上にロードしていることに対するシステムへの負荷
>それから、インデックスや、別のログファイルなど、
>他のファイルを読み書きすることになった場合の整合性かな。
ここら辺を考えるのが面倒で、mysqlに逃げちゃうんですよね。。。
>>896に書いたソースでは、A・B別々の人がほぼ同時に書き込み処理を行った場合、先に書いた人の内容が
消えてしまう可能性がありますよね?>>900に書いたソースならそれは無いと思うですが、認識として間違ってます?
>>901
その点自分も結構疑問なのですが、
例えば1日300万以上回るカウンタ(データの長さは固定長になるようにしてる)で1年以上一度も壊れた事ないです。
0904nobodyさん
2006/05/22(月) 14:07:33ID:P0gT7hBy$text = htmlspecialchars($_POST["text"]);
を入れました。
それで、確認画面ではタグが無効化しているのですが、そのまま登録すると
表示の画面ではタグが有効になっています。
そこで改めて確認の画面で
<?= htmlspecialchars($text);?>
としたのですが、今度はテキストエリアで入力した改行(<br>)が表示されてしまいました。
2chのフォームもそうですが、改行(<br>)は画面に表示させずに
その他のコードは完全に無効にするにはどうしたらいいのでしょうか?
0905nobodyさん
2006/05/22(月) 14:16:04ID:???>A・B別々の人がほぼ同時に書き込み処理を行った場合
合ってる。
だから、読み書きを分ける場合は処理全体をロックしていれば大丈夫。
俺なら、ロック用ファイルを別に用意してそこにflockするか
rename方式でやるかな。
0906890
2006/05/22(月) 14:19:04ID:???共有ロック処理(flock($fp, LOCK_SH)と同等の処理)されてるんでしょうか?
0907890
2006/05/22(月) 14:23:10ID:???どもです。
つまり、ロック用ファイル=今処理中ですよと認識する為のフラグ みたいなもので、
書き込み中でそのファイルが存在する時は、読み取り処理を行えないようにする。
読み込み中でそのファイルが存在する時は、書き込み処理を行えないようにする。
という具合にすればOKって事ですよね?
0909890
2006/05/22(月) 14:39:20ID:???自分のせいで埋もれてしまうと申し訳ないので回答しようと思ったのだけど、
いまいち質問の意味が掴みきれないので↓で勘弁して下さい。
仮に改行コードが"\n"で統一できてると仮定します(その方が説明しやすいので。実際には環境により異なります)
$text = $_POST['text'];
$text_escape = htmlspecialchars($text); //※1
$text_disp = str_replace("\n", '<br>', $text_escape); //※2
※$text_escapeとか$text_dispを用意する必要はないけど、分かりやすいかと思い敢えてそうしています。
という順番で処理すれば、改行(=\n)は<br>となり、その他のHTMLタグはエスケープ処理されます。
※1と※2の処理が逆になると、どうなるか分かりますよね?問題が起こってるのはそういう理由だと思います。
連投すみませんでした。
しばらく時間をおきます。
0910nobodyさん
2006/05/22(月) 14:41:54ID:???最後2行に対し答えるとすると、
$text = htmlspecialchars($_POST['text']);
$text = str_replace("<br>","<br>",$text);
ってか、処理の流れがヘンなのが一番の問題かも。
0911910
2006/05/22(月) 14:43:11ID:???おお、やっちまったorz
$text = htmlspecialchars($_POST['text']);
$text = str_replace("<br>","<br>",$text);
0912nobodyさん
2006/05/22(月) 14:48:26ID:???合ってるような合ってないような。
flockでのやり方は、コードにするとこんな感じ。
$lock = fopen('lockfile', 'w');
flock($lock, LOCK_EX);
//読み書き処理いろいろ
fclose($lock);
これだけ。
ポイントは処理中1ファイルを開きっぱなしにすることだけかな。
lockfileはサイズ0でも問題ないし、別に消す必要もない。
PHPはスクリプトが終わると勝手に閉じてくれるから
fcloseを忘れてもロックは残らないし、簡単なわりに結構いいよ。
0913904
2006/05/22(月) 15:03:16ID:???ありがとうございました
0914nobodyさん
2006/05/22(月) 16:01:04ID:???$fp = fopen($file, 'ab+');
flock($fp, LOCK_EX);
stream_set_write_buffer($fp, 0);
rewind($fp);
ftruncate($fp, 0);
// 書き込み
// ...
ftruncate($fp, ftell($fp));
flock($fp, LOCK_UN);
fclose($fp);
たしか、こんな感じにしないとまずいかったと思う
ab+モードのときは rewind() はいらないんだっけな
0915nobodyさん
2006/05/22(月) 16:14:51ID:???フォームに入れた値を、phpからmySQLのDBに送るっていうのを作ったのですが
送信後にF5、つまり更新すると空の内容がDBに送られてしまいます。
sql_closeを入れても同じです。
どうやったら、解決するでしょうか?
0916915
2006/05/22(月) 16:17:16ID:???sql_closeじゃなくてmysql_closeです。
ついでにソース
$con = mysql_connect("","","") or die(mysql_error());
$con_tbl = mysql_select_db("");
$query = mysql_query("INSERT INTO result_tbl () VALUES(");
mysql_close($con);
0918nobodyさん
2006/05/22(月) 16:34:36ID:???やっぱ、それしか無いんですかね・・・
もっと簡単に出来るかなと思ったのですが。
ありがとうございました。
0919nobodyさん
2006/05/22(月) 16:36:05ID:???だから、2重送信をブロックするロジックを自分で考えなきゃいけないんだよ。
Submitボタン連打だともっと酷いデータが送られてくるときもあるからな。
こっちも忘れんな。
0920nobodyさん
2006/05/22(月) 16:43:09ID:???フォームのアクションを別ファイルにして、1.php → 2.php へPOST
<form method=post action=2.php>
そこから元ファイルに飛ばせばフォームデータ消えるから、F5更新しても大丈夫
header("Location: http://example.com/1.php");
0921915
2006/05/22(月) 17:32:49ID:???ありがとうございます。
一度917さんのソリューションでやってみたんですが、解決しなかったっす
同じ内容を2度送る場合にエラー出すように設定しても、やはり普通に送られてしまいました。
フォーム側の$_POST['']をクリアするようにしてもうまく動かなかったので
920さんのでやったら、解決しました。一番簡単で確実かもしれないっすね。
ただ、別問題でなぜかフォームの一つが動作しなくなったのは萎えてきましたが。
とりあえず、みなさんありがとうございました。
0922nobodyさん
2006/05/22(月) 17:49:31ID:???<?php
function htmlheader($title){
echo <<<HOGE
<html>
<head>
<title>{$title}</title>
</head>
<body>
HOGE;
}
function htmlfooter(){
echo <<<HOGE
</body>
</html>
HOGE;
}
?>
test.php
<?php
include("inc.php");
htmlheader($title);
//ここが中身
htmlfooter();
?>
こんな風にするのはよくあると思いますが、inc.phpではhtmlheader(),htmlfooter()って関数で定義せずに例えば、$htmlheader,$htmlfooterって変数を定義。
それをincludeしてtest.phpのなかで、そのときに応じて$titleを与えて(上書き)やるみたいなことは出来ないでしょうか?
参照渡しとか可変変数とかを使えばなんとなく出来そうな気がするんですが。
0923nobodyさん
2006/05/22(月) 17:53:43ID:???0924nobodyさん
2006/05/22(月) 17:54:40ID:???mysql&phpなんですが、特定のレコードのフィールド(数値int(11))を一番効率よくカウントアップするにはどんな方法をとるのが良いでしょう?
最初にselectして値をとって、それを変数に入れて++したものをupdateするしかないんでしょうか?
update文一発で出来る方法を以前見かけたような気がするんですが。
0925nobodyさん
2006/05/22(月) 17:57:54ID:???なるほど。関数の実行結果を変数に入れちゃう訳ですね。
自分はけっこう大きな固まりでヒアドキュメントを使いたいので変数にしちゃいたかった訳です。
ヒアドキュメントの直前で
$htmlheader = htmlheader($title);
とやるわけですね。
0928nobodyさん
2006/05/22(月) 18:16:23ID:???AUTO_INCREMENTは承知しておりました。
いろいろためしたとこ、事前のselectでの取得は不要、これで逝けそうです。
UPDATE `tablename` SET `count` = `count` + 1 WHERE `id` = 1;
ありがとうございました
0929nobodyさん
2006/05/22(月) 19:09:56ID:???ログイン後に操作をしない(サーバと通信をしない)時間が数分〜十数分続くと、
勝手にログアウトしてしまいます。 厳密に計ったわけではありませんが、20分ももたないようです。
ブラウザを閉じたわけでもないですし、session.gc_maxlifetimeは1440あります。
明示的にログアウト処理をしない限りログイン状態が続くようにしたい(mixiのように)のですが、
どこの設定をいじれば良いのでしょうか・・・。
0930nobodyさん
2006/05/22(月) 19:13:25ID:ZjR2V7y0あるテーブルから普通にデータ取得して、HTMLでテーブル作って表示してます。
データの件数が多くなってしまい、表示に時間がかかるようになりました。
よくある「次のページ」リンクをつけて、数回に分けて表示したいと思います。
やり方でセオリーとかありますか?
自分で考えたのは普通に、start_numみたいな変数をhiddenに持たせて、
データを取得する時、ループさせる中でstart_numから30回分を表示してあとはスルーみたいな感じです。
0932nobodyさん
2006/05/22(月) 20:02:16ID:80zZuoVH* H1要素
段落段落段落...
** H2要素
段落...
という値が代入されているとします。
先頭が「*」で始まる文字列を見出しタグで括りたいのですが、これを実現するための関数はありますでしょうか?
0933nobodyさん
2006/05/22(月) 20:41:29ID:???$int = count($line);
for($i=0;$i<$int;$i++){
if(strpos($line[$i], '**') === 0){
$line[$i] = '<h2>'.substr($line[$i], 2).'</h2>'
}elseif(strpos($line[$i], '*') === 0){
$line[$i] = '<h1>'.substr($line[$i], 1).'</h1>'
}
//↓ならh1〜h*まで
//if(preg_match("/^([\*]+)(.+)$/", $line[$i], $ast)){
//$line[$i] = '<'.strlen($ast[1]).'>'.$ast[2].</'.strlen($ast[1]).'>';
//}
}
0934nobodyさん
2006/05/22(月) 20:43:10ID:???'<'.strlen($ast[1]).'>'.$ast[2].'</'.strlen($ast[1]).'>';
0935932
2006/05/22(月) 20:46:40ID:80zZuoVHありがとうです。
preg_match()を用いるのだとは思っていたのですが、応用することができませんでした。
まだまだ私は勉強が足りないみたいです。
0936nobodyさん
2006/05/22(月) 20:47:27ID:???0938nobodyさん
2006/05/22(月) 20:53:27ID:???最後に$test = implode("\n", $line);
今気づいた・・
$test = preg_replace("/([\*]+)([^\n]+)\n/", "<h".strlen("\\1").">\\2"."</h".strlen("\\1").">\n", $test);
0939nobodyさん
2006/05/22(月) 20:58:08ID:???echo $hoge;
上記のようにしたときに$hogeが空の状態で表示されてしまうのですが
どのようにしたら0と表示するのでしょうか?
おそらくiniの設定かなと思うのですがどこを変更すればいいのかが分かりません
使用しているバージョンはphp4.4.1です
0940nobodyさん
2006/05/22(月) 20:58:47ID:???面白いから読んどけ
ttp://www.kt.rim.or.jp/~kbk/regex/regex.html
ttp://www.din.or.jp/~ohzaki/regex.htm
スレ違いごめん
0942nobodyさん
2006/05/22(月) 21:24:44ID:???ありがとうございます
とりあえず表示は出来ました
しかし以下のような使い方をする時にはどのようにしたらいいのでしょうか?
$array = array("0","1","2");
for($i=0;$i<count($array);$i++){
printf("%d",$array[$i]);
}
$iが0の時の値が表示できません
よろしくお願いします
0943nobodyさん
2006/05/22(月) 21:46:29ID:HMN8IoOb0944nobodyさん
2006/05/22(月) 21:52:44ID:???PHPとMySQLでファイルアップロード機能つきの掲示板作ってるんですけど
ファイルをpublic_html内にPHPでアップロードしたら誰でも直接アクセスできますよね?
ログインした人だけアクセスできるようにって可能ですか?
DBに入れようかと思ったんですがMySQLではサポートされてないみたいなので
どうしようか悩んでます。
よろしくお願いします。
0945nobodyさん
2006/05/22(月) 21:56:43ID:???その前に、
$a=0;
echo $a;
で何も出ないってのは、ちょっと変じゃないか?
なんか勘違いしてないか?
var_dump($a);
はどうなる?
0946sage
2006/05/22(月) 22:00:52ID:ie3bIX/1勝手に直リンされてるんだけど、これ拒否る方法ないかねぇー。
WMPで直リンクされてんだけど、リファラー吐かないから、.htaccess
でも拒否れないし。。。クッキーも使いたくない。
なんかいい方法ある?
0948nobodyさん
2006/05/22(月) 22:07:09ID:???目から鱗です。
ダウンロードする時も外のディレクトリから持ってくればできそうですね。
試してみます。ありがとうございました。
0949nobodyさん
2006/05/22(月) 22:24:46ID:???俺の認識だと無理だと思うんだけど、実際どうなんですか?教えて下さいな
0950nobodyさん
2006/05/22(月) 22:24:57ID:RlV2K8v8色・サイズなどを変更は、どうすれば良いんでしょうか?
0951nobodyさん
2006/05/22(月) 22:36:09ID:???0953nobodyさん
2006/05/22(月) 22:39:58ID:???0956932
2006/05/22(月) 22:48:35ID:???すみません、こんなのでいいのでしょうか?
$file = file ("./text.inc");
$line = explode ("\n", $file);
$file = explode ("\n", $line);
$int = count ($line);
$file = preg_replace ("/([\*]+)([^\n]+)\n/", "<h" . strlen("\\1") . ">\\2" . "</h" . strlen("\\1") . ">\n", $file);
for ($i=0;$i<$int;$i++) {
if (strpos($line[$i], "**") === 0) {
$line[$i] = "<h2>" . substr ($line[$i], 2) . "</h2>";
} elseif (strpos($line[$i], "*") === 0) {
$line[$i] = "<h1>" . substr ($line[$i], 1) . "</h1>";
}
}
echo $line[$i];
0958nobodyさん
2006/05/22(月) 23:00:02ID:???safe_mode = PHP_INI_SYSTEM
PHP_INI_SYSTEM = php.ini または httpd.confで設定可能なエントリ
どこのサーバか知らんが、言われたとおりにやってphpinfo()してみたら?
0959nobodyさん
2006/05/22(月) 23:53:56ID:???オーケー兄弟。ありがとう
指示通りやってもphpinfoの結果はOnのままだった。
サポートに(*゜Д゜)ゴルァ!してくる
0960nobodyさん
2006/05/23(火) 00:27:30ID:???え? file()はファイル内容を一行ずつ配列に格納する関数なので
explodeで分割する必要は無いんじゃないの?
0961932
2006/05/23(火) 00:34:51ID:???<?php
$lines = file ("./text.inc");
$int = count ($lines);
$lines = preg_replace ("/([\*]+)([^\n]+)\n/", "<h" . strlen("\\1") . ">\\2" . "</h" . strlen("\\1") . ">\n", $lines);
for ($i=0;$i<$int;$i++) {
if (strpos($lines[$i], "**") === 0) {
$lines[$i] = "<h2>" . substr ($lines[$i], 2) . "</h2>";
} elseif (strpos($lines[$i], "*") === 0) {
$lines[$i] = "<h1>" . substr ($lines[$i], 1) . "</h1>";
}
echo $lines[$i];
}
?>
出来たです。
あとは見出し要素以外の文書構成節「段落」をpタグで括るようにすればいいのですね。
ありがとうございました(^^
0962nobodyさん
2006/05/23(火) 01:59:05ID:???このほうがシンプルじゃないか?
まあ、解決したみたいだから、どうでもいいけどw
$fp = fopen("test.txt","r");
while ($buf = fgets($fp,1024)) {
$buf = trim($buf);
if (substr($buf,0,1) == '*') {
$buf = preg_replace("/^(\*)*(.+)$/e", "'<h'.strlen('\\1').'>\\2</h'.strlen('\\1').'>'", $buf);
} else {
$buf = "<p>{$buf}</p>";
}
echo $buf."\n";
}
fclose($fp);
0964938
2006/05/23(火) 07:57:36ID:???はじめ行で分割してやったけど
正規表現で一発で置き換えすればいいかと思った
その方法だとpreg_replaceはいらないよ
配列にreplaceは意味ない希ガス
0966942
2006/05/23(火) 11:08:53ID:5evz5UIt遅くなって申し訳ないです。
教えていただいた方法で書き出した所
int(0)と出ました。
0967nobodyさん
2006/05/23(火) 11:47:33ID:???<?php
is_resource($fop = @fopen($log = "./test.txt","r")) or exit("Error: ".$log." を開けませんでした。");
$dat = "";
while(is_string($buf = fgets($fop,1024))){
$dat.= ($len = strspn($buf,"*")) > 0 ? "<h".$len.">".trim(substr($buf,$len))."</h".$len.">\n" : "<p>".trim($buf)."</p>\n";
continue;
}
fclose($fop);
exit($dat);
?>
0968nobodyさん
2006/05/23(火) 12:02:16ID:???0969nobodyさん
2006/05/23(火) 13:27:20ID:???PHPでメールとメールの添付ファイルを受信する為には
どのような方法をとれば良いのでしょうか…
0970nobodyさん
2006/05/23(火) 13:32:45ID:???0971nobodyさん
2006/05/23(火) 13:37:39ID:???MTA(みたいなやつ)からのパイプ起動の三択。
で、次にそのメールのMIME構造を解釈するとメール本文と添付ファイルが得られる。
0972軟式PHP
2006/05/23(火) 13:47:20ID:???0973nobodyさん
2006/05/23(火) 14:02:32ID:???0974nobodyさん
2006/05/23(火) 14:23:04ID:???0975nobodyさん
2006/05/23(火) 14:32:39ID:z6MA0Zs/0976nobodyさん
2006/05/23(火) 15:09:10ID:???0977nobodyさん
2006/05/23(火) 15:41:54ID:???0979nobodyさん
2006/05/23(火) 18:09:44ID:???$lockfp = fopen($lockfile,"w");
flock($lockfp, LOCK_EX);
$fp = @fopen($file,"a");
@fputs($fp,$date);
@fclose($fp);
flock($lockfp, LOCK_UN);
fclose($lockfp);
このようにしたが、logファイルに書き込みが出来なくなった。なぜ?
0980nobodyさん
2006/05/23(火) 18:30:36ID:???0983nobodyさん
2006/05/23(火) 18:34:44ID:???の,助詞,連体化,*,*,*,*,の,ノ,ノ
つぼみ,名詞,一般,*,*,*,*,つぼみ,ツボミ,ツボミ
みたいなCSVデータが多量にある場合、プログラム的にはどんな処理が軽いんでしょうか?
上記の場合「バラ」って言葉が複数回出る可能性があるので、何回出たかカウントしたかったりします。
配列全部入れて配列を検索が楽そうなんですが、多量になると処理的に厳しいですよね・・。
0984nobodyさん
2006/05/23(火) 18:47:45ID:???一番軽いのはexit()かunset()かなあ・・・
そもそも何をしたいのか判らんのだけど。
カウント?検索?データはどこにある?(変数?ファイル?DB?)
情報が小出しすぎて(不足で)どうとでも答えられそうな
0987nobodyさん
2006/05/23(火) 19:07:52ID:???>>985
日本語の形態素解析エンジンの結果を分析したいんです。
HPの文章全てを日本語の形態素解析エンジンに通して、分割した語句結果をカウントしたいというのが現在のところです。
0988nobodyさん
2006/05/23(火) 19:23:35ID:???0989987
2006/05/23(火) 19:28:50ID:???という内訳です
0990nobodyさん
2006/05/23(火) 19:42:53ID:???だから分析ってナニをしたいわけよ?
同じ言葉の出る回数をカウントしたいとか
カラムでソートしたいとか色々あんだろ
0991987
2006/05/23(火) 19:46:09ID:???>分割した語句結果をカウントしたいというのが現在のところです。
簡単に言うと>>983の「バラ」出現回数をカウントしたいといいう事です。
このリストの数が膨大になりそうなので、負荷的にお勧めを知りたいのですが・・。
0992nobodyさん
2006/05/23(火) 19:55:22ID:???どういう処理の組み合わせが軽いなんてわからんし
作って時間計らないとなんとも言えん
0993nobodyさん
2006/05/23(火) 19:55:27ID:4QrMyfUT全部DBにぶちこんで、適当に処理するじゃいかんのか?
特定の単語のみなら、一行ずつ処理してやればそれでいいと思うけど
0994nobodyさん
2006/05/23(火) 20:03:52ID:???全部読み込んでUTF-8変換してpreg_matchでいいんじゃね?
下手にPHPのスクリプトでカウントするより組み込み関数使ったほうが軽いだろ(多分)
0995nobodyさん
2006/05/23(火) 20:10:42ID:???0996nobodyさん
2006/05/23(火) 20:11:06ID:???私はXHTML文書において、XML宣言を記述しているのでshort_open_tagはOffにしている。
まあこんなのでも回避できるが…:
<?php echo '<' . '?xml version="1.0" encoding="EUC-JP"?' . '>' . "\n"; ?>
ところで誰か次スレよろ!
0997nobodyさん
2006/05/23(火) 21:41:22ID:???0998nobodyさん
2006/05/23(火) 22:08:21ID:???http://pc8.2ch.net/test/read.cgi/php/1148389517/
1000nobodyさん
2006/05/23(火) 22:18:30ID:???i" ̄`、
,:=┴ー-=i,,_
/ \
_,,,;-ー"-x, ,,,;=-+, ,/~ ̄`ヽ、
/ `i /" i / `i''==ニ''ーx,,,_
___,i || '' i, `x, \
_,,,,x=''''"~ ̄ ̄~| ,,,,, ,,==、 i, \ \
/",,x-'" { / `i { ● i, i, ヽ
,i / `i |● | ノ ノ i, | i,
| i, } `=='" - `ー" | | i,
| i, `i, '~ ,、 | | |
| i, i, ,、 /vi, | | |
.| ヽ ヽ, ノ::i, ノ>::;ヽ | | |
.| i, {`'ー"i;;;;::::`+-+=''V:;;::::Mヽ、 / | |
| ヽ }, ヽ,lr;;:::`"~::;::;i`:;;</ `-イ | |
.| ヽ ヽ `ー==='''"~ / | |
| | | | `i, / | |
i_,/し'`-' ` x, ,,x='" | , !
`ー=''" } i |、,/
`" '
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。