【PHP】くだらねぇ質問はここに書き込みやがれpart7
レス数が1000を超えています。これ以上書き込みはできません。
0001966
2005/07/12(火) 01:47:09ID:qOoYFCn7ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【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/
立ってなかったんで>>970に近かった自分が勝手に立てちゃいました。
0003nobodyさん
2005/07/12(火) 09:24:04ID:a//rVl7jするとき、ダウンロードとかさせる機能はどうやるの?
おばさんが作ってたHPにダウンロードはこちらからとか
あったのをみて、俺正直すごい敗北感を感じたよおしえてくれ
頼む・・・
0004軟式PHP
2005/07/12(火) 09:25:44ID:???0005nobodyさん
2005/07/12(火) 09:53:49ID:???<A HREF="test.zip">ダウンロード</A>
直リンされたくなければ、こんな感じ。
<A HREF="download.php">ダウンロード</A>
*** download.php ***
<?php
$path = '/download';
$filename = 'test.zip';
header("Content-Disposition: attachment; filename={$filename}");
header("Content-Type: application/zip");
readfile("{$path}/{$filename}");
?>
0006966
2005/07/12(火) 11:12:03ID:???function autolink($url) {
$url = preg_replace("/(https?|ftp|news)(\:[\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/","<a href=\"\\1\\2\" title=\"\\1\\2\">\\1\\2</a>",$url);
$url = preg_replace("/([^https?\:\/\/|ftp\:\/\/|news\:\/\/]www)(\.[\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/","<a href=\"http://\\1\\2\" title=\"\\1\\2\">\\1\\2</a>",$url);
return $url;
$url = preg_replace("/([^h]ttps?)(\:[\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/","<a href=\"h\\1\\2\" title=\"h\\1\\2\">\\1\\2</a>",$url);
return $url;
}
print(autolink("http://asdghfjghrgrs.com/ https://hgyfrdfguh.com/ ftp://5t6y78u9iop.com/ news://cvubinomp.com/ http://www.xtcyvubinmop.jp/ ftp://www.asdgtfyh.com/<br />\n
news://www.lkonbh.jp/ https://www.lkmjnbv.org/ www.ycvubinomp.com ttp://ytgfdvdfsvvsss.jp/ ttps://df67g8h9j0abcde.com/ ttp://www.cvuibnomp.com/ ttps://www.mnbiuvyc.com"));
?>
前スレの続きですが、このようにしてみたところwwwで始まるものにはリンクされるようになりましたが、何故かwの前に◆の中に?が入ったマークが表示されて、
更にその前のスペースの部分にも◆?が表示されてしまいます。
そしてttpから始まるものはURLが自動リンクされませんでした。結構それなりに出来てるとは思ったのですが何故駄目なんでしょうか。
0007966
2005/07/12(火) 11:20:01ID:???ttp://ranobe.sakuratan.com/up/updata/up45596.gif
0008nobodyさん
2005/07/12(火) 11:28:04ID:???ウザイやつだな
>結構それなりに出来てるとは思ったのですが
プッw
0009nobodyさん
2005/07/12(火) 11:45:56ID:2mlSOJGkそろそろ消えてくれねーかな
0010nobodyさん
2005/07/12(火) 12:10:21ID:???0011nobodyさん
2005/07/12(火) 12:24:36ID:???自演か?
いくら2ちゃんでも頑張ってる初心者をむやみに煽ったりはしないだろ。
レスもらったのにスルー、独自路線GoGoでヘルプするから
煽られてるだけ。
0012966
2005/07/12(火) 12:51:49ID:???>>6のはちょっと自分なりに思いついたのでやってみたところ、
色々やっても駄目だったし自分の頭じゃ理由が分からなかったので、
せめてヒントだけでも貰いたいなと勝手に考えていました。
なんか教えて厨っぽくてすみません。
0014nobodyさん
2005/07/12(火) 14:24:56ID:ZD8v3rFB自分のPCで絵文字を見れるように外字設定がしてある状態です。
例えば(←皆さんには・に見える?)などを書くと私のPCではちゃんと絵文字が表示されています。
ですがPHPで作成した掲示板に絵文字を書くと「?」と表示されます。
文字コードの問題なのでしょうがいまいち分かりません。
ご存知の方ご教授お願い致します。
0015nobodyさん
2005/07/12(火) 14:30:15ID:???0016nobodyさん
2005/07/12(火) 15:18:33ID:2mlSOJGkじゃあチラシの裏に書いてなよ
0017nobodyさん
2005/07/12(火) 15:19:37ID:???echo 'Java連携';
上記の答えが満足できなければ、満足できる答えを得るためには
どう質問すればよいか考えろ
001811
2005/07/12(火) 15:21:32ID:???>自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
同意。
ただし、前スレを読んでも同じ事が言えるのなら尊敬。
0019nobodyさん
2005/07/12(火) 15:21:47ID:???0020nobodyさん
2005/07/12(火) 15:22:23ID:???やっつけてみたのだわ。ま、私ならこんなものを常用する気にはなれないわね。
<?php
function autolink($url){
return preg_replace("/((h?ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.('$1' === 'www.' ? 'http://' : '').'$1$3\" title=\"$1$3\">$1$3</a>'",$url);
}
die(autolink("http://asdghfjghrgrs.com/ https://hgyfrdfguh.com/ ftp://5t6y78u9iop.com/ news://cvubinomp.com/ http://www.xtcyvubinmop.jp/ ftp://www.asdgtfyh.com/<br />\n
news://www.lkonbh.jp/ https://www.lkmjnbv.org/ www.ycvubinomp.com ttp://ytgfdvdfsvvsss.jp/ ttps://df67g8h9j0abcde.com/ ttp://www.cvuibnomp.com/ ttps://www.mnbiuvyc.com"));
?>
0021nobodyさん
2005/07/12(火) 15:48:44ID:???前スレ>>966じゃないがそれだとttpの前にhがつかない罠
function autolink($url){
return preg_replace("/(((h?)ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.('$1'==='www.'?'http://'|'$3'==='ttps?'?'h':").'$1$4\" title=\"$1$4\">$1$4</a>'",$url);
}
甲汁
0022nobodyさん
2005/07/12(火) 16:10:35ID:???0023nobodyさん
2005/07/12(火) 16:16:51ID:qOoYFCn7だが全部出来るやつとなると探しても見つからんもんだな
>>21
とりあえずそれじゃ駄目だ
<?php
function autolink($url){
return preg_replace("/((h?ttps?|ftp|news):\/\/|www\.)([\w\.\~\-\/\?\&\+\=\;\@\%\:\#\%]+)/e","'<a href=\"'.(('$1'==='www.'?'http://':'')|('$1'==='ttp://'?'h':'')|('$1'==='ttps://'?'h':'')).'$1$3\" title=\"$1$3\">$1$3</a>'",$url);
}
die(autolink("http://asdghfjghrgrs.com/ https://hgyfrdfguh.com/ ftp://5t6y78u9iop.com/ news://cvubinomp.com/ http://www.xtcyvubinmop.jp/ ftp://www.asdgtfyh.com/<br />\n
news://www.lkonbh.jp/ https://www.lkmjnbv.org/ www.ycvubinomp.com ttp://ytgfdvdfsvvsss.jp/ ttps://df67g8h9j0abcde.com/ ttp://www.cvuibnomp.com/ ttps://www.mnbiuvyc.com"));
?>
甲汁
これで全部出来るようになるが少々汚いな
誰かもっと簡潔出来る香具師いないか?
0024nobodyさん
2005/07/12(火) 16:17:43ID:???そもそもttpは掲示板の自動リンクを防ぐためのものでしょう
httpに修正されるなら最初からhttpで書き込めばいいし自動リンク予防がtp://に変わるだけの気がする。
0025nobodyさん
2005/07/12(火) 16:21:00ID:???0026nobodyさん
2005/07/12(火) 16:22:33ID:???('$1'==='ttp://'?'h':'')|('$1'==='ttps://'?'h':'')
ここ一つにまとめろよ
0027nobodyさん
2005/07/12(火) 16:26:06ID:???後は正規表現のスレでやっとくれ。
それに似たようなサンプルはpreg_replace_callbackを使って
前レスで示されていたはず。
0028nobodyさん
2005/07/12(火) 16:27:07ID:???0029nobodyさん
2005/07/12(火) 16:29:39ID:???この腕前でw
0030nobodyさん
2005/07/12(火) 16:29:44ID:???↓
0031nobodyさん
2005/07/12(火) 16:30:14ID:???超ウザ
0032nobodyさん
2005/07/12(火) 16:31:44ID:???0033nobodyさん
2005/07/12(火) 16:35:10ID:???while($test>=10) {
print("test")
$test++
}
こうやっても何も表示されないんです
0034nobodyさん
2005/07/12(火) 16:39:09ID:???$test++ → $test++;
何も表示されないときは、ソースの先頭に
ini_set('display_errors', true);
error_reporting(E_ALL);
と入れてみなはれ。
003634
2005/07/12(火) 16:40:08ID:???print("test") → print("test");
003720
2005/07/12(火) 16:41:46ID:???003834
2005/07/12(火) 16:42:21ID:???0039軟式PHP
2005/07/12(火) 17:09:35ID:???004033
2005/07/12(火) 17:11:49ID:???004114
2005/07/12(火) 17:19:00ID:ZD8v3rFB絵文字のみ判別して絵文字の場合はアスキーでそのまま送ればいいと思うのですが
頭がコンガラガッテ爆発しそうです。
??xE63E;F89F/63647
0043nobodyさん
2005/07/12(火) 17:39:52ID:???ひとまずPHPから離れて。。。
その外字を含んだ手書きHTMLでは正常に表示できるのかな?
あと、他人があなたの掲示板を使用する場合、外字はどうするの?
使用予定の人、全員に外字ファイルを配布するつもりなのかな?
004414
2005/07/12(火) 18:01:35ID:ZD8v3rFBお返事どうもありがとうございます。
社内でしか利用していない掲示板なので外字ファイルは全PCに導入済みです。
絵文字を画像変換ですがその場合表示は出来るのですが
コピペが出来なくなってしまうのが問題です。(コピペを多用する為)
←これは全員ピースしている絵文字が見えます。
ですがこの(ピース)を投稿するとサーバに?として送信されてしまいます。
この(ピース)を(ピース)のままサーバに送信するのはどのようにしたらいいのでしょうか?
004543
2005/07/12(火) 18:24:24ID:???絵文字を使う会社ってぷりてぃだね。
サーバーに送信されたデータをどのように確認したのか判らないんだけど。。。
以下でtest.htmlを呼び出して、テキストエリアに外字を入力後、Goをクリックすると
正常に表示できる?(Shift_Jisの部分は、あなたの環境に合わせてね)
こんなことは既に確認済みだぜぃ、ならスマソ。
--- test.html ---
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"></head>
<body>
<form action="test.php" method="POST">
<input type="text" name="data">
<input type="submit" value="Go">
</form>
</body></html>
--- test.php ---
<?php
echo <<<EOD
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"></head>
<body>
{$_POST['data']}
</body></html>
EOD
?>
0047nobodyさん
2005/07/12(火) 18:36:19ID:???例えばhttp://www.xxxxxxxxxx.com/から何かのリンクをクリックしたらhttp://www.xxxxxxxxxx.com/xxxxx.phpにはならずにhttp://www.xxxxxxxxxx.com/?xxxxx=xxxxxみたいに
PHPのことを勉強するに至った切欠もこれをやりたかったからなんだけど、これってセッションとか言う技術?で良いんでしょうか?
色々なPHP入門サイトとか読んでみたり本も読んでみたんだけど、ほとんどがショッピングカート云々とかで、いまいち詳しくどうやれば良いのか書いてなくて理解に苦しんでます
これって基本的にはどうゆう仕組みになっているんでしょうか?
0048nobodyさん
2005/07/12(火) 18:43:14ID:???Win2000+IIS+PHP4.3.6の環境でmb_send_mailを送信したところ、
"テスト"と書いた本文、タイトルが共に"ッテッスット"と化けでいました。
詳細なヘッダーを表示したところ
------------------------------------
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------------------------------
となっていました。
追加ヘッダーはfromくらいしかつかっていなくてソースは以下な感じです。
------------------------------------
$mail = "[email protected]";
$from = "[email protected]";
$msg = "テスト";
$subject = "テスト";
ini_set ("sendmail_from", $from);
mb_send_mail ($mail, $subject, $msg, "From: $from");
------------------------------------
できたらmail()を使わないでJISで7bitで
送りたいのですがどこで設定するのか教えて頂けますか
0049nobodyさん
2005/07/12(火) 18:50:37ID:???それはセッションではなくてget
http://www.xxxxxxxxxx.com/?xxxxx=xxxxx
これは
http://www.xxxxxxxxxx.com/にリンクしてついでに
xxxxx=xxxxx
↑名前 ↑値
で変数を渡しているのでリンク先で$_GET['xxxxx']とやると=の左側にある値がとれる
0050nobodyさん
2005/07/12(火) 18:54:54ID:???index.phpファイルの中で、<a href="?hoge=moge">てな感じにすれば、そうなる。
ファイル名を省略すると、鯖が気を利かせて index.phpが呼び出される。
>>48
php.iniのmb_関係の設定。
php.iniを弄りたくない場合は、mb_language()で設定する。
無指定の場合は、uni 扱いになる。
0051nobodyさん
2005/07/12(火) 19:24:47ID:???まずは基本を押さえる
ttp://www.php.net/manual/ja/language.variables.external.php
0052nobodyさん
2005/07/12(火) 19:31:21ID:???PHPでDBを使用した場合の排他制御というのはどうやってやるのでしょうか?
DB自体の排他制御ではなく、
例えば、掲示板などで自分の書いた文章を訂正したい場合、
パスワードなど入れてから編集すると思うのですが、
ほぼ同じタイミングで自分と管理人が該当文書の編集画面を開き、
どちらかが更新した後でもう片方が更新したら上書きされてしまいます。
ASP.NETではこういった部分はADO.NETが読み込んでから更新するまでに
他の人間がデータを更新したかどうか勝手に調べてくれます。
こういった処理をPHPで制御するにはどうやるのでしょうか?
0053nobodyさん
2005/07/12(火) 19:38:56ID:???0054nobodyさん
2005/07/12(火) 19:45:05ID:???php.iniでmbstring.languageを = Japaneseの箇所を有効にしましたが変化無しだったので
mb_language(ja)でとしたら(゚д゚)ウマーでした。
ありがとう。
0055nobodyさん
2005/07/12(火) 19:45:22ID:???ADO.NETが勝手にやってくれることをおまいさんが
実装すればいいだけのこと。色々方法はあるけど、一例。
1) データベースに更新毎に値が変わるカラムを用意
2) 編集開始時にこのカラムの値を読み出して取り置き
3) 保存時にこのカラムの値を再読み出し
4) 2) と 3) がアンマッチなら他のユーザーが更新しているんでエラー等を表示
更新毎に値が変わるカラムをどうするか、どう更新するか(自動 or 手動)は
自分で考えれ。判らんかったらまたおいで。
005652
2005/07/12(火) 19:59:57ID:???1つ考えていたのは、レコードに更新日時を持つようにして、
該当レコードを編集する為に表示させたとき、この更新日付を取得しておいて、
更新時に比較するというもの。(>>55が書いてる事と同じだと思います)
しかし、これだと複数人がほぼ同じタイミングで更新しようとした場合、
トランザクションを掛けても、データ更新は出来ない(待たされる)が
(更新前の)データを参照する事が可能なので、
更新日時の比較時にはマッチしてしまい、誰かが更新終わってロック解除されて
自分のデータを更新しに行ったときには既に更新日付が変わってるという事が考えられます。
005755
2005/07/12(火) 20:15:36ID:???そこまで理解できているんなら最初からそう書いたら?
情報を小出しにして互いに何の得があるんだ?
UPDATE 。。。WHERE カラム1 = 更新キー AND カラム2 = 取り置きした更新日時
を実行した後、更新したレコード数を得て(mysqlならmysql_affected_rows関数など)
1であれば正常
0であれば他ユーザーが更新している
でいいぢゃないの。
0059nobodyさん
2005/07/12(火) 21:31:01ID:dBnqhLiGhttps://ユーザ名:パスワード@gmail.google.com/gmail/feed/atom
でrssリーダーでは読めるのですが。
0060nobodyさん
2005/07/12(火) 22:00:30ID:???今FOMAから見てるけどになってるよ。
K〇NTのから盗んでPHP化すればいいと思うよ。
漏れは挫折したが。
0061nobodyさん
2005/07/12(火) 22:19:46ID:8KfiQ0Na将来を考えてさ・・・お前らどう思う?
0062nobodyさん
2005/07/12(火) 22:26:14ID:???職業プログラマか、そうでないかにも拠ると思うが。
職業プログラマなら、自分の所属する会社の動向や
その会社を見限った時に、自分の売りをどこに持つかにも拠る。
0063nobodyさん
2005/07/12(火) 22:28:26ID:83Vu/kYoつ[xml_parse_into_struct]
0064nobodyさん
2005/07/12(火) 23:47:28ID:5RU+KNuohttp://off3.2ch.net/test/read.cgi/offevent/1121074170/
みんなで破壊王を見送りましょう。
葬儀日程
通夜:7月15日(金)18時
葬儀:7月16日(土)12時30分
場所:一休庵久保山式場 神奈川県横浜市西区元久保町3-13
最寄駅:京浜急行線 黄金町 駐車場:15台(全館貸切の場合、30台)
横浜駅西口から久保山斎場まではタクシーでは
所要時間10分〜15分、料金は1,220円〜1,380円です。
1,220円は混雑を加味しない料金です。
3〜5分程度の混雑を考えた場合、1,380円位になると思います。
(実際は1分55秒で80円加算です)
バスは
京急黄金町駅から32系統久保山経由保土ヶ谷車庫行き →久保山霊堂前
横浜駅西口からは4番乗り場68系統久保山経由滝頭行き→久保山で下車してください。
なお、久保山バス停からはかなりの上り坂です。
0065nobodyさん
2005/07/13(水) 00:11:21ID:XABi9hF+って感じでほかの鯖にある情報を取得して、ereg_replaceとかで整形してそれを自分のサイトのphpにinckudeして表示させるというスクリプトを作りました。
ローカルの鯖ではうまく行くんですが、自分のサイトを置いてる鯖ではこんなエラーが出ます。
Warning: file(): URL file-access is disabled in the server configuration in /home/xxx.users/hoge/hoge.php on line x
Warning: file(http://www.hoge.com/hoge.html): failed to open stream: no suitable wrapper could be found in /home/xxx.users/hoge/hoge.php on line x
これは鯖の設定でこういう事は不可能ということですか?
ほかのサーバーのサイトのデータを取得して好きなように整形して使うのにほかに方法はありますか?
0066nobodyさん
2005/07/13(水) 01:09:11ID:???0068nobodyさん
2005/07/13(水) 01:19:45ID:???ティップ: fopen wrappers が有効の場合、
この関数のファイル名として URL を使用することが出来ます。
ファイル名の指定方法に関する詳細は fopen()、
サポートされるURLプロトコルの種類 については、(例えば)付録L を参照してください。
0069nobodyさん
2005/07/13(水) 01:56:35ID:???URL先の内容を精査しないで使うバカ避けに、サーバをそういう設定にしてある。
> これは鯖の設定でこういう事は不可能ということですか?
そういうこと。
ソケット関数でHTTPでGETするとか、それの上に被せたPEARの
ネットワーク関連のライブラリを使うとか、誰かの作った
URL file-accessが可能なライブラリ利用するとか、cURLを使うとか、色々。
0070nobodyさん
2005/07/13(水) 15:30:11ID:mGL09CH7imagejpegを使ってJPEG画像を作成してるのですが
品質を100で作成しているにもかかわらず
色の境に中間色が使われぼやけてしまいます。
これを回避することはできないでしょうか?
それともJPEGの仕様上仕方がないのでしょうか?
0071nobodyさん
2005/07/13(水) 15:36:19ID:???>JPEGの仕様上仕方がないのでしょうか?
そうだと思う
画像の作成なら普通gifかpng使う(画像劣化なし)
jpegはjpeg画像の加工ぐらいしか使わん
007270
2005/07/13(水) 15:42:23ID:???さっそくのレス、ありがとうございます
実は生成した画像をFlashで読み込むのと
256色を超える可能性があったのでJPEGにしてたのですが
劣化がひどいので
Flash読み込みをあきらめてPNGにすることも
試したうえで検討してみようと思います。
ありがとうございましたー
0073nobodyさん
2005/07/13(水) 15:48:23ID:???0074nobodyさん
2005/07/13(水) 16:04:21ID:???0075nobodyさん
2005/07/13(水) 16:13:48ID:???true colorにしてもぼやけるものはぼやける。
jpegってのは基本的に圧縮技術だから。
でもjpegだと(quality高くしとけば)遠くから見たときちゃんと見える。
特にqualityを100とかにしとけば逆にキレイに見えることすらある。
jpegってそんな存在。
もちろん汚くなることもあるけど。
ぱっと見で気にならない程度ならjpegにしてサイズ減らすのもありかと。
007670
2005/07/13(水) 16:14:54ID:???使ってますー
最初これでもはまりました
PNG出力試してみました。
全く劣化なしできれいでした。
しかも品質100のJPEGに比べて
ファイルサイズが1/5くらいになりました
0077nobodyさん
2005/07/13(水) 23:34:01ID:???レンタル鯖(共有または専用)で上記を行う際に、
万が一cronの実行時間に鯖が落ちてたりしてcronが実行されなかった場合の
カバー(鯖が正常に戻ったときに未実行のcronを実行する)は、どうすればよいでしょうか。
僕が考えたのは、スクリプトが実行されたかどうかのフラグをDBに記録しておいて、
メール送信スクリプトとは別に、「cron実行されたかどうか判別スクリプト」を
1日に何回かcronで走らせる・・・という方法です。
しかしこれでは、「判別スクリプト」を走らせるcron自体が不実行だった場合
どうしようもありません。何かもっとスマートなやり方ってありますでしょうか。
0078nobodyさん
2005/07/13(水) 23:39:14ID:???大体それで良いと思うけど、
メール送信の実行時にフラグ記録及びフラグのログを見て実行されなかった物があるか調べてそれも同時に実行すれば良いんじゃないの?
分かりにくくてスマソ。つまり、メール送信のスクリプトと実行確認のスクリプトを分けずに、同時にその二つの処理を行えば漏れは無くなるでしょってこと。
0079nobodyさん
2005/07/13(水) 23:44:56ID:???あ、そうですね。二つをまとめたほうがいいですね。
それと、phpの問題でなくサーバーの問題になるかと思いますが、
障害などで未実行になったcronジョブを、サーバー再起動後に
検出して再実行する…ってことは技術的に可能なんでしょうか??
0080nobodyさん
2005/07/13(水) 23:47:55ID:???漏れだったらこんな処理にするかな
・送信するメールをファイルに保存するスクリプト
(保存時はファイル名が重ならない様に日時等にする)
・保存されたファイルをメール送信、送信後は削除するスクリプト
の2つをcronで走らせる
0081nobodyさん
2005/07/13(水) 23:56:15ID:???0082nobodyさん
2005/07/14(木) 00:20:19ID:???Active perlのppmを利用して新しいモジュールをインストールしようとしたのですが
ppm
install win32-api
====================
Install 'io-zlib' version 1.01 in ActivePerl 5.8.2.808.
====================
====================
Install 'io-zlib' version 1.01 in ActivePerl 5.8.2.808.
====================
Error: error downloading 'http://chai.activestate.com/PPMPackages/5.8-windows/MS
Win32-x86-multi-thread-5.8/IO-Zlib-1.01.tar.gz': 500 Can't connect to chai.activ
estate.com:80 (Bad hostname 'chai.activestate.com')
と表示されインストールができないのですが原因など教えていただけないでしょうか?
バージョンはActivePerl-5.8.2.808-MSWin32-x86.msiです
0083nobodyさん
2005/07/14(木) 00:26:28ID:???0085nobodyさん
2005/07/14(木) 05:01:36ID:???どのようにソース書けばいいんだべ・・・。
0087nobodyさん
2005/07/14(木) 09:17:53ID:???だれか自宅サーバたててる椰子、PHPでクールなまとめサイトを
作るナリ。漏れムリ。
0088nobodyさん
2005/07/14(木) 10:23:44ID:???自動的にダウンロードが始まるスクリプトってどういう仕組みなんですか?
0089nobodyさん
2005/07/14(木) 10:30:30ID:???あるファイルを行ごとにANDOR検索をかけたいんですが、
検索単語が"ほげ はげ"の時にはほげとはげを含む行を抽出して、
"ほげ or はげ"の時にはどちらかを含む行を取り出したいのですが・・
googleのnotとか、ほげとはげは含むけどハゲは含まないみたいな高機能な検索を
するライブラリとかってあるようで無いですよね。
0090nobodyさん
2005/07/14(木) 10:54:18ID:???0092nobodyさん
2005/07/14(木) 11:14:44ID:???PearからMail_Mime落としてきて試してるんだが、
どうも__CLASS__のせいで上手く動かない気がする。
0093nobodyさん
2005/07/14(木) 12:21:27ID:???AA略 全部マニュアルに書いて…
http://jp.php.net/manual/ja/language.constants.predefined.php
009492
2005/07/14(木) 13:19:02ID:???うっスマン。
__CLASS__は4.3からか。
うちのレンサバPHP4.1.2だったよ・・・
こういう場合はPEARは使えないって事だろうか。
009589
2005/07/14(木) 13:24:02ID:???Namazuって全文検索じゃないですか。
配列の中の各要素にたいしてandとかorとかnotするにはどうするのがいいかなと
思ってるんです。
009789
2005/07/14(木) 14:47:16ID:???ごめんなさい、言葉が足りませんでした。
あるファイルを『行ごと』に、というわけで、
ファイルを読み込んで1行ごとに配列に入れて、それに対してANDOR検索を・・
ということだったのですが、そこまで読み取れるはずが無いですね。
とりあえずスペースで区切ってANDだけ、orで区切ってORだけというのは出来たんですけど、
ANDとORを組み合わせるのとそれにさらにNOTを組み込むのが難しいです。
009885
2005/07/14(木) 16:38:23ID:???特別なこと考えず、普通にフレームつくるときのHTMLを
echoで出せばいいだけだな。深く考えすぎた。
0099軟式PHP
2005/07/14(木) 16:53:23ID:???0100nobodyさん
2005/07/14(木) 18:25:06ID:???その都度配列のキーを取得することは可能でしょうか?
たとえば
$fruit = array("apple" => "りんご", "banana" => "バナナ");
という配列を元に、
「apple」と「りんご」、「banana」と「バナナ」をそれぞれセットで取得したいのです。
array_searchを使ってもできそうなのですが、値に重複があると先にあるキーしか返してくれないようです。
何かいい方法はないものでしょうか?
0101100
2005/07/14(木) 18:28:39ID:???foreach($fruit as $key => $value)と書けばいいのか。
解決しますた。
0102nobodyさん
2005/07/14(木) 18:33:18ID:???んで、フォームから打ち込んだ値をたらい回しにしてたら、いつの間にか「"」の前にエスケープがくっついてた。
なんでだ?
0106nobodyさん
2005/07/14(木) 21:00:05ID:???処理出来るのでしょうか?
例えば、BCCとして"abc@**.jp,[email protected]・・・"とメールアドレス
続けて送信するとします。
サーバの内容にもよるかと思いますが、ご存じな範囲で
結構ですので、教えていただければと思います。
0108nobodyさん
2005/07/14(木) 22:43:44ID:???PHPに移植する場合、どうすればいいか教えてください。
$objWsh = new COM("WScript.Network");
$objWsh->UserName;
$objWsh->UserDomain;
とWSHで取得しようとしてもサーバ側の情報になっちゃって上手く再現できなかった。
$objWmi = new COM("WinMgmts://{" . getenv("REMOTE_ADDR") . "}/root/cimv2");
WMIサービスで取得しようと思ったが、セキュリティ上無理だった。
0112nobodyさん
2005/07/14(木) 23:33:09ID:???select文で日付をwhere条件に含めるに当たって、
一桁の数値には頭に0をつけてからSQLを発行しないといけないのでしょうか?
日付がMySQLでは2005-07-14となっているレコードを
select * from tbl_hoge where date='2005-7-14'
でヒットするのでしょうか?
0113nobodyさん
2005/07/14(木) 23:44:23ID:???0114nobodyさん
2005/07/15(金) 00:27:25ID:???マヌアル嫁
http://dev.mysql.com/doc/mysql/ja/datetime.html
自分で試してみれ。
0116nobodyさん
2005/07/15(金) 01:05:27ID:PzceRiM6function hoge ($a = date("Y-m-d")) {
echo $a;
}
と試したところエラーが出ます。
expecting ")"というエラーなのですが、括弧が足らないのでしょうか?
0117nobodyさん
2005/07/15(金) 01:17:33ID:???function hoge ($a = NULL){
if($a==NULL) $a = date("Y-m-d");
echo $a;
}
とかで
0118116
2005/07/15(金) 01:22:25ID:???どうもありがとうございました。
0119nobodyさん
2005/07/15(金) 01:39:38ID:???0120nobodyさん
2005/07/15(金) 03:17:59ID:???0121nobodyさん
2005/07/15(金) 06:54:27ID:???しているのですが、以前使っていたレン鯖では問題なかったのに、
違う鯖にしたらLocationで飛べなくなってしまいました。
鯖(Apache?)の設定で、Locationが使えないことってあるのでしょうか??
0125121
2005/07/15(金) 07:14:29ID:???してみましたが、全部ダメでした。
echo "テスト";
header ("Location: admin.php");
exit;
で、「テスト」が出力された画面のままで止まり、その後のジャンプがありません。
つまり、Location先が見つからないのではなく、
あくまでもLocation命令そのものが実行されていない感じです。
0127nobodyさん
2005/07/15(金) 07:15:57ID:???そんなことロケーションヘッダが来てるかどうか見ればわかるじゃん
つか相対URLはRFC的にアウトなんじゃないの? 相手が携帯だと特に
0128nobodyさん
2005/07/15(金) 07:20:38ID:???∧ _ - ― = ̄  ̄`:, .∴ ' ・,‘∴ , . ( ) ←>>125
, -'' ̄ __――=', ・,‘ r⌒> _/ /
/ -―  ̄ ̄  ̄"'" . ’ | y'⌒ ⌒i
/ ノ | / ノ |
/ , イ ) , ー' /´ヾ_ノ
/ _, \ / , ノ
| / \ `、 / / /
j / ヽ | / / ,'
/ ノ { | / /| |
/ / | (_ !、_/ / 〉
`、_〉 ー‐‐` |_/
0129nobodyさん
2005/07/15(金) 07:23:43ID:???以前の鯖と今の鯖で、スクリプトのソースは全く同じなんでしょ?
それで使えなくなったってことは、Apache側の問題なんじゃないの?
漏れはサーバの知識無いから詳しくはわからないけど。
0130121
2005/07/15(金) 07:30:06ID:???あ・・・、殴られて気が付きましたが、
headerの前にechoで出力しちゃマズイですよね・・・ガクガクブルブル。
echo消したら直りました。ああ、基本的ミスでした。
でも待てよ…、逆に言えば、なぜ前の鯖ではheaderの前にechoがあったのに
正常に動いてたんだろう?? いま再度、前の鯖で試してみましたが、
やはりechoありでも問題なく動きます。なぜ???
・・・・と思ってphpinfoやってみたら、output_bufferingがオンになってますた・・・
ご迷惑かけました逝ってきます欝だ氏のう
0131nobodyさん
2005/07/15(金) 07:36:54ID:???The field value consists of a single absolute URI.
Location = "Location" ":" absoluteURI
0132nobodyさん
2005/07/15(金) 07:44:29ID:???0134nobodyさん
2005/07/15(金) 07:51:45ID:???0136nobodyさん
2005/07/15(金) 08:03:08ID:???0137nobodyさん
2005/07/15(金) 08:05:10ID:???玄人ぶって偉そうに忠告をしたつもりの>>132が、
「専鯖」という強力な返り討ちワードを食らった挙句に
苦し紛れに「無駄」と言い捨て逃亡。
これを「諸行無常」と呼ぶ。
0138nobodyさん
2005/07/15(金) 08:09:06ID:???0140nobodyさん
2005/07/15(金) 08:14:35ID:???専鯖ってのが真実ならテスト鯖じゃないわけで
0141nobodyさん
2005/07/15(金) 08:17:23ID:???0142nobodyさん
2005/07/15(金) 08:17:39ID:???ローカルでデバッグするのに比べて無駄があるとかそんな話じゃないんじゃないのw>>134
0143nobodyさん
2005/07/15(金) 08:22:39ID:???別に逃亡してないんですけど。
手元でやってたら0.1秒で気づくミスだろハゲ男。
ていうかメル欄全角かよ。俺ハズカシス。
0147nobodyさん
2005/07/15(金) 11:21:44ID:???それを違う名前.txtにリネームして同じディレクトリに作成するって
可能でしょうか??
0149nobodyさん
2005/07/15(金) 12:12:18ID:???ありがとうございます
どこか参考になるページとかないでしょうか?
ぐぐってはみたんですがわからなくて・・・
0150nobodyさん
2005/07/15(金) 12:19:59ID:???>それを違う名前.txtにリネームして
>同じディレクトリに作成するって
一気にやろうとしないで、マニュアル見ながら上記を一行ずつ解決していけばいいよ。
0151nobodyさん
2005/07/15(金) 12:20:37ID:???やりたい事がいまいち分かんないけど
opendir、rename、stat辺りを使えばいけると思うよ
とりあえずマニュアルとにらめっこすることをお勧めします
http://www.php.net/manual/ja/function.opendir.php
http://www.php.net/manual/ja/function.rename.php
http://www.php.net/manual/ja/function.stat.php
0152nobodyさん
2005/07/15(金) 13:04:05ID:???どうもありがとうございます
0154nobodyさん
2005/07/15(金) 13:38:55ID:???CSVを読み込んで、テーブルで出力しようと思ってます。
CSV内容
"1","十","aaa"
"2","あ","bbb"
"3","表","ccc"
で、読み込んでるとこのソースが
$fp = fopen("hoge.txt","r");
while($row = fgetcsv($fp,1024))
{
echo "<tr>\n";
foreach($row as $column)
{
echo "<td>".$column."</td>\n";
}
echo "</tr>\n";
}
fclose($fp);
です。
EUCならこのままで問題ないのですが、
出力結果をShift_JISで出力したいんです。
ですが、"表"とか"十"が入ってるデータがあると
そこがうまく取り込めないらしくテーブルが壊れます。
うまいこと取り込む方法ってありますか?
0155nobodyさん
2005/07/15(金) 14:17:35ID:???SJISで出力したいなら、出力前にEUC-JP→SJISの変換を掛ければ良いだけだが。
ファイルの入出力も、ブラウザへも全てSJISでやりたいなら、それぞれの
入出力に変換を掛けるか、内部コードにSJISが利用できるようにコンパイルされた
PHPを使って、スクリプトのコードも全部SJISに統一すれば簡単。
0156nobodyさん
2005/07/15(金) 14:18:03ID:???EUCで全部やって、出力のみをsjisにするとか。
0x5cが下位バイトに来る文字は決まってるから、それに注意してデータを作成するとか(\をつける)。
0157154
2005/07/15(金) 15:10:23ID:???データは外部から抽出されたものをそのまま使いますし
データに\を付けていくのは大変なのでNGです。
>>155
既存のシステムがなかなか停止できないので、
PHPのコンパイルは避けたいです。
mb_convert_encoding関数を使えばできそうなので
やってみようと思います。ありがとうございました。
0158nobodyさん
2005/07/15(金) 16:54:44ID:Fg/gKXLa4行程度のソースなんですが、ここに書いたらまずいですかね?
0159nobodyさん
2005/07/15(金) 17:00:33ID:???0160158
2005/07/15(金) 17:09:27ID:???絵文字が2個以上並んでいると最初の一個しか変換されません。
対処ほうありますでしょうか?
$str = "\x1b\$G\x21\x0fabc"; // 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
echo preg_replace($regex, 'sprintf("<img src=\"%02X%02X.gif\">",
ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
0161軟式PHP
2005/07/15(金) 17:23:29ID:???$strWrk = 絵文字が入った文章;
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );
俺はとりあえずこんな感じにしてるけど。
0162nobodyさん
2005/07/15(金) 18:51:21ID:???$filename=basename($_GET['filepath']);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($filepath);
このようなものを作ったのですが、
filepathにrawurldecodeをかければ日本語ファイル名でもダウンロードできるのですが、
ダウンロード時のファイル名が文字化けしてしまいます。
これを解消するにはどのようにすればいいのでしょうか?
これを機会にheader関数もよく勉強したいのでお願いします。
0163158
2005/07/15(金) 21:01:03ID:???理解しようとしてるのですが、なかなかできません。。
$strWrkにvodafone絵文字が入った文章を入れて>>161を通すと絵文字の部分が何かに置き換えられてる
という使い方でよろしいのでしょうか?試してみたのですが echo $strWrk としたところ何も置き換えられないででてくるのですが
使い方間違っていますでしょうか?せっかく書いていただいたので試したいのでよろしくお願いします。
0164軟式PHP
2005/07/15(金) 21:14:31ID:???161のコードを通すと、連結した絵文字を分離するから、
それに対して、>>160のコードを通したらイけると思うけど。
あと
>>\x1b\$G\x21\x0fabc
は1個の絵文字だから意味ないよ。
0165nobodyさん
2005/07/15(金) 21:39:08ID:???どうしたらよい??
0166nobodyさん
2005/07/15(金) 21:40:50ID:???0167nobodyさん
2005/07/15(金) 21:45:48ID:???正規表現にかけるしかないのでしょうか?
0168nobodyさん
2005/07/15(金) 21:49:44ID:???PHPだと最後のチェックボックスの値しか取らないみたいなんだけど…
ASPなら自動でカンマ区切り、
Perlなら区切るモジュールで、
PHPは?
0169nobodyさん
2005/07/15(金) 21:55:15ID:???<input type="checkbox" name="test" value="test1">
<input type="checkbox" name="test" value="test2">
<input type="checkbox" name="test" value="test3">
○
<input type="checkbox" name="test[]" value="test1">
<input type="checkbox" name="test[]" value="test2">
<input type="checkbox" name="test[]" value="test3">
0171nobodyさん
2005/07/15(金) 22:04:07ID:???ttp://www.stackasterisk.jp/tech/php/php02_06.jsp
このあたりを見てください
0172nobodyさん
2005/07/16(土) 02:36:41ID:???0173nobodyさん
2005/07/16(土) 02:53:22ID:???0174nobodyさん
2005/07/16(土) 06:55:00ID:6rljT00vyumでインストールはできないですよね?
makeしてPHPもコンパイルして構築しないとだめですか?
0176158
2005/07/16(土) 11:16:40ID:???すぐ結果報告できなくてすみません。
V603SHから絵文字を入力して試してみました。
$strWrk = $_POST['body']; //$_POST['body'] = (男の子のマーク)(女の子のマーク)
do{
$tmp = $strWrk;
$strWrk = preg_replace("/(\x1b[\x24][\x45-\x47\x4F-\x51])([\x21-\x7A])([\x21-\x7A]+)([\xF])/im","$1$2$4$1$3$4",$strWrk);
}while( $strWrk != $tmp );
$str = $strWrk;// 絵文字入り文字列
$regex = '/\x1b\$([E-G])([\x21-\x7a])+\x0f/e'; // 絵文字にマッチする正規表現
$str = preg_replace($regex, 'sprintf("<img src=\'%02X%02X.gif\'>",ord("$1"),ord("$2"))', $str); // 絵文字をイメージタグに変換して出力
echo $str;
結果↓
<img src='4721.gif'><img src='475C.gif'><img src='4722.gif'>
男の子と女の子の絵文字を入れると間に違うのが入ってしまうのですが、このほかには何個ならべても
おかしな点はありませんでした。完全ではありませんが私としては満足できるレベルになりました。
ありがとうございました。
どこ調べてもDOCOMOの絵文字についてはたくさん書いてあるのですが、VODAFONEの絵文字については
ネット上でどのように書かれてるかなどみつけられませんでした。絵文字について書いてる本がもう一冊あったので買ってみます。
0177nobodyさん
2005/07/16(土) 11:19:08ID:???<html>
<body>
<?php ほにゃらら ほにゃらら ?>
</body>
</html>
こんな感じでhtmlのなかにスクリプト書きまくってるからかな。
DBの接続とかしてるし。
ob_startとか使ったほうがいいのでしょうか。
0178nobodyさん
2005/07/16(土) 12:29:36ID:???ttp://acapulco.dyndns.org/mod_uploader/#performance
0179nobodyさん
2005/07/16(土) 16:26:26ID:6tLNOCU80180nobodyさん
2005/07/16(土) 16:30:44ID:???0181nobodyさん
2005/07/16(土) 18:18:31ID:mgfMVhVU関数かサブルーチンにしようとおもってるんだけど
どやってするの?
<本プログラム>
&GetDate;
<呼び出しプログラム>
sub GetDate{
$date = date('Y/m/d H:i:s', time());
}
とやってみたら、エラーが出たよ。
0182nobodyさん
2005/07/16(土) 18:18:36ID:wfLNoi6t0183nobodyさん
2005/07/16(土) 18:22:01ID:???どうやったら切れませんか?
0184nobodyさん
2005/07/16(土) 18:27:08ID:???SQL文を発行した際に、例えば
$sql = "select * from tbl_hoge";
$rst = mysql_query($sql);
if(!$rst) print "だめぽ";
といったカンジでMySQLのエラーが出た際にエラーメッセージを表示させていました。
ところがPHPのマニュアルのmysql_queryの部分を見ると
$rst = mysql_query($sql) or die("だめぽ");
というような例文を挙げています。
これらは同じものなのでしょうか?
また、クエリーの結果falseが返ってくるケースとしては
クエリーが文法的に間違っているので撥ねられた場合のみ考えておけばいいのでしょうか?
例えばクエリーに問題がなくともサーバーが不調でMySQLがうまく機能していないとかにも
falseが返ってくることはありえるのでしょうか?
0187nobodyさん
2005/07/16(土) 19:02:16ID:???orはif文などに出てくるorと同じ
左がfalseなら右を実行するので、
mysql_queryがfalseならdieを実行する。
0188181
2005/07/16(土) 19:24:56ID:mgfMVhVUPerlでしか出来ないってこと?
PHPでやりたいのです…。
Callしなくても、includeするだけで変数使えるとか!?
でも、呼び出しプログラムの方のエラーが出るの。
0189nobodyさん
2005/07/16(土) 19:31:11ID:???$date = _GetDate();
function _GetDate() { return date('Y/m/d H:i:s'); }
まず調べれ
0190nobodyさん
2005/07/16(土) 19:39:24ID:???お前が書いてるのはほぼPerlだってこと。
↓くらい読んでから質問しようね。
ttp://www.php.net/manual/ja/language.functions.php
0191181
2005/07/16(土) 20:11:53ID:???$date = GetDate();
<呼び出しプログラム>
function GetDate(){
$date = date('Y/m/d H:i:s', time());
return $date;
}
としてみたけど、やっぱりえらーが出る。
Fatal error: Cannot redeclare getdate() in ......
呼び出しプログラムの2行目ってなってるけど
2行目は呼び出しの所。
何故〜
0192nobodyさん
2005/07/16(土) 20:24:41ID:???エラーメッセージを嫁。頭弱いのか?
ttp://jp.php.net/manual/ja/function.getdate.php を読んで
>>189氏が何故_を先頭に付けたか考えろ。
0193181
2005/07/16(土) 20:30:19ID:???getdateて組込関数が既にあるからか…
ごめんなさい、できました。
ついでに、すごく馬鹿な質問なのですが、
呼び出しプログラムの中で書いてある1個の関数の中に、
本プログラムで使いたい変数がたくさんある場合は
一つ一つreturnしないと、やっぱり無理?
0194nobodyさん
2005/07/16(土) 20:35:41ID:???0195nobodyさん
2005/07/16(土) 20:52:26ID:???関数から複数の値を返したい、ってことを
言っているのか?
0196nobodyさん
2005/07/16(土) 21:07:29ID:???>or die("だめぽ");
このパターンの例文に関してなんだけど・・・
<html>から<body>と
</body></html>を、自分で作った関数で吐かせてる場合は
dieしちゃうと、そのエラーメッセージより後ろは表示してくれなくなるんで困ってます。この辺は皆さんはどんな風にしょりしてますか?
エラーメッセージの後ろに</body></html>をくっつけておくしかない?
0197184
2005/07/16(土) 21:16:59ID:???なるほど。
エラー表示が1行で済みそうです。
どうもありがとうございました。
>>196
自分はエラー表示用関数を作ってます。
コンテンツを適当なヘッダとフッダではさむ通常の表示用関数に、
最後にexit()をつけたものをエラー表示用関数として使ってます。
0198181
2005/07/16(土) 21:17:45ID:???$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);
を外部ファイルに記述し、色んな処理で手軽に$dateや$date_yyyyを使いたいのです。
ただのincludeしただけでも、
print $date;
print $date_yyyy;
のように使えるとは思うのですが、そうすると、外部ファイルの処理を全て動かすことになるので
よくないかな…と。
すみません、何言ってるかわからなくて…。
あと、マニュアルも一応読んでるんですが、よくわからなくて…。
ごめんなさい(´・ω・`)
0199nobodyさん
2005/07/16(土) 21:56:37ID:???外部ファイルの処理を全て。。。という部分が判るようで
判らないんだけど、その部分だけを外部ファイル、他の部分は
別の外部ファイルでいいのでは?
--- date.inc.php ---
<?php
$date = date('YmdHis', time());
$date_yyyy = mb_strcut($date, 0, 4);
$date_mm = mb_strcut($date, 4, 2);
$date_dd = mb_strcut($date, 6, 2);
$date_hh = mb_strcut($date, 8, 2);
$date_ii = mb_strcut($date, 10, 2);
$date_ss = mb_strcut($date, 12, 2);
?>
--- etc.inc.php ---
<?php
//その他の処理
?>
--- 本プログラム ---
<?php
require_once('date.inc.php');
require_once('etc.inc.php');
echo $date;
echo $date_yyyy;
?>
次レスに続けるね。
0200nobodyさん
2005/07/16(土) 22:00:19ID:???元発言だと関数化したい、という話みたいだけど、関数や引数、戻り値が
あまり判っていないようなので、参考までに。
なるべく元のままで関数化しているので、あまりキレイなコードではないけど。
--- date.inc.php ---
<?php
function _GetDate() {
return date('YmdHis', time());
}
function _GetDate_yyyy($date) {
return mb_strcut($date, 0, 4);
}
以下、同様
?>
--- 本プログラム ---
<?php
require_once('date.inc.php');
$date = _GetDate();
$date_yyyy = _GetDate_yyyy($date);
echo $date;
echo $date_yyyy;
?>
0201196
2005/07/16(土) 22:36:12ID:???なるほど。
いいのか悪いのか解らんけど、基本的にスクリプトは最初から最後まで<?phpと?>で囲んでしまって、getメソッドで飛ばしたモード判別変数でcaseで切り替え。
たいていはこんな作りなんで、どうしたものかと、思ってました。
エラーメッセージを引数にした関数を自分で作ってそこで実行すれば便利ですね。
0202198
2005/07/16(土) 22:49:02ID:???レス、ありがとう(;_;)
>外部ファイルの処理を全て。。。
出来れば、共通で使うものは同じ外部ファイルにまとめて書きたくて
日付取得以外の処理も色々書いた場合、
ただのincludeだと、必要ない処理部分も読み込むことになるのかな、と思ったのです。
関数化にすれば、同一ファイル内に色々な処理が書かれていても
呼ばれたモノだけを読み込むのかなと思ってるのですが、
考えはあってるのでしょうか…。
>>200は、>>198を元に書いていただいたんだと思うのですが、
キレイにするとどんな感じになるのでしょうか?
一つの関数内で
return $date;
return $date_yyyy;
return $date_mm;
return $date_dd;
return $date_hh;
return $date_ii;
return $date_ss;
てしたら、案の定おかしい事に(-_-;)
0203nobodyさん
2005/07/16(土) 22:54:51ID:trCc1XOq定数宣言をすべて
interfaceに任せてそこでconstで定義しているのですが
PHP5のinterfaceを
Javaのinterfaceのように
public interface Constant {
public static final String CONSTANT_STRING = "test";
public static final String CONCATINATEED_CONSTANT_STRING = "This is a " + CONSTANT_STRING;
}
のような定義をしたいのですが
これをPHPでやろうとすると
interface Constant {
public const CONSTANT_STRING = "test";
public const CONCATINATEED_CONSTANT_STRING = "This is a ".CONSTANT_STRING; //<-ここでエラー
}
三行目のところでエラーが出てしまいます。
どうしてもJavaのような手法を使いたいのですができる方法はないでしょうか?
Javaのfinal(最初の一回しか代入が許されていない定数)に相当するものが
PHPにもあるかと思ってPHPのfinalを使ってみましたが残念ながらJavaのような定数宣言には使えず、
メソッドのオーバーライド禁止、クラス継承禁止程度にしかつかえないことに気付きがっかりしました。
もしくは私の知識不足かもしれません。
このように、Javaのinterfaceのような定数宣言を実装できる方法はないでしょうか?
もし知っている方がございましたらご教授願います。
0204nobodyさん
2005/07/16(土) 22:58:16ID:???PHPにも、
Javaでよく使われているO-Rマッピングツール Hibernate, Cayenne, Jakarta Torque
などといったもの、
データバインディングツール Castor, Relaxerといったもの
はございますでしょうか?
PHPで複雑なRDBMSやXMLを弄るとき、どうしても煩雑に
なりやすいのでできればこういうソースコード自動生成ツールを使いたいのものです。
0205nobodyさん
2005/07/16(土) 23:03:05ID:trCc1XOqさらに質問をさせて頂きます。
PHP5ではnamespaceが利用可能であるとどこかのサイトで知ったのですが
2chのあるスレをみると使えなくなったというレスを見つけました。
Facadeパターンなどのようなデザインパターン実装しにくく非常に残念です。
namespaceの概念が無いのでnamespac名.クラス名と指定していたものを
一つのクラス名にnamespace名_クラス名という長い名前にすることで
クラスの重複を避けるという手法があるみたいですが
これではクラス名が長すぎでかつamespace特有の利便性があるからこそ
実現しやすいデザインパターンも実現しにくくなっています。
PHP5では標準ではnamespaceを実現できないみたいですが、
他の方法、ツールやライブラリなどを使ってnamespaceを実現する方法はあるでしょうか?
0206nobodyさん
2005/07/16(土) 23:33:38ID:???0207nobodyさん
2005/07/16(土) 23:50:26ID:trCc1XOqそうしたいのですが仕事上どうしてもPHPを使わないといけないのです。
ミッションクリティカルも少ない単純なアプリケーションですので。
プロジェクトマネージャの判断でPHP5を使うことになりました。
0208nobodyさん
2005/07/17(日) 00:04:49ID:???0209nobodyさん
2005/07/17(日) 00:17:03ID:B/lkcUpB「?????????????????」と文字化けしてしまった。
同じサーバ上のphpMyAdminだとちゃんと表示される。
$query = 'select * from table';
$result = mysql_query($query);
while($row = mysql_fetch_array($result){
print_r($row);
}
なにか特別なことって必要でしたっけ?
0210nobodyさん
2005/07/17(日) 00:32:04ID:???昔ながらのこんなテクニックもある。
function a(){
return array($a,$b,$c,$d);
}
list($a,$b,$c,$d) = a();
0211nobodyさん
2005/07/17(日) 01:35:35ID:???自分で書いたコードの方にはMySQLにコネクション張った後に、
「接続クライアントの文字コードはUTF-8だよ」って
MySQLサーバに送ってないから、デフォルトのlatinだって
思われてるんで、latinで表現できないのが?になってるんでね?
0212nobodyさん
2005/07/17(日) 04:38:53ID:???includeするとファイルの内容全てが読み込まれるから、関数にする、しないは
関係ない。
includeファイルの中で関数にしなかった部分はincludeされた時点で実行される。
関数にした場合はその関数を呼び出した段階で実行される。
そもそも関数そのものが理解できてないんぢゃないかと思われ。
0213nobodyさん
2005/07/17(日) 06:53:32ID:???1週間前にPHPをインストールして始めた初心者なので、お許し下さい。
$a = "あああ";
echo $a;
この"あああ"の部分ですが、ダブルクォーテーションがなくても
表示されるのですが、なくてもいいんでしょうか?
どういう条件で""で囲むのでしょうか。
数字はつけない、文字列はつける、変数には付けない でやっているのですが
このままでいいのでしょうか?
0214nobodyさん
2005/07/17(日) 07:09:58ID:???ってこと?
その場合、「あああ」の部分はPHPのパーサが未定義の定数とみなして、"あああ"に再解釈する。
危ないので文字列にはきちんとクォーテーション(ダブルorシングル)つけるべし。
とりあえずマニュアルじっくり読んでガンガレ
http://www.php.net/manual/ja/
0215nobodyさん
2005/07/17(日) 07:46:41ID:???あのマニュアルの中から探すのはチト困難かも。
この辺りを参照汁。
http://www.php.net/manual/ja/language.constants.php
ついでに " で囲った場合と ' で囲った場合の動作の違いも理解汁。
http://www.php.net/manual/ja/language.types.string.php
0216nobodyさん
2005/07/17(日) 09:11:30ID:???セッションが切れてしまいます。
どうやったらセッションを切らずにできますでしょうか。
0217nobodyさん
2005/07/17(日) 12:46:10ID:???メモリやパフォーマンスの都合上、
データを定期的に渡すだけの
簡単なものにはJavaを使いたくないそうです。
本当に簡単なプログラムなんですよ。
そのかわりXMLデータとRDBMSのテーブルの数が
多すぎですが。橋渡しをするだけです。
0218nobodyさん
2005/07/17(日) 14:07:36ID:???下記(入門本そのままのやり方)のようにエスケープ文字の除去・タグ無効化・カナ変換を行っているのですが、
$comments = htmlspecialchars(stripcslashes($comments));
$comments = mb_convert_kana($comments, "KV", "SJIS");
改行のみ維持させたいのでぐぐってみたところ http://php.s3.to/tt/tt5.php の「複数行の入力」という記事が見つかり、
要はタグを無効にした後で、 改行コードを<BR>に変換するというやり方であると理解したのですが、
$comments = htmlspecialchars($comments);
$comments = str_replace("\r\n","\r",$comments);
$comments = str_replace("\r","\n",$comments);
$comments = str_replace("\n","<BR>",$comments);
$comments = stripcslashes($comments);
でいいのでしょうか?
「Shift-JISの場合バッククォートを除去」とかstripslashesとstripcslashesの違いがよく分かりません。
また、このURLにある参考ソースを見ると上記のstripcslashes()を行っていないようなのですが必要ないのでしょうか?
文字コードに関しては「データの文字コードと見る際(ブラウザ)の文字コードが一致してないと化ける」くらいの認識しかありません。
どなたかアドバイスよろしくお願いします。
0219nobodyさん
2005/07/17(日) 18:49:47ID:5K+3/9Xz0220nobodyさん
2005/07/17(日) 20:26:12ID:???ありがとうございます。なるほど、PHPで再解釈してくれてるだけなんですね。
>>215
助かります。このマニュアルは、辞書的な使い方がいいのでしょうか。
恥ずかしながら、今のスキルでは理解するまでかなり時間が掛かってしまいます。
購入した本を元に勉強しているのですが、初心者向けに解説しているPHPサイトで
定番的なところとかあるのでしょうか?お勧めがあればどなたか教えてください。
0221nobodyさん
2005/07/17(日) 21:11:28ID:???0222nobodyさん
2005/07/18(月) 00:14:57ID:tJQ/fctAある文字列中の特定の文字がマルチバイトかどうかを判定するにはどうすればいいでしょうか?
具体的には、
abcdefgあいうえお0123456789
という文字列があった場合に、10バイト目がマルチバイトかどうかを判定したいです。
substrを使って切り取る場合に文字化けして困ってます。
全角を1文字としてカウントするmb_substrでは都合が悪いです。
よろしくお願いします。
0223nobodyさん
2005/07/18(月) 00:34:05ID:???ありがとうございます。マンモスのやつでしょうか?
やはり、あれは良いのですね。
pdfだと見辛いので書籍購入してしまいました。
0225nobodyさん
2005/07/18(月) 02:00:26ID:tJQ/fctAありがとうございます。
mb_strcutも一度試したのですが、使い方が間違っていたようです。
おかげさまでばっちり動作しました。
感謝感激です。
0226nobodyさん
2005/07/18(月) 02:29:09ID:???この後 unset($a); で、$bも空になるような、シンボリックリンクの様に扱うことは出来るでしょうか?
0228nobodyさん
2005/07/18(月) 10:10:47ID:???0230nobodyさん
2005/07/18(月) 10:40:28ID:???ttp://jp.php.net/manual/ja/language.references.php
マニュアルにも萌えてください。
0231nobodyさん
2005/07/18(月) 13:02:11ID:8pn6XAVHecho mb_strlen($a);
13が結果として出るのですが、マルチバイト文字を1として数えされるにはどうすればよいでしょうか?
0232231
2005/07/18(月) 13:06:37ID:???0233nobodyさん
2005/07/18(月) 23:58:39ID:Mt/K/zKfたとえばセッションIDとか。この場合、リンクタグを書く際にいちいち
<a href="〜/?sid=<?= $sid ?>">次のページへ</a>
のように書くか、関数かなにか作って
<?= generateLink("http://〜/", "次のページへ", $query) ?>
↓ 下のように出力される
<a href="http://〜/?sid=xxx&name=xxxx">次のページへ</a>
のように書くかのどちらかくらいしか思いつきません。
前者はいちいち書くのが面倒だし、書き忘れると大変です。
後者はデザイン担当の人が使い方を覚えるのを嫌がるのでできれば避けたいです。
皆さんはどちらを使ってますか。あるいは他のやり方で解決してたりしますか?
0235nobodyさん
2005/07/19(火) 02:50:03ID:???0236nobodyさん
2005/07/19(火) 03:20:15ID:???http://php.domain/get.php?hoge=a+b+c
でみたいにアクセスすると、表示されるのは
a b c
と + (プラス)が (空白)に置き換わるのは仕様??
マニュアルのどっかに書いてある?それとも RFC かしらん?
0237nobodyさん
2005/07/19(火) 03:45:17ID:???DOMDocument::loadXML()を使うんだ
>>236
PHPの仕様。URLデコード済みのデータが入る
0238nobodyさん
2005/07/19(火) 05:52:32ID:IezOVCMvいつもデータ型の決定やテーブルのレイアウトで悩みます。
データ型などを決定するにあたっての「原則」というか「常識」みたいなのはありますでしょうか?
リファレンスなどを見てもそれぞれのデータ型に関する教科書的な説明しかなくて、
もっと実用的に「実際にはこういうデータの時にこの型を使う」みたいなTipsを知りたいのですが、
そういうのをまとめたサイトもしくは書籍ってありませんでしょうか?
ド素人の状態から一人でゼロから学んで一人で開発してるので、
周りに誰にも質問できる人がいなくて困っております。。。
0239nobodyさん
2005/07/19(火) 06:00:58ID:???0240nobodyさん
2005/07/19(火) 07:05:03ID:???後々のことを考えると、DBの初期設計はかなり重要だぞ。
MySQLならPHPとの連携も深いしな。
まあ趣味程度のヤツならあまり気にしなくてもいいかもしれんが。
0241nobodyさん
2005/07/19(火) 07:10:19ID:UElzZYBi,/ __ _ ゛
/ /““ “” ヽ |
| / -━ ━.| |
| |. “” l “ .|.|
(ヽ | r ・・i. || / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
りリリ /=三t. | < その駄レス! 0円!!
|リノ. | ,、‐''""''、
| 、 ー- " ノ ,、‐゙ ',
. _,r''''''ー/ ”ー-- " ヽ ,、-'" j
/ 、 ,,,_ヾ ヽ───、;;;;;::.;、-'" ̄~~~゙゙゙" /
/ 、` ~ ~゙''''''''''"~´ ゙'ソ. ', ....::::::::::::/
./ ... ´ .::::;/ ゙、..... ........:::::::::::::::::::::/
'、:....:::::", .:;rj゙ ゙、;;;;::::::::::::::::::;;;;、-''゙ ビシィッ!
. ヽ;:::::"._ .:::i';/ ゙、 ゙、`~~~゙゙~ 、、、..,,_
. ヽ、;;;;;>、:::... ::::r' ゙、 ゙、:::::: ヽ
',:::::::::゙i'r、;:::::::!. ヽ ゙、 .::〉::::::.... }
. ',:: l:/;;;::゙'ーr゙、 ヽ ゙.、.:::::;/'ー 、、;;;;____;;::、-'"
}、 l:::::::~゙''''! i .........ヽ........:::::;r゙''"
| l::::::::::::::l .〉、;;;;;;::、-'rーi''゙
ノ i;;;;;;;;;;;;;j::::/;;;;;;;;ノ:.. |: j
0242nobodyさん
2005/07/19(火) 08:07:48ID:???逆に言えば教科書的な説明で十分なくらいしかルールがないと思った方がいいんでは。
ド素人がいきなりカッチリしたもの作ろうって方が間違いでしょう。
0243nobodyさん
2005/07/19(火) 08:18:32ID:???俺も同じ境遇だったから(一人で開発、ド素人でゼロからって点で)、かなり共感。
DBのレイアウトは最初とまどった記憶がある。
まーでも「DB レイアウト」とかキーワードにググればけっこうでるんじゃない?
あとはあんまり考えすぎないほうがいい。
DBの場合、運用し始めてからでは変更が加えづらい
ってのが気になると思うけど(実際そうだけどさ)、
まったく変更できないわけじゃないし、
気に食わなかったら最初からやり直せるのも自分だけでやってることの利点。
もしくは気に食わない部分をいかに少ない変更でやりくりするかってのも抑えるべきポイント。
特に一人でやってると、期限がないし、プッシュしてくれる人がいないから、
こだわり始めると立ち止まりがちになる。
それよりはちょっと思い切ってさっと進んだ方がいいものができる。
ある程度こだわるのも重要なことなんだけどな。
ガンガレ!
0244nobodyさん
2005/07/19(火) 08:36:23ID:???0245nobodyさん
2005/07/19(火) 08:46:16ID:???phpスレ的に言えることはパクれってことかな。
0246nobodyさん
2005/07/19(火) 11:23:54ID:???むしろ板違い
0247nobodyさん
2005/07/19(火) 17:34:07ID:QxSJ/3p1その2つで同じメソッドを宣言(抽象クラスでは抽象メソッドとして)するのはダメなのでしょうか?
またダメな場合どちらで宣言した方がいいのでしょうか?
0248nobodyさん
2005/07/19(火) 17:59:05ID:Kj4TO5G6どうでしょう?すんなりなじんでくれるでしょうか?
0249238
2005/07/19(火) 18:12:44ID:IezOVCMvありがとうございます。
そんなに気にしなくてもいいものなんでしょうか。。。
一人で開発してるとは言え、いちおう事業としてシステム提供しようと
思っていますので、スケーラビリティとかメンテナンスとかも考慮しなければ
いけないのかな、とかなり悶々と悩んでおります。
たとえば、ある数字(たとえば何かの通し番号)ひとつ格納するにしても、
「TINYINT」にしようか「SMALLINT」にしようか、それとも「VARCHAR」でいいのかな?とか…。
あるいは、数十文字程度しか入力されないであろう文字列用のフィールドでも、
念のために「TEXT」にしておこうかな…とか。たとえばVARCHAR(50)よりもTEXTにした場合、
領域が無駄に消費されるとか、レスポンスが悪くなるとかってあるのでしょうか?
効率が悪くなるとか・・・そういうの悩みはじめるともう尽きません。
0251nobodyさん
2005/07/19(火) 18:18:36ID:???心配するな。
その程度のことも判断できない、勉強もしない、勉強の仕方も判らないヤツが
作ったシステムに銭を払おうとは誰も思わん
0253nobodyさん
2005/07/19(火) 18:22:57ID:???そのお方はCOBOL以外の別の言語は知っているのかな。
知っているのなら、そう心配することはないと思う。
COBOLしか知らないのなら、そんな方は相手にせずに
アルバイトでも雇ったほうが効率はいいと思うよ。
0254238
2005/07/19(火) 18:32:09ID:IezOVCMvというか、もう第一弾で作ったシステムには既に数十社の顧客がおりますが…。
月商もあなたの給料の3〜4ヶ月分くらいはあると思います。
今のところシステムには特に問題は出てないですが、より良いものにしたいのです。
>>250
>WEBプログラミング@2ch掲示板
>Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。
0255nobodyさん
2005/07/19(火) 18:37:43ID:???0256nobodyさん
2005/07/19(火) 18:40:47ID:???喪前は>>251か?ww
偉そうに上に立ったつもりが思わぬ反撃されて逆ギレするのはダセーよ(藁
>>238
とりあえずDB関連の本を何冊か読んでみろ。そんでもう一回質問しる。
0257nobodyさん
2005/07/19(火) 18:43:00ID:???0258軟式PHP
2005/07/19(火) 18:44:27ID:???0260nobodyさん
2005/07/19(火) 18:46:50ID:???うわ、2〜3年前の自分を見るようだ。
とりあえず、数値以外は
全 部 テ キ ス ト に し て お け
変に設計勉強してテーブル分けると自分でどうにもならなくなる。
困ったらフィールド追加で免れろ。
そんな感じで作った奴もトラブルなくちゃんと動いてるし、なによりメンテしやすい。零細企業が立派な決めごと作ってもしかたないのと一緒。
0261nobodyさん
2005/07/19(火) 18:48:58ID:kS82naWbUNIX/WindowsともにApache2.0.xでPHP4を実運用するなって旨の
文書を見つけた、これって今のVersionのApache2.0.x+PHP4.4でも
云えることなのかな?
#参考URL
http://php.s3.to/man/install.apache2.html
>"Apache 2.0とPHPの組み合わせを(Unix、Windows
>どちらのプラットフォームでも)実運用環境で使用しないでください。"
0262軟式PHP
2005/07/19(火) 18:52:49ID:???全部テキストってのは俺はしないけど、260の言うようにある程度冗長性を持たせて
データ型は作った方がいいと思われ。MySQLは途中で型変更出来るが
PostgreSQLなんかは途中で型変換出来ないので。
あと、最低限の正規化はやっといたほうがいいと思う。関数を作らないプログラムみたいに保守性・拡張性がガクンと落ちる。
0263nobodyさん
2005/07/19(火) 18:55:48ID:???つ[ http://allabout.co.jp/career/database/subject/msub_sekei.htm ]
0264軟式PHP
2005/07/19(火) 18:56:11ID:???一時的なカラムを作成して、そっちに一回移してホンニャカってやる。
0265軟式PHP
2005/07/19(火) 18:58:23ID:???http://www.php.net/manual/ja/install.unix.apache2.php
「PHP と Apache 2.0.x の互換性に関する注意: PHP の以下のバージョンは、Apache 2.0.x の最新版での動作が確認されています。 」
っていうところが参考になると思われる。
0267nobodyさん
2005/07/19(火) 19:01:56ID:???ソート時の辞書式・数値式やjoinする時の事を考えるとデータ型ってのはある程度決まってくる。
その上で、冗長なデータ排除や効率化のためのテーブルのレイアウト(てか、データベース設計、テーブル設計と言うかな)の話になってくる。
ここまでの話はPHPが関係する部分は無いから、専用板であるDB板が良いと思われ。
書籍スレもあったんじゃないかなぁ。
>>261
本家のマニュアルを読んでください。
0269nobodyさん
2005/07/19(火) 20:22:22ID:???このようにすると$aには<FONT size='2'>hoge</FONT>という文字列が格納
されるわけですが、
$aにサイズ2のhogeという文字列を格納したい場合、
(つまりHTMLを反映させた後の状態を格納したい場合)
どのようにすればいいのでしょうか?
ヒアドキュメント以外で方法はあるでしょうか?
0270nobodyさん
2005/07/19(火) 20:35:41ID:???0271nobodyさん
2005/07/19(火) 20:42:31ID:???サイズが2倍になったhogeを文字列に格納したいってことか?
であればムリ。ヒアドキュメントを使ってもムリ。
いったい、その文字列を格納して何をしたいんだ?
0272nobodyさん
2005/07/19(火) 20:49:27ID:???よく分かんないけど、文字列そのものとその属性値を分離したいってことなら、配列に格納するくらいしか無いんじゃないかな?
そいでもって、出力する時にhtmlとして整形する。
(下のようにsprintfなりヒアドキュメントなりテンプレートエンジンのフィルタなり。xslの方に飛びぬけるのもありか...)
$a = array('str'=>'hoge','size'=>2); // 文字列は'hoge'、属性値は2
echo sprintf("<font size='%d'>%s</font>",$a['size'],$a['str']); // <font>を使って、size=2
echo sprintf("<span style='font-size: %dem'>%s</span>",$a['size'],$a['str']); // <span>を使って font-size: 2em
0273nobodyさん
2005/07/19(火) 20:52:54ID:???0274nobodyさん
2005/07/19(火) 20:59:57ID:???0275nobodyさん
2005/07/19(火) 21:00:39ID:4ZlIiQSxmakeし直して入れてみたんだけど、なんか動かないっぽ。
0277nobodyさん
2005/07/19(火) 21:15:37ID:???どうも、動きました!
eAcceleratorをmakeしなおす時に、make cleanしてなかったためのようでした。
0278nobodyさん
2005/07/19(火) 21:42:38ID:4ZlIiQSx0279nobodyさん
2005/07/19(火) 21:53:53ID:???0280nobodyさん
2005/07/19(火) 22:13:06ID:???マニュアルのその記述はいまいち情報不足。
prefork MPMとかCGI版とApache2との組み合わせで問題はまず起きない。
worker MPMとかperchild MPMと組み合わせた時にまだまだ問題が多いので
実運用では使うなつうこと。prefork MPMでApache2運用つうのも
Apache2の本来の実力じゃないしね。
あと ttp://php.s3.to/ のマニュアルは古いから、余り参照すんな。
Googleでの検索では上位にくるけど。
0281nobodyさん
2005/07/19(火) 22:19:30ID:???とスペース区切りの文字列(フィールドの数は可変)をそれぞれ
$word[0]="aaa"
$word[1]="bbb"
$word[2]="ccc"
・
・
・
と別の変数に格納するのはどうすればよいのでしょうか?
$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが、
可変するため、うまく切り出すことができません。
0283nobodyさん
2005/07/19(火) 22:31:28ID:???0284nobodyさん
2005/07/19(火) 22:31:32ID:???最後の方読んでなかったorz
正規表現使わないんだったら、splitよりexplodeの方が高速だよ。
普通に
$word = explode(' ', $keyword);
でいけるでしょ。
list($word[0], $word[1], ・・・) = split(' ', $keyword);
とかしてない?
0285nobodyさん
2005/07/19(火) 22:32:50ID:???>$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが
splitの使い方間違っていないか?
0287nobodyさん
2005/07/19(火) 22:35:15ID:???コーディングしてるのでアドバイスいただけだらありがたいです。
今、ブログから更新通知Pingを受け取って新着エントリー一覧を表示する
プログラムを書いてます。
http://www.boundless-ocean.ne.jp/archives/000049.htmlあたりを参考に、
PEARのXML-RPC Serverを使ってブログのタイトルとURLを読み出すこと
はできました。
しかし、新しく作成されたエントリーのタイトルやURLをどうやって読み出せば
良いのか分からないのです。
普通のPingサイトだと(Myblog japanとか)個別にエントリーのタイトルとURL
も表示できているので、方法はあると思うんですが・・
よろしくお願いします。
0288281
2005/07/20(水) 02:03:20ID:???レスありがとうございます。
splitで切り出したフィールドの扱いを勘違いしていました。
フィールド数が可変の場合はcount()でフィールド数を取得すれば良かったんですね・・・
$word = explode(' ', $keyword);
$cnt = count($word);
$cnt = $cnt -1;
for ($i = 0; $i <= $cnt; $i++) {
$word[$i] の処理;
}
のような感じで出来ました。
0289287
2005/07/20(水) 02:21:48ID:???RDFを読み出して、新しく作成されたエントリーのタイトルやURLを取得することにしました。
スレ汚しすまそ。
0290238
2005/07/20(水) 05:13:11ID:nMj8v/eeご指導ありがとうございます。
では、とりあえずあまり深く考えずに冗長性を持たせた構造にして、
正規化(←この概念を忘れてました!ありがとう!)に気をつけてやってみます。
あまりシビアでコンパクトにしてのちのち身動き取れなくなって困るよりも、
余裕を持って適当(?)に作ったほうが「大は小を兼ねる」と考えちゃって良い…みたいですね。
0291nobodyさん
2005/07/20(水) 07:10:35ID:???誰も何も言わないからか、凄い気になるんだが。。。
>>238は
・PHP+MySQLでwebアプリを作ってるが、DBについての基礎知識や経験が無い
・ド素人の状態から一人で学んで一人で開発して周りに誰にも質問できる人がいない
にも関わらず
・第一弾で作ったシステムには既に数十社の顧客がいる
・月商も>>251の給料の3〜4ヶ月分くらいはある。
のんだよな?
結構突っ込みどころ満載な気がするんだが。。。そうでもないのか?
くだらねぇ質問スマソ
0296nobodyさん
2005/07/20(水) 11:12:39ID:???0297nobodyさん
2005/07/20(水) 11:16:54ID:???例えばkey=value1のときはfile1をincludeして、key=value2のときはfile2をincludeすると言うのはどうやるのでしょうか?
ページは変わってもサイトの一部分だけしか変える必要のないときなどに使いたいのですが実際にどうすれば良いのか分かりません。
0298nobodyさん
2005/07/20(水) 11:20:52ID:???switch ($_GET['key']) {
case 'value1': require_once('file1.inc.php'); break;
case 'value2': require_once('file2.inc.php');break;
…
}
0299nobodyさん
2005/07/20(水) 11:34:41ID:fiiwUfZg配列 $hairetu から「yahoo」という文字を検索し、見つかった配列番号(?)を取得
と言うのはどうやるんですか?$hairetu には1000行くらいあるとします。
0300nobodyさん
2005/07/20(水) 11:43:58ID:???0301nobodyさん
2005/07/20(水) 11:50:15ID:???0302nobodyさん
2005/07/20(水) 11:51:19ID:???あー!!array_search()ですか!!
あると思ったんだけどググっても見つからずに悩んでいました。
のどに詰まっていた納豆がスッキリ胃に入っていきました。トンクス
0303nobodyさん
2005/07/20(水) 12:06:50ID:AeK1ZPXKスキルは C COBOL VBA SQL 位しかないもので。
PHP以外にいろいろありますが、皆さんがPHPやってる理由を
聞かせて頂けるとありがたいのですが
0304nobodyさん
2005/07/20(水) 12:10:54ID:???0305nobodyさん
2005/07/20(水) 12:17:52ID:???あると思ったのならググらずにマニュアルの配列関数見ればいいのに
http://jp2.php.net/manual/ja/ref.array.php
0306nobodyさん
2005/07/20(水) 12:23:37ID:???それをファイルをincludeさせたい部分に書くだけですか?
なんだか色々調べててフレームワークとかセッションとか出てきたんですが、これらは関係ないのでしょうか?
0309299
2005/07/20(水) 14:10:38ID:fiiwUfZgarray_search() って完全一致じゃないと駄目なんですね。
部分一致でも検索できる方法ありますか?
例えば、hensu[10] = ヤフーショップ の場合に、 ヤフー だけの検索で引っかかって欲しいんです。
0312nobodyさん
2005/07/20(水) 15:10:47ID:???<form method='POST' action='hoge.php'>
<input type='image' name='kbn' value='1' src="hoge1.gif">
<input type='image' name='kbn' value='2' src="hoge2.gif">
</form>
という2つのイメージボタンを持ったフォームで
どっちのボタンがクリックされたかを'hoge.php'で取得するには
どうしたらよいでしょうか?
'hoge.php'で$_POST['kbn']がNULLになってしまうので困っています;
どうかお助けください。
0313nobodyさん
2005/07/20(水) 15:21:59ID:???なんかinput type='image'はvalueは無効みたいですね。
nameを変えて座標がやってくるかどうかで判断しなくちゃですね。
他にいい方法っありますか?
0315nobodyさん
2005/07/20(水) 15:24:26ID:???俺の環境ではちゃんと取得できた
var_dump($_POST);
で
array(3) {
["kbn_x"]=>
string(2) "47"
["kbn_y"]=>
string(2) "53"
["kbn"]=>
string(1) "1"
}
0316nobodyさん
2005/07/20(水) 15:24:42ID:???0317nobodyさん
2005/07/20(水) 15:25:22ID:???----------
<form method='POST'>
<input type='image' name='kbn' value='1' src="hoge1.gif">
<input type='image' name='kbn' value='2' src="hoge2.gif">
</form>
<?
echo $_POST['kbn']."<br>\n";
print_r($_POST);
?>
----------
0318nobodyさん
2005/07/20(水) 15:31:42ID:???IE6 + PHP5.0.4 ならNGだった
0319nobodyさん
2005/07/20(水) 15:38:30ID:???for($i=○;$i<=×;$i++){
echo $array[$i];
}
と言うループでやっていましたが、もっとスマートな方法ありますか?
0320nobodyさん
2005/07/20(水) 15:44:01ID:???あっそれもいいかも
でも、buttonってsubmitできましたっけ
onClick='javascript:this.submit()'すれば
いいと思うけど javascriptは使わないポリシーなので
申し訳ない。
自分の環境ではやっぱり
$_POST['kbn_x']はとれても$_POST['kbn']はとれません。
これってPHPの環境変数の設定の違いでしょうか?
申し遅れましたがPHPのVerは4.3.10なんですれど。
0322315
2005/07/20(水) 16:24:06ID:???IEだとだめじゃ
0323nobodyさん
2005/07/20(水) 16:28:36ID:???0324nobodyさん
2005/07/20(水) 16:31:53ID:???割と有名な問題だから検索すれば対策みつかるよ。
0325nobodyさん
2005/07/20(水) 17:00:43ID:???「x1xx」とか「,2dd」を「1」「2」にしたいです。
0328>>291
2005/07/20(水) 19:00:55ID:e5fXpd1fありがとう
0329nobodyさん
2005/07/20(水) 19:17:11ID:???「―ソЫ�\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭�x�x」
を送信すると$_POSTで取ったときに'\'(C5)が付いてくるのって
charsetを変えずにうまいこと解決するには
どのような対策がベストなのでしょうか?
0331nobodyさん
2005/07/20(水) 22:43:59ID:0VkkmhCLと言う様な記事に遭遇しました。、
header("Content-Type: text/html; charset=文字コード");
header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
↑の文章で
「header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");」
この時間の意味は何でしょうか?
解説によって時間が異なったりします。
0334nobodyさん
2005/07/20(水) 23:32:41ID:???生成したメソッド終了時? それともスクリプト全体の終了時?
もし全体の終了時ならメソッド終了時に消滅させることって出来るのでしょうか?
デストラクタ(__destruct)を呼び出すとかして。
0335nobodyさん
2005/07/20(水) 23:50:29ID:???__destructでechoでもすればいつも消えるかわかるだろ。
質問するまえに自分でやれることやらないと、何時までも他人に頼ることになるぞ
0336335
2005/07/21(木) 01:15:26ID:???0338nobodyさん
2005/07/21(木) 08:22:30ID:???0339nobodyさん
2005/07/21(木) 09:45:00ID:???キャッシュの有効期限だ。
つまり、今現在の日付より前に設定すれば、
アクセスしてきたブラウザはキャッシュの有効期限とみなして
新しくページを読み込むという理論。
だから今より古い時間ならいつでもいいけど、
時間が止まってるパソコンのことも考えて(?)
10年くらい前にしておけば問題無い。
0341nobodyさん
2005/07/21(木) 11:40:24ID:???有効期限のことって解説に載ってなかったの?
俺はてっきり「1994年12月1日16時ちょうど」って時間に特別な意味があるのか聞いてるのと思ってた。
0342238
2005/07/21(木) 12:34:04ID:1d7jG9nE第一弾で作ったシステムは、DBの重要度・依存度はそんなに高くない
ASP(顧客ごとのオリジナルシステムじゃないですよ)なので。
項目数も更新頻度も少ないから一つのテーブルでまとめちゃっても
特に支障なかったんですよ。
でも今作ってるのはDBに入れるべき項目数もレコード数も多くなるので、
きちんとした設計にしようと思って質問しました。
で、もう半年くらい営業してるんで、顧客が数十社というのはむしろ少なすぎです。
開発と営業を一人でこなさなきゃならないのでどうしても時間が足りないんです。
だからそろそろ営業マンと技術者を一人ずつ雇います。
>>296
いちおう第三正規化まで(無意識的に)やってました。
正規化という概念があるのは後付けで知ったんですが。
0343nobodyさん
2005/07/21(木) 13:30:41ID:jGRVDiGIPHP.ini のどこを変更すればいいんですか?
0344nobodyさん
2005/07/21(木) 13:45:42ID:???プロフェッショナリズムの欠如したプロフェッショナル(自己矛盾だな…)
0345nobodyさん
2005/07/21(木) 14:34:01ID:pW+lONe3手を加えたのですが、これで良いのでしょうか。
qmailでメールのエイリアスを追加したのですが、
/var/qmail/alias/.qmail〜 というファイルに
&〜
というメールアドレスを追加したのですが、qmail
を再起動しなくてもメールのエイリアスの追加は
完了したのでしょうか。
qmailの再起動も知らない初心者なので、これだけ
で良いのかと心配しています。どなかか教えて下さ
ると非常に助かります。お願いいたします。
0346nobodyさん
2005/07/21(木) 15:00:50ID:???mysql_close()とmysq_free_result()は必要なのでしょうか?
入門本では特に「切断する」「開放する」以上の説明はないのですが、
PHPのマニュアルには
「mysql_closeは通常必要ない」「結果保持用メモリは自動的に開放される」
とあります。
プログラミング的には書くのがお行儀がいい、ということなのでしょうか?
それともやはり「どっちでもいい」のでしょうか?
0347nobodyさん
2005/07/21(木) 15:04:34ID:???PHPというよりqmailの質問だから↓の方がいいかも
qmailインストール @Linux板
http://pc8.2ch.net/test/read.cgi/linux/1004341147/
qmailいろいろ(7) @UNIX板
http://pc8.2ch.net/test/read.cgi/unix/1114157851/
0348nobodyさん
2005/07/21(木) 15:07:32ID:???再起動は不要。
エイリアス追加後、再起動せずにエイリアス宛にメールを
送信してみれば聞くまでもないことだと思うんだけど。
てか、そもそもスレ違い。
0349nobodyさん
2005/07/21(木) 15:24:55ID:???<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitして
'hoge.php'で$cnt=count($_POST['hoge'])ってしたら
$cntは3になると期待したんですが1になっちまうんです
3にするにはどうすればよいんしょうか?
0350nobodyさん
2005/07/21(木) 15:27:23ID:pW+lONe3>348
345です。ありがとうございます。再起動せずに
エイリアス宛にメールを送信して見たら、出来ま
した。そのようなことも思いつかないなんてどう
かしてますね。(笑)
また、スレ違いでしたので、今後はqmailスレで
聞くようにします。
いずれししても、ありがとうございました!!
0351nobodyさん
2005/07/21(木) 15:35:11ID:uSqim16b$start=microtime();
//処理
$end=microtime();
echo $end-$start;
ってな感じでmicrotimeの計算をした時に近い数字同士だと
指数になったり結果がマイナスになったりするんですがなぜなんでしょうか?
0352nobodyさん
2005/07/21(木) 15:45:03ID:???一般的なプログラミングの作法としては、ちゃんとプログラム中で
閉じたり開放するのが正しい(と思ってるので、自分はしてる)。
但し、PHPの仕様としてスクリプト終了時にmysql_close()とmysql_free_result()
相当の動作が自動的に行われると明記されているので、"PHPプログラミング"の
作法としてはスクリプト中で記述しないというのは正しい。
またプログラム処理の結果を吐き出してから後始末を行うので、
結果を得られるタイミングも早く、すなわち処理が速く終わる。
もっともmysql_closeはMySQLコネクションというリソースを、
mysql_free_resultはMySQLからの結果を保持する記憶域を開放するためのものであるから、
スクリプトの動作時間が長く、それらのリソースを無駄に保持する負荷が
比較的大きいのであれば、適宜開放してやるのが良い。
0353nobodyさん
2005/07/21(木) 15:51:03ID:???俺の考えだけど、俺の場合はソースの頭でオープンさせて最後に開放させてる。
と言うのも、その都度開放するとサーバに負担がかかると思ったから。
何度も開けたり閉じたりするより、最初に開けちゃって最後に閉じた方がよいかと思って。
0355nobodyさん
2005/07/21(木) 16:00:24ID:???事象がわかりましたが、
対策が解りませんのでどなたか教えてください。
<form method='POST' action='hoge.php'>
<input type="text" name="hoge" value="10">
<input type="text" name="hoge" value="20">
<input type="text" name="hoge" value="30">
</form>
をsubmitしたのに配列で受け取れないのは
<input type=image>で送信されたものの場合で試しに
<input type=submit>にしてみたら配列がやってきました。
イメージを送信ボタンとして配列をPOSTしたいのですが
javascriptを使わずに出来ますでしょうか?
0356nobodyさん
2005/07/21(木) 16:00:52ID:???microtime() で何が返ってきてるか見てみなよ。
0358nobodyさん
2005/07/21(木) 16:07:04ID:???<input type=submit style="background-image:url('イメージ')">
じゃダメ?やってないから分からんけど。
0359nobodyさん
2005/07/21(木) 16:15:01ID:???>>357 http://honyaku.yahoo.co.jp/transtext
0362nobodyさん
2005/07/21(木) 19:25:40ID:NWEHg4fzさらに内容が私のメールに届くようにしてあるスクリプトを作成したのですが
これに加えて
自分で作成したメールアカウントにメールを送信したら
そのメール内容が掲示板に投稿されるようには出来ますでしょうか?
0363nobodyさん
2005/07/21(木) 19:44:29ID:???0364nobodyさん
2005/07/21(木) 20:57:07ID:???SMTPサーバーを操作できるのならエイリアスファイルから登録用スクリプトを呼び出せばいい。
sendmailならこんな感じで呼び出すけど、SMTPサーバーによって設定ファイル、設定内容は
異なるので自分で調べてくだされ。
myaccount: "| /path/to/php 登録用スクリプト名"
これで[email protected]にメールが届くと登録用スクリプトが呼び出される。
スクリプトでは標準入力からメールデータを取り出して掲示板に登録する。
もちろんこのスクリプトはオマイさんが書くんだよ。
SMTPサーバーが触れないのならPOPやIMAPを使うしかないかも。
0365nobodyさん
2005/07/21(木) 21:06:26ID:???大体この3つくらいが定番かと。
0366nobodyさん
2005/07/21(木) 21:09:11ID:???rh9 php4.3.11を使用しています。
pear Net_SMTPを使用し
[email protected]さんのメールアドレスが実在するかチェックする
スクリプトを作成しています。
Net_SMTPコンストラクタ作成時に 接続先サーバを指定するのですが、
[email protected](abc.co.jp)のSMTP鯖を調べる方法は
ありますでしょうか。
0367nobodyさん
2005/07/21(木) 21:21:09ID:???getmxrr()
んでも、MXが見つからん場合はAとかに送るんじゃなかったっけ?その辺りは実装しなきゃいけないかもね。
0368nobodyさん
2005/07/21(木) 21:27:16ID:hk8J7OA3<?php
$a = @$_POST["answer"]
if($a="ほげほげ"){
echo "正解";
}
else{
echo "不正解";
}
?>
上記のif文で、$aが"ほげほげ"を含む場合には正解を表示させるには
どのように記述したらいいのでしょうか?
$aが"ほげほげです"でも"ほげほげかな?"でも正解にしたいのです。
よろしくお願いします。
0369nobodyさん
2005/07/21(木) 21:32:24ID:???http://jp2.php.net/manual/ja/function.mb-strpos.php
0370nobodyさん
2005/07/21(木) 21:54:25ID:hk8J7OA3有難う御座います。
リンク先をみても3%くらいしか理解できませんでした。
if(mb_strpos($a,"ほげほげ"){
echo "正解";
}
false{
echo "不正解";
}
こんな感じでしょうか?なんか足りない気がします。
0372nobodyさん
2005/07/21(木) 22:08:34ID:???0373nobodyさん
2005/07/21(木) 22:38:23ID:???正規表現を理解できるとは思えないけど(バカにしているんではないよ)。
>なんか足りない気がします
ってどういう意味だろう。実行したけどエラーがでるのかな。
エラーがでるのならエラーメッセージぐらいは張って欲しいけど。
とりあえず)が一個足りないけどコピペミスなの?
if(mb_strpos($a,"ほげほげ"){
↓
if(mb_strpos($a,"ほげほげ")){
このままmb_strposが使えるまで頑張るか正規表現を勉強するかは
>>370次第。嫌がらせではないからキレないでね。
0374nobodyさん
2005/07/21(木) 22:56:27ID:???0375nobodyさん
2005/07/21(木) 23:07:04ID:???0376nobodyさん
2005/07/21(木) 23:10:38ID:???ってのが聞こえてきそうだ。
var_dump(mb_strpos($a,"ほげほげ"); とかして、どんな値が返ってくるのか実感して欲しいところだな。
誰も突っ込んでないけど、 if($a="ほげほげ") ってのもかなりイタイ
0377nobodyさん
2005/07/21(木) 23:44:29ID:OPf2mV1L�@九九表
�A2次方程式の解 ax2+bx+c=0
0378nobodyさん
2005/07/22(金) 00:09:21ID:???>>377
どこまでやったのか書いてみ。
2.の方は学年と性別、妹の有無の情報が無いと、出題者の意図が分からん。
0379nobodyさん
2005/07/22(金) 00:17:20ID:1VklDg1R0380nobodyさん
2005/07/22(金) 00:21:20ID:???せめて過程だけでも教えて下さい。
0382nobodyさん
2005/07/22(金) 01:29:04ID:???if(mb_strpos($a,"ほげほげ") === FALSE){
echo "不正解";
} else {
echo "正解";
}
文字エンコーディングの設定必要あるかもだけど。
0383nobodyさん
2005/07/22(金) 02:49:06ID:???アリエナスww
上記のライブラリを追加したらリコンパイル必要ですか?
apache再起動で済みますか?
あと、php-usersのMLをどなたかのサイトでアーカイブにしてnamazuに喰わせてあったのですが
うかつにもブックマークし忘れました、どなたかurlわかりますか?
0384383
2005/07/22(金) 03:01:06ID:???すいません、後半部分は自己解凍しました。
http://www.php.gr.jp/php/novice.php3
このスレのテンプレにも追加したいくらい便利っすね。
0385nobodyさん
2005/07/22(金) 06:59:06ID:7S1nHf8D具体的には
CREATE TABLE myAuth (
myUserColumn VARCHAR(50) NOT NULL
, myPasswordColumn VARCHAR(32) NOT NULL
);
ってテーブルを作って、
ttp://dozo.matrix.jp/pear/index.php?PEAR%2FAuth
ここいらを参考に(というかそのまま)
認証をかけてみたんですが、常に認証失敗になってしまいます。
Pear::Authのインスタンスをprint_rしてみたんですが
どこで失敗しているのかがわからず(ちなみにDB接続は成功しています)
解決の糸口がつかめません。
試しにlast_queryをそのままDBに入れると、ちゃんと帰ってくるんで
一体どこでつまづいているのかサッパリです。
同じような現象になった方、解決方法ありましたらよろしくお願いします。
0386nobodyさん
2005/07/22(金) 07:31:03ID:???基本的にhtmlコードや普通のテキストを呼び出したりするときは.incで統一してるんですが、
phpコードとかだったら.phpにするべきなのかな?
0388nobodyさん
2005/07/22(金) 08:19:11ID:???特に決まりはないから好きにしたらいい
俺はphpコードはphpにしてる。他の拡張子だとソースの内容が丸見えになるので
後はhtmlだったりtxtだったり
config.inc.phpなんてやってるのもある
0390nobodyさん
2005/07/22(金) 12:43:09ID:???ドキュメントルート以下にそんなファイル置く奴が悪いんだが。
.htaccessとかで.incを.php扱いにすることも出来るがそんな手間を考えるなら拡張子を統一するのがベスト。
0392nobodyさん
2005/07/22(金) 16:26:40ID:s5umLjZLPHPをWindowsで使う際、execを使って外部のexeやバッチファイルを
バックグラウンドで動かすことは無理なのでしょうか?
時間のかかる処理をexeやバッチファイルで実行しているのですが、
exeなどをファイルにリダイレクトしても、結局バックグラウンドでは
動作せず、ブラウザが読み込み中のまま待たされることになってしまいます...。
処理が終わったら戻ってくるんですが。
Linuxだとリダイレクトと「&」を使って簡単にできるのに...。
PHP 4.3.11+IIS(Apacheでも同じ)です。
ぜひご教示を!
0393nobodyさん
2005/07/22(金) 16:29:55ID:mNPTggfmSimpleXMLは名前の通り使いやすいと思うのですが
SimpleXMLよりも使い勝手がよいパーサというものは
あるでしょうか?
0394nobodyさん
2005/07/22(金) 16:34:59ID:mNPTggfm変数を使う前に宣言してから利用可能に
するということはかのうでしょうか?
クラス内のフィールド(メンバ変数)とは別に。
PHPは、変数名などのスペルミスをすると
どこにバグがあるのか気づかずに
苦労することがあります。デバッガにも気づいて
もらえません。
それをC++やJavaのコンパイラように、
あらかじめ変数を宣言してから
利用できるようにすればどこにまちがい
があるのかかなりわかりやすくなり、
スペルミスにもすぐに気づきやすいのですが。
これをC++やJavaのように楽にする方法はないでしょうか?
C++やJavaを使えと言われても仕事上、そうはいかないものでして.。
0395nobodyさん
2005/07/22(金) 17:06:33ID:???error_reporting (E_ALL);
これで未定義の変数に警告を出してくれる。
0396nobodyさん
2005/07/22(金) 18:57:44ID:???PHPは、コンパイルできませんか?
0398nobodyさん
2005/07/22(金) 19:06:37ID:???つ http://www.google.co.jp/search?hl=ja&q=php+コンパイル&btnG=Google+検索&lr=
0399nobodyさん
2005/07/22(金) 19:09:20ID:???ionCube PHP Encoderですか?
PHPスクリプトをコンパイルした場合
こういうのを、サーバーに入れないとだめなんですか?
0400nobodyさん
2005/07/22(金) 19:16:57ID:???そういった用途の有償・無償のプロダクトがある。
ソース配布前提ライセンスのライブラリ等を利用するときは留意せよ。
0401nobodyさん
2005/07/22(金) 19:19:17ID:???それで、そういうのを使って、
コンパイル後のファイルを配布を受けたものは、
普通にサーバーの入ってるパソコンに
置くと、ネットに乗せられるんでしょうか?
お願いします。
0402nobodyさん
2005/07/22(金) 19:31:40ID:???書いてる日本語が変。
ネットに乗せられる
→(解釈)アップロードしてWebサーバのコンテンツ配下に置ける(ネットに乗せられる)か
→Yes. 単なるバイナリーファイルだから。
0403nobodyさん
2005/07/22(金) 20:17:50ID:???IEなんかで見られるんですか?という意味です。
0404nobodyさん
2005/07/22(金) 21:13:13ID:???まずお前は日本語と一般教養の勉強をしたほうがいい。
コミュニケーションできないと開発も出来ない(たとえ一人で開発してるとしても)。
0405nobodyさん
2005/07/22(金) 21:26:24ID:???0406nobodyさん
2005/07/22(金) 21:39:15ID:???0407nobodyさん
2005/07/22(金) 21:56:40ID:???「見る(見られる)」ってのも、これまた抽象的な表現だな。
可能。特にWebサーバでそのファイルに
アクセス出来ないようにしていなければだけど。
0408nobodyさん
2005/07/22(金) 22:03:28ID:???・配布した物の中身を見られたくない
・配布した物を実行する鯖(実行環境)に手を加える必要が無い
そんな便利なものがあるのだろうか?って質問をしたいんだろうね。
というか、そういう質問になるはずなのにパスコンとかIEとか訳ワカンネ
0410nobodyさん
2005/07/22(金) 23:51:35ID:???ほっておけ。
それにしても最近のここは惨いな。夏休みだからか。
0411nobodyさん
2005/07/23(土) 00:08:59ID:???0412nobodyさん
2005/07/23(土) 00:17:58ID:???ある変数がNULLかどうか、0かどうか、空かどうかを皆さんどう判定してますか?
いま、ある配列に特定のキーがあるかどうかを
$hoge = array(10,20,30);
$val = 10;
$key = array_search($val,$hoge);
このようなスクリプトで$valが$hogeに見つからなかった場合の処理をしようと
if ($key == NULL) print "ぬるぽ";
と記述したところ、この場合、$hoge[0]に10があるわけですが、
$keyに「0」が入ってしまい、$key == NULLが真となってしまいました。
仕方ないので(strlen($key)==0)としているのですが、他にもっと直接的な判別方法があるのでしょうか?
($key===NULL)だと$valが見つからない場合でも常に偽になってしまうようです。
よろしくお願いします。
0413nobodyさん
2005/07/23(土) 00:25:16ID:???いいよ。糞みたいな奴のスレはぶった切っても
array_searchは見つからなかったときはNULLではなくFALSEを返すので
if ($key === FALSE) print "ぬるぽ";
とすればいい。
できればPHPのリファレンスマニュアルを熟読して欲しいな。
0414nobodyさん
2005/07/23(土) 00:26:45ID:???とりあえず、nullかどうかを判定するなら、is_null()を使うし、
関数の戻り値でfalseが返ってくる可能性があるなら
if($result === false)と型で判定するのが普通。
array_searchの戻り値がnullかどうかで判定しようとしてるけど、
PHP4.2.0以前のバージョンを使っているの?
ttp://jp.php.net/manual/ja/function.array-search.php
最近のバージョンならfalseが返ってくるから、
$key = array_search($val,$hoge);
if ($key === false) print "ぬるぽ";
とする必要がある。
0415412
2005/07/23(土) 00:29:24ID:???レスありがとうございます。
もちろんマニュアルは読んでNULLを返すって・・・アレ?
「注意:・・・NULLを返します」のところと勘違いしてたorz。
スレ汚し失礼しました。
ところでここの「警告」の記述にある
「・・・0や""といった値を返す可能性があります。」
というのは、0はともかく""ってどういう状況なのでしょうか?
連想配列でキーを空にできるということでしょうか?
0417nobodyさん
2005/07/23(土) 00:34:47ID:???以下だったら理解できる?
$hoge = array('', '10', '20', '30');
$val = '';
$key = array_search($val,$hoge);
0418412
2005/07/23(土) 00:37:22ID:???どうもありがとうございます。
ただの勘違いでした。
キーに空文字という状況がなかなか想像できないというか、
混乱しそうであまりやりたくない状況みたいですね。
0419nobodyさん
2005/07/23(土) 00:38:03ID:???PHPは型はないとか言われてるけど、実際はあるわけですよ。
で、falseとして評価される0や""を返しますって言ってるわけね。
どういう状況で0や""を返すのかは分からんが、
これらの値もfalseと評価されると書いてある。
でも、
「この関数の返り値を調べるには ===演算子を使用してください。」
と書かれてるので、ちゃんと === falseで比較すればいい。
論理値のマニュアルも参照のこと。
ttp://jp.php.net/manual/ja/language.types.boolean.php
0422nobodyさん
2005/07/23(土) 01:17:21ID:???ぐぐってみたらShiftJISのせいか・・・。
magic quotes gpcをoffにしたらとりあえずおさまったけど、
こんどは必要なところにaddslashesとかやらなきゃいけないのか・・・。
今まだ勉強中なのですが、早いとこEUCなどに切り替えるべきなのでしょうか?
今まで作ったソースとかMySQLのデータはまとめて変換できるのだろうか??
0423nobodyさん
2005/07/23(土) 01:24:11ID:???0424nobodyさん
2005/07/23(土) 01:44:11ID:???俺は、ソースはもちろんEUCだが、出力もPC向けの場合はEUCのまま。
だって、特に支障ないじゃん?
携帯向けの場合だけ、SJISに変換して出力してる。
まあ携帯でも最近の機種はEUCでも問題なく表示されるけどね。
0425nobodyさん
2005/07/23(土) 01:59:55ID:???index.phpのソースの頭で
-----------------------
<?
$path="c:\php\includes";
include "${path}\hoge.inc";
〜
?>
としているのですがこのエラーがでます。↓
main(c:\php\includes\hoge_init.inc):
failed to open stream: Permission denied in
C:\Inetpub\vhosts\webautomatic.info\httpdocs\index.php on line 2
ぐぐった所winにはパーミッションの概念がない、
という記載があったのですが実際にPermission deniedとなっています。
C:\Inetpub\vhosts\の他のドメインからは同じ
c:\php\includes\hoge_init.incがincludeできるのですが…。
winのパーミッションの変更方法、またはこのエラーから予想できる別の原因ありましたら教えて下さい。
0426nobodyさん
2005/07/23(土) 02:00:54ID:???いいんじゃないかと思った。
0427nobodyさん
2005/07/23(土) 09:23:53ID:???Windowsでもパーミッションの概念はあるんだけど。
エクスプローラからc:\php\includesのプロパティ→セキュリティを選択して
ユーザー "IUSR_コンピュータ名" に読み取り許可を追加してみれば?
あと
$path="c:\php\includes";
include "${path}\hoge.inc";
は
$path="c:\\php\\includes";
include "${path}\\hoge.inc";
でないとダメだと思う。
0428422
2005/07/23(土) 09:24:11ID:???超絶マンドクサいので全部EUCでやってみることにしよう。
�dクス。>>423,424
0430422
2005/07/23(土) 09:51:27ID:???あらゆる場面で文字コードをちゃんと設定しなければいけないわけですが、
・データベースにある生データの文字コード(EUCにしたほうがよさげ?)
・HTMLに出力する文字コード(ShiftJISかな?)
・フォームで受け取る文字コード(PHPにあわせるべき?)
・PHPファイル自体の文字コード(EUCに決まってるでしょ?))
以上4つに分けて意識しておけばよいのでしょうか?
たとえばEUCでHTMLを表示したとして、その中のテキストボックス等のフォームで入力される文字はやはりEUCになるのでしょうか?
それとも見る側のOSによって変わるのでしょうか?(Win&IEならShiftJISとか?)
また、データベースから抽出して表示する際に「機能」とかに「\」が付いてしまうのは、
・データベースからPHPで文字列を抽出した段階?
・PHPからHTMLを出力する段階?
どちらなのでしょうか?(後者だとなんとなく思っているのですが。)
ということは、とりあえずPHPファイルをエディタ等で全てEUCにするだけで解決するものなのか?
でもPHPファイルをEUCにしたら当然echo文の内容もEUCになるからHTMLもあわせてEUCにしないと化けるのか?
うぅ・・・わからん・・・。
0431nobodyさん
2005/07/23(土) 09:59:49ID:???数段になる物を作りたいのですが、2段目以降が1段目と同じ画像から
始ってしまいます。どこに手を加えればよいのでしょうか。ご教授ください。
$data[] = $_POST['t1'];
$data[] = $_POST['t2'];
$data[] = $_POST['t3'];
for($x=0; $x<3; $x++){
$w = 400/$data[$x];
$h = 300/$data[$x];
echo "<table><tr>";
for($a=0; $a<$data[$x]; $a++){
echo "<td><a href='img/$a.gif'>";
echo "<img src='img/$a.gif' width='$w' height='$h'>";
echo "</a></td>";
}
echo "</tr></table>";
}
0432nobodyさん
2005/07/23(土) 10:03:20ID:???とりあえず細かいことは気にせず、全てを「EUC」「改行はLF」で統一していけ。
そんで、場面に応じて必要があれば、別のエンコードを使っていく。
どの場面で変換の必要があるのか…が分からなければ、EUCのままで問題ない。
おそらく全部EUCにするのが、最も問題が起きにくいだろう。
0433nobodyさん
2005/07/23(土) 10:31:45ID:???問題を単純化すると、こうなる。
for($x=0; $x<3; $x++){
for($a=0; $a<$data[$x]; $a++){
// ここで、連続する数字を出す。
// 元のスクリプトだと$aなので、xのループの度に当然0に戻る。
}
}
どこまで数字を使ったかというカウンタをつければいいだけじゃないの?
0434422=430
2005/07/23(土) 12:30:27ID:???alter table tbl_hoge character set eucとかだとデータそのものは変換されないみたいだし。
しかたないからphpMyAdminでEUCに変換してCSV出力→インポートっていう手間なことをやったわけですが。
直接データを変換する方法があるのかな?
0435nobodyさん
2005/07/23(土) 12:50:52ID:???0436age
2005/07/23(土) 14:26:43ID:???何か改善案とかありますか?
ちなみに、「"a"」内に含まれる「"」は「""」みたいな感じでエスケープしています。
<?php
$fp = fopen("log.txt");
while ( !feof($fp) ){
$EndCount = 0;
$i = 1;
fseek($fp, $FilePointt,SEEK_SET);
while ($EndCount < 2){
$FilePointt = ftell($fp);
$tmp[$i] = fread($fp, 1);
if ( feof($fp) ){ break; }
if ( $tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n" ){ continue; }
if ( $tmp[$i] == "\"" ){
if($EndCount == 0){ $EndCount++; $i = 1; continue; }
$i = $i + 1;
$tmp[$i] = fread($fp, 1);
while ( ($tmp[$i] == "\n" || $tmp[$i] == "\r" || $tmp[$i] == "\r\n") ){$tmp[$i] = fread($fp, 1); }
if( ($tmp[$i] == "\"") && ($tmp[$i-1] == "\"")){ continue; }
else if ( $tmp[$i] != "\"" ){ $EndCount = $EndCount + 1; }
else{}
}
else{ $i = $i + 1; }
}
for($j = 1; $j < ($i - 1); $j++){ $tmp[0] = $tmp[0] . $tmp[$j]; }
$FilePointt++;
echo $tmp[0];
}
?>
0439nobodyさん
2005/07/23(土) 16:14:27ID:???出来ないんでしたっけ?
例えば
<a href="hoge.php" id=a><img src="a.gif"></a>
<a href="hoge.php" id=b><img src="b.gif"></a>
<a href="hoge.php" id=c><img src="c.gif"></a>
って感じで。
属性送るにはやはり
<form action="hoge.php" method="post">でないとダメですか?
0440439
2005/07/23(土) 16:18:03ID:???ごめんなさいごめんなさい
0441nobodyさん
2005/07/23(土) 17:12:43ID:???夏休みが始まったって感じ
0442nobodyさん
2005/07/24(日) 01:35:31ID:???<?php
print "<html>";
print "</html>";
?>
と全体を囲ってやるのかそれとも
<html>
<?php ?>
<?php ?>
</html>
と言ったように部分でやるのですか?
0444nobodyさん
2005/07/24(日) 01:48:59ID:???次 : <?php print "<html>"; 〜 ?> // 条件によってデザインが違うページを出すために試行錯誤
その次 : <?php include('テンプレート.html'); ?> // html部分の変更にブチ切れた頃
そのまた次 : <?php テンプレートエンジン ?> // ちょっとマジメにデザインとロジックの分離を考えてみた
今この辺 : フレームワーク // ちょっと泣きそう
0445nobodyさん
2005/07/24(日) 02:09:02ID:???普通にhtmlを書いてそれでphpコードをincludeするってことですか?
0446nobodyさん
2005/07/24(日) 02:18:54ID:???<?php
include(htmlのパーツを作るもと.inc);
htmlヘッダーをつくるファンクション($title);
サイドぼっくすをつくるファンクション();
中身をインクルード
・
・
・
?>
って感じ。
実際はこれらを条件分岐したり、case文つかうけど。
0447446
2005/07/24(日) 02:21:02ID:???実際はもっとファイルを分けていくつもインクルードしてる。
見通しが良いし修正も楽なんでこんな感じだけど変ですかね?
0448444
2005/07/24(日) 02:29:10ID:???・include版
テンプレート.htmlは <?=$変数 ?>ってな感じで、用意しておいた変数を置き換える。
そのため、行列数が変動するテーブルを出力するには、1つの変数にtable全部を入れなきゃいけなかった。
また、テーブルに色をつけたい時は、スクリプトの修正(or CSS用変数の変更)が必要だった。
・テンプレートエンジン版
オイラの使ってたやつでは独自タグを使ってループを扱う事ができたので、
配列をそのまま渡すだけで必要な分だけテーブルの行列が自動生成された。
テーブルの色を変更するには、大体の場合においてhtml側の修正だけで可能。
>>445
ちょっとしたデザインの変更のために、スクリプト(ロジック)を弄らなきゃいけないかどうか。って感じです。<分離
0449nobodyさん
2005/07/24(日) 02:40:12ID:???htmlヘッダー作るファンクションって具体的にどんなものなんですか?
宜しければ参考のために知りたいのですが・・・
0450nobodyさん
2005/07/24(日) 03:53:56ID:???そいつは単にプレゼンテーションロジックの分割であって、
>>442が聞いてきたものとは違うと思うけど...
0451nobodyさん
2005/07/24(日) 09:05:54ID:???「デザインは気にしない」
0452nobodyさん
2005/07/24(日) 09:28:48ID:m0On1eMVをクリックすると、とやると、
一番上の、wikipadiaの短歌がでますが、
リンクはURLエンコードされてますが、
下の緑部分は、「ja.wikipedia.org/wiki/短歌」と、
なってます。
これって、どうやって実現することが可能なのでしょうか?
よろしくお願いいたします。
0454452
2005/07/24(日) 14:00:18ID:rmOxqcKRpath_info のほうはしらべてないけどとりいそぎ・・・
--
URL「A」にアクセス(するようにみせかけて)⇒mod_rewrite⇒(実は)実質URL「B」にアクセス
で、「A」が「ja.wikipedia.org/wiki/短歌」、
「B」が「ja.wikipedia.org/wiki/%E7%9F%AD%E6%AD%8C」
ってことであってます?
0455nobodyさん
2005/07/24(日) 16:15:17ID:hO//Dl4vhttp://www.stackasterisk.jp/tech/php/apc01_01.jsp を参考にやってるのですがうまく動作しません。
http://pecl.php.net/get/APC-3.0.4.tgzをDLして tar zxvf APC-3.0.4.tgz
cd APC-3.0.4
phpize
./configure --enable-apc
make
mkdir /usr/local/lib/php/extensions
cp modules/apc.so /usr/local/lib/php/extensions/
vi php.ini
extension_dir = ./ 変更→ extension_dir = /usr/local/lib/php/extensions/
↓追記
zend_extension="/usr/local/lib/php/extensions/apc.so"
apc.mode = mmap
apc.cachedir = /tmp
apc.check_compiled_source = 1
apc.check_mtime = 1
apachectl restart
apacheとphpは普通に動作してるのですが、/tmpにキャッシュされたファイルができず、apcinfo()も使えません。
apache1.3.33 php4.4.0 sentos4.1です。
手順におかしな点などありましたら指摘お願いします。
0456455
2005/07/24(日) 16:16:01ID:???0457452
2005/07/24(日) 19:36:07ID:rmOxqcKR0458nobodyさん
2005/07/24(日) 19:58:28ID:???HTTP接続はfsockopenで出来るのですが、HTTPSの方法が分かりません。
鯖はFreeBSD4, PHP4.4(SafeModeなので、Pearは利用できないです)です。
PerlでLWPを利用したものをPHPに移行する必要が出てしまったので、どなたかお助け下さいm(__)m
0459nobodyさん
2005/07/24(日) 20:52:41ID:???このメーリングリストで投稿されたメールの表題の最新n件をなんらかの形で取得してページに埋め込むということを実装してみたい。
目的は、会員外のひとにもどんなやり取りがされてるのか表題だけでも見て興味を持ってもらいたいわけなのです。
これのために、一つフリーのwebメールのアカウントをとって、それでMLを受信。
そのwebメールのメール一覧を取得、ってパターン。
gmailってどうやらRSS配信出来るらしいので、gmail垢を作ってそこでMLを受信。RSSを取得ってパターン。
php以前の方法を考えてる段階なのですが、これをphpで実現するためにはどんな方法をまず採用したらよいでしょうか?
0461nobodyさん
2005/07/24(日) 23:34:00ID:???途中経過は更新ボタンを押して確認しようと思っています。
0462nobodyさん
2005/07/24(日) 23:54:59ID:???携帯に送る為に、時間空けてメール配布するのかな?
そうじゃなくて、普通にメール配信だけなら、途中経過も何も
ログでしか無いと思うけど
0463nobodyさん
2005/07/25(月) 00:05:09ID:???えとまだサイト開設していないんですが、会員制のサイトで目標が2万人くらいなんですよ。
将来的なことを考えて作成してるのですけど、途中経過&終了などを数字で見れると便利なので。
前にバイトで某サイトのスタッフをしていたときのメルマガ配信システムは条件(興味のあるカテゴリ等)で会員を絞って
そこから配信を開始する感じだったのですが、配信開始のボタンを押すと
現在配信した数/総配信数
【更新ボタン】
という感じで現在の状況を把握できたのです。
自分のサイトもこんな感じのを使いたいなと思いまして。
0464461
2005/07/25(月) 00:05:51ID:???0465nobodyさん
2005/07/25(月) 00:52:48ID:???PHPでやるなら現在何通目かファイルにでも出力するくらいしか思いつかない。
俺的にはPHPで30秒を超える処理ってなんか気持ち悪い。
0466461
2005/07/25(月) 01:32:39ID:???レスありがとうございました。
ファイルにカウントしたものを出力する方法でやってみます。
どうもありがとうございました。
0468452
2005/07/25(月) 04:03:29ID:???0469nobodyさん
2005/07/25(月) 05:57:06ID:gR3tRl1WSQLひとつごとにDB接続するのが普通なんでしょうか?
「pg_pconnect()」はどのタイミングで切れるのかよく
わからないので、使いづらいのですが、こっちが一般的でしょうか?
あと、接続文字列にパスワードとかユーザ名が入ってしまうのを
避ける方法ってないでしょうか?
内部で使うものですけどサーバにアクセスできるユーザだと
プログラムのソース覗かれてIDとかばれちゃうのは避けたいので
以上、素人くさい質問ばかりですが、調べてもよくわからなかったので
回答お願いします('A`)
0470nobodyさん
2005/07/25(月) 07:52:08ID:???大量のメールを配信しようと思ったら、実行時間が30秒じゃハナシにならんぜ。
俺は専鯖で、デフォルトのphp最大実行時間は60秒にしてある。
これをもっと長く(300秒とか)しようかとも思ってるんだけど、
それでも別に問題ないよな??
0471nobodyさん
2005/07/25(月) 08:55:18ID:???header('Content-Type: text/plain');
として、実際に出力されたヘッダを見ると、
Content-Type: text/plain; charset=EUC_JP
とcharsetがついちゃうんです。
これってどうやって制御したら良いでしょうか。
0472nobodyさん
2005/07/25(月) 09:02:51ID:???0473nobodyさん
2005/07/25(月) 09:07:19ID:???気持ち悪いと言っただけで、問題ないんじゃないかと。
>>467
webメールから取ってくることもできるでしょう。
すごい大変そうだけど。
どっちもPHPでできなくはないと思いますが、PHP以外のほうがよさそうな気もします。
>>469
pg_pconnectだと接続があればそれを利用する。なければ接続する。
>サーバにアクセスできるユーザだと
>プログラムのソース覗かれてIDとかばれちゃうのは避けたいので
↑こういう状況をどうにかしたらいいのではないでしょうか?
0474nobodyさん
2005/07/25(月) 11:09:00ID:???どなたかお願いします
$PF18[0] &= ~0x80;
0475nobodyさん
2005/07/25(月) 11:17:13ID:hJtfvc56漏れはお前の考え方が気持ち悪い。
0477474
2005/07/25(月) 11:34:31ID:???まだ試してないんですが、このままで良かったのか・・・
ついでというかたぶん本題です
「= ~$data」の意味を教えてください
0478476
2005/07/25(月) 11:49:04ID:???┐(゚〜゚)┌
http://www.php.net/manual/ja/language.operators.bitwise.php
0479474
2005/07/25(月) 11:56:38ID:???0480nobodyさん
2005/07/25(月) 13:11:36ID:???ありがとうございます。
どうにか警告を表示させることができました。
foreachで$key=>を省略すると容赦なく警告が出るんですね。
0481nobodyさん
2005/07/25(月) 13:13:18ID:tPLQwkjKPHP5にはC,C++,Java5にあるようなenum型(列挙型)は
ありますでしょうか?
あれば便利だなあと思いまして。
それとも既存の配列がそのまま列挙型として使える?
ものなのでしょうか?
ハッシュとしても使えるようですし
0482nobodyさん
2005/07/25(月) 13:52:30ID:???0483nobodyさん
2005/07/25(月) 13:57:14ID:???enumねぇ・・・
foreach (array('MONDAY', 'TUESDAY', 'WEDNESDAY', ...) as $i => $name) define($name, $i);
・・・無理があるな・・・orz
っていうか「列挙型」なるものはありえないな。
だって変数に「型」自体がない。
$x = MONDAY; // $xは列挙型なつもりでも
$x = "うんこ"; // なんのエラーもなし。
結論:配列でガンガレ!(enumとは完全に別口なやり方になると思うけど)
0484nobodyさん
2005/07/25(月) 15:38:13ID:???0485nobodyさん
2005/07/25(月) 17:34:01ID:???URLにユーザ情報を持たせるにはどうしたらいいでしょうか?
ちょうどdel.icio.usのような感じで。↓のoneとtwoがユーザ名
ttp://del.icio.us/one/
ttp://del.icio.us/two/
ユーザ登録したときにディレクトリ(one,two)を作成して
スクリプトをコピーしてもいいのですがメンテナンスが大変、というか間違っている気がする。。。
htaccessで転送をかけるとURLが変わってしまうし。
すごい初歩的なことかもしれないんですが、さっぱり解りません。
どうかよろしくお願いします。
0486nobodyさん
2005/07/25(月) 19:32:09ID:???Cookieでも使えば?
0487485
2005/07/25(月) 19:47:06ID:???ありがとうございます。
ユーザの特定にCookieを使うのですよね?
それで、URLの最後のディレクトリと付き合わせる。
その認証自体は ttp://del.icio.us/one/ なら
/one/index.php で行わなければいけないわけで
全ユーザに対してそのスクリプトを用意するには
やはりユーザ登録したときに元となるスクリプトをコピーして?
プログラムに変更が生じたときの対処も解らなかったのですが
ユーザがログインするたびに
/one/index.php を上書きコピーすればいいのでしょうか。。。
ほんとうに初心者なもので、意味不明だったらすみません。orz
0488458
2005/07/25(月) 20:38:37ID:???GETならいろいろな方法があるのにorz
0489nobodyさん
2005/07/25(月) 23:49:32ID:???「test.php」を以下の内容で作成しました。
--- test.txt --------------------
/tmp/hoge.dat
--- test.php --------------------
<?php
$line = file("test.txt");
$filename = "$line[0]";
echo date( 'Y/m/d (D) H:i:s', filemtime($filename) );
print "$keyword"."<br>";
?>
これを実行すると、
PHP Warning: filemtime(): Stat failed for /tmp/hoge.dat
(errno=2 - No such file or directory) in /tmp/hoge.dat
1970/01/01 (Thu)
とエラーが出て、正常に日付が取得できませんでした。
そこで上記のプログラムの2、3行目を
$filename = "/tmp/hoge.dat";
と変えて実行すると正常に日付が取得できたので、パーミッションの問題ではないと思っています。
上記の内容では何が問題なのでしょうか?
ご教授お願います。
0490nobodyさん
2005/07/26(火) 00:02:31ID:???echo bin2hex($line[0]);
echo bin2hex("/tmp/hoge.dat");
0492nobodyさん
2005/07/26(火) 08:52:10ID:???PHPでの出力を一行一行書き出していくやり方しか分かりませんでした。
何か良い方法はないでしょうか?
初心者質問ですみません。。
0493nobodyさん
2005/07/26(火) 09:03:03ID:???0494nobodyさん
2005/07/26(火) 12:01:00ID:???どうやったらpost_max_sizeを超えたかどうかをスクリプト中で判断する事が出来るでしょうか?
0495nobodyさん
2005/07/26(火) 12:02:33ID:???パラメータを省略して呼び出した場合
NULLとなってくれるでしょうか?
$hoge=>Charge();
function Charge($p)
{
echo is_null($p)?'NULL':'NON';
}
実際に何回かやってみたのですが、$pは期待通りNULLとなったのですが
PHPの仕様でNULLになっているのか偶然NULLになったのか判断できないのです。
どうぞよろしくおねがいします。
0496nobodyさん
2005/07/26(火) 13:00:27ID:???$hoge=>Charge()が何なのか不明だが引数を省略するなら
function Charge($p=NULL)
としないと「引数が足りないエラー」になるはず。
0497nobodyさん
2005/07/26(火) 13:20:21ID:???HTMLの構造上、表向きには表示されてませんでしたが
ソースを表示したらおっしゃるとおり
Warning・・・・・・・・エラーが出てました。
0498nobodyさん
2005/07/26(火) 14:18:20ID:???以下の流れで余分な処理・追加した方がよい処理はあるでしょうか?
ロックファイルをオープン リトライ処理
ロックファイルをロック リトライ処理
目的ファイルをオープン リトライ処理
目的ファイルをロック リトライ処理
目的ファイルを処理
目的ファイルをロック解除・クローズ
ロックファイルをロック解除・クローズ・削除
リトライ処理とは、失敗した場合に時間を空けて再挑戦し、また失敗したら終了する処理です
スレ違いな気もしますが一応phpで作ってるので・・・よろしくお願いします
0499nobodyさん
2005/07/26(火) 15:43:02ID:2Byv/a8Jそのキーワードでグーグル検索できるようなリンクを自動的に生成したいのですが
どのようにすればよいのでしょうか?
全部教えてとは言いません
使う関数だけでも教えていただけたらと思います
よろしくお願いします
0500nobodyさん
2005/07/26(火) 15:53:15ID:???mb_ereg_replaceを使って<a>タグを追加。
0501nobodyさん
2005/07/26(火) 16:22:24ID:???urlencodeがいるので、こんな感じか
<?php
$str = '[キーワード]をググる';
echo preg_replace_callback('/\\[(.*?)\\]/', 'add_google_tag', $str);
function add_google_tag($m) {
return '<a href="http://www.google.co.jp/search?q='
. urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[1] . '</a>';
// return '<a href="http://www.google.co.jp/search?q='
// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>';
}
?>
下側のコメントアウトしたreturnはカッコを残しておくバージョン。
0502nobodyさん
2005/07/26(火) 17:40:53ID:mEdDXXbKどのような処理が最も単純でしょうか? お願いいたします。
0503nobodyさん
2005/07/26(火) 18:34:05ID:???・preg_grep で「空要素で無いもの」だけを抽出
・その配列を利用する段階で「空要素」を無視
・空要素が入ってしまう様な配列を生成しない
お好きなものをどうぞ。
0504502
2005/07/26(火) 18:49:59ID:???回答ありがとうございます。一発で配列から空の要素を
取り除いてくれるような関数はないんですね。
やっぱり3番目になると思うので、質問の前の段階から
お話しますと、文字列を mb_split で分割してるんです。
PREG_SPLIT_NO_EMPTY みたいなオプションがあれば
いいんですが、mb にはありませんよね?
ですので、先に mb_ereg_replace で空白に置換した後、
PREG_SPLIT_NO_EMPTY で行くことにします。どうも
ありがとうございました。が、もしもっと(・∀・)イイ!方法が
ありましたら、どうぞご教示願います。
0505nobodyさん
2005/07/26(火) 19:30:06ID:???webページを静的なままphpを動作させる方法ってあるんでしょうか?
0506nobodyさん
2005/07/26(火) 19:37:43ID:???0507489
2005/07/26(火) 20:12:52ID:???レスありがとうございます。
最後に改行が入るんですね。
改行を消してやれば期待した通りに動作しました。
>>491
元々使用していたtest.txtにはファイル名に半角スペースを含むものがあるので
それで誤動作していたのかと思い、""で括りました。
その後、>>489のような最低限のプログラムでテストをしたため、そのままになっていました。
0510nobodyさん
2005/07/26(火) 20:26:54ID:DRNxxqTe0513nobodyさん
2005/07/26(火) 20:40:11ID:dI24bXxa出場したやつがはいることになった・・・はげしくできそうで、俺首の予感
・・・・レベル高いんだろうなきっと
0514nobodyさん
2005/07/26(火) 20:44:13ID:???え、俺?趣味です。。
0515nobodyさん
2005/07/26(火) 21:43:53ID:???たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。
: スルーしてくれ。
0516nobodyさん
2005/07/26(火) 21:44:39ID:???たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。
: スルーしてくれ。
0517515 516
2005/07/26(火) 21:59:10ID:???0518nobodyさん
2005/07/26(火) 22:23:04ID:???php用のライブラリも幾つかあった気がするなぁ。
0519nobodyさん
2005/07/26(火) 22:24:41ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0520nobodyさん
2005/07/26(火) 22:28:29ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0521nobodyさん
2005/07/26(火) 22:30:03ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0522nobodyさん
2005/07/26(火) 22:32:06ID:DRNxxqTeエンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
0523nobodyさん
2005/07/26(火) 22:36:03ID:???展開するみたいな話だろ夏休みのアフィ厨めスレ違いだ死ね
0524nobodyさん
2005/07/26(火) 22:45:05ID:???0525nobodyさん
2005/07/26(火) 23:10:54ID:???function hoge(){
$hoge="ほげ";
}
echo $hoge;
functionの中にglobal $hoge;
っていれたらオーケーになった。
あと、
functionの中に
return $hoge;
って書く場合と上記の違いってなんでしょうか?
どっちにしろglobalはないとダメみたい。スコープ?
もう一つ、functionに与える引数
function syoukai($watashi,$syokugyou){
echo $watashi . "は" . $syokugyou . "です。";
}
って書く場合の$watashi,$syokugyouの部分の変数名は、functionの外側で使ってる名前は使っちゃうとまずいのでしょうか?
0528nobodyさん
2005/07/27(水) 01:16:36ID:???筆おろしとか、筆おろしとか、筆おろしとか・・・・
0529nobodyさん
2005/07/27(水) 01:40:52ID:???色々なサイトを見て回ったけど全く理解出来ないorz
0531nobodyさん
2005/07/27(水) 02:45:40ID:l/k2RuR9エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
0532503
2005/07/27(水) 03:12:16ID:???>ですので、先に mb_ereg_replace で空白に置換した後、
って、そんな事しなくても mb_split の段階で「mb_ereg_replace で空白に置換」
する対象を含めた区切り文字を指定すれば良いのだわ。多分出来る筈よ。
0534nobodyさん
2005/07/27(水) 04:33:43ID:???0535nobodyさん
2005/07/27(水) 05:01:58ID:???タイトルから質問が消えてるな
一応あるw
【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/
0537nobodyさん
2005/07/27(水) 06:33:37ID:l/k2RuR9レスありがとう。やってみます(`・ω・´)
0539nobodyさん
2005/07/27(水) 07:28:46ID:???右側に黒い線が残ってしまうことがあるんですが、これを回避する方法ってあるんでしょうか?
imagecopyresampled()だとこのような線は出ないんですが、サーバがGDver2に対応していないため、
imagecopyresized()を使っています。
0540531
2005/07/27(水) 07:37:22ID:???0541nobodyさん
2005/07/27(水) 07:59:45ID:???色々な写真でimagecopyresizedしてみたけど、黒い線みたいなものは出なかったな。
思いつく限りの原因は
・引数に指定した幅などがズレてる(少数点以下の丸めなど)
・jpegに元から黒い線が入ってる(スキャナから取り込んだか何かで手作業が雑だったとか)
あたりかな。でもimagecopyresampledだと線は出ないのか・・・。
まあ解決策としては、引数のdstWを1ピクセル余分にとるとか、srcWを1ピクセル少なくとるとか試してみては?
0542nobodyさん
2005/07/27(水) 10:52:23ID:???・PHPをモジュールで動かす
・C言語のバイナリCGI
どのような方法がありますか?
RedhatLinux、Apache、PHP5.0.4、gccを使っています。
0545nobodyさん
2005/07/27(水) 12:44:07ID:v2TCvlCUweb用のディレクトリにphpファイルを置いてブラウザで見ると
ちゃんと表示されることを確認したんですが、
それ以外のローカルフォルダに置いたphpファイルをIEに直接
放り込んでもphpが正しく表示させるにはどうしたらいいでしょうか?
0546545
2005/07/27(水) 12:45:27ID:???C:\Program Files\Apache Group\Apache2\htdocs
のことです。
0547nobodyさん
2005/07/27(水) 12:48:39ID:???file://だとApache経由しないのでPHP動きません
http://でしか表示できないので無理です
0549545
2005/07/27(水) 13:03:09ID:???拡張子が.phpのファイルをブラウザで表示したら
勝手にphpが起動、というわけにはいかないのですね。
0550nobodyさん
2005/07/27(水) 14:27:54ID:???PHPスクリプトを解釈してHTMLを吐き出しているのはサーバ。
0552nobodyさん
2005/07/27(水) 16:44:17ID:???0553nobodyさん
2005/07/27(水) 16:50:51ID:???出来るよ
0555nobodyさん
2005/07/27(水) 16:58:49ID:???0557nobodyさん
2005/07/27(水) 17:14:20ID:???ビミョーな答えだね
>555
ヘッダでCSSのMIMEタイプを指定
0558nobodyさん
2005/07/27(水) 17:21:40ID:???0560559
2005/07/27(水) 17:34:03ID:???こんな便利な機能がApacheに付いていたとは!
早速試したところ、PHPが速かったりCが速かったりでした。
ありがとうございました。
0561nobodyさん
2005/07/28(木) 01:28:15ID:???ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。
こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか?
問題としているのは以下の点です。
ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます)
ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。
あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか?
また、今回のケースはどちらをつかうのが適しているでしょうか?
0563nobodyさん
2005/07/28(木) 01:47:32ID:???もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
0564nobodyさん
2005/07/28(木) 02:51:26ID:/rx2yHMTこの関数、Javaのimport宣言とは異なり、
PHPを呼び出したいとき、
現在のPHPファイルのディレクトリと該当する
PHPファイルのディレクトリとの位置関係を
気にしなければならない難点がありますね。
そこでディレクトリの位置関係を気にせずに
Javaのimport宣言のように
require()を使いたい各PHPファイルだけが
必要なPHPファイルときだけrequire()を呼び出すように
したいものです。
require.inc の中に必要なPHPファイルのrequire_onceを
全部書くというやりかたもありますが
それだとPHPファイルの数が増えれば増えるほど
見通しが悪くなりコードの解析が困難になります。
Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名
になるようなものがPHP5にもあればいいのですが
残念なことにnamespaceも不採用になったため思うようにいきません。
0565564
2005/07/28(木) 02:52:09ID:???私がやりたいことはこういうことです。
require_onceを各場所はrequire.incのようなファイルに一ヶ所に各のではなく
各phpファイルに必要なときのみ記述するように分散させたい。
例として、
main.php がdir1/a.php, dir2/subdir1/b.phpを必要としている場合は
そのrequire_onceをmain.phpの中に書く。
dir1/a.phpがx.php, dir2/y.php, dir2/subdir1/b.phpを必要としている場合は
require_onceの重複にかかわらずそのrequire_onceをmain.phpの中に書く。
環境の移行に即座に耐えられるようにするため絶対パスの変更を強いるような真似は
極力避けたいため、各require_onceのパスは相対パスにしたい。
main.phpがあるところを基準にディレクトリとしディレクトリ名は無しにしたい。
以上を実現したいのですが可能でしょうか?
get_cwd()を使って
require_once get_cwd().'/dir1/a.php';
なんてことをやりましたがプログラムを実行するカレントディレクトリを変えると動かなかったのでやめました。
require_once getdir(get_realpath(__FILE__)).'/dir1/a.php';
も使ってみましたが、__FILE__を指す場所というのが、__FILE__を記述したファイルパスしか
指定できなかったため、この方法も断念せざるを得ませんでした。
0566nobodyさん
2005/07/28(木) 03:17:47ID:???config-hostspecific.inc
define("PACKAGE_DIR","/path/to/package");
main.php
require_once(PACKAGE_DIR."dir1/x.php");
require_once(PACKAGE_DIR."dir2/.....
javaだってCLASSPATHを設定するんだし、
全自動はトラブルのもとだとおもうよ。
0567nobodyさん
2005/07/28(木) 03:19:00ID:???include_pathを変更するという方法はどう?
-- config.php --
<?php
// config.phpが置かれているディレクトリのパスを取得
$lib_path = dirname(__FILE__);
// インクルードパスに設定するパスのリスト
$include_path_list = array(
$lib_path, // 追加するパス
ini_get('include_path'); // 既存のパス
);
// インクルードパスを変更
ini_set('include_path', implode(PATH_SEPARATOR, $include_path_list));
?>
---------------------
このconfig.phpをすべてのスクリプトの先頭で必ずrequire_onceするようにすれば、
config.phpの置かれているディレクトリから相対で指定できるようになる。
config.phpをrequireする部分はどうしても、___FILE___から相対パスを指定するか、
絶対パスを指定するなどになってしまうけど。
その変は仕方ないよね。
0568nobodyさん
2005/07/28(木) 03:38:52ID:???まず、テーブル設計(というかSQLか)に関して。
・階層の階数が固定なら outer joinで。(SQL92だから大抵のDBで使えるかと)
・固定じゃないなら、そのDBで再帰SQLを扱えるならそれを、扱えない場合でも拡張機能をうまく使えばできる場合もあり。
(そのDBのメーリングリストで議論されていることが多い。再帰SQL、recursive sql、親子、ツリー などをキーワードに)
・テーブル設計に手を加える。いろいろ方法があるみたいだけど、例えば
ttp://www.sitepoint.com/article/hierarchical-data-database あたりが参考になるかな?
・2chのDB板のモデリング関係のスレで幾つか見た気がする。
この辺りのお話で分からない事があればDB板へ。
で、上のような事は一切やらないとしてPHPの話に戻ると、オイラはevalを使うのは嫌いなので再帰関数を使う。
0569nobodyさん
2005/07/28(木) 03:42:12ID:???>ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
0571nobodyさん
2005/07/28(木) 10:40:18ID:???無くてもいいの?
0575nobodyさん
2005/07/28(木) 11:02:56ID:???認証方法はどういったものがありますか?
0576nobodyさん
2005/07/28(木) 11:28:27ID:???特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)
>>575
質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
0577nobodyさん
2005/07/28(木) 16:09:03ID:???for ($c = 'A'; $c <= 'Z'; $c++) {
print $c.' ';
}
とやったのですが
なぜか
A B C ・・・ X Y Z AA AB AC ・・・ YX YY YZ
と676回ループします。
条件式をから=を取って $c < 'Z' としたら
A〜Yまでの25回のループで終わるのですが
これはナゼでしょうか?
バグですか?
PHP 4.3.10
0578nobodyさん
2005/07/28(木) 16:31:26ID:???なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
for ($c = ord('A'); $c <= ord('Z'); $c++) {
print chr($c).' ';
//printf('%c ', $c); //こちらの記述でもOK
}
0579nobodyさん
2005/07/28(木) 16:38:32ID:???Cと同じ感覚でやってみたのですが
こうゆう場合はordを使わなければダメなのですね。
ordの関数がどういうものか調べてやってみます。
勉強させていただきました。
0580nobodyさん
2005/07/28(木) 16:44:17ID:???('A')って(´Д`)に見えるな。
0581nobodyさん
2005/07/28(木) 16:45:31ID:iGAmBrlm0582nobodyさん
2005/07/28(木) 17:04:32ID:???http://www.php.net/manual/ja/language.operators.increment.php
例 15-2.
これは知らなかった・・・orz
0583nobodyさん
2005/07/28(木) 17:14:27ID:???漏れも知らんかった。。。まぁ普段こんなコードは書かないだろうけど。
インクリメント演算子だけ特別扱いしているんだね。
$x='A';
$x++;
print $x; //B を表示
$x='A';
$x=$x+1;
print $x; //1 を表示
0584578
2005/07/28(木) 17:20:42ID:???お〜、そうだったのか。ということは>>577のコードはこんな風に書けば動くのか。
for ($c = 'A'; $c != 'AA'; $c++) {
print $c.' ';
}
こんな記述はやっぱりやだ。。。
0585軟式PHP
2005/07/28(木) 18:14:24ID:???0586nobodyさん
2005/07/28(木) 18:21:21ID:???0587nobodyさん
2005/07/28(木) 18:48:14ID:???0588nobodyさん
2005/07/28(木) 19:49:35ID:???orz
0589nobodyさん
2005/07/28(木) 20:08:22ID:???0590nobodyさん
2005/07/28(木) 20:10:22ID:???0591nobodyさん
2005/07/28(木) 20:19:33ID:???OTZ
0592nobodyさん
2005/07/28(木) 20:25:50ID:???0593nobodyさん
2005/07/28(木) 20:34:17ID:???0594nobodyさん
2005/07/28(木) 20:45:50ID:???0595nobodyさん
2005/07/28(木) 21:53:16ID:iGAmBrlmソース書く時に半角スペースあるじゃないですか、それってぶっちゃけ自分どこを空けるかわかんないんだけどやっぱ空けた方がいいの?てか空けないと不具合起きる?
0596nobodyさん
2005/07/28(木) 22:18:08ID:???シフト表のような、横軸に時間を表示して各行に誰が何時から何時まで何の作業をするか、
というグラフを
MySQLに登録したデータを下にPHPで抽出して、
TABLEタグで単位時間(10分)あたり1つのセルを区切って
作業時間に当たる部分のセルを結合・作業内容を表示する、
といったグラフを表示するスクリプトを作ったのですが、
こういうTABLEタグを使ったグラフの表示というのはお作法的に如何なものなのでしょうか?
JpGraphなどは利用したことはないのですが、それらのライブラリを使う等で画像で表示するほうがよいのでしょうか?
「テーブル厨」と言われるかもしれないのは分かっているのですが・・・。
0600596
2005/07/28(木) 23:07:28ID:???レスありがとうございます。
ローカルでExcelでグラフを作成してアップロードすればいい、ということでしょうか?
誰かが元データに追加・変更を加えるたびに自分でローカルで作業、というのは避けたいので
できれば常に最新のデータから自動生成するか、あるいは追加・変更時にグラフ・画像生成という形にしたいのですが。
よろしくお願いします。
0602561
2005/07/28(木) 23:31:00ID:???色々ヒントをありがとうございます。
しかし、自分には難しく無理そうですが少しずつ、自分でそれらを使えるように頑張りたいと思います。
ところでなんでevalがお嫌いなんでしょうか?
スクリプティングのノウハウがあまりない者にとってはちょっとややこしい事を実現するにはすごく便利と感じているのですが。
>>569
すいません、確かに自分でもそう感じています。
もっと良い方法があるはずだ、とは思うのですが、その方法をきいたところで自分ですぐに出来るようになるとはとても思えないのもまた事実です。
>>570
現実的にそんな感じのスクリプトはレンタル鯖で使うと怒られたりするでしょうか?
0604nobodyさん
2005/07/28(木) 23:50:48ID:???$str = 'この中にページの内容を全部ぶっこんで';
ページの一番下に↓を入れればいいってこと?
>echo preg_replace_callback('/\\[ASIN:(.*?)\\]/', 'add_google_tag', $str);
中略
>// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>'; }
漏れの知識ヤバス・・・(;´・ω・)
0607nobodyさん
2005/07/29(金) 00:03:42ID:???ブラウザによって見え方が違ってくるので調整が結構難しいけど、
htmlのテーブルで棒グラフを表現するパターンは比較的採用されることの多い手法。
ただ、その場合グラフの再利用性が悪いのでGDなどのグラフィックライブラリが
使える環境な、ちゃんと画像生成してやった方がいい。
JpGraph使ってもいいけど、棒グラフ程度なら自分で好きな風に組んだ方が楽。
(HotScriptとかいけば、棒グラフだけ描画するライブラリとか軽いのもある)
0608nobodyさん
2005/07/29(金) 07:49:53ID:???$hoge = & new Hoge();
と
$hoge = new Hoge();
後者はメモリに Hoge オブジェクトが2つできるという解釈であっていますか?
0609nobodyさん
2005/07/29(金) 08:38:39ID:???だけど本当にメモリ上にできるかまではわからん。
実はPHPも裏ではもっとスマートに動いているという話も聞いたことある(真偽のほどは定かではない)。
まーPHP4では基本的に&をつけといたらそれでおkだと思われ。
つーか本当のことを知ってるor実際に測定可能orソースコード読める香具師いたら教えて。
0610nobodyさん
2005/07/29(金) 13:37:32ID:???つけていないソースがいくつかあったので自分の考え違いと思って質問した次第です。
どうもありがとうございました。
つけない場合は構文通り2倍メモリとるんですかね、、興味深いです。
0611nobodyさん
2005/07/29(金) 14:04:20ID:13Ftmuficopy($_FILES['upfile']['tmp_name'],$copy_name;
}
としたところアップロードしたファイルが日本語名のファイルだと0バイトのデータになってしまうのですがなぜでしょう?
一つ気になったのですが、php.iniでupload_tmp_dirに/tmp/phpと指定してるのですが、アップロードを行っても/tmpにも/tmp/phpにもファイルはできません。
半角英数字のファイルだと問題なくコピーできます。
0612nobodyさん
2005/07/29(金) 14:19:05ID:???PHP4までは&をつけないとメソッドとかまで全てコピーしていたみたいよ。
0614nobodyさん
2005/07/29(金) 15:18:15ID:???ShiftJISだと問題が起こった気がする。
解決策も無かった気がする。
0615nobodyさん
2005/07/29(金) 15:24:31ID:???$hoge = new Hoge();
$moge = $hoge;
$mora = & $hoge;
で、いつ消えるかはさておき、生成される Hoge オブジェクトの個数は
3個ということでおkですかね?
0616nobodyさん
2005/07/29(金) 16:04:56ID:???class Hoge{
var $data;
}
$hoge = new Hoge(); $hoge->data = 'hoge';
$moge = $hoge; $moge->data = 'moge';
$mora = & $hoge; $mora->data = 'mora';
printf('hoge : %s\n',$hoge->data);
printf('moge : %s\n',$moge->data);
printf('mora : %s\n',$mora->data);
0617nobodyさん
2005/07/29(金) 16:25:55ID:???$hoge = new Hoge();
で、物理メモリ上に2コオブジェクトができるか否かなんだとおもう。
しかし、 $mora ってなんだかしおしおになるな。orz
0618nobodyさん
2005/07/29(金) 17:07:24ID:yP6BN9nbすみません,MySQLのデータをPHPで吐き出したいのですが,
データに$(ダラーマーク)が含まれる場合はどのようにしたらいいのでしょうか?
例:
Prizeフィールドに
$100,000
$125,000
とあった場合
PHPで
(SQL文)
$data = mysql_db_query("usrdb",$sql, $connect);
$row = mysql_fetch_array( $data );
$prizedt = $row["Prize"]
として変数を格納した後,
<td>$prizedt</td>とした場合,うまく吐き出せなく,\$prizedtでもうまくいきませんでした.
どうすればよろしいのでしょうか?
0619nobodyさん
2005/07/29(金) 17:30:59ID:???MySQLスレでecho "<td>$prizedt</td>";でOKとレスもらっているみたいだけど
ダメなん?
<td>$prizedt</td>をどういうコードで吐き出しているんだ?
0620nobodyさん
2005/07/29(金) 17:39:02ID:???要するにmysql_fetch_array()でどういう構造の
Arrayが返ってくるか理解汁。
0621620
2005/07/29(金) 17:43:39ID:???0622nobodyさん
2005/07/29(金) 17:56:49ID:???mysql_db_query()とは、えらくまた古風な関数だな。
どんな本参考にスクリプト書いてるの?
まあそれとは別に処理の途中でビシバシとエラーが
出てるような気がするんで、デバッグ中は
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('error_reporting', E_ALL);
とでもしとこうな。
0623nobodyさん
2005/07/29(金) 18:05:52ID:???php.ini等でどぞ。
0624nobodyさん
2005/07/29(金) 18:12:00ID:???display_startup_errorsってPHP_INI_ALLなんだけど。。。
設定は反映されるけど実際には動作しないってこと?
0625618
2005/07/29(金) 18:52:48ID:???実際に使うデータの変数の名前がいけなかったのが原因でした。
お騒がせしました。これから精進してまいります。
0626nobodyさん
2005/07/29(金) 19:22:51ID:66TM2wnlCR+LFでないとダメでしょうか?
それともLFでも大丈夫でしょうか?
0627nobodyさん
2005/07/29(金) 19:52:39ID:msnOOfVb0628nobodyさん
2005/07/29(金) 19:55:31ID:???SMTPサーバー(qmail, sendmail, postfix etc)によっては
LFでも送信してくれる「かも」しれない
LFでないとエラーにする「かも」しれない
RFCで改行コードはCRLFと規定されているので横着せずに変換汁。
str_replace辺りで一発で変換できるでしょ。
0629nobodyさん
2005/07/29(金) 20:00:38ID:66TM2wnlmb_send_mail()で改行コードの自動変換はしてくれないんですかね?
0630nobodyさん
2005/07/29(金) 21:03:57ID:???テキストエリアに挿入されているソースが
ファイルとしてダウンロード出来るプログラムを
作ろうと思っています。
ただ、これに利用される関数とかよくわかりませんので
参考サイトとかありましたら、教えていただけないでしょうか?
0631nobodyさん
2005/07/29(金) 21:06:25ID:???入力された文字列をダウンロードさせるってことか?
それとも、テキストエリアにデフォルト値として出力したものと同じものをダウンロードさせるってこと?
ダウンロードさせるならheader関数
0632630
2005/07/29(金) 21:12:00ID:???0633596
2005/07/29(金) 23:44:47ID:???どうもありがとうございます。
とりあえずGDに手をつけてみようかと思います。
ところで、このような画像生成を使って最新の情報を表示させたい場合には、
毎回データ読み込み→画像生成を行うものなのでしょうか?
それともデータを更新する度に画像生成・保存して通常はそちらを表示させるものなのでしょうか?
サーバーにとっては保存しておいた画像を表示するほうが負荷は低いとは思うのですが、
毎回画像生成させてもそれほど負荷がかからない、というのであればそっちもいいかなと思っています。
どなたかアドバイスお願いします。
0634nobodyさん
2005/07/30(土) 01:18:21ID:???別におかしくありませんよね?(書き方は別として。。)
なぜかサーバにアップされてもなかなか処理が実行されず
おそらく無限ループのようになっています・・。
<html>
<body>
<table border="1">
<?
$fruit=array("バナナ","りんご","みかん");
$a=0;
while($a<4){
print"<tr>";
print"<td>";
print"$fruit[$a]"."\n";
print"</td>";
print"</tr>";
$a++;
}
?>
</table>
</body>
</html>
0635nobodyさん
2005/07/30(土) 01:50:54ID:???素人考えだが、無限ループしてる場合なら無限に書き出されるのでは?
apacheのエラーログではどうなってるの?
> print"$fruit[$a]"."\n";
の部分を
print ("xxx");
とかにしたらどうなる?
てかprintの内容を("")でくくらないのはドウなの?OKなの?
0636nobodyさん
2005/07/30(土) 01:52:45ID:???<html>
<body>
<table border="1">
<tr><td>バナナ
</td></tr><tr><td>りんご
</td></tr><tr><td>みかん
</td></tr><tr><td>
</td></tr></table>
</body>
</html>
こういうソースを吐くな。
「<?」を「<?php」にしたら普通に動いた。
0638nobodyさん
2005/07/30(土) 02:30:19ID:???そりゃ閲覧頻度とデータ更新頻度にも依るがな。
誰も閲覧しないのにデータだけ黙々と更新され続ける場合と
データは余り更新されないのに、激しく閲覧されるものとは扱いが違う。
グラフ生成の負荷なんて大したことない場合が多いから、
個人の普通のサイト程度の閲覧頻度なら、どっちでもいいと思うけど。
0639634
2005/07/30(土) 02:50:11ID:???<html>
<body>
<table border="1">
<?php
$fruit=array("バナナ","りんご","みかん");
$b= count($fruit);
$a=0;
while($a<$b){
print("<tr>"."\n");
print("<td>");
print("$fruit[$a]");
print("</td>"."\n");
print("</tr>"."\n");
$a++;
}
?>
</table>
</body>
</html>
<?を<?phpにしないといけませんでした。
通常はしなくても大丈夫だと思ったのですが。。
0640初心者�T
2005/07/30(土) 03:04:13ID:1xotdcs0受け取って、その画像をページの任意の位置で表示させたい時、
こういう風でいいのでしょうか?
<?php
$file = $_POST['file'];
if (!$file) $file = "default.jpg";
if ($_POST['open'] && $file) {
print "<img src='./test/$file>\n";
}
?>
カレントの子のtestというディレクトリの内容のファイルを表示させたいです。
0641nobodyさん
2005/07/30(土) 03:39:15ID:???・$_POST['file']の内容を精査しないと危ない。
・!$fileや$fileじゃなくて!isset($file)またはその逆を使う。
(ファイル名が'0'の場合の挙動を比較すること)
0642nobodyさん
2005/07/30(土) 03:41:49ID:???0643nobodyさん
2005/07/30(土) 03:45:17ID:???> print()は実際には関数では(言語構造です)ありま せん。このため、引数を括弧で括る必要はありません。
ttp://www.php.net/manual/ja/function.print.php
>>639
<? を使えるかどうかは鯖の設定次第。普段から<?php を使うようにしておけば無難かな。
ttp://www.php.net/manual/ja/language.basic-syntax.php
>>640
・$_POST['file'] が送られてこない
・$_POST['file'] に ../../ファイル名 てな感じに対象ディレクトリ外のファイルが指定される
の2点に気をつければいいかな。
0644nobodyさん
2005/07/30(土) 04:24:33ID:3Guwxl6qこのURLのlogin.phpはわかるけど、その後ろの?dest以降はどういう意味があるん?
0645nobodyさん
2005/07/30(土) 05:04:44ID:???dest -> destination : 目的地、行き先、宛先
つーことから推測すると、login処理後に表示するページを指定していると考えられる。
実際、他のページの該当部分を見てみると そのページのURLが入ってるべ?
0646nobodyさん
2005/07/30(土) 06:50:12ID:???フォーム→画像表示(アップロードはしない)
としたいので、表示のphpファイルで下記のようにしました。
$images=$_FILES['image']['name'];
print("<img src=\"$images\">");
しかし、ソースをみると「Array」となり、画像が表示されません。
普通にフォームから画像を選択して表示画面をprint"$image";
で表示しても画像のURLはローカルPC内のアドレスになります。
ファイル名だけ表示させたいのですが、どのようにすればいいのでしょうか?
0647nobodyさん
2005/07/30(土) 07:09:47ID:???$imagesがArrayになるのはよく分からんけど、それならそれで print_r($images)してみれば原因が推測できるんじゃないかな。
パス名を含む文字列からファイル名を取り出すにはbasename()を使う。
0648nobodyさん
2005/07/30(土) 07:16:03ID:???すみません、今確認したら普通に表示されました。
何が原因かは全く分かりませんが、とりあえずできました。
ありがとうございました。
0649nobodyさん
2005/07/30(土) 07:32:57ID:???645が言ってる事が正解だと思うけど、
認証が必要なコンテンツで認証前だった場合に、一旦ログインに飛ばして
処理させた後に、戻ってくる時のリファラ代わりにそういうパラメータを
設定することがある。
0650nobodyさん
2005/07/30(土) 08:16:05ID:XEEbjr3V$array = explode(" ", $string);
これで$stringがスペース区切りで配列$arrayに格納されるんだよ、
ぽまいら知ってた?
0651nobodyさん
2005/07/30(土) 08:22:10ID:???$string = implode(" ",$array); で、
配列$arrayがスペース区切りで$stringに格納されるのも知らなそうだな。
0653nobodyさん
2005/07/30(土) 08:30:08ID:???勉強しておけwww
0654633
2005/07/30(土) 08:54:01ID:???どうもありがとうございます。
更新頻度の方が圧倒的に低いので更新時に生成することにします。
どうもありがとうございました。
0655nobodyさん
2005/07/30(土) 09:11:44ID:???ま、蛇足だが、そこそこの更新頻度があって対象が携帯電話とかじゃないなら、
常に最新の画像が表示される(キャッシュを使わせない)ような工夫が必要かもね。
キャッシュコントロールとかでも良いかもしれないが、
簡単なのは、画像表示ページを動的にして、
<img src="hoge.jpg?<?php echo rand(0,1000) ?>">
とかかね。
0656640初心者�T
2005/07/30(土) 09:41:57ID:1xotdcs0自己解決しました。646さんのように『\"』(これ)を使い、
パスのところで$file変数の前の『.』を取ったら表示されました。
print "<img src=\"./test/$file\">"; 画像の表示はでできました。
If文の中の関数はまた今度勉強します。解決すべき問題は2点でした^^
””の間は『.』は文字列の追加として使えないのですね?
また疑問が沸いてきたのですが、``に挟まれた文字のあとに$が付く場合は何を意味しているんでしょうか。
0657nobodyさん
2005/07/30(土) 10:10:03ID:???""の間は文字列になるので、文字列の追加つーのがよく分からん。
`` は実行演算子。
ttp://www.php.net/manual/ja/language.operators.execution.php
0658640初心者�T
2005/07/30(土) 11:17:11ID:???と間違えていました(汗)。画像ファイル名を変数に選別する所で、
『if (ereg('.jpg$', $fnm))』っていう部分が気になってしまって。。
ごく基本的な問題なんでしょうか??括弧の中のシングルクォートは
文字列を扱って入るためですよね?その次に『,』と変数ですね。で、
何で変数でもなさそうなJPGの文字列の後ろに$が付いているのだろう?、と。。
下らない質問すぎるかも、、、
文字列の追加、って言うのが多分素人の表現だと思うので許してください。。
$no_image_jpg = $path_parts["dirname"].'/'.NO_IMAGE;
というこの[]より後ろの部分の『.』は文字の足し算をしていると思ったのですが、
間違いなのかな。。
0659nobodyさん
2005/07/30(土) 12:09:05ID:qmDtI7shereg('.jpg$', $fnm) の '.jpg$' 部分は 正規表現を表す文字列。
正規表現の説明は、このあたり。
ttp://www.php.net/manual/ja/pcre.pattern.syntax.php
正規表現スレのテンプレに正規表現の参考サイトへのリンクもあり
http://pc8.2ch.net/test/read.cgi/php/1105930285/
で、正規表現の .jpg$ が表すものは、最後がjpgで終わる文字列(ただし4文字以上)。
(拡張子jpgってことなら、'\.jpg$' が正解かなぁ。)
文字列の追加に関しては、その例の使い方であれば合ってます。(結合演算子)
0660nobodyさん
2005/07/30(土) 13:05:26ID:cE5w1Tdy自作クラスのrequireがしやすいと聞いたのですが。
ディレクトリ毎にクラスが分かれている場合、
ディレクトリ構造毎にif文でクラス判別を分けないとうまく行かず難しいですね。
0662nobodyさん
2005/07/30(土) 16:22:35ID:???馬鹿がいるな
0663nobodyさん
2005/07/30(土) 16:30:23ID:???0664nobodyさん
2005/07/30(土) 17:01:06ID:???0665nobodyさん
2005/07/30(土) 18:04:15ID:???0666nobodyさん
2005/07/30(土) 18:17:39ID:???見つからん。。。
0668nobodyさん
2005/07/30(土) 18:31:06ID:???どうもありが�
0669nobodyさん
2005/07/30(土) 19:34:09ID:hEHjC0Wzリンク元はリファラーで分かるとして、
ジャンプ先って分かるようになるでしょうか?
(自分のHPからどこのHPに移動したかってこと)
無理っぽい気もしますが、関数か何かあったら教えて下さい。
0670nobodyさん
2005/07/30(土) 19:56:02ID:CcH/uwPy無理なので、リンクを貼る際に自作のime.nuのような踏み台を用意して下さい。
0671nobodyさん
2005/07/30(土) 21:06:37ID:???http://pc8.2ch.net/test/read.cgi/php/1060009605/345-
にて 2ch 発の技術書企画が進行中です。
主に Web 開発・運営に付いてのノウハウが集められる予定です。
興味のある方・我こそはと思う方は一度覗いてみてください。
0673669
2005/07/30(土) 23:41:55ID:???ほうほうJavaScriptではそんなことも出来るのですか?
一度も使ったことないけど、そっちも少しは勉強するかな。
具体的に使用する関数名か、
その解析できるツールってのを教えて貰えませんか?
0675nobodyさん
2005/07/31(日) 00:33:20ID:xafAdIm1ポート番号は何番を指定すればよいのでしょうか
0676675
2005/07/31(日) 00:36:13ID:???0677nobodyさん
2005/07/31(日) 02:49:12ID:wksgwGNXhttp://www.ortecweb.com/t-bbs/afi/
0679nobodyさん
2005/07/31(日) 09:27:26ID:???onClickだとリンクページ等みたくURLをクリックしてジャンプでないと出来なくね?
>669は自分のページからブックマーク等で他サイトにジャンプした場合に判るようにしたいんじゃないの?
(もしできてもonClickじゃなくonUnloadでは?)
0680nobodyさん
2005/07/31(日) 09:39:25ID:???フォームの入力項目が5つあったとします。
2(バナナ,リンゴ)しかテキストボックスに入力していないとします。
すると表示は「フルーツはバナナとリンゴです」
3(バナナ,リンゴ,メロン)しか入力していない場合は
「フルーツはバナナとリンゴとメロンです」
という表示にしたいです。ifとarrayの組み合わせで出来ると
思ったのですが、条件が多くなってしまいます。
なかなか説明しづらいのですが、ヒントはありますでしょうか?
0681nobodyさん
2005/07/31(日) 10:06:08ID:???合致する場合は適当な配列に格納するようにして
空っぽでない場合に限りその配列を出力するようにすればいい。
こんな感じではどうでしょう。
0682nobodyさん
2005/07/31(日) 10:12:09ID:???$aryName = array("バナナ","リンゴ","メロン");
$names = implode("と",$aryName);
print("フルーツは".$names."です");
0683nobodyさん
2005/07/31(日) 10:49:49ID:???と入れて送信すると
\"test\",\"hoge\"となり、"に\が付くのですが、
どうしたら付かないように出来るのでしょうか?
0685nobodyさん
2005/07/31(日) 11:16:20ID:???これを、$name = hoge にしたいのですが、どうやって処理するのが効率的な抽出方法で
しょうか?
0687nobodyさん
2005/07/31(日) 12:12:36ID:???自分で書いてみたけど効率的でないっていうことなん?
効率的の意味(実行速度 or コード量 or 使用メモリ量 etc)もよく判らない。
あと、
$a['name'][0] = hoge
$a['name'][1] = hoge1
とあった場合はどうすればいいの?
0688nobodyさん
2005/07/31(日) 15:22:06ID:UMC+uCHN0690nobodyさん
2005/07/31(日) 17:19:30ID:???php4.4.0が出ているのに今気づいたのですが、この話題はどこですればいいでしょうか?
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/
ここの2つには無いようです。
0691nobodyさん
2005/07/31(日) 17:28:50ID:???新ver.キター ウヒョー ノマノマ(ry なら、フジモト@PHPマスターを讃えるスレ でフッチー乙〜 ってのがいいかと。
0692690
2005/07/31(日) 17:40:29ID:???レスありがとうございます。
フジモト@PHPマスターを讃えるスレ
http://pc8.2ch.net/test/read.cgi/php/1029342427/
このスレですね。
7/11以降の書き込み3、、、
googleでコマメに検索してみる事にします。
ありがとうございました。
0693nobodyさん
2005/07/31(日) 18:22:02ID:???0694nobodyさん
2005/07/31(日) 20:00:56ID:???初心者ってリファレンス買うと失敗しますよねw?
0695nobodyさん
2005/07/31(日) 20:17:47ID:tE006mzPhttp://www.php.co.jp
0696nobodyさん
2005/07/31(日) 21:33:26ID:???http://〜〜/xxx.php?2ch
といった感じで値だけで渡した場合、どうやって受け取れば良いでしょうか?
0697nobodyさん
2005/07/31(日) 21:45:33ID:???なページで確かめれ。
0698nobodyさん
2005/07/31(日) 22:21:22ID:WZp9m1Ky0699nobodyさん
2005/07/31(日) 22:26:23ID:???0702nobodyさん
2005/07/31(日) 23:30:19ID:???って飛んできたら
<img src="./hogehoge.png" alt="hogehoge" width="88" height="31" />
ってな風に、画像のwidth , height を取得してタグを適宜変換してくれるようにしたいのだが、どうしたものか全くわからん。
0703nobodyさん
2005/07/31(日) 23:52:01ID:???0705nobodyさん
2005/07/31(日) 23:59:31ID:???たぶんこんな感じのことかな?
<?php
$src = './hogehoge.png';
$alt = 'hogehoge';
list($width, $height) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" width="<?=$width?>" height="<?=$height?>" />
はずしてたらスマソ
0707nobodyさん
2005/08/01(月) 01:47:04ID:???0709nobodyさん
2005/08/01(月) 02:39:23ID:???これをやると処理が非常に簡単になるんですが・・・
スパーグローバルを勝手にいじるってことの良い悪いがわかりません。
0712nobodyさん
2005/08/01(月) 04:15:02ID:???0714nobodyさん
2005/08/01(月) 06:21:03ID:???この時点で結構アイタタなソースのような希ガス。
根本的に作りが変なのでは。。。
0715nobodyさん
2005/08/01(月) 06:50:03ID:KP4xPzSt0716nobodyさん
2005/08/01(月) 07:43:23ID:???list( , , , $size) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" <?=$size?> />
0719nobodyさん
2005/08/01(月) 10:24:47ID:???━━━━━━━━━━━━━━━俺様用しおり━━━━━━━━━━━━━━━
0720nobodyさん
2005/08/01(月) 11:06:43ID:???0721nobodyさん
2005/08/01(月) 13:19:35ID:???誰か文字化けしないchm作って
くれないか
0722nobodyさん
2005/08/01(月) 13:23:31ID:???ここを参考に自分で汁
ttp://apollo.u-gakugei.ac.jp/~sunaoka/misc/php_manual_ja/
0723nobodyさん
2005/08/01(月) 13:46:58ID:???0724nobodyさん
2005/08/01(月) 13:51:13ID:???画角から自分で計算汁
0725723
2005/08/01(月) 14:05:43ID:???やはり自分でやるしかなさそうですね。
文字列はいろいろ変わるのでその都度自動計算させる必要があるのですが、
計算の仕方に今ひとつ自信がありません。
imagettftextを使っているのですが、
単純に「全角の横幅=指定したサイズ」「半角=全角の半分」「文字間隔=1px」と考えていいのでしょうか?
フォントによっても変わりそうだし、どうしたものか・・・。
0727nobodyさん
2005/08/01(月) 15:23:45ID:moKfjlj6変数周りは確認しましたが$の付け忘れや$のみなどはありません。
何が原因なのでしょうか?(linux+PHP 5.0.4(CLI)使用)
Parse error: parse error, unexpected $ in xxx.php on line 110
Errors parsing xxx.php
なお110行目はEOFです。
108: ?>
109: [改行のみ]
110: [EOF]
0729727
2005/08/01(月) 16:30:01ID:???0731nobodyさん
2005/08/01(月) 18:32:41ID:???「変なこと」か?ならば何故仕様上
書き換えできないものにしていない>PHP
いや俺も個人的にはやらないけど、書き換わってる可能性も
含めて他人のコードは読んでるよ。実際結構書ける人でも
そういうコードもあるし。
0733nobodyさん
2005/08/01(月) 18:39:01ID:???が成り立つならこの世の中には変なモノは一切存在しえないよ
0734nobodyさん
2005/08/01(月) 19:00:37ID:???調べる方法があったように記憶しているのですが
思ったのですが、どうすればいいんでしょうか?
0735nobodyさん
2005/08/01(月) 19:07:49ID:???$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)){
大抵の場合、ここ(mysql_fetch_arrayのループ内)で、$row['hage']という形で値を取り出しますが
mysql_fetch_arrayのループより、後ろでこの値を使いたい場合はどうしたらよいのでしょうか?
$atode['a'] = $row['a'];
$atode['b'] = $row['b'];
$atode['c'] = $row['c'];
みたいにループ内で別の配列に入れておいて
}
ループを出てから
$atode['a'] 、$atode['b']、$atode['c']を使えば良いみたいですが、配列を添字を保ったまま別の配列に入れてしまう方法(いちいち配列の数の分書かなくても)方法ってあるのでしょうか?
0736nobodyさん
2005/08/01(月) 19:13:08ID:???あ、そういうのやっちゃってました。
if(!$_GET['mode']){$_GET['mode]='main';}とかって。
逝けないことだったんですか。
$_GET['mode']でcase文使って分岐させるのに、初期化の意味も込めて上記のように書いてたんですが。
0737nobodyさん
2005/08/01(月) 19:18:28ID:???全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
JavaScript使えるならwindow.navigator.cookieEnabledでチェックできるみたいだけど(ブラウザの制限不明)。
0738nobodyさん
2005/08/01(月) 19:35:16ID:???1レコードだけなら
ループ内で $atode = $row;
ループ外で $atode['a'];
全レコードなら
ループ内で $atode[] = $row;
ループ外で $atode[レコード��]['a'];
でも、ループ外でレコードの内容が必要なケースってなんなんだろう。
ループ内で処理できんのかのぉ。
0740nobodyさん
2005/08/01(月) 19:54:11ID:IMj74JwV>全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
そうですか。Javascriptと勘違いしてたかも。
>チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
Javascriptは使わないポリシーなので検討してみます。
蟻10
0741nobodyさん
2005/08/01(月) 19:59:59ID:???ソースのあちらこちらで変更していないであれば、いいんでないかい。
漏れも含めて多分、グローバル変数である$_GETを「あちらこちら」で
書き換えられるとトラブル時に追いかけづらいから嫌悪感があるんだろうと思う。
個人的には$_GET等のスーパーグローバル変数は参照専用のほうが心理的にはありがたいんだけどね。
ちなみにその例であれば
switch (isset($_GET['mode']) ? $_GET['mode'] : 'main') {
case 'main':
//main または省略時の処理
}
でいいのではないかと。
0743nobodyさん
2005/08/01(月) 20:13:31ID:???function serch ($foo) {
foreach ($foo as $key1 => $key2) {
if (! is_array($foo[$key1])) {
$foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
continue ;
}
else {
foreach ($key2 as $key3 => $key4) {
if (! is_array($foo[$key1][$key3])) {
$foo[$key1][$key3] = htmlspecialchars(mb_convert_encoding($key4,"EUC-JP","UTF-8"));
continue ;
}
else {
foreach ($key4 as $key5 => $key6) {
$foo[$key1][$key3][$key5] = htmlspecialchars(mb_convert_encoding($key6,"EUC-JP","UTF-8"));
}
}
}
}
}
return $foo;
}
0745nobodyさん
2005/08/01(月) 20:52:46ID:cnoIwIPsテストしてないけどリカーシブコールを使えばいいような希ガス。
元のコードをざっとしか見ていないんで間違っていたらスマソ。
function serch ($foo) {
foreach ($foo as $key1 => $key2) {
if (! is_array($foo[$key1])) {
$foo[$key1] = htmlspecialchars(mb_convert_encoding($key2,"EUC-JP","UTF-8"));
} else {
$foo[$key1] = serch($key2);
}
}
return $foo;
}
0746nobodyさん
2005/08/01(月) 22:20:03ID:???ありがとうございます。まさに知りたい事はそれでした。
いちいち書かなくても添字(キー)がちゃんと渡されるんですね。いままでなんて面倒な事をしてたんだorz
今回必要だったのは1レコードしかヒットし得ないクエリだったのですが、複数ヒットした場合の例も試してみました。
ループ内で $atode[] = $row;
ループ外で $atode[レコード�]['a'];
この場合、レコード�のところには、ループの回数(もちろん0から)が入る、ということで良い訳ですよね?(一応動作させてみましたけど念のため聞く。)
>ループ外でレコードの内容が必要なケースってなんなんだろう。
ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。
>>739
ループ閉じた後はダメじゃないですか?
>>741
自分でも解らなくなるので、もちろん最小限にしてます。値が無いときに初期値を与えるとか、その程度です。
>>744
そうそう。そんな感じです。エラーはエラー、値がないと言うのは、想定内のことなんで。
0747nobodyさん
2005/08/01(月) 22:34:31ID:???受信は問題なくできるのですが、送信が全くうまくできません。
ただ、自分の利用しているサーバ内であれば
フリーブログなどと送受信出来るので、送信機能には
問題ないのかも?っと思っています。
ping送信するに辺り、何か設定が必要なのでしょうか?
(php.ini的に)
0748738
2005/08/01(月) 23:48:09ID:???ループの回数という表現に違和感あるけど、多分あってる。
0〜レコード数(ループの回数) - 1 の値ね。希望通り動作したのなら大丈夫かと。
>ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。
ふむふむ。
確かに漏れもそう書くな。ただループ内でデータをHTML化して文字列に代入してしまうから
オマイさんのやりたかったことがピンとこなかったわ。まぁ人それぞれなので参考まで。
$optionhtml = '';
while ($row = mysql_fetch_array($result)){
$optionhtml .= sprintf('<option value="%d">%s', $row['id'], $row['data']);
}
print <<<EOD
<select name="xxx">
${optionhtml}
</select>
EOD;
0749nobodyさん
2005/08/02(火) 00:40:44ID:???>ループの回数という表現
変な言い方でした。sqlのヒットしたレコードの1件目が[0]2件目が[1]と、こういう意味です。
示していただいた例は、漏れにはちょっと難しすぎました。が、頑張って解読してみます。
ちょっと話はそれますが、phpのスクリプトでDBと連動させて吐き出したhtmlのソース、みなさんは綺麗さとか気にしますか?
漏れは、htmlばかりずっと書いてたんで、吐き出されたソースも綺麗にインデントのレベルがそろうように書いてます。ばからしいと思いつつ。
0750739
2005/08/02(火) 01:00:42ID:???DBの取得じゃないけどこれ↓だとループ後でもいける。
多分やってることは一緒だと思うので。
$a = array(1,2,3,4,5,6,7,8,9);
$cnt = count($a);
for($i = 0; $i <$cnt; $i++){
$row["test".$i] = $a[$i];
print($row["test".$i] ."\n");
}
$atode = $row;
$cnt = count($atode);
for($i = 0; $i <$cnt; $i++){
print($atode["test".$i]."\n");
}
0751nobodyさん
2005/08/02(火) 02:44:27ID:???よくわからんが、オープンソースのを参考にするんじゃだめなのか?
ダメならここで聞いて作るのもダメな気がするがそれはいいの?
0752nobodyさん
2005/08/02(火) 06:08:14ID:???//エラー処理
}
$aaaが半角数字8文字でないときにエラー処理したいんだがうまくいかない
8文字以下ならエラー処理できるが8文字以上ならとおる・・・
なんか間違ってる?
0753nobodyさん
2005/08/02(火) 06:34:12ID:???0754747
2005/08/02(火) 06:54:45ID:???参考にしています。ただ、外部に送信だけがなぜか出来ません。
ですので、サーバ的な問題があるのかと思い、
質問させていただきました。
0755nobodyさん
2005/08/02(火) 10:56:22ID:pypKKfs6画像のアップロードを含む個人情報登録画面を作ってます。
入力画面(データ入力)→確認画面(OKか確認のみ)→DB登録画面(insert文実行)
と遷移していく中で、入力画面からinput type="file"で画像を選択して
アップしたいんですが、move_uploaded_fileで渡すパラメータ($_FILESの中身)
って、hiddenか何かで持てないですかね?
そうじゃないと、DB登録と同じタイミングで画像をアップできなくて。
今は、確認画面で画像を実際にアップ、DB登録エラーなら画像を削除とか
面倒なことを考えています。
しかも、確認画面から戻るときも画像を消さないといけないし・・・。
似た処理を作った方教えてください。
ちなみにDBはMySQLです。
0757nobodyさん
2005/08/02(火) 11:15:37ID:???アップロード時点でテンポラリーに入ってる訳だから、
それが消えるまでの間にDBのINSERT掛ければ良いと思うが?
成功すればmove_uploaded_fileで格納。
類推しにくいテンポラリー名だとしてもHIDDENは止めれ。
SESSIONで持っとけ。
あと確認画面でアップロードした画像はそのままで、テキストだけ
訂正したい場合の「やり直し」もモードに入れといたら?
0758nobodyさん
2005/08/02(火) 11:16:37ID:???こういうもの作ってる人いると思うんだけどどうやってるんだろう?
やっぱ上で書いた方法なのかな。
ヤフオクとかもそういう動き(あっちはJavaだが)してるけど、
効率のいい方法は何かないものか・・・
0759757
2005/08/02(火) 11:17:03ID:???これが要件なら仕方ないな。
0760nobodyさん
2005/08/02(火) 11:18:39ID:???input type="file"がなぜvalue値を指定できないようになっているのかを考えろ
それにPHP4から$_FILESで得られる名前はファイル名のみでファイルパスは含まれなくなったし
0761nobodyさん
2005/08/02(火) 11:21:34ID:???0762755
2005/08/02(火) 11:25:12ID:???レスどうもです。
やっぱSESSIONのほうが安全ですかね。
セッションは仕様としてやらないって方向だったんですが
(そこまでのシステムじゃないだろうってことで)
提案してみます。
>あと確認画面でアップロードした画像はそのままで、テキストだけ
>訂正したい場合の「やり直し」もモードに入れといたら?
モード追加は厳しそうです。決断権あんまりないもので・・・orz
入力画面に戻るたびに画像は再度指定し直すって方法でいこうと思ってます。
0763755
2005/08/02(火) 11:31:52ID:???そうじゃないと、画像だけアップされてDBにデータの無いものは
なにも関連のないゴミ画像として残りますよね。
トランザクション成功時のみアップされればいいんですが・・・。
>>760
クロスサイトスクリプト対策、ですか?
すんませんイマイチ判ってないです。
>>761
確認画面で画像をアップ、ってことですか?
それはチト仕様上厳しいです。
厨な回答してたらごめんなさい。
0764nobodyさん
2005/08/02(火) 11:45:31ID:???>それはチト仕様上厳しいです。
それは仕様が糞なんでは?
0765757
2005/08/02(火) 12:02:46ID:???>移動または名前の変更が行われていない場合、リクエストの
>終了時にそのファイルはテンポラリディレクトリから削除されます。
俺書いたプログラムでアップロードを受けるスクリプト以外でも
難なく取れてたような...ゴミ処理は自動でもしてたみたいだけど。
0766nobodyさん
2005/08/02(火) 12:08:34ID:???確認画面で画像を表示する場合は、大体こんな処理をしてるのが多いんジャマイカ?
1. 入力画面 - input type="file"
2. 確認画面 - move_uploaded_fileで一時ファイルとしてどっかに保存。
画像表示(<img>)にもこの一時ファイルを使う。hidden(or session)で一時ファイル名を保持。
3. 登録画面 - 一時ファイルを正式ファイルに変更(変名とか移動とか)。DBに登録。
処理中断や入力し直しで残った一時ファイルは、定期的に削除。(cronやら、手動やら)
一時ファイルを作りたくなかったら、画像データそのものをhiddenに仕込むなり
sessionに仕込むなりするしか無いと思われ。
0767nobodyさん
2005/08/02(火) 12:10:17ID:Svt/6T9+MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。
テーブル1:ID、category
テーブル2:ID、name
この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、
どのようなクエリとPHPを書くのが一般的なのでしょうか。
いま考えているのは、
SELECT name FROM テーブル1 WHERE ID=○○
のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、
あまり良い方法では無いような気がします。
0768767
2005/08/02(火) 12:11:38ID:Svt/6T9+表示結果は以下の様にしたいです。
カテゴリー1
名前
名前
名前
カテゴリー2
名前
名前
名前
・
・
・
0769757
2005/08/02(火) 12:12:19ID:???アプリ自前のテンポラリーに移動してたわ。mtimeを目安に自前でgcも。
>>757と>>765は嘘。
んで、テキスト関係の登録と同時に自前のテンポラリーから正規のところに移動。
(確認→訂正時には自前のテンポラリーからは削除しない。gcか正規登録時に削除するのみ)
0770755
2005/08/02(火) 12:20:20ID:???>>769は、つまり>>766と同じような仕様ということですよね?
つまり
確認時に画像アップ(自前の一時ディレクトリに)、DB登録時に一時ディレクトリから移動
訂正時の画像はそのタイミングでは消えない、と。
一時ディレクトリの画像は定期的に消そうと思います。
この仕様でやってみます。ありがとうございました。
0772767
2005/08/02(火) 12:27:47ID:Svt/6T9+2chビギナーで、DB板というのがあるんですね。。。
マルチポストになりそうですが、行ってきます。
0773nobodyさん
2005/08/02(火) 12:31:07ID:???つ [ SQL 結合 ]
とレスしちゃいますが。。。
0774nobodyさん
2005/08/02(火) 12:37:37ID:???SELECT category, name from テーブル1, テーブル2 where テーブル1.ID = テーブル2.ID
0776767
2005/08/02(火) 13:15:53ID:Svt/6T9+ありがとうございます。
この結果を768の様に表示したいんです。
>775
リレーションって何ですか?
わかっている人の説明が聞きたい。
0777nobodyさん
2005/08/02(火) 13:19:26ID:???あらら。こちらのスレとマルチだったのね。MySQLスレの方にレスしちまった。
MySQLスレの106を確認よろ。
0778nobodyさん
2005/08/02(火) 13:48:58ID:???キーフィールドを使って複数のテーブルをいろいろ(LEFT RIGHT INNER OUTER)と簡単に結合(JOIN)できるのがリレーショナルデータベースの利点
0779nobodyさん
2005/08/02(火) 15:47:21ID:???2005/08/01 という文字列を返してくれるような
便利な関数はありませんか?
0781nobodyさん
2005/08/02(火) 16:01:46ID:???この手の質問って定期的にあるな。
PHPマニュアルの日付関連の辺りを読んで、色々やってみりゃいいのに。
$day = date('Y/m/d', strtotime('Mon Aug 1 00:00:00 2005'));
0782nobodyさん
2005/08/02(火) 16:11:11ID:???date('Y/m/d',strtotime ("Mon Aug 1 00:00:00 2005"))
んでも、そんな不思議文字列使うよりは、タイムスタンプに統一した方がいいんでないの?
たぶんDBからの取得データだと思うから、SQLやDBの設定あたりで解決するほうがよいかと。
0783nobodyさん
2005/08/02(火) 16:37:35ID:???0784nobodyさん
2005/08/02(火) 17:13:19ID:???こういう場合にMySQLでは全てのユーザーについてそれぞれアカウントを作る必要があるのでしょうか?
それとも管理に必要なアカウントを除いて、一般ユーザー用のアカウントは一つだけ作って
それを使いまわせばよいのでしょうか?
後でログを確認するときなどに誰がどのような作業を行ったか分かるようにしたいのですが、
これはApache等のアプリケーション側でログを取るべきなのでしょうか?
よろしくお願いします。
0785nobodyさん
2005/08/02(火) 17:42:10ID:???と同様のことを、httpを経由せずにしたい、
( =cgiにパラメータを渡して、出力テキストを取り込みたい)
のですが、方法がよくわかりません。ご教示ください。
よろしくお願いします。
なお、phpとcgiは同じディレクトリ内にあります。
0786nobodyさん
2005/08/02(火) 18:09:35ID:???httpを使わないとなると、コマンドラインで実行するしか無いねぇ。
phpでそれをするには、マニュアルのプログラム実行関数あたりを参照。
んでも、対象のスクリプト側にも手を加えなきゃいけなくなると思うよ。
(perlなら @ARGVを適切に処理するように。)
0787じじぃ
2005/08/02(火) 19:19:18ID:53wND5J6config.phpのエンコードって何ですか?
0788nobodyさん
2005/08/02(火) 19:26:54ID:???0789757
2005/08/02(火) 19:35:12ID:???>同じような仕様ということですよね?
Yes.「訂正時の画像はそのタイミングでは消えない」というのは
せっかくアップロードは成功したのにテキストの修正だけのために
もう一度アップロードさせたくない。及びアップロードファイルのクライアントローカルパスを
PHP側で知ることが出来ないので、undo時にその値で初期化できないということもある。
(JavaScriptでゴニョゴニョやってみたことがあるが、日本語ファイルの場合の
挙動がブラウザで結構まちまちで、面倒なので投げた)
UPLOAD_ERR_NO_FILEの時で既に一度でもそのセッションで
アップロードが成功していれば、自前テンポラリーのファイルを利用する。
そんな感じで一応うまく動作してる。
0790nobodyさん
2005/08/02(火) 19:35:32ID:???while ($row = @mysql_fetch_array($result)){}
で値を取り出しました。(1件のみヒットという前提)
このなかに$row['a01']〜$row['a10']という値があるとします。
他にも$row['name']とか$row['hoge']なんていうのもあるとします。
このとき、$row['a01']〜$row['a10']のうち、値が'空'で無いものの数がいくつ有るかを数えたいです。
目的:その数分だけfor文で、テーブルのTRを描画させたい
0791JHON
2005/08/02(火) 19:48:37ID:kmlqG+RX早速質問ですが<table>使ってメニューボックス作ったんですけど
いくつか並べておきたいんですが、綺麗に並べる方法おしえてください。
ついでにメニューボックスにタイトルつけたいんですが、それも教えてください。
0793nobodyさん
2005/08/02(火) 19:58:24ID:???$cnt = 0;
for($i=0;$i<10;$i++) {
$key = "a" . $i;
if (!is_null($row[$key])) $cnt++;
}
0795nobodyさん
2005/08/02(火) 22:12:15ID:???レスどもです。
数字の規則的な部分は01とかみたいに、0パディングで2桁だったので、
forループの中で、
$i = sprintf("%02d",$i);
としてみました。動作はばっちりですが、sprintfってこんな感じの使い方でよいんですかね?
0796nobodyさん
2005/08/03(水) 03:06:52ID:Vw0PEp23PHP4.1 anhttpd winxp にてPHPを勉強しているものなのですが
コードを書いていて、どうしてもこの部分でエラーをだしてしまいます。
$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/ciao/public_html/emoji/emoji.php on line 301
"$tmp[$1]"この部分がおかしいと思うのですが、このように値を参照してやりたいのです。
phpマニュアルに書いてある部分を読んであまり分からないまま
"$tmp[${1}]" など試してみたのですがうまくいきません。
どうかお力添えをお願いできないでしょうか。
0797nobodyさん
2005/08/03(水) 03:29:10ID:???>>>DOC
DOC;
例えば同じページ内で何度もヒアドキュメント使うときに
DOCばっかりだとエラーの原因になったりします?
0798nobodyさん
2005/08/03(水) 03:55:19ID:???http://www.php.net/manual/ja/language.variables.php
>>797
試せ
0800nobodyさん
2005/08/03(水) 10:16:49ID:Vw0PEp23レスありがとうございます。
解説を読んで括弧で明示的にしてやらないとだめなのかと思い、
"{$tmp[$1]}"
こうしてみたり、
"$tmp[{$1}]" "${$tmp[$1]}"
こうしてみたりもしたのですがダメでした。
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/web/ciao/public_html/emoji/emoji.php on line 301
こんなエラーがでます・・・
0801nobodyさん
2005/08/03(水) 10:47:35ID:???0802nobodyさん
2005/08/03(水) 11:39:35ID:???「$1」は「$i」等の間違いじゃないの? 変数名の先頭は数字ダメだよ。
それと"$tmp[$1]"はダブルクオートなくてもいいでしょ。
0803nobodyさん
2005/08/03(水) 12:09:11ID:???one#_hoge_#three -> $tmp['hoge'] = 'two' -> onetwothree
one#_huge_#three -> $tmp['huge'] = '-' -> one-three てな感じ。
0804796
2005/08/03(水) 12:12:19ID:Vw0PEp23レスありがとうございます。
$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);
このように正規表現でヒットした箇所のデータ参照を$1で行い
それを$tmpの連想配列の引数として使用し、値を参照しようとしています。
0805nobodyさん
2005/08/03(水) 12:16:53ID:???こう書くしかないんぢゃないのかなぁ。
$pattern = '/#_(.*?)_#/i';
$str = 'Start#_hoge_#End';
$tmp['hoge'] = 'fuga';
if (preg_match($pattern, $str, $match) && isset($tmp[$match[1]])) {
$str = preg_replace($pattern, $tmp[$match[1]], $str);
}
0806nobodyさん
2005/08/03(水) 12:21:41ID:???'tmp[$1]' あるいは "\$tmp[\$1]" にしないとダメでは?
0807nobodyさん
2005/08/03(水) 12:26:21ID:???e修飾子
$str = preg_replace("/#_(.*?)_#/e",'$tmp["$1"]',$str);
0809_
2005/08/03(水) 13:27:21ID:???windowsとlinuxでphpを使用しているのですが
system関数で一部のコマンドが使えません。
どうしたら使えるようになるのでしょうか?
0811nobodyさん
2005/08/03(水) 13:53:34ID:OQNM6t9u割り算してループさせると処理遅い・・・30秒でタイムアウトorz
0812nobodyさん
2005/08/03(水) 14:13:53ID:???php4@win2k
echo getrandmax(); // 32767 int2
echo mt_getrandmax(); // 2147483647 int4
echo rand(2147483646,2147483647);
0814809
2005/08/03(水) 14:25:10ID:???詳しく言うと、
imagemagickをphpで使いたいと思い
$convert = "/usr/bin/convert";
system("$convert -geometry 50 x 50 a.jpg b.jpg");
などのスクリプトを実行していましたところ、
正常に動作しなかったので、いろいろ調べてみたところ
system関数が使えてないことがわかりました。
昔は使えていたのですが、サーバーを再インストールして、使えなくなりました。
ちなみに ls などのコマンドはsystem関数で使えるのですが
mkdir や useradd などは使えません。
よろしくお願いします。
0815nobodyさん
2005/08/03(水) 14:25:46ID:OQNM6t9urand()でmt_getrandmax()以上の数字出せますか?
0816nobodyさん
2005/08/03(水) 14:25:59ID:WIIsN5aXPCは検索かけると出てきましたが
携帯に対応させるにはどうしてもできなく
こちらに書き込みさせて頂きました。
0817nobodyさん
2005/08/03(水) 14:28:38ID:WIIsN5aX携帯サイトでランキングを製作したいのですが
PC用のCGIダウンロードカウンターをいじってもまったくお手上げ(ToT)
0818nobodyさん
2005/08/03(水) 14:29:24ID:WIIsN5aX間違って2度書き込みしてしまいました 汗
0821nobodyさん
2005/08/03(水) 14:32:35ID:OQNM6t9uスマソ
FFAPHPで能力値浮動小数点逝って困ってますorz
ダメージ計算でマイナス逝っちゃう・・
0822nobodyさん
2005/08/03(水) 14:37:30ID:OQNM6t9uその通り分かっております
0823811
2005/08/03(水) 17:07:36ID:OQNM6t9ufunction random($num){
$random0 = mt_rand(0,10000);
$random1= $random0 * 0.0001;
$random2 = round( $num * $random1 );
return($random2);
}
0824名無しさん@そうだ選挙にいこう
2005/08/03(水) 17:08:00ID:pKopPkZZPHPでなんとかしてください。
0826nobodyさん
2005/08/03(水) 18:51:24ID:???DB.phpってどこに入ってるんでしょうか?
WindowsのPHP5を使ってますが、どこにあるかわかりません
0827nobodyさん
2005/08/03(水) 18:52:00ID:???0828nobodyさん
2005/08/03(水) 18:56:04ID:???してみたけど、無いんですよ
もとから入ってるものじゃないんですかね?
tgzファイルがいくつかあるみたいなので、その中に
入ってるのかと思ってるんですけど
0829826
2005/08/03(水) 19:02:32ID:???#pear install DB
しろって書かれてるページは多いんですけど、これってLinux系で
Windowsでやっても(パス設定しても)ダメでしたが・・・
0830nobodyさん
2005/08/03(水) 19:07:09ID:???そのディレクトリまでcdしてから実行しろよ
0831826
2005/08/03(水) 19:33:07ID:TuHx69hTのコマンド実行後ってどれぐらいで、完了するもんでしょうか?
>>830さんの言うようにパス設定ちゃんとしたら、エラーはでないんですけど、
実行後なんのメッセージもでないまま固まってるんですけど・・・
0832826
2005/08/03(水) 19:50:53ID:???0833nobodyさん
2005/08/03(水) 19:53:47ID:???$sql = "select * from hoge;";
hogeのあとの「;」は有るのが正しい?無いのが正しい?どっちでも動いちゃうんですが。
0835nobodyさん
2005/08/03(水) 21:14:47ID:???他のDBでは通用しないのがあるので、無いのが正しいに一票。
うろ覚えだけどソース的には無いのが正しいというのを見たことがある。
2chだと思ったけど…。
0836nobodyさん
2005/08/03(水) 22:19:14ID:ehblprIn.htaccessでphp_valueを変更しようとしたんですが、反映されません。
ものすごく既出だと思うのですが、cgi版phpで、php.iniの値を変える場合はどうしたらよいのでしょう?
変えたいのは、
mbstring.encoding_translation
がonになっているので、これをoffにしたいだけなのですが...
0837nobodyさん
2005/08/03(水) 22:43:14ID:???そのCGI版PHPの設定ファイル検索ルートのどこかに
php.ini (別の名が使えるように設定している場合はその名前)を置く。
0838nobodyさん
2005/08/03(水) 23:53:04ID:jkhIjHPp何の関数を使用すればいいんですか?
0839nobodyさん
2005/08/04(木) 00:17:53ID:???こういった場合、whereのあとに
where key1 like '%a%'
or key2 like '%a%'
or key3 like '%a%'
・
・
・
と続けるしかないんでしょうか?
0840nobodyさん
2005/08/04(木) 01:17:42ID:???オレなら、フィールドを連結した文字列にINSTRとか使ってみるかな。
ここらへんとにらめっこしてみそ。
http://dev.mysql.com/doc/mysql/ja/string-functions.html
0842nobodyさん
2005/08/04(木) 02:33:10ID:???それだと
key1='hoge'
key2='hage'
検索文字列='geha'
とかの場合に問題あるんでない?
0843nobodyさん
2005/08/04(木) 15:50:17ID:???$handle=opendir(READ_DIR);
while ($entry = readdir($handle)){
if (is_dir($entry)){
echo $entry."\n";
}
}
closedir($handle);
で出力した結果がUTF-8で出力されてしまいます。
SJISで出力するにはどうすれば良いんですか?
0845nobodyさん
2005/08/04(木) 16:22:58ID:???すみません説明が少なかったみたいです。
サーバはsambaを使用していて、ディレクトリ(フォルダ)に日本語で
命名しているものもあります。
それを一覧で取得したいんです。
よろしくお願いします。
0846nobodyさん
2005/08/04(木) 16:28:41ID:???0847nobodyさん
2005/08/04(木) 16:33:47ID:???while ($entry = readdir($handle)){
if (is_dir($entry)){
echo mb_convert_encoding($entry,"SJIS","UTF-8")."\n";
}
}
closedir($handle);
でいけちゃいました。
スレ汚しスマソ
0848nobodyさん
2005/08/04(木) 23:24:02ID:6tkxUKoaabc.def.ghi. というデータがあって、
最後の、.(ドット)だけ、削除して、abc.def.ghi というデータにしたいのですが、
どうすれば良いでしょうか?
0849nobodyさん
2005/08/04(木) 23:36:40ID:???違う本を買ってみたところ、echo文で文字列をくくるのに
<<<EOD
.....
EOD;
というやり方が使われていました。
ぐぐってみたところヒアドキュメントというのを初めて知ったのですが、
この場合IDはなんでもいいとのことですが、EODという言葉自体はどのような意味を持つのでしょうか?
何かの略なのでしょうか?
0850nobodyさん
2005/08/04(木) 23:41:33ID:???0851nobodyさん
2005/08/04(木) 23:43:07ID:???EOT na hito mo iru.
EndOfText kashira.
0853849
2005/08/04(木) 23:51:56ID:???レスどうもです。(ネタ含めて)
それにしても文字列の中に連想配列を入れるときもいちいち"......" . $hoge["age"] . "..."ってやってたのに
波括弧が使えるとは知らなかった・・・orz。
入門本なんてそんなものなのかな?
0854nobodyさん
2005/08/05(金) 00:07:35ID:???$string = "abc.def.ghi.";
$string = preg_replace("/\.(?=$)/", "", $string);
0855nobodyさん
2005/08/05(金) 00:15:36ID:9OK6LhSH例えば
define("hoge","aiueo");
print "あいうえおはローマ字でhoge";
などとして「あいうえおはローマ字でaiueo」と出力させたいのです。
print "あいうえおはローマ字で" . hoge;
というのは避けたいのですが、他にやり方はあるものでしょうか?
よろしくお願いします。
0856nobodyさん
2005/08/05(金) 00:16:25ID:9OK6LhSH$string = "abc.def.ghi.";
$string = substr($string,0,strlen($string)-1);
0859nobodyさん
2005/08/05(金) 01:21:39ID:???ブログなんかでたまにある、
なんたらかんたらなんたらかんたらなんたらかんたらなんたらかんたら...続きを読む、みたいな感じにしたいのです。
0863nobodyさん
2005/08/05(金) 08:37:06ID:xefaOJlUinternal server errorがでしまいます。
OSはフェドラコア4でapacheとphpはyumでインストールしてきました。
このとき設定は特に変える必要はないそうなのですが、何か変更が必要ですか?
すれ違いなら誘導お願いします。
0864nobodyさん
2005/08/05(金) 09:01:49ID:???0865nobodyさん
2005/08/05(金) 09:19:40ID:???0866863
2005/08/05(金) 09:43:21ID:tHV4jGl/エラーは
security alert This PHP CGI cannot be accessed directry
まずこれがあります。
ほかにもあるんですが、いまコピペできる環境にないんで。
0867nobodyさん
2005/08/05(金) 09:47:17ID:???; cgi.force_redirect = 1
↓
cgi.force_redirect = 0
0868863
2005/08/05(金) 10:05:20ID:tHV4jGl/できたーーーーーーーー
俺>>867さんのことダイスキ。ありがとうございました。
0869nobodyさん
2005/08/05(金) 10:45:27ID:???結果を変数に取り込むにはどうすればよいのでしょうか?
exec関数では結果が返ってきませんし、passthruやsystemでは
直接画面(ブラウザ)に表示されてしまいます。
$result = system($file_name);
↑みたいな感じで書いてみたのですが・・
0870nobodyさん
2005/08/05(金) 11:04:18ID:???画面に出ちゃうのは、ob_* を使えば 変数に取り込めるよ。
ob_start();
system('test.bat');
$str = ob_get_contents();
ob_end_clean();
echo "<p><font color="#ff0000">$str</font></p>";
まぁ、batファイル内でecho したものを $str=` ` や $str=exec() で変数に入れちゃえますけど。
0871nobodyさん
2005/08/05(金) 13:17:03ID:???なるほど。やってみます。
取りあえずバッチファイル内の各行末でパイプ使ってリダイレクトさせてみましたが、
余計なファイルを作らなくて良いならそれにこしたこと無いので。
0873nobodyさん
2005/08/05(金) 14:56:29ID:vB1WCgKJ0875nobodyさん
2005/08/05(金) 15:13:20ID:???ブラウザが取得するのは単なるhtmlで、それがPHPを経由してるかどうかなんて気にしないよ。
違いがでる場合の(htmlの)ソースを見比べてみ。
0876nobodyさん
2005/08/05(金) 16:41:48ID:jDJVMZFRpostメソッドで検索語句を変数$keyに渡しすのですが、語句が1語であれば
select * from TABLE like '"% . $key. "%'";
で出来るのですが、複数のキーワード(and検索)の場合はどうすればいいんでしょうか。
0878nobodyさん
2005/08/05(金) 17:07:08ID:???で検索してみようかな
0879nobodyさん
2005/08/05(金) 17:14:45ID:DYX+HJMi接続しています。ntext型のデータをphpからselectする際、データが
大きいと「Warning: mssql_query(): message: Unicode のみの照合順序の
Unicode データまたはNTEXT データを、DB-Library (例 ISQL) または
ODBC バージョン 3.7 以前を使用しているクライアントに送信できません。」
と表示され、selectが行えません。
色々と試した結果、255バイトまでであれば取得できるようです。
上記症状の解決方法をご教えて頂け無いでしょうか。
実行環境はWindowsServer2003StandardEditionSP1
MicrosoftSQLServer2000
php4.4.0
を使用しています。
0880nobodyさん
2005/08/05(金) 17:21:35ID:???南海ですか・・・。
一応、こういった処理までいきました。
全角スペース→半角スペースに変換
半角スペース→カンマに変換
検索語句をカンマ区切りで配列化させる
後はSQL文で複数のキーワードをどうやって入れるかなんですけど…。
like $key1 and $key2 and $key3 …
みたいな感じでできますか?
0881nobodyさん
2005/08/05(金) 17:53:30ID:???いや、はっきり言えばコードの抜粋の仕方も日本語もおかしいってことだ。
SQLの質問ならずばり板違い
where col like '%a%' and col like '%b%' and col like '%c%'
0882nobodyさん
2005/08/05(金) 23:17:16ID:???$img_ref .= '<img src="'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'" width="'.$W.'" height="'.$H.'" align=left></a>';
を
画像だけじゃなくファイル全般のリンクとしたいのですが
<img srcを <a href に
width height を消去
<a href=xxxxx>と</a>の間に 文字を挿入でよいかと思われるのですが間違ってるでしょうか?
$img_ref .= '<a href="'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'" align=left>"'.$a_path.'img/'.$_POST['key'].$imgnum.$tail.'"</a>';
ちなみにやろうとしていることは画像UP掲示板をファイル全般UP可能に変更しようとしてます。情報お待ちしてます
0883nobodyさん
2005/08/05(金) 23:33:42ID:???えらく見づらいけど、あってると思うよ。ただのリンクなんでalign=leftはいらないだろうけど。
動かないからカキコしたのかな。だったらどう動かないか書いた方がいいかも。
老婆心だけど直接 $_POST['key'] を埋め込むのはあまり良くないな。
理由が判らなければサニタイジングでググって味噌。
0884882
2005/08/05(金) 23:51:58ID:???通常表示はindex.htmlを表示
書き込みがあった場合にbbs.php さらにbbs2.phpを参照してるっぽいんです。
で、UPロード関連の処理が書いてあるのは bbs2.php
そして、実際に書き込みをして、正常ならば更新されたindex.htmlが表示されるようなんですが、手を加えていない bbs.phpにアクセス中にとまってしまうんです。
・・・・何言ってるかわかり辛いと思うんで
改造しようとしているやつ
ttp://script.s16.xrea.com/2ch/
改造しようとしているのは、UP可能なファイルを画像だけでなく
その他の拡張子も受け付けるようにしたいのです。
サイタニシングという名の特殊記号による文字化け注意了解です
0886nobodyさん
2005/08/06(土) 00:08:26ID:???0887nobodyさん
2005/08/06(土) 01:05:47ID:???年・月ごとにフォルダを作って、一日分ずつログを作っていく形式にしようと思ってる。
・・・のだけど、レン鯖のPHPがセーフモードOnみたいで、mkdirとchmodが動作しない。
回避策を教えてくれエロい人。
0889nobodyさん
2005/08/06(土) 01:12:01ID:???年月ごとだったら、別にスクリプトで生成しなくたって、
予めFTPとかで作っておけば?
3年分でもたかだか36個だしょ?
0890nobodyさん
2005/08/06(土) 01:16:31ID:???0891887
2005/08/06(土) 01:18:47ID:???PathInfoってのが初耳。
ちょっとマニュアル見てくるっす。
>>889
ん、それでもいいかも。
もうちょっと格闘してみようかな。
ありがとうエロい人達。
0892nobodyさん
2005/08/06(土) 04:41:55ID:zdmG/ySSデータを渡すことは可能なのでしょうか?
0893892
2005/08/06(土) 04:48:42ID:???自動にジャンプするときです。たとえばログインボタンなどを押して、自動的にジャンプするときに
さらにデータを送るということです。
0894nobodyさん
2005/08/06(土) 05:56:02ID:???0895nobodyさん
2005/08/06(土) 06:07:53ID:???phpファイルが二つあるある場合にそれどれのファイルから違うファイルにデータを渡すということです。
自動ジャンプは header(Location: *******); しか知らない上に使い勝手が悪いので困っています。
0897nobodyさん
2005/08/06(土) 07:06:12ID:???下記のプログラムで、一つ階層の下のXXXというフォルダの
下の(中の?)フォルダのリスト名を取得したいのですが、どうすればできますか?
<?php
if ($handle = opendir('./')) {
while (false !== ($file = readdir($handle))) {
if (is_dir($file)) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
}
closedir($handle);
}
?>
0899nobodyさん
2005/08/06(土) 08:11:04ID:???opendirとis_dirの引数の両方変更しないとあかんやろ。
<?php
if ($handle = opendir('XXX/')) {
while (false !== ($file = readdir($handle))) {
if (is_dir('XXX/' . $file)) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
}
closedir($handle);
}
?>
0900nobodyさん
2005/08/06(土) 08:26:13ID:???つ
<html><head></head>
<body>
//input系のbox
<form method='post' action='データを渡す先の.php'>
<input type='submit' value='ログインボタン'>
</form>
</html>
0901nobodyさん
2005/08/06(土) 09:18:26ID:???・自動的に
どっちやねん(´_ゝ`)
0902nobodyさん
2005/08/06(土) 09:44:31ID:???まぁなんにせよ、>>894だが。
0903nobodyさん
2005/08/06(土) 11:35:30ID:???あるスクリプトの一部で作成した画像をそのスクリプト内で表示することはできないのでしょうか?
調べてみたところ、この用法としては
・ヘッダーに画像情報を入れて*.phpを画像としてIMGタグで指定する
・画像ファイルを作成する
の二つのようですが、ファイルを作成することなく一時的な画像を同スクリプト内で表示することはできないものでしょうか?
0904nobodyさん
2005/08/06(土) 11:48:48ID:???1つのリクエストに対して、複数の内容のレスポンス(html + 画像)を返すというのは、
仕様としては存在してるんだけどブラウザ側で対応しているものがほとんど無い。
0905nobodyさん
2005/08/06(土) 12:01:23ID:???引数で表示画像内容を指定できるスクリプト(.php)と、
その.phpを<img>で呼び出すHTMLを吐き出す.php
の二つの.phpを作成汁
0906nobodyさん
2005/08/06(土) 12:02:01ID:???たぶんこんな感じのことをやろうとしてるのだろうか?
--- gd_and_img_tag.php ---
<?php
// リクエストパラメータに応じてGDでごにょごにょ
imagePngとかimageJpegあたりで出力みたいなこと
?>
<img src="自分の出力">
-----------------------
いやでもね、単純に
--- img_tag.php ---
<img src="gd.php?リクエストパラメータ">
-----------------
--- gd.php ---
header('Content-type: image/png');
// リクエストパラメータに応じてGDでごにょごにょ
imagePngとかimageJpegあたりで出力みたいなこと
-------------
でいいんで内科?
パラメータがデカイならセッションなりなんなりで。
0908903
2005/08/06(土) 12:04:58ID:???ためしに一時的にファイルを作成してIMGタグで指定したあとでunlink()で削除したら
ブラウザには壊れた画像アイコンが出てきました。
直後に消すのもまずい様子。
・・・ってことはファイルに保存してもIMGタグで読み込むまでのタイミングで他の人が上書きしても
それは反映されてしまうかもしれないってことかな?
(実際に画像を読み込むタイミングはIMGで指定したよりずいぶん後になるのか?)
この辺はどういう仕様になってるんだろ??
0909nobodyさん
2005/08/06(土) 12:06:25ID:???検証もしていないし、IE限定っぽいんだけど、
phpでmhtファイルを送出したらどうなんでしょうね?
画像はbase64でエンコードして埋め込むことになる。
今度暇になたら検証してみよう。
0910903
2005/08/06(土) 12:14:35ID:???言われてみれば最初から別ファイルにすればよかったorz。
いや、あまり細々とファイルをいっぱい作るのが嫌なので
同カテゴリのページはすべてフラグを設定して一つの.phpの中でやってたんですが、
よく考えたら画像生成用関数を外部につくるくらいなら画像生成用.phpを作っても大して変わらない・・・。
みなさんレスどうもです。
これまたよく考えたら>>908は当たり前すぎてorz。
クライアントに届く前に削除してるんだから見えるわけがないよな・・・。
0911nobodyさん
2005/08/06(土) 12:14:57ID:???○すれ違い
0912nobodyさん
2005/08/06(土) 13:47:37ID:???$ary01 = array("鈴木","20");
$ary02 = array("田中","18");
$ary03 = array("渡辺","19");
$ary04 = array("田中","21");
.
.
.
$aryN = array("佐藤","21");
重複している『田中』を削除して
$ary01 = array("鈴木","20");
$ary02 = array("田中","18");
$ary03 = array("渡辺","19");
.
.
.
$aryN = array("佐藤","23");
にしたいんだが、どうすればできますか?
0913nobodyさん
2005/08/06(土) 13:53:04ID:???0914nobodyさん
2005/08/06(土) 14:24:30ID:???913のいうように二次元配列を使ったほうがいい。
$ary = array();
$ary[1] = array('名前', '年齢');
$ary[2] = array('名前', '年齢');
・
$ary[N] = array('名前', '年齢');
for($i=1;$i<=count($ary);$i++) if($ary[$i][0]=='田中') unset($ary[$i]);
そのデータのままやるんなら、
$aryNがいくつまであるのかっていうデータが必要。
それをforで同じように回してunsetする。
0916nobodyさん
2005/08/06(土) 14:27:23ID:???0917914
2005/08/06(土) 14:29:55ID:???あ、良く読んでなかった。
「田中」を全て削除するもんだと思って>>914書いてしまった、すまん。
それこそ、二次元配列でデータを入れる段階で、
$ary['田中']='18';とかにしていけばいいんじゃないか?
ちなみに、あなたの質問の仕方にもちょっと足りないところが。
「重複している『田中』を削除して」って、どういう削除だ?
最初に出てきた『田中』が残るのか、後に出てきたのが残るのか。
上記のように二次元配列を使うと、後に出てきたのが残るんだが…
>>915
ワロスwwwwwww
0918nobodyさん
2005/08/06(土) 14:36:03ID:???削除されるのは常に後から来た方なのか?
0919912
2005/08/06(土) 14:43:07ID:???>>913-918 詳しくありがとう。
説明不足で申し訳ない、
削除するのは前でも後ろでも構わない、片方どちらか残せば、
重複しているの『田中』だけじゃなく、仮に『高橋』『伊藤』『小林』....
がでてきた場合も削除したいんだ、できますか?
0920nobodyさん
2005/08/06(土) 14:47:17ID:???for ($i = 1; ; $i ++)
{
$aryname = sprintf("ary%02d", $i);
if (! isset($$aryname)) break;
$ary = $$aryname;
if (! isset($tmp[$ary[0]])) $tmp[$ary[0]] = array($i, $ary[1]);
unset($$aryname);
}
foreach ($tmp as $n => $v)
{
$aryname = sprintf("ary%02d", $v[0]);
$$aryname = array($n, isbirthday($n) ? (string)($v[1] + 2) : $v[1]);
}
まわりくど・・・・
0921nobodyさん
2005/08/06(土) 14:50:46ID:???0922nobodyさん
2005/08/06(土) 15:46:43ID:???みたいに
$fp = fopen("hoge.txt") or return;
とやりたいけど当然うまくいかない
ここをかっこよく書く方法を
0923nobodyさん
2005/08/06(土) 17:57:55ID:???かっこよいかどうか判らんが
if (!$fp = fopen('hoge.txt', 'r')) return;
ぢゃあかんのか?
0924nobodyさん
2005/08/06(土) 19:16:22ID:???0925nobodyさん
2005/08/06(土) 22:33:54ID:if+rBJOC自動的にユーザーに0000とか、自動でユーザーIDを付加し、
DBに登録したいんだけど、どうやって処理つくればいい?
0926nobodyさん
2005/08/06(土) 23:00:32ID:???0928nobodyさん
2005/08/07(日) 00:30:30ID:???DBMSで自動でユーザーID(連番)を付加してやればいい。
まあPHPで連番の採番処理してやってもいいと思うけど。
(カウンターと同じようなの)
0929nobodyさん
2005/08/07(日) 02:50:31ID:OZokRLKOprint "<A HREF="http://www.google.com/intl/ja/">google</A>";
?>
すいません。PHPの中で、リンクタグを貼ることは出来ないんでしょうか?
↑のようなことをやっても、parse error, unexpected T_STRINGとなります。
0930nobodyさん
2005/08/07(日) 02:59:14ID:???0931nobodyさん
2005/08/07(日) 03:04:35ID:???レスありがとうございます。
$test = "<A HREF="http://www.google.com/intl/ja/">google</A>";
print "$test";
↑みたいな事しても出来ません。
なにか代替処置みたいな事がありませんでしょうか?
0933nobodyさん
2005/08/07(日) 03:08:15ID:???0934nobodyさん
2005/08/07(日) 03:27:42ID:???print "<A HREF=\"http://www.google.com/intl/ja/\">google</A>";
0936優しい人
2005/08/07(日) 09:35:58ID:???覚えとけ(´_ゝ`)
0937nobodyさん
2005/08/07(日) 11:01:55ID:???その中で変数使っても問題ないんじゃないの?
print "<A href='$linkurl'>";
って大丈夫でしょ?
これってまずいの?
0938nobodyさん
2005/08/07(日) 11:51:26ID:???例えば入力フォームにて<INPUT type='textbox' name='hoge'>としておき、
あとで何も入力されなかったらエラー表示させたいのですが、
if (!$hoge) print "だめぽ";
としたところ、テキストボックスに0を入れた場合でもエラーが表示されてしまいます。
issetやis_nullを試したところ何も入力しなくてもエラーは表示されません。
if (strlen($hoge)==0) とやるしかないのでしょうか?
他になにかやり方がありましたら教えてください。
0939nobodyさん
2005/08/07(日) 11:52:57ID:???0940nobodyさん
2005/08/07(日) 11:53:38ID:???0941nobodyさん
2005/08/07(日) 11:57:21ID:???htmlの属性値は " ' のどちらで囲んでも良い。
属性値を引用符で囲まなくても良い場合もあるが、その条件とURIの表記とは一致しないので引用符を使った方がよい。
URIで使う文字に " ' のどちらも含まれていないので、(入力チェック等を通過した後は)どちらの引用符を使ってもよい。(RFC3986)
[phpのお話]
" "の中に$があれば、そこからできるだけ長い文字が変数名になるように探される。
つまり、変数名に使えない文字が出るまでが遠足^h^h変数名として利用される。 " ' は変数名の対象外。
で、>>937 それでもいいよ。
0942nobodyさん
2005/08/07(日) 12:06:59ID:LvZBGVlbfunction u(){
$host="host";
$user="user";
$pass="pass";
}
としてメインのphpファイルで
<?php
require_once("test.php");
u();
$x=mysqli_connect($host,$user,$pass)
...
?>
としてもエラーとしてaccess denied for user 'nobody@localhost'(using password:no)
とけられてしまいます。何がまずいとですか?
0943nobodyさん
2005/08/07(日) 12:14:08ID:???そういう時は物事を簡単にしていく。
function u(){ 〜元と同じ〜 }
<?php
require_once("test.php");
u();
print "$host $user $pass";
?>
やってみれば、分かるけど $host等が未定義のままになっている。
これは、変数のスコープの問題。(どの範囲まで変数が有効か)
ttp://www.php.net/manual/ja/language.variables.scope.php
0947nobodyさん
2005/08/07(日) 13:41:15ID:???これが最強
0948nobodyさん
2005/08/07(日) 13:59:33ID:???MagpieRSSというRSSパーサー(http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS)を
設置したのですが、RSS0.92を取得して、RSS1.0へ出力するにはどのPHPファイルに
どのような記述をすればいいでしょうか?
サイトに埋め込む方法はよく取り上げられているのですが、
そのままRSSに書き出す方法が見つからないので・・・
0949912
2005/08/07(日) 15:54:11ID:???できませんか?
2005-08-07T15:38:10+09:00
Sat, 6 Aug 2005 12:55:00 CDT
20050804T00:00:00
0950nobodyさん
2005/08/07(日) 16:04:52ID:Comr+/IIGETでもPOSTでもいいんだけど、SQLインジェクションというのを調べてたら
そのまま渡されたデータをSQL文に入れたりするのがちょっと怖くなってきた。
もちろん数値ならctype_digit、半角英数字ならctype_alnumとかでチェックはしてるんだけど、
たとえば半角全角オールオッケーなデータ(掲示板の投稿内容とか)はどうすればいいんだろう?
SQL文で使われそうな英単語を弾くというわけにもいかないし。
誰か安心できるいい方法教えてplz。
0951nobodyさん
2005/08/07(日) 16:10:10ID:???お好きな物を用途にあわせてドゾ
http://jp2.php.net/manual/ja/function.htmlspecialchars.php
http://jp2.php.net/manual/ja/function.strip-tags.php
http://jp2.php.net/manual/ja/function.addslashes.php
0952950
2005/08/07(日) 16:22:35ID:Comr+/II即レスどうもです。
確かにSQL文中の変数をシングルクォートでくくっておいて、
入れる変数を全てhtmlspecialcharsで処理すれば問題はなさそうですね。
ところで最近買った本には
「入力した値をデータベースに格納する場合には、スクリプトの無効化はデータを表示するときに行う」
と書いてありました。
格納時にエスケープしてしまうと
「ブラウザを経由せずにデータ入力した場合にエスケープが行われない」
「ブラウザ以外に出力する場合にエスケープしたキャラクタを元に戻す必要がある」
だそうです。
言ってることは正しいけど、意図しないSQL文を入力されてしまう可能性を考えたら
SQL文発行前に処理しておいた方がいいのでしょうか?
0953950
2005/08/07(日) 16:25:57ID:???0954nobodyさん
2005/08/07(日) 16:33:31ID:???とりあえず自分はアドスラッシュだけして格納、表示の時点で
nl2br($str);またはnl2br(htmlspecialchars($str));
BBSで特定のタグを許したければstrip_tagsのオプションで指定しています。
ただ、マヌアルによるとstrip_tagsは構文チェックはしないらしいのでhtmlが壊れる可能性はある
0955951
2005/08/07(日) 16:38:54ID:???ごめんなさい、952をちゃんと読んでいなかった…。
>確かにSQL文中の変数をシングルクォートでくくっておいて、
>入れる変数を全てhtmlspecialcharsで処理すれば問題はなさそうですね。
そんなんすか?格納時にhtmlspecialchars()かましてもしょうがない気がしますが…。
一度マヌアルのhtmlspecialchars、addslashesを読み返しておいた方がいいかもです
あと、関数個別以外にも
http://www.php.net/manual/ja/security.database.sql-injection.php
も一読しておいて損はないかと…
0956nobodyさん
2005/08/07(日) 16:39:02ID:???DB周りについては以下の考えでいいのではなかろうか。
DBに渡すデータ
・データ中に ' や \ が含まれているとSQLエラーになるんで addslashes でエスケープ
・データ中にSQLが含まれていてもただのデータとして扱ってもらうように前後を ' で挟む
・データ中にHTMLタグが含まれていてもDB上のデータとしては別に問題ないので何もしない
DBから取り出したデータの扱い
・ブラウザに表示する際、HTMLタグが含まれているとまずいので htmlspecialchars でタグを除去
0957nobodyさん
2005/08/07(日) 16:51:06ID:/ebYkLvj0958950
2005/08/07(日) 16:51:35ID:Comr+/II>>952の「確かに・・・問題はなさそう」は勘違いでした。すみません。
ではさしあたってタグは全部無効化するということで
・magic_quotes_gpcはon(全てのGET,POSTに自動でaddslashes)
・入力したデータは必要な書式かどうかのみチェック
・DB格納時には特に処理しない
・ブラウザでの表示時にはhtmlspecialchars(stripslashes($hoge))で処理
・ファイルへの出力時にはstripslashes($hoge)で処理
これで大丈夫かな?
(最初に読んだ入門本に、データ入力直後にhtmlspecialcharsで処理するように書いてあったのでそれが染み付いてましたorz)
0959nobodyさん
2005/08/07(日) 17:03:22ID:???基本的に>>956の考え方がスマート。
ただ、更新頻度より表示頻度の方が圧倒的に多かったり、容量に余裕があるなら、
DBに入れる前にある程度表示用のフォーマット(htmlspecialchars然り)するのもありだね。
そのへんはサイトの規模に応じてケースバイケースで。
0960950
2005/08/07(日) 17:09:11ID:???あとはSQL文で変数をシングルクォートでくくる、と。
どうもありがとうございました。
0961950
2005/08/07(日) 17:36:38ID:Comr+/II入力フォームから、たとえばラジオボタンやリストから選択してその値をPOSTで渡すような場合、
渡された.phpの方ではその値が正しいものかをチェックしてる?
入力フォームをダウンロードしてvalueの値を改ざんし実行されると意図しない値が渡されたりするわけだけど、
そういうのってどこまでチェックする必要があるんだろうか?
たとえば製品名をリストから選択して製品番号をvalueに入れてある場合、
改ざんされると存在しない製品番号を送られてしまいいろいろ困ることになりそう・・・。
かといってその都度DBに照合するものなのかな?
経験者の方アドバイスお願いします。
0962nobodyさん
2005/08/07(日) 17:47:33ID:???ユーザからの入力は全て正当性チェックしてる。
ただ、数値を入れるべきとこに数値以外を入れてきた馬鹿に対して
「エラー:数値を入力してください」
なんて親切に出してやる義理はないので、PHPが勝手にゼロに変換したとしても放っておく。
(もちろんゼロが正当な値かどうかのチェックは別の話)
0963950=961
2005/08/07(日) 17:54:29ID:???レスどうもです。
やはり全部チェックしてますか。
エラー表示はほどほどに「不親切に」やることにします。
ところで、チェックは「全て」チェックしてますか?
というのは、例えばSELECT文で必要な検索条件を指定するだけの場合もチェックすべきなのでしょうか?
検索結果が0件になるだけなのでまぁいいかなと思ったりもするのですが。
選択された値をinsert/updateする場合には厳密にチェックする必要がありそうですね。
0964962
2005/08/07(日) 18:08:32ID:???っていうかそもそもチェックのしようがないものをチェックしろと言われても何が何だかって話になるし。
> ユーザからの入力は全て正当性チェックしてる。
って部分は
ユーザからの入力は必要なだけ全て正当性チェックしてる。
と言い換えるべきだったかな。
値の範囲とか、文字列長、不正文字、不正タグ、
その他コンテキストとの兼ね合いから必要なだけ全てチェックすべきだと思われ。
0965nobodyさん
2005/08/07(日) 18:31:25ID:???0966nobodyさん
2005/08/07(日) 20:09:33ID:???UNIXタイムに変換したいのですが、strtotime()ではうまくいきませんでした。
他に方法ありませんか?
0967nobodyさん
2005/08/07(日) 20:19:10ID:???DBから引っ張ってきている値なら、SQLでなんとかする。UNIXタイムスタンプで取得できる場合もある。
どうしてもPHPでやりたければ、sscanfやsubstrや正規表現で各要素に分割する。
0968nobodyさん
2005/08/07(日) 21:14:46ID:???みたいな確認文章が表示されます。
投稿ボタンを押す前の書き込んだ内容を、投稿ボタンを押した後の
プレビューとして表示する画面にデータをうつしているんですか?
0969nobodyさん
2005/08/07(日) 21:29:31ID:???0970nobodyさん
2005/08/07(日) 21:38:12ID:???0971961
2005/08/07(日) 21:54:41ID:???う。どうやら言葉が足らなかったようです。
例えばリストから時間(1時間単位)を選択さして値を渡す場合、
if($hoge < 0 or $hoge > 24) print "ぬるぽ";
とだけやりますか?
それとも1から24までの数値をリスト作成時に同時にセッション変数に配列として格納し、
if(!in_array($hoge,$_SESSION["list_hoge"])) print "ぬるぽ";
とした方がよいのでしょうか?
時間だと連続してますが、たとえば製品名を選択して製品番号を値で渡す場合、存在しない製品番号は弾く必要があるので・・・。
セッション変数に全部入れてしまえば意図しない数値は全て弾くことができそうですが、
入力フォームを表示したはいいけど「やっぱやーめたっ」とかで他のページに移られた場合、
無駄な情報がセッション変数に入ったままになってしまいます。
この処理をいたるところで行った場合、メモリの無駄遣いになりそうなので怖いのですが、
何か他に方法はあるものでしょうか?
0972971=961
2005/08/07(日) 21:58:17ID:???各ページでarray_keys($_SESSION);を実行して不要なキーは削除する処理を
session_start()と一緒に書いておけばいいのかな?
0973nobodyさん
2005/08/07(日) 22:14:52ID:???実は>>965は秀和システムのMySQL4/PHP5によるWebデータベース構築って書籍の
PHPインストールのところでmy.iniやlibmysql.dllはシステムフォルダにコピーとなっているのに
php5ts.dllのことはなんにも書かれていないんですよ。
パスの設定もしてないし、Webサーバのフォルダにコピーという記述もないし
で正誤表を見に行ったけど書いてないし
で、どうなのかなと思って。
0974nobodyさん
2005/08/07(日) 22:48:07ID:???CGIやCLIで動かすのならphp-cgi.exe、php.exeと同じディレクトリにあればいいので
特にコピーする必要はなし。
0975nobodyさん
2005/08/07(日) 22:51:30ID:???ファンクションの中でいちいちglobal $hoge1,$hoge2,$hoge3;
ってするのはめんど臭いので、まとめて別のphpにそれらを書いておいてfunctionの中で、それのphpをインクルードしたのですが、使い方として正しいでしょうか?
0976nobodyさん
2005/08/07(日) 22:59:53ID:OZokRLKO送信ボタンを押すと、入力画面下に入力項目が表示される仕組みを
作りたいのですが、どうすれば良いでしょうか?
フォームメールのように、画面を切り替えるような事はしたくないのです。
<HTML>
<HEAD>
<TITLE>test</TITLE>
</HEAD>
<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST">
<P><INPUT TYPE="HIDDEN" NAME="action" VALUE="post"></P>
<br>入力<br>
<INPUT TYPE="TEXT" NAME="tmp" SIZE="17">
<br>
<INPUT TYPE="submit"> <INPUT TYPE="reset">
</FORM>
<?
print "$tmp";
?>
</BODY>
</HTML>
↑のようなスクリプトを書いてみたのですが、動きません。
おかしい点がありましたら教えてください。<(_ _)>
0977nobodyさん
2005/08/07(日) 23:03:08ID:???いずれにせよ入力した内容をサーバーに送らないと表示できるわけがない。
javascriptとか使えばいけるのかもしれんがよくわからん。
0979nobodyさん
2005/08/07(日) 23:09:05ID:???結構読みやすい本でしたので厚くもなく薄くもなく入門用として重宝していたのですが
PHPのインストールのところが他と違うので疑問に思っていました。
なるほどそういうことですか。
解決しました。
ありがとうございます。
0981976
2005/08/07(日) 23:09:48ID:???レスありがとうございます。
<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST"> を
<FORM ACTION="<?echo $PHP_SELF?>" METHOD="POST"> にする事で
出来ました!自分自身に送信してサーバに送ってるって事なんでしょうか。
0983nobodyさん
2005/08/07(日) 23:11:34ID:???それはまさに一度サーバーに送ってから入力フォームを再表示しているわけだがそれでいいわけ?
見た目が切り替わらなきゃいいとかそういう話だったのか?
0986976
2005/08/07(日) 23:15:15ID:???submitボタンを押して、別のページに切り替えるような
処理がダルイなと思ってたんで、これが望んでいた処理です。
判りにくくて申し訳無いです。<(_ _)>
0987nobodyさん
2005/08/07(日) 23:28:24ID:???ちょっと待ってください。
この本を見直したら、http.confがApache2.0のモジュール版でした
CGI版ではないです。
この場合は記述間違いってことですかね?
それともモジュール版はphp.exeを使うのでしょうか?
0988nobodyさん
2005/08/07(日) 23:32:05ID:???php5ts.dllがphp5apache2.dllと同じディレクトリにあるからコピーする必要ないのかな?
0990nobodyさん
2005/08/08(月) 00:57:47ID:54u1h4+D$db =& $this->backend->getDB();
の書き方で、&ってどういう意味になるんでしょうか?
PHPの文法をわかってないんですけど・・・
0993nobodyさん
2005/08/08(月) 01:12:53ID:???PHPとは関係ないが、JavaScript使えばできる。
XMLHTTPコントール使えば、バックグラウンドでデータの送信もできる。
いわゆるAjaxだな。
0994nobodyさん
2005/08/08(月) 01:15:48ID:???ポケットリファレンス使ってるんだけど書いてなかったんだよぅ
・・・次スレってもう立ってるのかな?
誘導でるまで書き込み控えたほうがいいかも
0995994
2005/08/08(月) 01:17:29ID:???0996994
2005/08/08(月) 01:19:20ID:???【PHP】くだらねぇ質問はここに書き込みやがれpart8@WebProg
http://pc8.2ch.net/test/read.cgi/php/1123431535/l50
0997nobodyさん
2005/08/08(月) 01:19:23ID:???php5apache2.dllにpathが通ってればいいけど、
そうでない場合はapacheがloadするpathに無いと駄目だから
WindowsのディレクトリとかApacheのディレクトリにないと駄目な筈。
でも、php5ts.dllが見つからなければApache起動時にPHPの読み込みに失敗すると思うが
それが出てないってことは、どこか別のところにあるバージョン違いも含むphp5ts.dllが
有効になってるんじゃないの?
0998994
2005/08/08(月) 01:20:07ID:???0999994
2005/08/08(月) 01:20:28ID:???1000994
2005/08/08(月) 01:20:43ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。