トップページ⇒php
1001コメント375KB

【PHP】くだらねぇ質問はここに書き込みやがれpart7

レス数が1000を超えています。これ以上書き込みはできません。
00019662005/07/12(火) 01:47:09ID:qOoYFCn7
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>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に近かった自分が勝手に立てちゃいました。
0002nobodyさん2005/07/12(火) 02:12:07ID:???
>>1
乙だ
0003nobodyさん2005/07/12(火) 09:24:04ID:a//rVl7j
自作ソフトとかさ、スクリプトを使ってもらおうと
するとき、ダウンロードとかさせる機能はどうやるの?
おばさんが作ってたHPにダウンロードはこちらからとか
あったのをみて、俺正直すごい敗北感を感じたよおしえてくれ
頼む・・・
0004軟式PHP2005/07/12(火) 09:25:44ID:???
<a href="sugoi_obasan_hp.zip">ダウンロードはこちらから</a>
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}");
?>
00069662005/07/12(火) 11:12:03ID:???
<?php
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が自動リンクされませんでした。結構それなりに出来てるとは思ったのですが何故駄目なんでしょうか。
00079662005/07/12(火) 11:20:01ID:???
とりあえず言葉じゃ伝え難いのでSSとってみました。
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:???
>>10
自演か?
いくら2ちゃんでも頑張ってる初心者をむやみに煽ったりはしないだろ。
レスもらったのにスルー、独自路線GoGoでヘルプするから
煽られてるだけ。
00129662005/07/12(火) 12:51:49ID:???
前スレで教えて貰ったのは教えて貰ったので頑張ってやっているんですが、
>>6のはちょっと自分なりに思いついたのでやってみたところ、
色々やっても駄目だったし自分の頭じゃ理由が分からなかったので、
せめてヒントだけでも貰いたいなと勝手に考えていました。

なんか教えて厨っぽくてすみません。
0013nobodyさん2005/07/12(火) 14:08:51ID:???
>>11
自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
0014nobodyさん2005/07/12(火) 14:24:56ID:ZD8v3rFB
質問です。

自分のPCで絵文字を見れるように外字設定がしてある状態です。
例えば(←皆さんには・に見える?)などを書くと私のPCではちゃんと絵文字が表示されています。
ですがPHPで作成した掲示板に絵文字を書くと「?」と表示されます。
文字コードの問題なのでしょうがいまいち分かりません。

ご存知の方ご教授お願い致します。
0015nobodyさん2005/07/12(火) 14:30:15ID:???
PHP5でJava連携ってどうやるんですか?
0016nobodyさん2005/07/12(火) 15:18:33ID:2mlSOJGk
>>13

じゃあチラシの裏に書いてなよ
0017nobodyさん2005/07/12(火) 15:19:37ID:???
>>15
echo 'Java連携';

上記の答えが満足できなければ、満足できる答えを得るためには
どう質問すればよいか考えろ
0018112005/07/12(火) 15:21:32ID:???
>>13
>自演じゃないが教えたことをやってれば良いって考え方に賛成できないだけだ
同意。
ただし、前スレを読んでも同じ事が言えるのなら尊敬。
0019nobodyさん2005/07/12(火) 15:21:47ID:???
連携内容による
0020nobodyさん2005/07/12(火) 15:22:23ID:???
>>前スレ 966
やっつけてみたのだわ。ま、私ならこんなものを常用する気にはなれないわね。

<?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:???
>>20
前スレ>>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:???
自分ならftpとかnewsとかイラネ
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:???
2chブラウザじゃあるまいしttpでリンク形成してどうする
0026nobodyさん2005/07/12(火) 16:22:33ID:???
>>23
('$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:???
966は2chブラウザでも作るつもりなのか
この腕前で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:???
function test($test) {
while($test>=10) {
print("test")
$test++
}

こうやっても何も表示されないんです
0034nobodyさん2005/07/12(火) 16:39:09ID:???
>>33
$test++ → $test++;

何も表示されないときは、ソースの先頭に
ini_set('display_errors', true);
error_reporting(E_ALL);
と入れてみなはれ。
0035nobodyさん2005/07/12(火) 16:39:27ID:???
>>33
何をしたいのかよく分からんが、簡単に無限ループに落ちそうだな。
0036342005/07/12(火) 16:40:08ID:???
抜けてた。こっちも。
print("test") → print("test");
0037202005/07/12(火) 16:41:46ID:???
くっ、、不覚をとったのだわ。。
0038342005/07/12(火) 16:42:21ID:???
ふんとだ。良く見ればループ条件がおかしいような。。。
0039軟式PHP2005/07/12(火) 17:09:35ID:???
}足りないしぼろぼろだな。
0040332005/07/12(火) 17:11:49ID:???
出来ました。有難う御座いました。
0041142005/07/12(火) 17:19:00ID:ZD8v3rFB
>>14です。いまだに解決方法が見つかりません。

絵文字のみ判別して絵文字の場合はアスキーでそのまま送ればいいと思うのですが
頭がコンガラガッテ爆発しそうです。


??xE63E;F89F/63647
0042nobodyさん2005/07/12(火) 17:37:26ID:???
>>41
よく分からないけど、絵文字を画像にして
絵文字の文字コードを画像に置換した方が医院じゃないか?
0043nobodyさん2005/07/12(火) 17:39:52ID:???
>>41
ひとまずPHPから離れて。。。
その外字を含んだ手書きHTMLでは正常に表示できるのかな?
あと、他人があなたの掲示板を使用する場合、外字はどうするの?
使用予定の人、全員に外字ファイルを配布するつもりなのかな?
0044142005/07/12(火) 18:01:35ID:ZD8v3rFB
>>42>>43

お返事どうもありがとうございます。

社内でしか利用していない掲示板なので外字ファイルは全PCに導入済みです。
絵文字を画像変換ですがその場合表示は出来るのですが
コピペが出来なくなってしまうのが問題です。(コピペを多用する為)
←これは全員ピースしている絵文字が見えます。
ですがこの(ピース)を投稿するとサーバに?として送信されてしまいます。
この(ピース)を(ピース)のままサーバに送信するのはどのようにしたらいいのでしょうか?
0045432005/07/12(火) 18:24:24ID:???
>>44
絵文字を使う会社ってぷりてぃだね。
サーバーに送信されたデータをどのように確認したのか判らないんだけど。。。
以下で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
?>
0046nobodyさん2005/07/12(火) 18:24:53ID:???
>>44
PHPで変換してるんじゃないの
スクリプト見ないことにはわからないよ
0047nobodyさん2005/07/12(火) 18:36:19ID:???
ホントくだらない質問で恐縮なのですが、よくPHPで構築されているサイトでリンクをクリックするとxxxxx.php?xxxxx=xxxxxこんな風になるのってあるじゃないですか
例えば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:???
>>47
それはセッションではなくてget
http://www.xxxxxxxxxx.com/?xxxxx=xxxxx
これは
http://www.xxxxxxxxxx.com/にリンクしてついでに
xxxxx=xxxxx
↑名前 ↑値
で変数を渡しているのでリンク先で$_GET['xxxxx']とやると=の左側にある値がとれる
0050nobodyさん2005/07/12(火) 18:54:54ID:???
>>47
index.phpファイルの中で、<a href="?hoge=moge">てな感じにすれば、そうなる。
ファイル名を省略すると、鯖が気を利かせて index.phpが呼び出される。

>>48
php.iniのmb_関係の設定。
php.iniを弄りたくない場合は、mb_language()で設定する。
無指定の場合は、uni 扱いになる。
0051nobodyさん2005/07/12(火) 19:24:47ID:???
>>47
まずは基本を押さえる
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:???
排他処理フラグを作ってDBにalterしておけば?
0054nobodyさん2005/07/12(火) 19:45:05ID:???
>>50
php.iniでmbstring.languageを = Japaneseの箇所を有効にしましたが変化無しだったので
mb_language(ja)でとしたら(゚д゚)ウマーでした。
ありがとう。
0055nobodyさん2005/07/12(火) 19:45:22ID:???
>>52
ADO.NETが勝手にやってくれることをおまいさんが
実装すればいいだけのこと。色々方法はあるけど、一例。
 1) データベースに更新毎に値が変わるカラムを用意
 2) 編集開始時にこのカラムの値を読み出して取り置き
 3) 保存時にこのカラムの値を再読み出し
 4) 2) と 3) がアンマッチなら他のユーザーが更新しているんでエラー等を表示
更新毎に値が変わるカラムをどうするか、どう更新するか(自動 or 手動)は
自分で考えれ。判らんかったらまたおいで。
0056522005/07/12(火) 19:59:57ID:???
>>55
1つ考えていたのは、レコードに更新日時を持つようにして、
該当レコードを編集する為に表示させたとき、この更新日付を取得しておいて、
更新時に比較するというもの。(>>55が書いてる事と同じだと思います)

しかし、これだと複数人がほぼ同じタイミングで更新しようとした場合、
トランザクションを掛けても、データ更新は出来ない(待たされる)が
(更新前の)データを参照する事が可能なので、
更新日時の比較時にはマッチしてしまい、誰かが更新終わってロック解除されて
自分のデータを更新しに行ったときには既に更新日付が変わってるという事が考えられます。
0057552005/07/12(火) 20:15:36ID:???
>>56
そこまで理解できているんなら最初からそう書いたら?
情報を小出しにして互いに何の得があるんだ?

UPDATE 。。。WHERE カラム1 = 更新キー AND カラム2 = 取り置きした更新日時

を実行した後、更新したレコード数を得て(mysqlならmysql_affected_rows関数など)
 1であれば正常
 0であれば他ユーザーが更新している
でいいぢゃないの。
0058552005/07/12(火) 20:30:20ID:???
>>57
そうか、WHEREの条件の中で比較すればいいのか。
盲点でした・・・
0059nobodyさん2005/07/12(火) 21:31:01ID:dBnqhLiG
gmailがrssのフィードを吐き出してるそうですが、こいつをphpで取得して表示させちゃうって不可能でしょうか?
https://ユーザ名:パスワード@gmail.google.com/gmail/feed/atom
でrssリーダーでは読めるのですが。
0060nobodyさん2005/07/12(火) 22:00:30ID:???
>>44
今FOMAから見てるけどになってるよ。
K〇NTのから盗んでPHP化すればいいと思うよ。
漏れは挫折したが。
0061nobodyさん2005/07/12(火) 22:19:46ID:8KfiQ0Na
PHPしかつかえないんだけどさ・・やっぱりJSPにも手をだすべきかな
将来を考えてさ・・・お前らどう思う?
0062nobodyさん2005/07/12(火) 22:26:14ID:???
>>61
職業プログラマか、そうでないかにも拠ると思うが。
職業プログラマなら、自分の所属する会社の動向や
その会社を見限った時に、自分の売りをどこに持つかにも拠る。
0063nobodyさん2005/07/12(火) 22:28:26ID:83Vu/kYo
>>59
つ[xml_parse_into_struct]
0064nobodyさん2005/07/12(火) 23:47:28ID:5RU+KNuo
【ありがとう】橋本真也 追悼オフ【破壊王】
http://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+
$data = file("http://www.hoge.com/hoge.html");
って感じでほかの鯖にある情報を取得して、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:???
fsockopen()
0067nobodyさん2005/07/13(水) 01:15:35ID:???
>>65
ある。sockopen、pear HTTP_Client
0068nobodyさん2005/07/13(水) 01:19:45ID:???
>>65
ティップ: fopen wrappers が有効の場合、
この関数のファイル名として URL を使用することが出来ます。
ファイル名の指定方法に関する詳細は fopen()、
サポートされるURLプロトコルの種類 については、(例えば)付録L を参照してください。
0069nobodyさん2005/07/13(水) 01:56:35ID:???
>>65
URL先の内容を精査しないで使うバカ避けに、サーバをそういう設定にしてある。
> これは鯖の設定でこういう事は不可能ということですか?
そういうこと。

ソケット関数でHTTPでGETするとか、それの上に被せたPEARの
ネットワーク関連のライブラリを使うとか、誰かの作った
URL file-accessが可能なライブラリ利用するとか、cURLを使うとか、色々。
0070nobodyさん2005/07/13(水) 15:30:11ID:mGL09CH7
GD関連で教えてください。

imagejpegを使ってJPEG画像を作成してるのですが
品質を100で作成しているにもかかわらず
色の境に中間色が使われぼやけてしまいます。

これを回避することはできないでしょうか?
それともJPEGの仕様上仕方がないのでしょうか?

0071nobodyさん2005/07/13(水) 15:36:19ID:???
>>70
>JPEGの仕様上仕方がないのでしょうか?
そうだと思う
画像の作成なら普通gifかpng使う(画像劣化なし)
jpegはjpeg画像の加工ぐらいしか使わん
0072702005/07/13(水) 15:42:23ID:???
>>71
さっそくのレス、ありがとうございます

実は生成した画像をFlashで読み込むのと
256色を超える可能性があったのでJPEGにしてたのですが
劣化がひどいので
Flash読み込みをあきらめてPNGにすることも
試したうえで検討してみようと思います。
ありがとうございましたー
0073nobodyさん2005/07/13(水) 15:48:23ID:???
断片的な情報しかないんだけどimagecreatetruecolorは使ってるかな?
0074nobodyさん2005/07/13(水) 16:04:21ID:???
ちょっとスレ違いだとは思いますが、正規表現で全角かなカナ英数字ってどうやれば良いんでしょうか?
0075nobodyさん2005/07/13(水) 16:13:48ID:???
>>73
true colorにしてもぼやけるものはぼやける。
jpegってのは基本的に圧縮技術だから。

でもjpegだと(quality高くしとけば)遠くから見たときちゃんと見える。
特にqualityを100とかにしとけば逆にキレイに見えることすらある。
jpegってそんな存在。
もちろん汚くなることもあるけど。

ぱっと見で気にならない程度ならjpegにしてサイズ減らすのもありかと。
0076702005/07/13(水) 16:14:54ID:???
>>73
使ってますー
最初これでもはまりました

PNG出力試してみました。
全く劣化なしできれいでした。
しかも品質100のJPEGに比べて
ファイルサイズが1/5くらいになりました
0077nobodyさん2005/07/13(水) 23:34:01ID:???
cronを使って、メールを送信するphpスクリプトを定期実行しています。
レンタル鯖(共有または専用)で上記を行う際に、
万が一cronの実行時間に鯖が落ちてたりしてcronが実行されなかった場合の
カバー(鯖が正常に戻ったときに未実行のcronを実行する)は、どうすればよいでしょうか。

僕が考えたのは、スクリプトが実行されたかどうかのフラグをDBに記録しておいて、
メール送信スクリプトとは別に、「cron実行されたかどうか判別スクリプト」を
1日に何回かcronで走らせる・・・という方法です。
しかしこれでは、「判別スクリプト」を走らせるcron自体が不実行だった場合
どうしようもありません。何かもっとスマートなやり方ってありますでしょうか。
0078nobodyさん2005/07/13(水) 23:39:14ID:???
>>77
大体それで良いと思うけど、
メール送信の実行時にフラグ記録及びフラグのログを見て実行されなかった物があるか調べてそれも同時に実行すれば良いんじゃないの?
分かりにくくてスマソ。つまり、メール送信のスクリプトと実行確認のスクリプトを分けずに、同時にその二つの処理を行えば漏れは無くなるでしょってこと。
0079nobodyさん2005/07/13(水) 23:44:56ID:???
>>78
あ、そうですね。二つをまとめたほうがいいですね。

それと、phpの問題でなくサーバーの問題になるかと思いますが、
障害などで未実行になったcronジョブを、サーバー再起動後に
検出して再実行する…ってことは技術的に可能なんでしょうか??
0080nobodyさん2005/07/13(水) 23:47:55ID:???
>>77
漏れだったらこんな処理にするかな
・送信するメールをファイルに保存するスクリプト
 (保存時はファイル名が重ならない様に日時等にする)
・保存されたファイルをメール送信、送信後は削除するスクリプト
の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:???
すれ違い
0084nobodyさん2005/07/14(木) 00:40:44ID:???
>>79
なんかcronに代わる、似たような機能があったような気がしる。
0085nobodyさん2005/07/14(木) 05:01:36ID:???
PHPで出力するHTMLページをフレーム分割することって出来る??
どのようにソース書けばいいんだべ・・・。
0086nobodyさん2005/07/14(木) 06:28:11ID:???
>>85
<frameset>

茨城県民、Web製作版へGo!
0087nobodyさん2005/07/14(木) 09:17:53ID:???
ここは頼りになるなぁ。
だれか自宅サーバたててる椰子、PHPでクールなまとめサイトを
作るナリ。漏れムリ。
0088nobodyさん2005/07/14(木) 10:23:44ID:???
SourceForgeみたいにダウンロードページに行くと
自動的にダウンロードが始まるスクリプトってどういう仕組みなんですか?
0089nobodyさん2005/07/14(木) 10:30:30ID:???
AND検索とかOR検索を自前でやるのって、コツコツコーディングしないとだめですか?
あるファイルを行ごとにANDOR検索をかけたいんですが、

検索単語が"ほげ はげ"の時にはほげとはげを含む行を抽出して、
"ほげ or はげ"の時にはどちらかを含む行を取り出したいのですが・・

googleのnotとか、ほげとはげは含むけどハゲは含まないみたいな高機能な検索を
するライブラリとかってあるようで無いですよね。

0090nobodyさん2005/07/14(木) 10:54:18ID:???
自分で料理せずコンビニ総菜にケチを付けるようなまねはよしてください
0091nobodyさん2005/07/14(木) 11:08:25ID:???
>>89
namazu
0092nobodyさん2005/07/14(木) 11:14:44ID:???
PHP4だと__CLASS__って使えない?
PearからMail_Mime落としてきて試してるんだが、
どうも__CLASS__のせいで上手く動かない気がする。
0093nobodyさん2005/07/14(木) 12:21:27ID:???
>>92
AA略 全部マニュアルに書いて…

http://jp.php.net/manual/ja/language.constants.predefined.php
0094922005/07/14(木) 13:19:02ID:???
>>93
うっスマン。
__CLASS__は4.3からか。
うちのレンサバPHP4.1.2だったよ・・・
こういう場合はPEARは使えないって事だろうか。
0095892005/07/14(木) 13:24:02ID:???
>>91

Namazuって全文検索じゃないですか。
配列の中の各要素にたいしてandとかorとかnotするにはどうするのがいいかなと
思ってるんです。
0096nobodyさん2005/07/14(木) 13:44:37ID:???
>>95

>>89のどこをどう読めば配列の中を検索したいって読み取れるんだ?
0097892005/07/14(木) 14:47:16ID:???
>>96
ごめんなさい、言葉が足りませんでした。
あるファイルを『行ごと』に、というわけで、
ファイルを読み込んで1行ごとに配列に入れて、それに対してANDOR検索を・・
ということだったのですが、そこまで読み取れるはずが無いですね。

とりあえずスペースで区切ってANDだけ、orで区切ってORだけというのは出来たんですけど、
ANDとORを組み合わせるのとそれにさらにNOTを組み込むのが難しいです。
0098852005/07/14(木) 16:38:23ID:???
自己解決しますた。
特別なこと考えず、普通にフレームつくるときのHTMLを
echoで出せばいいだけだな。深く考えすぎた。
0099軟式PHP2005/07/14(木) 16:53:23ID:???
89は文句ばかりたれる雑魚だからスルーしときなされ。
0100nobodyさん2005/07/14(木) 18:25:06ID:???
配列に格納した文字列を全てforeachで処理したいのですが、
その都度配列のキーを取得することは可能でしょうか?
たとえば
$fruit = array("apple" => "りんご", "banana" => "バナナ");
という配列を元に、
「apple」と「りんご」、「banana」と「バナナ」をそれぞれセットで取得したいのです。

array_searchを使ってもできそうなのですが、値に重複があると先にあるキーしか返してくれないようです。
何かいい方法はないものでしょうか?
01011002005/07/14(木) 18:28:39ID:???
ああっ。
foreach($fruit as $key => $value)と書けばいいのか。
解決しますた。
0102nobodyさん2005/07/14(木) 18:33:18ID:???
UTF-8で日記スクリプト作ってる。
んで、フォームから打ち込んだ値をたらい回しにしてたら、いつの間にか「"」の前にエスケープがくっついてた。
なんでだ?
0103nobodyさん2005/07/14(木) 18:45:14ID:???
>>102
何かかわいそうだから
誰かエスパーな椰子たすけてやれよ
0104nobodyさん2005/07/14(木) 18:50:04ID:???
>>102
( ^ ^ )/~
0105nobodyさん2005/07/14(木) 20:02:11ID:???
>>88

自動的にダウンロード始まるページのソースを、
上からじっと読むと見つかります。
0106nobodyさん2005/07/14(木) 21:00:05ID:???
PHPのmb_send_mailで最大どのくらいまでのメールアドレスを
処理出来るのでしょうか?
例えば、BCCとして"abc@**.jp,[email protected]・・・"とメールアドレス
続けて送信するとします。
サーバの内容にもよるかと思いますが、ご存じな範囲で
結構ですので、教えていただければと思います。
0107nobodyさん2005/07/14(木) 22:38:43ID:???
>>102
magic quote
0108nobodyさん2005/07/14(木) 22:43:44ID:???
ASPのRequest.ServerVariables("LOGON_USER")を
PHPに移植する場合、どうすればいいか教えてください。

$objWsh = new COM("WScript.Network");
$objWsh->UserName;
$objWsh->UserDomain;
とWSHで取得しようとしてもサーバ側の情報になっちゃって上手く再現できなかった。

$objWmi = new COM("WinMgmts://{" . getenv("REMOTE_ADDR") . "}/root/cimv2");
WMIサービスで取得しようと思ったが、セキュリティ上無理だった。
0109nobodyさん2005/07/14(木) 22:51:00ID:???
>>108
$_SERVER['LOGON_USER']
0110nobodyさん2005/07/14(木) 23:00:30ID:???
>>108
IISからApacheにも移行してないか?
0111nobodyさん2005/07/14(木) 23:21:01ID:???
>>106
PHP-USERのメーリングリストのログにあるさがせ。
0112nobodyさん2005/07/14(木) 23:33:09ID:???
MySQLに日付の欄(型はdate)があるのですが、
select文で日付をwhere条件に含めるに当たって、
一桁の数値には頭に0をつけてからSQLを発行しないといけないのでしょうか?
日付がMySQLでは2005-07-14となっているレコードを
select * from tbl_hoge where date='2005-7-14'
でヒットするのでしょうか?
0113nobodyさん2005/07/14(木) 23:44:23ID:???
ヒアドキュメント内だと、defineで定義した定数は使えないの?
0114nobodyさん2005/07/15(金) 00:27:25ID:???
>>112
マヌアル嫁
http://dev.mysql.com/doc/mysql/ja/datetime.html
自分で試してみれ。
01151122005/07/15(金) 01:01:05ID:???
ありがとうございます。解決しました。>>114
0116nobodyさん2005/07/15(金) 01:05:27ID:PzceRiM6
ユーザー定義関数を作るとき、引数の初期値に定義済みの関数を利用して設定することはできないのでしょうか?
function hoge ($a = date("Y-m-d")) {
echo $a;
}
と試したところエラーが出ます。
expecting ")"というエラーなのですが、括弧が足らないのでしょうか?
0117nobodyさん2005/07/15(金) 01:17:33ID:???
>>116
function hoge ($a = NULL){
if($a==NULL) $a = date("Y-m-d");
echo $a;
}
とかで
01181162005/07/15(金) 01:22:25ID:???
どうやらできないようですね。
どうもありがとうございました。
0119nobodyさん2005/07/15(金) 01:39:38ID:???
ワロス
0120nobodyさん2005/07/15(金) 03:17:59ID:???
xml扱うのにexpatとDOMってどっちがお勧めですか?
0121nobodyさん2005/07/15(金) 06:54:27ID:???
すみません、header ("Location: admin.php") という感じで飛ばす処理を
しているのですが、以前使っていたレン鯖では問題なかったのに、
違う鯖にしたらLocationで飛べなくなってしまいました。

鯖(Apache?)の設定で、Locationが使えないことってあるのでしょうか??
0122nobodyさん2005/07/15(金) 07:00:05ID:???
>>113
定数と普通の文字列と区別できないだろ
0123nobodyさん2005/07/15(金) 07:00:30ID:???
>>121
とりあえず、絶対URIにしてみろ。話はそれからだ。
0124nobodyさん2005/07/15(金) 07:01:45ID:???
>>121
ある
01251212005/07/15(金) 07:14:29ID:???
補足ですが、Location先を相対パスにしたり絶対パスにしたり絶対URIにしたり
してみましたが、全部ダメでした。
echo "テスト";
header ("Location: admin.php");
exit;
で、「テスト」が出力された画面のままで止まり、その後のジャンプがありません。
つまり、Location先が見つからないのではなく、
あくまでもLocation命令そのものが実行されていない感じです。
01261212005/07/15(金) 07:15:49ID:???
>>124
すみません、どこの設定をいじればLocationを使えるようになりますでしょうか。
0127nobodyさん2005/07/15(金) 07:15:57ID:???
>>121
そんなことロケーションヘッダが来てるかどうか見ればわかるじゃん
つか相対URLはRFC的にアウトなんじゃないの? 相手が携帯だと特に
0128nobodyさん2005/07/15(金) 07:20:38ID:???
                   _ _     .'  , ..   ..   .'     ∧_∧
          ∧  _ - ― = ̄  ̄`:, .∴ '      ・,‘∴  , .   (    ) ←>>125
         , -'' ̄    __――=', ・,‘ r⌒>  _/ /
        /   -―  ̄ ̄   ̄"'" .   ’ | y'⌒  ⌒i
       /   ノ                 |  /  ノ |
      /  , イ )                 , ー'  /´ヾ_ノ
      /   _, \               / ,  ノ
      |  / \  `、            / / /
      j  /  ヽ  |           / / ,'
    / ノ   {  |          /  /|  |
   / /     | (_         !、_/ /   〉
  `、_〉      ー‐‐`            |_/
0129nobodyさん2005/07/15(金) 07:23:43ID:???
>>121
以前の鯖と今の鯖で、スクリプトのソースは全く同じなんでしょ?
それで使えなくなったってことは、Apache側の問題なんじゃないの?
漏れはサーバの知識無いから詳しくはわからないけど。
01301212005/07/15(金) 07:30:06ID:???
>>128
あ・・・、殴られて気が付きましたが、
headerの前にechoで出力しちゃマズイですよね・・・ガクガクブルブル。
echo消したら直りました。ああ、基本的ミスでした。

でも待てよ…、逆に言えば、なぜ前の鯖ではheaderの前にechoがあったのに
正常に動いてたんだろう?? いま再度、前の鯖で試してみましたが、
やはりechoありでも問題なく動きます。なぜ???
・・・・と思ってphpinfoやってみたら、output_bufferingがオンになってますた・・・

ご迷惑かけました逝ってきます欝だ氏のう
0131nobodyさん2005/07/15(金) 07:36:54ID:???
14.30 Location
The field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI
0132nobodyさん2005/07/15(金) 07:44:29ID:???
鯖でテストするなよゴミ屑
01331212005/07/15(金) 07:50:13ID:???
>>132
すいません、一応専鯖なので誰にも迷惑はかからないかと・・・。
0134nobodyさん2005/07/15(金) 07:51:45ID:???
無駄。
0135nobodyさん2005/07/15(金) 07:57:12ID:???
>>120
XMLと操作次第。
まあDOMで嫁。

>>131
初心者はこれ知らないケース多いね。
テストに出るよー。
0136nobodyさん2005/07/15(金) 08:03:08ID:???
パースがCで完結するから小規模なXMLデータはDOMのほうが良いと聞く
0137nobodyさん2005/07/15(金) 08:05:10ID:???
厨房>>121がてっきり共用鯖を使っているものだと思い込んで
玄人ぶって偉そうに忠告をしたつもりの>>132が、
「専鯖」という強力な返り討ちワードを食らった挙句に
苦し紛れに「無駄」と言い捨て逃亡。

これを「諸行無常」と呼ぶ。
0138nobodyさん2005/07/15(金) 08:09:06ID:???
なるほど。共有鯖だと思われてるという認識だったのね
0139nobodyさん2005/07/15(金) 08:13:37ID:???
>>132みたいな恥ずかしいクズ野郎はこのスレに不要だなww
coqスレ辺りがお似合いだ。
0140nobodyさん2005/07/15(金) 08:14:35ID:???
いや、墓穴掘ってるぞ121
専鯖ってのが真実ならテスト鯖じゃないわけで
0141nobodyさん2005/07/15(金) 08:17:23ID:???
前の鯖がどうこうとか書いてたから、専鯖でもまだ実稼動してないんじゃねーの?
0142nobodyさん2005/07/15(金) 08:17:39ID:???
error_reporting = 0 or エラーログ見てないということは可能性高いと見たね
ローカルでデバッグするのに比べて無駄があるとかそんな話じゃないんじゃないのw>>134
0143nobodyさん2005/07/15(金) 08:22:39ID:???
>>137
別に逃亡してないんですけど。
手元でやってたら0.1秒で気づくミスだろハゲ男。
ていうかメル欄全角かよ。俺ハズカシス。
0144nobodyさん2005/07/15(金) 08:24:20ID:???
>>141
リダイレクトが効かないと気づいてよかったな
0145nobodyさん2005/07/15(金) 08:24:55ID:???
なんとかして自分の貧乏をごまかしたい>>137。
0146nobodyさん2005/07/15(金) 08:29:07ID:???
スルーされて何とか絡みたい>>127
0147nobodyさん2005/07/15(金) 11:21:44ID:???
PHPで、ディレクトリにある最新のtxtファイルを取得して
それを違う名前.txtにリネームして同じディレクトリに作成するって
可能でしょうか??
0148nobodyさん2005/07/15(金) 12:02:51ID:???
>>147 可能
0149nobodyさん2005/07/15(金) 12:12:18ID:???
>>148
ありがとうございます
どこか参考になるページとかないでしょうか?
ぐぐってはみたんですがわからなくて・・・
0150nobodyさん2005/07/15(金) 12:19:59ID:???
>ディレクトリにある最新のtxtファイルを取得して
>それを違う名前.txtにリネームして
>同じディレクトリに作成するって
一気にやろうとしないで、マニュアル見ながら上記を一行ずつ解決していけばいいよ。
0151nobodyさん2005/07/15(金) 12:20:37ID:???
>>149
やりたい事がいまいち分かんないけど
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:???
わかりましたマニュアル見て落ち着いてやってみます
どうもありがとうございます
0153nobodyさん2005/07/15(金) 13:07:39ID:???
>>146
遅レスだがワラタw
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:???
>>154
SJISで出力したいなら、出力前にEUC-JP→SJISの変換を掛ければ良いだけだが。
ファイルの入出力も、ブラウザへも全てSJISでやりたいなら、それぞれの
入出力に変換を掛けるか、内部コードにSJISが利用できるようにコンパイルされた
PHPを使って、スクリプトのコードも全部SJISに統一すれば簡単。
0156nobodyさん2005/07/15(金) 14:18:03ID:???
>>154
EUCで全部やって、出力のみをsjisにするとか。
0x5cが下位バイトに来る文字は決まってるから、それに注意してデータを作成するとか(\をつける)。
01571542005/07/15(金) 15:10:23ID:???
>>156
データは外部から抽出されたものをそのまま使いますし
データに\を付けていくのは大変なのでNGです。

>>155
既存のシステムがなかなか停止できないので、
PHPのコンパイルは避けたいです。
mb_convert_encoding関数を使えばできそうなので
やってみようと思います。ありがとうございました。
0158nobodyさん2005/07/15(金) 16:54:44ID:Fg/gKXLa
SPBのPHP5徹底攻略に載ってるソースについて質問したいのですが、
4行程度のソースなんですが、ここに書いたらまずいですかね?
0159nobodyさん2005/07/15(金) 17:00:33ID:???
どうぞ
01601582005/07/15(金) 17:09:27ID:???
VODAFONEの絵文字をimgにおきかえるスクリプトなんですが
絵文字が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軟式PHP2005/07/15(金) 17:23:29ID:???
VODAFONEは同じ絵文字を並べると結合するよ。
$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:???
download.php という対象ファイルをダウンロードさせるためのphpプログラム

$filename=basename($_GET['filepath']);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($filepath);

このようなものを作ったのですが、
filepathにrawurldecodeをかければ日本語ファイル名でもダウンロードできるのですが、
ダウンロード時のファイル名が文字化けしてしまいます。

これを解消するにはどのようにすればいいのでしょうか?

これを機会にheader関数もよく勉強したいのでお願いします。
01631582005/07/15(金) 21:01:03ID:???
>>161
理解しようとしてるのですが、なかなかできません。。
$strWrkにvodafone絵文字が入った文章を入れて>>161を通すと絵文字の部分が何かに置き換えられてる
という使い方でよろしいのでしょうか?試してみたのですが echo $strWrk としたところ何も置き換えられないででてくるのですが
使い方間違っていますでしょうか?せっかく書いていただいたので試したいのでよろしくお願いします。
0164軟式PHP2005/07/15(金) 21:14:31ID:???
>>163
161のコードを通すと、連結した絵文字を分離するから、
それに対して、>>160のコードを通したらイけると思うけど。
あと
>>\x1b\$G\x21\x0fabc
は1個の絵文字だから意味ないよ。
0165nobodyさん2005/07/15(金) 21:39:08ID:???
取ってきたデータが、"1"とか"2"だったら、"01"とか"02"にしたい時は
どうしたらよい??
0166nobodyさん2005/07/15(金) 21:40:50ID:???
http://jp2.php.net/sprintf
0167nobodyさん2005/07/15(金) 21:45:48ID:???
stripslashes()したいんだけど値段表記などの\マーク(バックスラッシュ)だけは表示したいという時は
正規表現にかけるしかないのでしょうか?
0168nobodyさん2005/07/15(金) 21:49:44ID:???
同じnameのチェックボックスに、複数チェックを入れると、
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">
0170nobodyさん2005/07/15(金) 22:00:21ID:???
>>169
配列にするっつーことですかい?
0171nobodyさん2005/07/15(金) 22:04:07ID:???
>>170
ttp://www.stackasterisk.jp/tech/php/php02_06.jsp
このあたりを見てください
0172nobodyさん2005/07/16(土) 02:36:41ID:???
implodeってムチャクチャ便利じゃん、ぽまえら知ってた?
0173nobodyさん2005/07/16(土) 02:53:22ID:???
知らないのはお前だけです。
0174nobodyさん2005/07/16(土) 06:55:00ID:6rljT00v
swfを生成するmingを使いたいのですが
yumでインストールはできないですよね?

makeしてPHPもコンパイルして構築しないとだめですか?
0175nobodyさん2005/07/16(土) 09:45:29ID:???
>>167
stripslashesが必要な文字列なら\は\\になってるはずだから問題ない
01761582005/07/16(土) 11:16:40ID:???
>>161
すぐ結果報告できなくてすみません。
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:???
APCを使えば倍以上早くなるっぽい
ttp://acapulco.dyndns.org/mod_uploader/#performance
0179nobodyさん2005/07/16(土) 16:26:26ID:6tLNOCU8
http://script.maikfan.com/
0180nobodyさん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:wfLNoi6t
ホームページのヒット率の上げ方教えてください。Yahoo登録以外で。
0183nobodyさん2005/07/16(土) 18:22:01ID:???
認証ページをsslにしてみたんだけど、セッションが切れてしまいます。
どうやったら切れませんか?
0184nobodyさん2005/07/16(土) 18:27:08ID:???
PHPとMySQLでデータベースを作っているのですが、入門書には、
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が返ってくることはありえるのでしょうか?
0185nobodyさん2005/07/16(土) 18:49:05ID:???
>>182
落語を見に行った後、SEOでぐぐれ。
0186nobodyさん2005/07/16(土) 18:50:52ID:???
>>181
つPerl
0187nobodyさん2005/07/16(土) 19:02:16ID:???
>>184
orはif文などに出てくるorと同じ
左がfalseなら右を実行するので、
mysql_queryがfalseならdieを実行する。
01881812005/07/16(土) 19:24:56ID:mgfMVhVU
>>187

Perlでしか出来ないってこと?
PHPでやりたいのです…。

Callしなくても、includeするだけで変数使えるとか!?
でも、呼び出しプログラムの方のエラーが出るの。
0189nobodyさん2005/07/16(土) 19:31:11ID:???
>>188
$date = _GetDate();
function _GetDate() { return date('Y/m/d H:i:s'); }

まず調べれ
0190nobodyさん2005/07/16(土) 19:39:24ID:???
>>188
お前が書いてるのはほぼPerlだってこと。
↓くらい読んでから質問しようね。
ttp://www.php.net/manual/ja/language.functions.php
01911812005/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:???
>>191
エラーメッセージを嫁。頭弱いのか?

ttp://jp.php.net/manual/ja/function.getdate.php を読んで
>>189氏が何故_を先頭に付けたか考えろ。
01931812005/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:???
>>184
>or die("だめぽ");
このパターンの例文に関してなんだけど・・・

<html>から<body>と
</body></html>を、自分で作った関数で吐かせてる場合は
dieしちゃうと、そのエラーメッセージより後ろは表示してくれなくなるんで困ってます。この辺は皆さんはどんな風にしょりしてますか?

エラーメッセージの後ろに</body></html>をくっつけておくしかない?
01971842005/07/16(土) 21:16:59ID:???
>>187
なるほど。
エラー表示が1行で済みそうです。
どうもありがとうございました。

>>196
自分はエラー表示用関数を作ってます。
コンテンツを適当なヘッダとフッダではさむ通常の表示用関数に、
最後にexit()をつけたものをエラー表示用関数として使ってます。
01981812005/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:???
>>198
外部ファイルの処理を全て。。。という部分が判るようで
判らないんだけど、その部分だけを外部ファイル、他の部分は
別の外部ファイルでいいのでは?

--- 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;
?>
02011962005/07/16(土) 22:36:12ID:???
>>197
なるほど。
いいのか悪いのか解らんけど、基本的にスクリプトは最初から最後まで<?phpと?>で囲んでしまって、getメソッドで飛ばしたモード判別変数でcaseで切り替え。
たいていはこんな作りなんで、どうしたものかと、思ってました。
エラーメッセージを引数にした関数を自分で作ってそこで実行すれば便利ですね。
02021982005/07/16(土) 22:49:02ID:???
>>199-200
レス、ありがとう(;_;)

>外部ファイルの処理を全て。。。
出来れば、共通で使うものは同じ外部ファイルにまとめて書きたくて
日付取得以外の処理も色々書いた場合、
ただの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
PHP5を使っているのですが

定数宣言をすべて
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:???
Java使え
0207nobodyさん2005/07/16(土) 23:50:26ID:trCc1XOq
>>206
そうしたいのですが仕事上どうしてもPHPを使わないといけないのです。
ミッションクリティカルも少ない単純なアプリケーションですので。
プロジェクトマネージャの判断でPHP5を使うことになりました。
0208nobodyさん2005/07/17(日) 00:04:49ID:???
うんこリーダーだな
0209nobodyさん2005/07/17(日) 00:17:03ID:B/lkcUpB
UTF-8で設定したMySQL4.1に、UTF-8の2バイト文字を登録して、PHPで表示させたら
「?????????????????」と文字化けしてしまった。
同じサーバ上の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:???
>>202
昔ながらのこんなテクニックもある。

function a(){
return array($a,$b,$c,$d);
}

list($a,$b,$c,$d) = a();
0211nobodyさん2005/07/17(日) 01:35:35ID:???
>>209
自分で書いたコードの方にはMySQLにコネクション張った後に、
「接続クライアントの文字コードはUTF-8だよ」って
MySQLサーバに送ってないから、デフォルトのlatinだって
思われてるんで、latinで表現できないのが?になってるんでね?
0212nobodyさん2005/07/17(日) 04:38:53ID:???
>>202
includeするとファイルの内容全てが読み込まれるから、関数にする、しないは
関係ない。
includeファイルの中で関数にしなかった部分はincludeされた時点で実行される。
関数にした場合はその関数を呼び出した段階で実行される。
そもそも関数そのものが理解できてないんぢゃないかと思われ。
0213nobodyさん2005/07/17(日) 06:53:32ID:???
本当にくだらない質問だと思われるかもしれないのですが、
1週間前にPHPをインストールして始めた初心者なので、お許し下さい。

$a = "あああ";
echo $a;

この"あああ"の部分ですが、ダブルクォーテーションがなくても
表示されるのですが、なくてもいいんでしょうか?
どういう条件で""で囲むのでしょうか。

数字はつけない、文字列はつける、変数には付けない でやっているのですが
このままでいいのでしょうか?
0214nobodyさん2005/07/17(日) 07:09:58ID:???
$a = あああ;
ってこと?
その場合、「あああ」の部分はPHPのパーサが未定義の定数とみなして、"あああ"に再解釈する。
危ないので文字列にはきちんとクォーテーション(ダブルorシングル)つけるべし。
とりあえずマニュアルじっくり読んでガンガレ
http://www.php.net/manual/ja/
0215nobodyさん2005/07/17(日) 07:46:41ID:???
>>213 >>214
あのマニュアルの中から探すのはチト困難かも。
この辺りを参照汁。
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:???
認証ページをsslにしてみたんだけど、普通ページに戻ったときに
セッションが切れてしまいます。

どうやったらセッションを切らずにできますでしょうか。
0217nobodyさん2005/07/17(日) 12:46:10ID:???
>>208
メモリやパフォーマンスの都合上、
データを定期的に渡すだけの
簡単なものには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/9Xz
PHPを使ってRSSの画像もサイトに表示できるコード載せてるサイトありませんか?
0220nobodyさん2005/07/17(日) 20:26:12ID:???
>>214
ありがとうございます。なるほど、PHPで再解釈してくれてるだけなんですね。

>>215
助かります。このマニュアルは、辞書的な使い方がいいのでしょうか。
恥ずかしながら、今のスキルでは理解するまでかなり時間が掛かってしまいます。

購入した本を元に勉強しているのですが、初心者向けに解説しているPHPサイトで
定番的なところとかあるのでしょうか?お勧めがあればどなたか教えてください。
0221nobodyさん2005/07/17(日) 21:11:28ID:???
徹底攻略のPDFは初心者向けだと思う。
0222nobodyさん2005/07/18(月) 00:14:57ID:tJQ/fctA
質問させてください。
ある文字列中の特定の文字がマルチバイトかどうかを判定するにはどうすればいいでしょうか?

具体的には、
abcdefgあいうえお0123456789
という文字列があった場合に、10バイト目がマルチバイトかどうかを判定したいです。

substrを使って切り取る場合に文字化けして困ってます。
全角を1文字としてカウントするmb_substrでは都合が悪いです。

よろしくお願いします。
0223nobodyさん2005/07/18(月) 00:34:05ID:???
>>221
ありがとうございます。マンモスのやつでしょうか?
やはり、あれは良いのですね。
pdfだと見辛いので書籍購入してしまいました。
0224nobodyさん2005/07/18(月) 01:38:51ID:???
>>222
mb_substrのかわりにmb_strcut
0225nobodyさん2005/07/18(月) 02:00:26ID:tJQ/fctA
>>224
ありがとうございます。
mb_strcutも一度試したのですが、使い方が間違っていたようです。
おかげさまでばっちり動作しました。
感謝感激です。
0226nobodyさん2005/07/18(月) 02:29:09ID:???
$a=1; $b=&$a; = ハードリンクだと思うのですが、
この後 unset($a); で、$bも空になるような、シンボリックリンクの様に扱うことは出来るでしょうか?
0227nobodyさん2005/07/18(月) 04:04:16ID:???
>>226
ない。が
NULLを代入すると全部NULLにはなる。
0228nobodyさん2005/07/18(月) 10:10:47ID:???
初心者向けのPHP本としては、紙谷さんの本がオススメ。
0229nobodyさん2005/07/18(月) 10:18:15ID:???
PHPの変数代入をハードリンク、シンボリックリンクと表現する>>226に萌
0230nobodyさん2005/07/18(月) 10:40:28ID:???
>>229
ttp://jp.php.net/manual/ja/language.references.php

マニュアルにも萌えてください。
0231nobodyさん2005/07/18(月) 13:02:11ID:8pn6XAVH
$a = "あいうえおaaa";
echo mb_strlen($a);

13が結果として出るのですが、マルチバイト文字を1として数えされるにはどうすればよいでしょうか?
02322312005/07/18(月) 13:06:37ID:???
すみませんエンコーディングの指定を間違えてました。
0233nobodyさん2005/07/18(月) 23:58:39ID:Mt/K/zKf
全てのリンクURIにあるクエリを付加させたいとします。
たとえばセッションIDとか。この場合、リンクタグを書く際にいちいち
<a href="〜/?sid=<?= $sid ?>">次のページへ</a>
のように書くか、関数かなにか作って
<?= generateLink("http://〜/", "次のページへ", $query) ?>
↓ 下のように出力される
<a href="http://〜/?sid=xxx&name=xxxx">次のページへ</a>
のように書くかのどちらかくらいしか思いつきません。

前者はいちいち書くのが面倒だし、書き忘れると大変です。
後者はデザイン担当の人が使い方を覚えるのを嫌がるのでできれば避けたいです。
皆さんはどちらを使ってますか。あるいは他のやり方で解決してたりしますか?
0234nobodyさん2005/07/19(火) 00:12:35ID:???
>>233
セッションidの自動付加(session.use_trans_sid)以上の機能が必要なのかな?
0235nobodyさん2005/07/19(火) 02:50:03ID:???
xslファイルをメモリ上に生成してxmlに適用するのってどうやればできるんですか?
0236nobodyさん2005/07/19(火) 03:20:15ID:???
例えば echo $_GET["hoge"]; とだけ書いてある get.php に
http://php.domain/get.php?hoge=a+b+c
でみたいにアクセスすると、表示されるのは
a b c
と + (プラス)が (空白)に置き換わるのは仕様??
マニュアルのどっかに書いてある?それとも RFC かしらん?
0237nobodyさん2005/07/19(火) 03:45:17ID:???
>>235
DOMDocument::loadXML()を使うんだ

>>236
PHPの仕様。URLデコード済みのデータが入る
0238nobodyさん2005/07/19(火) 05:52:32ID:IezOVCMv
PHP+MySQLでwebアプリを作っておりますが、DBについての基礎知識や経験が無いため、
いつもデータ型の決定やテーブルのレイアウトで悩みます。

データ型などを決定するにあたっての「原則」というか「常識」みたいなのはありますでしょうか?
リファレンスなどを見てもそれぞれのデータ型に関する教科書的な説明しかなくて、
もっと実用的に「実際にはこういうデータの時にこの型を使う」みたいなTipsを知りたいのですが、
そういうのをまとめたサイトもしくは書籍ってありませんでしょうか?

ド素人の状態から一人でゼロから学んで一人で開発してるので、
周りに誰にも質問できる人がいなくて困っております。。。
0239nobodyさん2005/07/19(火) 06:00:58ID:???
PHPと関係ないようだし、DBの質問としても理解しがたい部分があるなあ
0240nobodyさん2005/07/19(火) 07:05:03ID:???
>>239
後々のことを考えると、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:???
>>238
逆に言えば教科書的な説明で十分なくらいしかルールがないと思った方がいいんでは。
ド素人がいきなりカッチリしたもの作ろうって方が間違いでしょう。
0243nobodyさん2005/07/19(火) 08:18:32ID:???
>>238
俺も同じ境遇だったから(一人で開発、ド素人でゼロからって点で)、かなり共感。
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
COBOL詳しい人にPHPを覚えてもらおうと思うのですが、
どうでしょう?すんなりなじんでくれるでしょうか?
02492382005/07/19(火) 18:12:44ID:IezOVCMv
>>242、>>243
ありがとうございます。
そんなに気にしなくてもいいものなんでしょうか。。。
一人で開発してるとは言え、いちおう事業としてシステム提供しようと
思っていますので、スケーラビリティとかメンテナンスとかも考慮しなければ
いけないのかな、とかなり悶々と悩んでおります。

たとえば、ある数字(たとえば何かの通し番号)ひとつ格納するにしても、
「TINYINT」にしようか「SMALLINT」にしようか、それとも「VARCHAR」でいいのかな?とか…。

あるいは、数十文字程度しか入力されないであろう文字列用のフィールドでも、
念のために「TEXT」にしておこうかな…とか。たとえばVARCHAR(50)よりもTEXTにした場合、
領域が無駄に消費されるとか、レスポンスが悪くなるとかってあるのでしょうか?
効率が悪くなるとか・・・そういうの悩みはじめるともう尽きません。
0250nobodyさん2005/07/19(火) 18:15:33ID:???
>>249
だから板違い。
データベース板に行け
0251nobodyさん2005/07/19(火) 18:18:36ID:???
>>249
心配するな。
その程度のことも判断できない、勉強もしない、勉強の仕方も判らないヤツが
作ったシステムに銭を払おうとは誰も思わん
0252軟式PHP2005/07/19(火) 18:20:03ID:???
>>248
学生レベル程度にCOBOLを組めるけど、COBOLは忘れて
心機一転で覚えてください。というしかないw

0253nobodyさん2005/07/19(火) 18:22:57ID:???
>>248
そのお方はCOBOL以外の別の言語は知っているのかな。
知っているのなら、そう心配することはないと思う。
COBOLしか知らないのなら、そんな方は相手にせずに
アルバイトでも雇ったほうが効率はいいと思うよ。
02542382005/07/19(火) 18:32:09ID:IezOVCMv
>>251
というか、もう第一弾で作ったシステムには既に数十社の顧客がおりますが…。
月商もあなたの給料の3〜4ヶ月分くらいはあると思います。

今のところシステムには特に問題は出てないですが、より良いものにしたいのです。

>>250
>WEBプログラミング@2ch掲示板
>Oracle, PostgreSQL, MySQL といったデータベースの話などをテーマにしています。
0255nobodyさん2005/07/19(火) 18:37:43ID:???
そろそろ失せろやカス
0256nobodyさん2005/07/19(火) 18:40:47ID:???
>>255
喪前は>>251か?ww
偉そうに上に立ったつもりが思わぬ反撃されて逆ギレするのはダセーよ(藁

>>238
とりあえずDB関連の本を何冊か読んでみろ。そんでもう一回質問しる。
0257nobodyさん2005/07/19(火) 18:43:00ID:???
自演乙
0258軟式PHP2005/07/19(火) 18:44:27ID:???
ageてたら自演の匂いがするからsageたほうがいいよ。
0259nobodyさん2005/07/19(火) 18:45:06ID:???
>>251=>>255=>>257=見てて恥ずかし過ぎる・・・カコワルイ
0260nobodyさん2005/07/19(火) 18:46:50ID:???
>>249
うわ、2〜3年前の自分を見るようだ。
とりあえず、数値以外は
全 部 テ キ ス ト に し て お け

変に設計勉強してテーブル分けると自分でどうにもならなくなる。
困ったらフィールド追加で免れろ。

そんな感じで作った奴もトラブルなくちゃんと動いてるし、なによりメンテしやすい。零細企業が立派な決めごと作ってもしかたないのと一緒。

0261nobodyさん2005/07/19(火) 18:48:58ID:kS82naWb
PHPのマニュアルを読んでいて気になったんだけども、
UNIX/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軟式PHP2005/07/19(火) 18:52:49ID:???
スレ違いだとは思うけど俺も一言。
全部テキストってのは俺はしないけど、260の言うようにある程度冗長性を持たせて
データ型は作った方がいいと思われ。MySQLは途中で型変更出来るが
PostgreSQLなんかは途中で型変換出来ないので。
あと、最低限の正規化はやっといたほうがいいと思う。関数を作らないプログラムみたいに保守性・拡張性がガクンと落ちる。
0263nobodyさん2005/07/19(火) 18:55:48ID:???
>>238
つ[ http://allabout.co.jp/career/database/subject/msub_sekei.htm ]
0264軟式PHP2005/07/19(火) 18:56:11ID:???
↑突っ込まれると嫌なので一応PostgreSQLも型変換をやろうと思えば出来る。
一時的なカラムを作成して、そっちに一回移してホンニャカってやる。
0265軟式PHP2005/07/19(火) 18:58:23ID:???
>>261
http://www.php.net/manual/ja/install.unix.apache2.php
「PHP と Apache 2.0.x の互換性に関する注意: PHP の以下のバージョンは、Apache 2.0.x の最新版での動作が確認されています。 」
っていうところが参考になると思われる。
0266nobodyさん2005/07/19(火) 19:01:06ID:???
>>254が精一杯強がっているみたいでカワイイ
0267nobodyさん2005/07/19(火) 19:01:56ID:???
数値と文字列の使い分けで悩んでいるようだと、SQLをうまく使わずにデータファイル代わりにDBを使っている状態じゃないかな?
ソート時の辞書式・数値式やjoinする時の事を考えるとデータ型ってのはある程度決まってくる。
その上で、冗長なデータ排除や効率化のためのテーブルのレイアウト(てか、データベース設計、テーブル設計と言うかな)の話になってくる。
ここまでの話はPHPが関係する部分は無いから、専用板であるDB板が良いと思われ。
書籍スレもあったんじゃないかなぁ。

>>261
本家のマニュアルを読んでください。
0268nobodyさん2005/07/19(火) 19:07:46ID:???
>>265
おおっ、成る程、サンキュー

>>261
いやいや、ホント申し訳ない、
キチンと検索せんといかんね。
0269nobodyさん2005/07/19(火) 20:22:22ID:???
$a = "<FONT size='2'>hoge</FONT>";

このようにすると$aには<FONT size='2'>hoge</FONT>という文字列が格納
されるわけですが、
$aにサイズ2のhogeという文字列を格納したい場合、
(つまりHTMLを反映させた後の状態を格納したい場合)
どのようにすればいいのでしょうか?
ヒアドキュメント以外で方法はあるでしょうか?
0270nobodyさん2005/07/19(火) 20:35:41ID:???
$a = 'サイズ2のhoge';
0271nobodyさん2005/07/19(火) 20:42:31ID:???
>>269
サイズが2倍になったhogeを文字列に格納したいってことか?
であればムリ。ヒアドキュメントを使ってもムリ。
いったい、その文字列を格納して何をしたいんだ?
0272nobodyさん2005/07/19(火) 20:49:27ID:???
>>269
よく分かんないけど、文字列そのものとその属性値を分離したいってことなら、配列に格納するくらいしか無いんじゃないかな?
そいでもって、出力する時に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:???
まぁ、格納するならstyle属性ぐらいにしとけ
0274nobodyさん2005/07/19(火) 20:59:57ID:???
なかなかいい釣り餌ですね
0275nobodyさん2005/07/19(火) 21:00:39ID:4ZlIiQSx
php 4.4.0でeacceleratorは動きますか?
makeし直して入れてみたんだけど、なんか動かないっぽ。
0276nobodyさん2005/07/19(火) 21:08:10ID:???
>>275
動く。手順を再確認。
0277nobodyさん2005/07/19(火) 21:15:37ID:???
>>276
どうも、動きました!
eAcceleratorをmakeしなおす時に、make cleanしてなかったためのようでした。
0278nobodyさん2005/07/19(火) 21:42:38ID:4ZlIiQSx
PHP 5.1がいつ頃 stable になるか、ある程度、予測はできないですかね?
0279nobodyさん2005/07/19(火) 21:53:53ID:???
暇なんでstableみたいなPHP 5.1つーのを作ってみるわ。もちろんWindowsネイティブな。少しまちなー。
0280nobodyさん2005/07/19(火) 22:13:06ID:???
>>261
マニュアルのその記述はいまいち情報不足。
prefork MPMとかCGI版とApache2との組み合わせで問題はまず起きない。
worker MPMとかperchild MPMと組み合わせた時にまだまだ問題が多いので
実運用では使うなつうこと。prefork MPMでApache2運用つうのも
Apache2の本来の実力じゃないしね。

あと ttp://php.s3.to/ のマニュアルは古いから、余り参照すんな。
Googleでの検索では上位にくるけど。
0281nobodyさん2005/07/19(火) 22:19:30ID:???
$keyword="aaa bbb ccc ・・・"
とスペース区切りの文字列(フィールドの数は可変)をそれぞれ
$word[0]="aaa"
$word[1]="bbb"
$word[2]="ccc"
・
・
・
と別の変数に格納するのはどうすればよいのでしょうか?
$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが、
可変するため、うまく切り出すことができません。
0282nobodyさん2005/07/19(火) 22:25:34ID:???
>>281
explode
0283nobodyさん2005/07/19(火) 22:31:28ID:???
1年ぶりくらいで新しくなったchmもらったら全く使えなくなってたので誰かどうにかしてください。
0284nobodyさん2005/07/19(火) 22:31:32ID:???
>>281
最後の方読んでなかったorz
正規表現使わないんだったら、splitよりexplodeの方が高速だよ。

普通に
$word = explode(' ', $keyword);
でいけるでしょ。
list($word[0], $word[1], ・・・) = split(' ', $keyword);
とかしてない?
0285nobodyさん2005/07/19(火) 22:32:50ID:???
>>281
>$ketwordのフィールドの数が決まっていればsplitで切り出せるんですが

splitの使い方間違っていないか?
0286nobodyさん2005/07/19(火) 22:34:56ID:???
>>284
別に
$word = split(' ', $keyword);
でもいいわけだが。
0287nobodyさん2005/07/19(火) 22:35:15ID:???
すみません、PHPというよりは一般的な質問になるんですが、一応PHPで
コーディングしてるのでアドバイスいただけだらありがたいです。

今、ブログから更新通知Pingを受け取って新着エントリー一覧を表示する
プログラムを書いてます。
http://www.boundless-ocean.ne.jp/archives/000049.htmlあたりを参考に、
PEARのXML-RPC Serverを使ってブログのタイトルとURLを読み出すこと
はできました。

しかし、新しく作成されたエントリーのタイトルやURLをどうやって読み出せば
良いのか分からないのです。

普通のPingサイトだと(Myblog japanとか)個別にエントリーのタイトルとURL
も表示できているので、方法はあると思うんですが・・

よろしくお願いします。
02882812005/07/20(水) 02:03:20ID:???
>>284-286
レスありがとうございます。
splitで切り出したフィールドの扱いを勘違いしていました。
フィールド数が可変の場合はcount()でフィールド数を取得すれば良かったんですね・・・

$word = explode(' ', $keyword);
$cnt = count($word);
$cnt = $cnt -1;
for ($i = 0; $i <= $cnt; $i++) {
$word[$i] の処理;
}

のような感じで出来ました。
02892872005/07/20(水) 02:21:48ID:???
自己レスです。
RDFを読み出して、新しく作成されたエントリーのタイトルやURLを取得することにしました。
スレ汚しすまそ。
02902382005/07/20(水) 05:13:11ID:nMj8v/ee
>>260,>>262,>>267
ご指導ありがとうございます。
では、とりあえずあまり深く考えずに冗長性を持たせた構造にして、
正規化(←この概念を忘れてました!ありがとう!)に気をつけてやってみます。

あまりシビアでコンパクトにしてのちのち身動き取れなくなって困るよりも、
余裕を持って適当(?)に作ったほうが「大は小を兼ねる」と考えちゃって良い…みたいですね。
0291nobodyさん2005/07/20(水) 07:10:35ID:???

誰も何も言わないからか、凄い気になるんだが。。。
>>238は
・PHP+MySQLでwebアプリを作ってるが、DBについての基礎知識や経験が無い
・ド素人の状態から一人で学んで一人で開発して周りに誰にも質問できる人がいない
にも関わらず

・第一弾で作ったシステムには既に数十社の顧客がいる
・月商も>>251の給料の3〜4ヶ月分くらいはある。
のんだよな?

結構突っ込みどころ満載な気がするんだが。。。そうでもないのか?
くだらねぇ質問スマソ
0292nobodyさん2005/07/20(水) 07:38:57ID:???
>>291
脳内月商だからつっこまないで
0293nobodyさん2005/07/20(水) 07:55:09ID:???
>>291
自分が不利になると
「僕のパパは社長だからおまえ等みんなクビにするぞぉ」
っていう小学生と一緒
0294nobodyさん2005/07/20(水) 08:25:56ID:???
foreach使えばいいんでないの?>>288
0295nobodyさん2005/07/20(水) 11:00:15ID:???
>>290
数十社の顧客に納品されている正規化すらできていないDBを
見てみたい、激しく見てみたい。
0296nobodyさん2005/07/20(水) 11:12:39ID:???
第1〜3の正規化もしてないのか?
0297nobodyさん2005/07/20(水) 11:16:54ID:???
よくあるPHPのサイトで<a href="/?key=value">value</a>とやるとURLの後に/?key=valueとつきます。
例えばkey=value1のときはfile1をincludeして、key=value2のときはfile2をincludeすると言うのはどうやるのでしょうか?
ページは変わってもサイトの一部分だけしか変える必要のないときなどに使いたいのですが実際にどうすれば良いのか分かりません。
0298nobodyさん2005/07/20(水) 11:20:52ID:???
>>297
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:???
array_search()
0301nobodyさん2005/07/20(水) 11:50:15ID:???
宿題は自分でやるものです。
0302nobodyさん2005/07/20(水) 11:51:19ID:???
>>300
あー!!array_search()ですか!!
あると思ったんだけどググっても見つからずに悩んでいました。
のどに詰まっていた納豆がスッキリ胃に入っていきました。トンクス
0303nobodyさん2005/07/20(水) 12:06:50ID:AeK1ZPXK
仕事場の蔵書をWEB管理するソフトが欲しいのですが、Web系初めてなんです。
スキルは C COBOL VBA SQL 位しかないもので。
PHP以外にいろいろありますが、皆さんがPHPやってる理由を
聞かせて頂けるとありがたいのですが
0304nobodyさん2005/07/20(水) 12:10:54ID:???
大学でPHPの講義とかあるなら受けてみたいもんだ
0305nobodyさん2005/07/20(水) 12:17:52ID:???
>>302
あると思ったのならググらずにマニュアルの配列関数見ればいいのに
http://jp2.php.net/manual/ja/ref.array.php
0306nobodyさん2005/07/20(水) 12:23:37ID:???
>>298
それをファイルをincludeさせたい部分に書くだけですか?
なんだか色々調べててフレームワークとかセッションとか出てきたんですが、これらは関係ないのでしょうか?
0307nobodyさん2005/07/20(水) 12:24:51ID:???
>>305
スマン
0308nobodyさん2005/07/20(水) 12:29:12ID:???
>>306
せっかくレスもらったんだから自分で試せばいいのに
03092992005/07/20(水) 14:10:38ID:fiiwUfZg
続けて質問です。

array_search() って完全一致じゃないと駄目なんですね。
部分一致でも検索できる方法ありますか?

例えば、hensu[10] = ヤフーショップ の場合に、 ヤフー だけの検索で引っかかって欲しいんです。
0310nobodyさん2005/07/20(水) 14:23:10ID:???
>>309
for count() mb_strpos()
0311nobodyさん2005/07/20(水) 15:02:03ID:???
>>310
ありがとう。ループで解決しました。
0312nobodyさん2005/07/20(水) 15:10:47ID:???
PHPの話じゃないかもしれませんがお教えねがいます。

<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:???
312です。
なんかinput type='image'はvalueは無効みたいですね。
nameを変えて座標がやってくるかどうかで判断しなくちゃですね。

他にいい方法っありますか?
0314nobodyさん2005/07/20(水) 15:23:58ID:???
>>313
んー。type=button にして、CSSで背景画像の変更とかじゃ駄目?
0315nobodyさん2005/07/20(水) 15:24:26ID:???
>>313
俺の環境ではちゃんと取得できた
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:???
俺のサーバーじゃ$_POST['kbn']は普通に取得できたぜ
0317nobodyさん2005/07/20(水) 15:25:22ID:???
test.php
----------
<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:???
Firefox + PHP5.0.4 なら取得できた
IE6 + PHP5.0.4 ならNGだった
0319nobodyさん2005/07/20(水) 15:38:30ID:???
CSVファイルを配列に読み込んで、○行目から×行目までを出力するとき、今までは

for($i=○;$i<=×;$i++){
 echo $array[$i];
}

と言うループでやっていましたが、もっとスマートな方法ありますか?
0320nobodyさん2005/07/20(水) 15:44:01ID:???
>>314
あっそれもいいかも
でも、buttonってsubmitできましたっけ
onClick='javascript:this.submit()'すれば
いいと思うけど javascriptは使わないポリシーなので
申し訳ない。

自分の環境ではやっぱり
$_POST['kbn_x']はとれても$_POST['kbn']はとれません。
これってPHPの環境変数の設定の違いでしょうか?
申し遅れましたがPHPのVerは4.3.10なんですれど。
0321nobodyさん2005/07/20(水) 15:56:29ID:???
>>318
ブラウザによって違うんですね。
ネスケ系のブラウザエンジンは取れるんですね。
了解しました。
03223152005/07/20(水) 16:24:06ID:???
本当だ
IEだとだめじゃ
0323nobodyさん2005/07/20(水) 16:28:36ID:???
さて、正しい動作はDotch!?
0324nobodyさん2005/07/20(水) 16:31:53ID:???
仕様書よむかぎりではIEが不正動作の様子。
割と有名な問題だから検索すれば対策みつかるよ。
0325nobodyさん2005/07/20(水) 17:00:43ID:???
phpで半角数字以外の文字を消すにはどうしたら良いか教えてください。

「x1xx」とか「,2dd」を「1」「2」にしたいです。
0326nobodyさん2005/07/20(水) 17:06:21ID:???
>>325
preg_replace('/[^\d]/' , '', 'x1xx');
0327nobodyさん2005/07/20(水) 18:20:44ID:???
>>326
�dです。
正規表現を勉強せねば・・・やっぱ慣れですかね?
0328>>2912005/07/20(水) 19:00:55ID:e5fXpd1f
>>292-293
ありがとう
0329nobodyさん2005/07/20(水) 19:17:11ID:???
charsetをShift_JISで書いたソースで
「―ソЫ�\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭�x�x」
を送信すると$_POSTで取ったときに'\'(C5)が付いてくるのって
charsetを変えずにうまいこと解決するには
どのような対策がベストなのでしょうか?
0330nobodyさん2005/07/20(水) 19:21:58ID:???
>>329
magic_quotes_gpc = Off
0331nobodyさん2005/07/20(水) 22:43:59ID:0VkkmhCL
PHPでブラウザのキャッシュを外して表示させる場合は以下のように書け
と言う様な記事に遭遇しました。、

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");」
この時間の意味は何でしょうか?
解説によって時間が異なったりします。

0332nobodyさん2005/07/20(水) 22:54:07ID:???
>>330
あ〜そんな設定があったのですね。
やってみます。
ありがとぉ
0333nobodyさん2005/07/20(水) 23:13:32ID:???
>>331
そこまで勉強したんならもう少し勉強してみてください。
0334nobodyさん2005/07/20(水) 23:32:41ID:???
あるクラスのメソッド内で他のクラスのインスタンスを生成した場合、そのインスタンスの消滅はいつになるのでしょうか?
生成したメソッド終了時? それともスクリプト全体の終了時?
もし全体の終了時ならメソッド終了時に消滅させることって出来るのでしょうか?
デストラクタ(__destruct)を呼び出すとかして。
0335nobodyさん2005/07/20(水) 23:50:29ID:???
>>334
__destructでechoでもすればいつも消えるかわかるだろ。
質問するまえに自分でやれることやらないと、何時までも他人に頼ることになるぞ
03363352005/07/21(木) 01:15:26ID:???
いつも消えるってなんだorz
0337nobodyさん2005/07/21(木) 06:32:47ID:???
>>334
参照されなくなったとき
0338nobodyさん2005/07/21(木) 08:22:30ID:???
参照されなくなったとき〜
0339nobodyさん2005/07/21(木) 09:45:00ID:???
>>331
キャッシュの有効期限だ。
つまり、今現在の日付より前に設定すれば、
アクセスしてきたブラウザはキャッシュの有効期限とみなして
新しくページを読み込むという理論。

だから今より古い時間ならいつでもいいけど、
時間が止まってるパソコンのことも考えて(?)
10年くらい前にしておけば問題無い。
0340nobodyさん2005/07/21(木) 09:52:36ID:???
>>339
ありがとうございました
0341nobodyさん2005/07/21(木) 11:40:24ID:???
>>340
有効期限のことって解説に載ってなかったの?
俺はてっきり「1994年12月1日16時ちょうど」って時間に特別な意味があるのか聞いてるのと思ってた。
03422382005/07/21(木) 12:34:04ID:1d7jG9nE
>>291、>>298
第一弾で作ったシステムは、DBの重要度・依存度はそんなに高くない
ASP(顧客ごとのオリジナルシステムじゃないですよ)なので。
項目数も更新頻度も少ないから一つのテーブルでまとめちゃっても
特に支障なかったんですよ。

でも今作ってるのはDBに入れるべき項目数もレコード数も多くなるので、
きちんとした設計にしようと思って質問しました。

で、もう半年くらい営業してるんで、顧客が数十社というのはむしろ少なすぎです。
開発と営業を一人でこなさなきゃならないのでどうしても時間が足りないんです。
だからそろそろ営業マンと技術者を一人ずつ雇います。

>>296
いちおう第三正規化まで(無意識的に)やってました。
正規化という概念があるのは後付けで知ったんですが。
0343nobodyさん2005/07/21(木) 13:30:41ID:jGRVDiGI
うちにインストールしたApacheで mb_strpos 関数が使えません。
PHP.ini のどこを変更すればいいんですか?
0344nobodyさん2005/07/21(木) 13:45:42ID:???
最近の流行りか?
プロフェッショナリズムの欠如したプロフェッショナル(自己矛盾だな…)
0345nobodyさん2005/07/21(木) 14:34:01ID:pW+lONe3
すいません。PHP3とqmailで出来ているシステムに
手を加えたのですが、これで良いのでしょうか。
qmailでメールのエイリアスを追加したのですが、
/var/qmail/alias/.qmail〜 というファイルに
&〜
というメールアドレスを追加したのですが、qmail
を再起動しなくてもメールのエイリアスの追加は
完了したのでしょうか。
qmailの再起動も知らない初心者なので、これだけ
で良いのかと心配しています。どなかか教えて下さ
ると非常に助かります。お願いいたします。
0346nobodyさん2005/07/21(木) 15:00:50ID:???
PHPとMySQLで入門本を見ながらいろいろ試してるんですが、
mysql_close()とmysq_free_result()は必要なのでしょうか?
入門本では特に「切断する」「開放する」以上の説明はないのですが、
PHPのマニュアルには
「mysql_closeは通常必要ない」「結果保持用メモリは自動的に開放される」
とあります。

プログラミング的には書くのがお行儀がいい、ということなのでしょうか?
それともやはり「どっちでもいい」のでしょうか?
0347nobodyさん2005/07/21(木) 15:04:34ID:???
>>345
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:???
>>345
再起動は不要。
エイリアス追加後、再起動せずにエイリアス宛にメールを
送信してみれば聞くまでもないことだと思うんだけど。
てか、そもそもスレ違い。
0349nobodyさん2005/07/21(木) 15:24:55ID:???
<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して
'hoge.php'で$cnt=count($_POST['hoge'])ってしたら
$cntは3になると期待したんですが1になっちまうんです
3にするにはどうすればよいんしょうか?
0350nobodyさん2005/07/21(木) 15:27:23ID:pW+lONe3
>347
>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:???
>>346
一般的なプログラミングの作法としては、ちゃんとプログラム中で
閉じたり開放するのが正しい(と思ってるので、自分はしてる)。
但し、PHPの仕様としてスクリプト終了時にmysql_close()とmysql_free_result()
相当の動作が自動的に行われると明記されているので、"PHPプログラミング"の
作法としてはスクリプト中で記述しないというのは正しい。
またプログラム処理の結果を吐き出してから後始末を行うので、
結果を得られるタイミングも早く、すなわち処理が速く終わる。

もっともmysql_closeはMySQLコネクションというリソースを、
mysql_free_resultはMySQLからの結果を保持する記憶域を開放するためのものであるから、
スクリプトの動作時間が長く、それらのリソースを無駄に保持する負荷が
比較的大きいのであれば、適宜開放してやるのが良い。
0353nobodyさん2005/07/21(木) 15:51:03ID:???
>>346
俺の考えだけど、俺の場合はソースの頭でオープンさせて最後に開放させてる。

と言うのも、その都度開放するとサーバに負担がかかると思ったから。
何度も開けたり閉じたりするより、最初に開けちゃって最後に閉じた方がよいかと思って。
0354nobodyさん2005/07/21(木) 15:51:51ID:???
>>349
1変数1個だ。
0355nobodyさん2005/07/21(木) 16:00:24ID:???
>>349です。
事象がわかりましたが、
対策が解りませんのでどなたか教えてください。

<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:???
>351
microtime() で何が返ってきてるか見てみなよ。
0357nobodyさん2005/07/21(木) 16:06:05ID:???
誰か>>355を翻訳してくれんか?
0358nobodyさん2005/07/21(木) 16:07:04ID:???
>>355
<input type=submit style="background-image:url('イメージ')">

じゃダメ?やってないから分からんけど。
0359nobodyさん2005/07/21(木) 16:15:01ID:???
>>358 だめでした・・・
>>357 http://honyaku.yahoo.co.jp/transtext
0360nobodyさん2005/07/21(木) 16:27:43ID:???
>>355
name="hoge[]"
0361nobodyさん2005/07/21(木) 18:26:15ID:???
>>359
<button type="submit"><IMG></button>
0362nobodyさん2005/07/21(木) 19:25:40ID:NWEHg4fz
フォームを作成しそこに書き込むと掲示板に投稿され
さらに内容が私のメールに届くようにしてあるスクリプトを作成したのですが
これに加えて
自分で作成したメールアカウントにメールを送信したら
そのメール内容が掲示板に投稿されるようには出来ますでしょうか?
0363nobodyさん2005/07/21(木) 19:44:29ID:???
メールを受信した瞬間にログを取り出すのではなく、掲示板を表示するときに適宜メールの内容を取り寄せる形ならimap系でできるかも。
0364nobodyさん2005/07/21(木) 20:57:07ID:???
>>362
SMTPサーバーを操作できるのならエイリアスファイルから登録用スクリプトを呼び出せばいい。
sendmailならこんな感じで呼び出すけど、SMTPサーバーによって設定ファイル、設定内容は
異なるので自分で調べてくだされ。
myaccount: "| /path/to/php 登録用スクリプト名"

これで[email protected]にメールが届くと登録用スクリプトが呼び出される。
スクリプトでは標準入力からメールデータを取り出して掲示板に登録する。
もちろんこのスクリプトはオマイさんが書くんだよ。
SMTPサーバーが触れないのならPOPやIMAPを使うしかないかも。
0365nobodyさん2005/07/21(木) 21:06:26ID:???
あともう一つ、cronを使って定期的にポーリングする方法もあるね。
大体この3つくらいが定番かと。
0366nobodyさん2005/07/21(木) 21:09:11ID:???
smtp鯖をしらべるには?
rh9 php4.3.11を使用しています。

pear Net_SMTPを使用し
[email protected]さんのメールアドレスが実在するかチェックする
スクリプトを作成しています。

Net_SMTPコンストラクタ作成時に 接続先サーバを指定するのですが、
[email protected](abc.co.jp)のSMTP鯖を調べる方法は
ありますでしょうか。
0367nobodyさん2005/07/21(木) 21:21:09ID:???
>>366
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:???
>>368
http://jp2.php.net/manual/ja/function.mb-strpos.php
0370nobodyさん2005/07/21(木) 21:54:25ID:hk8J7OA3
>>369さん
有難う御座います。
リンク先をみても3%くらいしか理解できませんでした。

if(mb_strpos($a,"ほげほげ"){
echo "正解";
}
false{
echo "不正解";
}

こんな感じでしょうか?なんか足りない気がします。
0371nobodyさん2005/07/21(木) 21:58:50ID:???
>>368mbstring入ってる?
0372nobodyさん2005/07/21(木) 22:08:34ID:???
preg_match使えば?
0373nobodyさん2005/07/21(木) 22:38:23ID:???
PHPマニュアルのmb_strposを読んで3%しか理解できない人が
正規表現を理解できるとは思えないけど(バカにしているんではないよ)。
>なんか足りない気がします
ってどういう意味だろう。実行したけどエラーがでるのかな。
エラーがでるのならエラーメッセージぐらいは張って欲しいけど。
とりあえず)が一個足りないけどコピペミスなの?
if(mb_strpos($a,"ほげほげ"){
↓
if(mb_strpos($a,"ほげほげ")){

このままmb_strposが使えるまで頑張るか正規表現を勉強するかは
>>370次第。嫌がらせではないからキレないでね。
0374nobodyさん2005/07/21(木) 22:56:27ID:???
3%くらいしか理解できませんでしたって理解する気もないだろ
0375nobodyさん2005/07/21(木) 23:07:04ID:???
echo$anser=mb_ereg("判らない事",$a)?"取り合えず調べる":"くだ質に丸投げ";
0376nobodyさん2005/07/21(木) 23:10:38ID:???
mb_strpos使えっていうからやったのに何で叩かれるんだよー・゚・(ノД`)・゚・ ウワーン
ってのが聞こえてきそうだ。
var_dump(mb_strpos($a,"ほげほげ"); とかして、どんな値が返ってくるのか実感して欲しいところだな。
誰も突っ込んでないけど、 if($a="ほげほげ") ってのもかなりイタイ
0377nobodyさん2005/07/21(木) 23:44:29ID:OPf2mV1L
PHPを利用したプログラムを2つ教えてください。
�@九九表
�A2次方程式の解 ax2+bx+c=0
0378nobodyさん2005/07/22(金) 00:09:21ID:???
くだらない質問だと思うので、こっちにレスするかな。。
>>377
どこまでやったのか書いてみ。
2.の方は学年と性別、妹の有無の情報が無いと、出題者の意図が分からん。
0379nobodyさん2005/07/22(金) 00:17:20ID:1VklDg1R
377です。まったく手をつけられていません。 九九表のプログラムをすべて書いていただけるとありがたいですm(__)m
0380nobodyさん2005/07/22(金) 00:21:20ID:???
PHPでサイト内検索をしたいのですが、具体的にどうやって作っていけば良いのか分かりません。
せめて過程だけでも教えて下さい。
0381nobodyさん2005/07/22(金) 00:45:13ID:???
>>379
【php】part29【php】の方にレスついてますよ。
0382nobodyさん2005/07/22(金) 01:29:04ID:???
>>370
if(mb_strpos($a,"ほげほげ") === FALSE){
echo "不正解";
} else {
echo "正解";
}

文字エンコーディングの設定必要あるかもだけど。
0383nobodyさん2005/07/22(金) 02:49:06ID:???
isleのレン鯖契約したらmb_*もmb_reg*も入ってなかった。
アリエナスww
上記のライブラリを追加したらリコンパイル必要ですか?
apache再起動で済みますか?
あと、php-usersのMLをどなたかのサイトでアーカイブにしてnamazuに喰わせてあったのですが
うかつにもブックマークし忘れました、どなたかurlわかりますか?
03843832005/07/22(金) 03:01:06ID:???
>>383
すいません、後半部分は自己解凍しました。

http://www.php.gr.jp/php/novice.php3
このスレのテンプレにも追加したいくらい便利っすね。
0385nobodyさん2005/07/22(金) 06:59:06ID:7S1nHf8D
pear::Authでおおはまりしています。
具体的には
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:???
includeするファイルの拡張子ってどうやって決めるんでしょうか?
基本的にhtmlコードや普通のテキストを呼び出したりするときは.incで統一してるんですが、
phpコードとかだったら.phpにするべきなのかな?
0387nobodyさん2005/07/22(金) 08:13:08ID:???
>>367さん。ありがとう。

pear Net_DNSを使用しました。
0388nobodyさん2005/07/22(金) 08:19:11ID:???
>>386
特に決まりはないから好きにしたらいい
俺はphpコードはphpにしてる。他の拡張子だとソースの内容が丸見えになるので
後はhtmlだったりtxtだったり
config.inc.phpなんてやってるのもある
03893682005/07/22(金) 12:42:26ID:???
>>382さん
有難う御座います。うまくいきました〜
0390nobodyさん2005/07/22(金) 12:43:09ID:???
インクルードファイルも.phpにしておかないとドキュメントルート内だとURL直叩きでソース見放題になるぜ
ドキュメントルート以下にそんなファイル置く奴が悪いんだが。

.htaccessとかで.incを.php扱いにすることも出来るがそんな手間を考えるなら拡張子を統一するのがベスト。
0391nobodyさん2005/07/22(金) 14:09:45ID:???
>>389
結局、答えを全部教えてもらう以外、自分では何もやらない奴だったんだな。
そんなの楽しいのか。。。
0392nobodyさん2005/07/22(金) 16:26:40ID:s5umLjZL
すみませぬが、質問です。

PHPをWindowsで使う際、execを使って外部のexeやバッチファイルを
バックグラウンドで動かすことは無理なのでしょうか?
時間のかかる処理をexeやバッチファイルで実行しているのですが、
exeなどをファイルにリダイレクトしても、結局バックグラウンドでは
動作せず、ブラウザが読み込み中のまま待たされることになってしまいます...。
処理が終わったら戻ってくるんですが。

Linuxだとリダイレクトと「&」を使って簡単にできるのに...。

PHP 4.3.11+IIS(Apacheでも同じ)です。
ぜひご教示を!
0393nobodyさん2005/07/22(金) 16:29:55ID:mNPTggfm
XMLパースについて質問ですが
SimpleXMLは名前の通り使いやすいと思うのですが
SimpleXMLよりも使い勝手がよいパーサというものは
あるでしょうか?
0394nobodyさん2005/07/22(金) 16:34:59ID:mNPTggfm
PHPで、C++やJavaのように、
変数を使う前に宣言してから利用可能に

するということはかのうでしょうか?
クラス内のフィールド(メンバ変数)とは別に。

PHPは、変数名などのスペルミスをすると
どこにバグがあるのか気づかずに
苦労することがあります。デバッガにも気づいて
もらえません。
それをC++やJavaのコンパイラように、
あらかじめ変数を宣言してから
利用できるようにすればどこにまちがい
があるのかかなりわかりやすくなり、
スペルミスにもすぐに気づきやすいのですが。

これをC++やJavaのように楽にする方法はないでしょうか?
C++やJavaを使えと言われても仕事上、そうはいかないものでして.。
0395nobodyさん2005/07/22(金) 17:06:33ID:???
>394
error_reporting (E_ALL);
これで未定義の変数に警告を出してくれる。
0396nobodyさん2005/07/22(金) 18:57:44ID:???
配布したのですが、改造されたくないのです。
PHPは、コンパイルできませんか?
0397nobodyさん2005/07/22(金) 19:04:08ID:???
>>396
つ[どっかの会社が出してる(忘れた)エンコーダー]
0398nobodyさん2005/07/22(金) 19:06:37ID:???
>>396

つ 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:???
>>396
そういった用途の有償・無償のプロダクトがある。
ソース配布前提ライセンスのライブラリ等を利用するときは留意せよ。
0401nobodyさん2005/07/22(金) 19:19:17ID:???
ありがとうございます。
それで、そういうのを使って、
コンパイル後のファイルを配布を受けたものは、
普通にサーバーの入ってるパソコンに
置くと、ネットに乗せられるんでしょうか?
お願いします。
0402nobodyさん2005/07/22(金) 19:31:40ID:???
>>401
書いてる日本語が変。

ネットに乗せられる
→(解釈)アップロードしてWebサーバのコンテンツ配下に置ける(ネットに乗せられる)か
→Yes. 単なるバイナリーファイルだから。
0403nobodyさん2005/07/22(金) 20:17:50ID:???
すみません、
IEなんかで見られるんですか?という意味です。
0404nobodyさん2005/07/22(金) 21:13:13ID:???
>>401
まずお前は日本語と一般教養の勉強をしたほうがいい。
コミュニケーションできないと開発も出来ない(たとえ一人で開発してるとしても)。
0405nobodyさん2005/07/22(金) 21:26:24ID:???
ははは、そんな安月給のお仕事につくつもりは無いですよw
0406nobodyさん2005/07/22(金) 21:39:15ID:???
エンコーダーは高いよ 金が・・・
0407nobodyさん2005/07/22(金) 21:56:40ID:???
>>403
「見る(見られる)」ってのも、これまた抽象的な表現だな。

可能。特にWebサーバでそのファイルに
アクセス出来ないようにしていなければだけど。
0408nobodyさん2005/07/22(金) 22:03:28ID:???
オイラのエスパー脳を発動してみたところ、
・配布した物の中身を見られたくない
・配布した物を実行する鯖(実行環境)に手を加える必要が無い
そんな便利なものがあるのだろうか?って質問をしたいんだろうね。
というか、そういう質問になるはずなのにパスコンとかIEとか訳ワカンネ
0409nobodyさん2005/07/22(金) 23:24:50ID:???
>>405
安心しろ。
お前の言語能力なら、コンビニのバイトでさえ採用されないから。
0410nobodyさん2005/07/22(金) 23:51:35ID:???
高給なお仕事にお就きになられる>>405に、我ら貧民が答える義務はあるまいて。
ほっておけ。
それにしても最近のここは惨いな。夏休みだからか。
0411nobodyさん2005/07/23(土) 00:08:59ID:???
ここはVIPじゃないんだからみんなそんなに全力で釣られなくたって…。
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:???
>>412
いいよ。糞みたいな奴のスレはぶった切っても
array_searchは見つからなかったときはNULLではなくFALSEを返すので
if ($key === FALSE) print "ぬるぽ";
とすればいい。
できればPHPのリファレンスマニュアルを熟読して欲しいな。
0414nobodyさん2005/07/23(土) 00:26:45ID:???
>>412

とりあえず、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 "ぬるぽ";
とする必要がある。

04154122005/07/23(土) 00:29:24ID:???
>>413
レスありがとうございます。
もちろんマニュアルは読んでNULLを返すって・・・アレ?
「注意:・・・NULLを返します」のところと勘違いしてたorz。
スレ汚し失礼しました。

ところでここの「警告」の記述にある
「・・・0や""といった値を返す可能性があります。」
というのは、0はともかく""ってどういう状況なのでしょうか?
連想配列でキーを空にできるということでしょうか?
0416nobodyさん2005/07/23(土) 00:33:34ID:???
>>415
空文字が入っている と言うこと。
0417nobodyさん2005/07/23(土) 00:34:47ID:???
>>415
以下だったら理解できる?
$hoge = array('', '10', '20', '30');
$val = '';
$key = array_search($val,$hoge);
04184122005/07/23(土) 00:37:22ID:???
>>414,416
どうもありがとうございます。
ただの勘違いでした。
キーに空文字という状況がなかなか想像できないというか、
混乱しそうであまりやりたくない状況みたいですね。
0419nobodyさん2005/07/23(土) 00:38:03ID:???
>>415

PHPは型はないとか言われてるけど、実際はあるわけですよ。
で、falseとして評価される0や""を返しますって言ってるわけね。
どういう状況で0や""を返すのかは分からんが、
これらの値もfalseと評価されると書いてある。
でも、
「この関数の返り値を調べるには ===演算子を使用してください。」
と書かれてるので、ちゃんと === falseで比較すればいい。

論理値のマニュアルも参照のこと。
ttp://jp.php.net/manual/ja/language.types.boolean.php
04204122005/07/23(土) 00:38:42ID:???
連続カキコスミマセン。

それって0が帰ってきませんか?>>417
0の実例を挙げていただいたのかな?
04214122005/07/23(土) 00:58:38ID:???
もうちょっと型を意識していろいろ試してみることにします。
どうもありがとうございました。>>419
0422nobodyさん2005/07/23(土) 01:17:21ID:???
なんかMySQLから抽出した文字列を表示させたら変なところに「\」が出てくる・・・。
ぐぐってみたらShiftJISのせいか・・・。
magic quotes gpcをoffにしたらとりあえずおさまったけど、
こんどは必要なところにaddslashesとかやらなきゃいけないのか・・・。

今まだ勉強中なのですが、早いとこEUCなどに切り替えるべきなのでしょうか?
今まで作ったソースとかMySQLのデータはまとめて変換できるのだろうか??
0423nobodyさん2005/07/23(土) 01:24:11ID:???
内部エンコーディングはEUCにして、出力のときにSJISこれ最強
0424nobodyさん2005/07/23(土) 01:44:11ID:???
>>423
俺は、ソースはもちろんEUCだが、出力もPC向けの場合はEUCのまま。
だって、特に支障ないじゃん?

携帯向けの場合だけ、SJISに変換して出力してる。
まあ携帯でも最近の機種はEUCでも問題なく表示されるけどね。
0425nobodyさん2005/07/23(土) 01:59:55ID:???
Win2000+IIS5+php4.3でのinclude()に関する質問なのですが
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:???
>>412 をやりたい場合、array_search() じゃなく in_array() の方が
いいんじゃないかと思った。
0427nobodyさん2005/07/23(土) 09:23:53ID:???
>>423
Windowsでもパーミッションの概念はあるんだけど。
エクスプローラからc:\php\includesのプロパティ→セキュリティを選択して
ユーザー "IUSR_コンピュータ名" に読み取り許可を追加してみれば?
あと
$path="c:\php\includes";
include "${path}\hoge.inc";
は
$path="c:\\php\\includes";
include "${path}\\hoge.inc";
でないとダメだと思う。
04284222005/07/23(土) 09:24:11ID:???
ううう。なんか内部をEUCで出力をShiftJISにすると、その都度変換してやらなきゃいけないのか・・・。
超絶マンドクサいので全部EUCでやってみることにしよう。
�dクス。>>423,424
04294272005/07/23(土) 09:24:47ID:???
すまねぇ。レス番ミスった。
>>423は>>425ね。
04304222005/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:???
14枚の画像を、フォームで入力した数の分だけ横に並べて
数段になる物を作りたいのですが、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:???
>>430
とりあえず細かいことは気にせず、全てを「EUC」「改行はLF」で統一していけ。
そんで、場面に応じて必要があれば、別のエンコードを使っていく。
どの場面で変換の必要があるのか…が分からなければ、EUCのままで問題ない。

おそらく全部EUCにするのが、最も問題が起きにくいだろう。
0433nobodyさん2005/07/23(土) 10:31:45ID:???
>>431
問題を単純化すると、こうなる。
for($x=0; $x<3; $x++){
for($a=0; $a<$data[$x]; $a++){
// ここで、連続する数字を出す。
// 元のスクリプトだと$aなので、xのループの度に当然0に戻る。
}
}
どこまで数字を使ったかというカウンタをつければいいだけじゃないの?
0434422=4302005/07/23(土) 12:30:27ID:???
データベースのデータの文字コードを全部変換するの結構手間取ったんだけど普通どうやってやるものなんでしょう?
alter table tbl_hoge character set eucとかだとデータそのものは変換されないみたいだし。
しかたないからphpMyAdminでEUCに変換してCSV出力→インポートっていう手間なことをやったわけですが。
直接データを変換する方法があるのかな?
0435nobodyさん2005/07/23(土) 12:50:52ID:???
ダンプをnkfに食わせる
0436age2005/07/23(土) 14:26:43ID:???
csvっぽい形式の "a","a","a","a","a", みたいなのを読むために作りました。
何か改善案とかありますか?
ちなみに、「"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];
}
?>
0437nobodyさん2005/07/23(土) 14:35:40ID:???
>>436
何をしたいのかよく分からんが、fgetcsv()じゃ駄目なのか?
0438age2005/07/23(土) 14:55:50ID:???
>>437

いえ、全然大丈夫です。
ただ、初めて間もないのでそういう関数を使わずにやってみようと思ったんです。
0439nobodyさん2005/07/23(土) 16:14:27ID:???
リンクタグに属性をつけてphpファイルに送るって事は
出来ないんでしたっけ?

例えば
<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">でないとダメですか?
04404392005/07/23(土) 16:18:03ID:???
失礼しました。無視してください。
ごめんなさいごめんなさい
0441nobodyさん2005/07/23(土) 17:12:43ID:???
なんだかなぁ…
夏休みが始まったって感じ
0442nobodyさん2005/07/24(日) 01:35:31ID:???
皆さんPHPでサイトを作るとき
<?php
print "<html>";
print "</html>";
?>
と全体を囲ってやるのかそれとも
<html>
<?php ?>
<?php ?>
</html>
と言ったように部分でやるのですか?
0443nobodyさん2005/07/24(日) 01:38:51ID:???
>>442
Smartyかな。
0444nobodyさん2005/07/24(日) 01:48:59ID:???
最初の頃 : <html><?php 〜 ?></html> // 埋め込み
次 : <?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:???
>>442
<?php
include(htmlのパーツを作るもと.inc);

htmlヘッダーをつくるファンクション($title);
サイドぼっくすをつくるファンクション();
中身をインクルード
・
・
・
?>
って感じ。
実際はこれらを条件分岐したり、case文つかうけど。
04474462005/07/24(日) 02:21:02ID:???
function類とかはhtmlのパーツを作るもと.incに入ってる。
実際はもっとファイルを分けていくつもインクルードしてる。
見通しが良いし修正も楽なんでこんな感じだけど変ですかね?
04484442005/07/24(日) 02:29:10ID:???
include版とテンプレートエンジン版とは、テーブルを表示する時に一番違いが大きかったかな。
・include版
 テンプレート.htmlは <?=$変数 ?>ってな感じで、用意しておいた変数を置き換える。
 そのため、行列数が変動するテーブルを出力するには、1つの変数にtable全部を入れなきゃいけなかった。
 また、テーブルに色をつけたい時は、スクリプトの修正(or CSS用変数の変更)が必要だった。
・テンプレートエンジン版
 オイラの使ってたやつでは独自タグを使ってループを扱う事ができたので、
 配列をそのまま渡すだけで必要な分だけテーブルの行列が自動生成された。
 テーブルの色を変更するには、大体の場合においてhtml側の修正だけで可能。

>>445
ちょっとしたデザインの変更のために、スクリプト(ロジック)を弄らなきゃいけないかどうか。って感じです。<分離
0449nobodyさん2005/07/24(日) 02:40:12ID:???
>>446
htmlヘッダー作るファンクションって具体的にどんなものなんですか?
宜しければ参考のために知りたいのですが・・・
0450nobodyさん2005/07/24(日) 03:53:56ID:???
>>446
そいつは単にプレゼンテーションロジックの分割であって、
>>442が聞いてきたものとは違うと思うけど...
0451nobodyさん2005/07/24(日) 09:05:54ID:???
結論:
「デザインは気にしない」
0452nobodyさん2005/07/24(日) 09:28:48ID:m0On1eMV
ttp://www.google.com/search?num=100&hl=ja&safe=off&rls=GGLG%2CGGLG%3A2005-28%2CGGLG%3Aen&q=wikipedia+%E7%9F%AD%E6%AD%8C&lr=lang_ja

をクリックすると、とやると、
一番上の、wikipadiaの短歌がでますが、
リンクはURLエンコードされてますが、
下の緑部分は、「ja.wikipedia.org/wiki/短歌」と、
なってます。

これって、どうやって実現することが可能なのでしょうか?

よろしくお願いいたします。
0453nobodyさん2005/07/24(日) 09:32:55ID:???
>>452
mod_rewrite
か
path_info
だな。
どっちでもできる。
とりあえず、検索すべし。
04544522005/07/24(日) 14:00:18ID:rmOxqcKR
>>453 さん ありがとうございます。

path_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//Dl4v
php 4.4.0でAPC使えますでしょうか?
http://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です。

手順におかしな点などありましたら指摘お願いします。
04564552005/07/24(日) 16:16:01ID:???
sentos4.1→centos4.1の間違いです。
04574522005/07/24(日) 19:36:07ID:rmOxqcKR
= >>454 ですが・・・はずしてます?
0458nobodyさん2005/07/24(日) 19:58:28ID:???
PHPで、HTTPS鯖のデータを取得したいのですがどうすればよいのでしょうか?
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で実現するためにはどんな方法をまず採用したらよいでしょうか?
04604552005/07/24(日) 21:18:31ID:???
>>459
imap関数使えればpopメール読めますよ
0461nobodyさん2005/07/24(日) 23:34:00ID:???
MYSQLから会員データを抽出し、メールを発行し途中経過(現在何件発行したか)を表示させたいのですがどのような方法がよいのでしょうか?
途中経過は更新ボタンを押して確認しようと思っています。
0462nobodyさん2005/07/24(日) 23:54:59ID:???
途中経過って。
携帯に送る為に、時間空けてメール配布するのかな?
そうじゃなくて、普通にメール配信だけなら、途中経過も何も
ログでしか無いと思うけど
0463nobodyさん2005/07/25(月) 00:05:09ID:???
>>462
えとまだサイト開設していないんですが、会員制のサイトで目標が2万人くらいなんですよ。
将来的なことを考えて作成してるのですけど、途中経過&終了などを数字で見れると便利なので。

前にバイトで某サイトのスタッフをしていたときのメルマガ配信システムは条件(興味のあるカテゴリ等)で会員を絞って
そこから配信を開始する感じだったのですが、配信開始のボタンを押すと

現在配信した数/総配信数
【更新ボタン】

という感じで現在の状況を把握できたのです。
自分のサイトもこんな感じのを使いたいなと思いまして。
04644612005/07/25(月) 00:05:51ID:???
補足:携帯じゃなくPCがターゲットです。
0465nobodyさん2005/07/25(月) 00:52:48ID:???
>>461
PHPでやるなら現在何通目かファイルにでも出力するくらいしか思いつかない。
俺的にはPHPで30秒を超える処理ってなんか気持ち悪い。
04664612005/07/25(月) 01:32:39ID:???
>>465
レスありがとうございました。
ファイルにカウントしたものを出力する方法でやってみます。
どうもありがとうございました。
0467nobodyさん2005/07/25(月) 01:57:10ID:???
>>460
php可の無料鯖なんかだとおそらく許可してない気がします
04684522005/07/25(月) 04:03:29ID:???
apacheすれいってきます
0469nobodyさん2005/07/25(月) 05:57:06ID:gR3tRl1W
phpでpostgreSQLを使う場合、「pg_connect()」で
SQLひとつごとにDB接続するのが普通なんでしょうか?
「pg_pconnect()」はどのタイミングで切れるのかよく
わからないので、使いづらいのですが、こっちが一般的でしょうか?

あと、接続文字列にパスワードとかユーザ名が入ってしまうのを
避ける方法ってないでしょうか?
内部で使うものですけどサーバにアクセスできるユーザだと
プログラムのソース覗かれてIDとかばれちゃうのは避けたいので

以上、素人くさい質問ばかりですが、調べてもよくわからなかったので
回答お願いします('A`)
0470nobodyさん2005/07/25(月) 07:52:08ID:???
>>465
大量のメールを配信しようと思ったら、実行時間が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:???
WEBサーバのデファルトエンコーディング。
0473nobodyさん2005/07/25(月) 09:07:19ID:???
>>470
気持ち悪いと言っただけで、問題ないんじゃないかと。

>>467
webメールから取ってくることもできるでしょう。
すごい大変そうだけど。

どっちもPHPでできなくはないと思いますが、PHP以外のほうがよさそうな気もします。

>>469
pg_pconnectだと接続があればそれを利用する。なければ接続する。

>サーバにアクセスできるユーザだと
>プログラムのソース覗かれてIDとかばれちゃうのは避けたいので
↑こういう状況をどうにかしたらいいのではないでしょうか?

0474nobodyさん2005/07/25(月) 11:09:00ID:???
perlスクリプトをphpに変更しているんですが、以下の部分のPHP化が分かりません
どなたかお願いします

$PF18[0] &= ~0x80;
0475nobodyさん2005/07/25(月) 11:17:13ID:hJtfvc56
>>473
漏れはお前の考え方が気持ち悪い。
0476nobodyさん2005/07/25(月) 11:22:36ID:???
>>474
そのままでいいはずだけど。何かエラーが出るの?
04774742005/07/25(月) 11:34:31ID:???
>>476
まだ試してないんですが、このままで良かったのか・・・

ついでというかたぶん本題です
「= ~$data」の意味を教えてください
04784762005/07/25(月) 11:49:04ID:???
>>477
┐(゚〜゚)┌
http://www.php.net/manual/ja/language.operators.bitwise.php
04794742005/07/25(月) 11:56:38ID:???
ありがとうございます('A`)
0480nobodyさん2005/07/25(月) 13:11:36ID:???
>>395
ありがとうございます。
どうにか警告を表示させることができました。
foreachで$key=>を省略すると容赦なく警告が出るんですね。
0481nobodyさん2005/07/25(月) 13:13:18ID:tPLQwkjK
さらに質問になってしまいますが、
PHP5にはC,C++,Java5にあるようなenum型(列挙型)は
ありますでしょうか?
あれば便利だなあと思いまして。

それとも既存の配列がそのまま列挙型として使える?
ものなのでしょうか?
ハッシュとしても使えるようですし
0482nobodyさん2005/07/25(月) 13:52:30ID:???
PHP入門ってみんな本で勉強した?サイトでお勧めあったら教えて下さいな。
0483nobodyさん2005/07/25(月) 13:57:14ID:???
>>481
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:???
素直にJavaを使っておけ、と
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:???
>485
Cookieでも使えば?
04874852005/07/25(月) 19:47:06ID:???
>486さん
ありがとうございます。
ユーザの特定にCookieを使うのですよね?
それで、URLの最後のディレクトリと付き合わせる。
その認証自体は ttp://del.icio.us/one/ なら
/one/index.php で行わなければいけないわけで
全ユーザに対してそのスクリプトを用意するには
やはりユーザ登録したときに元となるスクリプトをコピーして?
プログラムに変更が生じたときの対処も解らなかったのですが
ユーザがログインするたびに
/one/index.php を上書きコピーすればいいのでしょうか。。。

ほんとうに初心者なもので、意味不明だったらすみません。orz
04884582005/07/25(月) 20:38:37ID:???
httpsへのPOST結果の取得方法をお願いします(>_<)
GETならいろいろな方法があるのにorz
0489nobodyさん2005/07/25(月) 23:49:32ID:???
テキストファイル「test.txt」に書かれているファイルの更新日時を取得しようと
「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:???
>>489
echo bin2hex($line[0]);
echo bin2hex("/tmp/hoge.dat");
0491nobodyさん2005/07/26(火) 07:33:50ID:???
>>489
変数を""で囲むわけは?
0492nobodyさん2005/07/26(火) 08:52:10ID:???
表示したPHPの出力結果をHTMLファイルとして書き出し、保存する方法を探しているのですが。
PHPでの出力を一行一行書き出していくやり方しか分かりませんでした。
何か良い方法はないでしょうか?

初心者質問ですみません。。
0493nobodyさん2005/07/26(火) 09:03:03ID:???
ob_start()、ob_get_contents()あたりでできるんじゃないかな。
0494nobodyさん2005/07/26(火) 12:01:00ID:???
post_max_sizeを超えた場合、$_POSTの中身は空っぽになってしまうものでしょうか?
どうやったら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:???
>>495
$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:???
>>499
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:???
>>502

・preg_grep で「空要素で無いもの」だけを抽出
・その配列を利用する段階で「空要素」を無視
・空要素が入ってしまう様な配列を生成しない

お好きなものをどうぞ。
05045022005/07/26(火) 18:49:59ID:???
>>503
回答ありがとうございます。一発で配列から空の要素を
取り除いてくれるような関数はないんですね。

やっぱり3番目になると思うので、質問の前の段階から
お話しますと、文字列を mb_split で分割してるんです。
PREG_SPLIT_NO_EMPTY みたいなオプションがあれば
いいんですが、mb にはありませんよね?

ですので、先に mb_ereg_replace で空白に置換した後、
PREG_SPLIT_NO_EMPTY で行くことにします。どうも
ありがとうございました。が、もしもっと(・∀・)イイ!方法が
ありましたら、どうぞご教示願います。
0505nobodyさん2005/07/26(火) 19:30:06ID:???
JavaScriptとphpを組み合わせてロールオーバーしたりonclickしたタイミングで
webページを静的なままphpを動作させる方法ってあるんでしょうか?
0506nobodyさん2005/07/26(火) 19:37:43ID:???
ワケワカラン
05074892005/07/26(火) 20:12:52ID:???
>>490
レスありがとうございます。
最後に改行が入るんですね。
改行を消してやれば期待した通りに動作しました。

>>491
元々使用していたtest.txtにはファイル名に半角スペースを含むものがあるので
それで誤動作していたのかと思い、""で括りました。
その後、>>489のような最低限のプログラムでテストをしたため、そのままになっていました。
0508nobodyさん2005/07/26(火) 20:17:07ID:???
>>505
夏休みだねぇ・・・
0509nobodyさん2005/07/26(火) 20:18:11ID:???
>>505
何をしたいのかがわからん。
0510nobodyさん2005/07/26(火) 20:26:54ID:DRNxxqTe
静的なまま動作したいんだよ!
05114992005/07/26(火) 20:29:15ID:???
>>500-501
ありがとうございます
思い通りの結果が得られました
0512nobodyさん2005/07/26(火) 20:37:55ID:???
>>510
停まったまま、歩きたいんだよ!
って事?

ドラえもんにでもお願いしてください。
0513nobodyさん2005/07/26(火) 20:40:11ID:dI24bXxa
今度うちの会社に20歳の高等専門学校卒業の、高専プログラミング大会に
出場したやつがはいることになった・・・はげしくできそうで、俺首の予感
・・・・レベル高いんだろうなきっと
0514nobodyさん2005/07/26(火) 20:44:13ID:???
今って、そういう系の仕事副業じゃない?
え、俺?趣味です。。
0515nobodyさん2005/07/26(火) 21:43:53ID:???
>>505 == >>510 ?

たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。

: スルーしてくれ。
0516nobodyさん2005/07/26(火) 21:44:39ID:???
>>505 == >>510 ?

たぶん、ページの再描画なしでサーバから情報を取得したいってことか?
・データバインディング
・隠しフレーム(or iframe)にロード
・XMLDOM
あたりのことだと思う。
phpを動作させるだけなら<img>のsrcをいじるのもありかも(←ていっても邪道だな)。
そしてスレ違い気味。

: スルーしてくれ。
0517515 5162005/07/26(火) 21:59:10ID:???
スマソ、ミスった・・・
0518nobodyさん2005/07/26(火) 22:23:04ID:???
あれだ あれ。ajaxとか言うやつ。きっとあれをやりたいんだよ。
php用のライブラリも幾つかあった気がするなぁ。
0519nobodyさん2005/07/26(火) 22:24:41ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0520nobodyさん2005/07/26(火) 22:28:29ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0521nobodyさん2005/07/26(火) 22:30:03ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?
0522nobodyさん2005/07/26(火) 22:32:06ID:DRNxxqTe
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
0523nobodyさん2005/07/26(火) 22:36:03ID:???
onMouseover とか onClick でアマゾンのXMLを読みに行って
展開するみたいな話だろ夏休みのアフィ厨めスレ違いだ死ね
0524nobodyさん2005/07/26(火) 22:45:05ID:???
うーん、重い。。
0525nobodyさん2005/07/26(火) 23:10:54ID:???
この夏休みからphpの勉強を始めたリアル厨房です。

function hoge(){
$hoge="ほげ";
}
echo $hoge;
functionの中にglobal $hoge;
っていれたらオーケーになった。

あと、
functionの中に
return $hoge;
って書く場合と上記の違いってなんでしょうか?
どっちにしろglobalはないとダメみたい。スコープ?

もう一つ、functionに与える引数
function syoukai($watashi,$syokugyou){
echo $watashi . "は" . $syokugyou . "です。";
}
って書く場合の$watashi,$syokugyouの部分の変数名は、functionの外側で使ってる名前は使っちゃうとまずいのでしょうか?
0526nobodyさん2005/07/26(火) 23:45:04ID:???
>>505
AJAXでも使えば?
0527nobodyさん2005/07/27(水) 01:11:12ID:???
>>525
>>この夏休みからphpの勉強を始めたリアル厨房です。

勉強終えてから来い!
0528nobodyさん2005/07/27(水) 01:16:36ID:???
厨房だったら夏休みは他にやる事があるだろうが。

筆おろしとか、筆おろしとか、筆おろしとか・・・・
0529nobodyさん2005/07/27(水) 01:40:52ID:???
みなさん、オススメの教本はありますか?
色々なサイトを見て回ったけど全く理解出来ないorz
0530nobodyさん2005/07/27(水) 01:49:33ID:???
>>529
お前がどの程度の知識があるのかわからんが
今日からつかえるPHPでもかえば?
0531nobodyさん2005/07/27(水) 02:45:40ID:l/k2RuR9
携帯の掲示板で、ログ検索機能をつけたいんですが、ソースもログもSJISなんで文字化けします。
エンコードしたり一時的にEUCに変換したりしてもうまくいきません。
なんか手軽にやる方法はないんですか?あれば方法だけでも教えてください。
05325032005/07/27(水) 03:12:16ID:???
>>504
>ですので、先に mb_ereg_replace で空白に置換した後、

って、そんな事しなくても mb_split の段階で「mb_ereg_replace で空白に置換」
する対象を含めた区切り文字を指定すれば良いのだわ。多分出来る筈よ。
0533nobodyさん2005/07/27(水) 03:25:31ID:???
>>531
enable-zend-multibyte
0534nobodyさん2005/07/27(水) 04:33:43ID:???
通常の質問スレって無くなったの?
0535nobodyさん2005/07/27(水) 05:01:58ID:???
>>534
タイトルから質問が消えてるな
一応あるw

【php】part29【php】
http://pc8.2ch.net/test/read.cgi/php/1120611474/
0536nobodyさん2005/07/27(水) 05:06:12ID:???
>>535
ああ、それでひっかからなかったのか・・・。
サンクス。
0537nobodyさん2005/07/27(水) 06:33:37ID:l/k2RuR9
>>533
レスありがとう。やってみます(`・ω・´)
0538nobodyさん2005/07/27(水) 06:46:02ID:???
>>534
そこでくだらない質問したら頃す
0539nobodyさん2005/07/27(水) 07:28:46ID:???
GDでjpegからサムネールを生成した際、imagecopyresized()を使うと
右側に黒い線が残ってしまうことがあるんですが、これを回避する方法ってあるんでしょうか?
imagecopyresampled()だとこのような線は出ないんですが、サーバがGDver2に対応していないため、
imagecopyresized()を使っています。
05405312005/07/27(水) 07:37:22ID:???
昨日重かったからか、めっちゃ重複してたのか、スレ汚しスマソ。携帯から見てたから今気付いたよorz
0541nobodyさん2005/07/27(水) 07:59:45ID:???
>>539
色々な写真でimagecopyresizedしてみたけど、黒い線みたいなものは出なかったな。
思いつく限りの原因は
・引数に指定した幅などがズレてる(少数点以下の丸めなど)
・jpegに元から黒い線が入ってる(スキャナから取り込んだか何かで手作業が雑だったとか)
あたりかな。でもimagecopyresampledだと線は出ないのか・・・。
まあ解決策としては、引数のdstWを1ピクセル余分にとるとか、srcWを1ピクセル少なくとるとか試してみては?
0542nobodyさん2005/07/27(水) 10:52:23ID:???
下の二つの処理(CGIのプロセスの立ち上げやPHPのプリコンパイルも含)にかかる時間を計測して比較したいのですが
・PHPをモジュールで動かす
・C言語のバイナリCGI
どのような方法がありますか?
RedhatLinux、Apache、PHP5.0.4、gccを使っています。
0543nobodyさん2005/07/27(水) 11:41:03ID:???
>>485
mod_rewrite or pathinfo
0544nobodyさん2005/07/27(水) 11:55:53ID:???
>>541
引数に+1したらいけました。
ありがとうございました。
0545nobodyさん2005/07/27(水) 12:44:07ID:v2TCvlCU
Apache2 + PHP5をWindows2000にインストールしました。
web用のディレクトリにphpファイルを置いてブラウザで見ると
ちゃんと表示されることを確認したんですが、
それ以外のローカルフォルダに置いたphpファイルをIEに直接
放り込んでもphpが正しく表示させるにはどうしたらいいでしょうか?
05465452005/07/27(水) 12:45:27ID:???
> web用のディレクトリ

C:\Program Files\Apache Group\Apache2\htdocs

のことです。
0547nobodyさん2005/07/27(水) 12:48:39ID:???
>>545
file://だとApache経由しないのでPHP動きません
http://でしか表示できないので無理です
0548nobodyさん2005/07/27(水) 12:52:49ID:???
>>545
DocumentRootを変更したいならhttpd.conf。
そこから先はスレ違いナリ。
05495452005/07/27(水) 13:03:09ID:???
そうでしたか。
拡張子が.phpのファイルをブラウザで表示したら
勝手にphpが起動、というわけにはいかないのですね。
0550nobodyさん2005/07/27(水) 14:27:54ID:???
IEはHTMLしか解釈できない。
PHPスクリプトを解釈してHTMLを吐き出しているのはサーバ。
0551nobodyさん2005/07/27(水) 16:32:17ID:???
>>542
手軽にやりたいならabかな。
0552nobodyさん2005/07/27(水) 16:44:17ID:???
ファイルの更新日付ってphpから自由に操作出来ないですか?
0553nobodyさん2005/07/27(水) 16:50:51ID:???
>552
出来るよ
0554nobodyさん2005/07/27(水) 16:56:23ID:???
>>553
どのようにやるんでしょうか?
サーバの時計を変えてcopyとか…?
0555nobodyさん2005/07/27(水) 16:58:49ID:???
phpはスタイルシートを吐き出すことも出来るんですか?
0556nobodyさん2005/07/27(水) 17:01:30ID:???
>>555
ファイル名を.cssにして吐き出せば出来るだろ
0557nobodyさん2005/07/27(水) 17:14:20ID:???
>556
ビミョーな答えだね

>555
ヘッダでCSSのMIMEタイプを指定
0558nobodyさん2005/07/27(水) 17:21:40ID:???
pukiwikiのCSS見るといいかもね
0559nobodyさん2005/07/27(水) 17:31:27ID:???
>>551
なんと
05605592005/07/27(水) 17:34:03ID:???
ミスったorz

こんな便利な機能がApacheに付いていたとは!
早速試したところ、PHPが速かったりCが速かったりでした。
ありがとうございました。
0561nobodyさん2005/07/28(木) 01:28:15ID:???
階層化したカテゴリに含まれる情報を、選択したカテゴリだけ展開して表示するようなプログラムを書いています。
ひとまず、思った通りのものが書けたのですが必然的にループを入れ子で多用することになりました。
こういったパターンの物は書いたのが初めてなのですが、$iなんかのカウント用の変数をevalで、変数名に埋め込んでループしても上書きされない変数名の変数を生成したりしてるんですが、方法としてこれは変なのでしょうか?
問題としているのは以下の点です。
ループの入れ子(さらにその中でクエリを生成してDBに検索をかけてます)
ループ内で、カウント用の変数をevalでくっつけた変数を作ることを多用。

あいまいなまま、現在まで来てしまったのですが、whileとfor、どちらでも同じことが出来るのですが簡単にいってこの二つを使い分ける基準はなんでしょうか?
また、今回のケースはどちらをつかうのが適しているでしょうか?
0562nobodyさん2005/07/28(木) 01:39:42ID:???
>>561
SQLとリレーションDBを覚える方が適している
0563nobodyさん2005/07/28(木) 01:47:32ID:???
>>562
もちろん、自分なりに出来る範囲ですが正規化したDBを連携させてクエリを実行しております。
自分のかいたものの中では複雑な方なんで、このスクリプトをレンタル鯖に置いたら怒られないかなとか心配してるんです。
もちろん、ローカルの鯖では快適に動いてるんですが、なんせループを入れ子にしてそこで、クエリを生成して変数を作って、というプロセスが入れ子になってるんでこんなのあり?とか不安になってしまうんですよ。
0564nobodyさん2005/07/28(木) 02:51:26ID:/rx2yHMT
require_once()について質問ですが
この関数、Javaのimport宣言とは異なり、
PHPを呼び出したいとき、
現在のPHPファイルのディレクトリと該当する
PHPファイルのディレクトリとの位置関係を
気にしなければならない難点がありますね。

そこでディレクトリの位置関係を気にせずに
Javaのimport宣言のように
require()を使いたい各PHPファイルだけが
必要なPHPファイルときだけrequire()を呼び出すように
したいものです。

require.inc の中に必要なPHPファイルのrequire_onceを
全部書くというやりかたもありますが
それだとPHPファイルの数が増えれば増えるほど
見通しが悪くなりコードの解析が困難になります。

Javaのようにpackage(namespace)の概念がありディレクトリ名がパッケージ名
になるようなものがPHP5にもあればいいのですが
残念なことにnamespaceも不採用になったため思うようにいきません。
05655642005/07/28(木) 02:52:09ID:???
>564からの続き

私がやりたいことはこういうことです。
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:???
普通にinclude_pathでも出来ると思うけど、それがいやならこんな感じかな。
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:???
>>565

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:???
>>561
まず、テーブル設計(というか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:???
>>561
>ループを入れ子で多用
>カウント用の変数をevalで
このあたりで糞プログラムと断定。
普通はこんなことにはならないはず。
0570nobodyさん2005/07/28(木) 07:33:33ID:???
>>561
ループでクエリを発行するのはあまり良い方法ではありませんね
0571nobodyさん2005/07/28(木) 10:40:18ID:???
いまだに header() の使い方がよくわからない。
無くてもいいの?
0572軟式PHP2005/07/28(木) 10:44:33ID:???
>>571
使わないなら無くていいじゃん。
俺はかなり必要だけど。
0573nobodyさん2005/07/28(木) 10:44:55ID:???
>>571
よくわからない限りは無くていい。
05745712005/07/28(木) 10:56:26ID:???
>>572 , >>573
そんなもんかね。しばらくは触れないでおくことにする。
トンクス。
0575nobodyさん2005/07/28(木) 11:02:56ID:???
会員制のサイトを作ろうと思う。
認証方法はどういったものがありますか?
0576nobodyさん2005/07/28(木) 11:28:27ID:???
>>571
特に指定しなくてもphpの中の人が適当に付けてくれている。
それじゃあ対応できない時に使えばよい。
勉強したくなったら RFC 1945、RFC 2616あたりを読めばよいかと。(日本語訳は無いっぽいけどガンガレ)

>>575
質問が曖昧で本当は何を知りたいと思っているのかよく分からんが、
でっかい分類の仕方だと、1. 生パスワードと照合 2. パスワードに一方向性ハッシュを適応したものと照合 かな。
0577nobodyさん2005/07/28(木) 16:09:03ID:???
A〜Zをばかちょんな方法を使わないで表示させるのに
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:???
>>577
なんかおもしろいね。症状の説明はできないけど正しく動かすにはこう書く。
症状の説明はどなたかスパマンが現れるまで待たれよ。
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:???
ordってorzに見えるな。
('A')って(´Д`)に見えるな。
0581nobodyさん2005/07/28(木) 16:45:31ID:iGAmBrlm
('A')('Z')('A')('Z')
0582nobodyさん2005/07/28(木) 17:04:32ID:???
>>577
http://www.php.net/manual/ja/language.operators.increment.php
例 15-2.

これは知らなかった・・・orz
0583nobodyさん2005/07/28(木) 17:14:27ID:???
>>582
漏れも知らんかった。。。まぁ普段こんなコードは書かないだろうけど。
インクリメント演算子だけ特別扱いしているんだね。

$x='A';
$x++;
print $x;       //B を表示

$x='A';
$x=$x+1;
print $x;       //1 を表示
05845782005/07/28(木) 17:20:42ID:???
>>582
お〜、そうだったのか。ということは>>577のコードはこんな風に書けば動くのか。
for ($c = 'A'; $c != 'AA'; $c++) {
 print $c.' ';
}
こんな記述はやっぱりやだ。。。
0585軟式PHP2005/07/28(木) 18:14:24ID:???
なんだその書き方は…と思ったら動くのかよ。勉強不足だったorz...
0586nobodyさん2005/07/28(木) 18:21:21ID:???
orz増加中...
0587nobodyさん2005/07/28(木) 18:48:14ID:???
orzorzorz
0588nobodyさん2005/07/28(木) 19:49:35ID:???
これ以外と知らないんじゃないの?
orz
0589nobodyさん2005/07/28(木) 20:08:22ID:???
これは?→ _| ̄|◯
0590nobodyさん2005/07/28(木) 20:10:22ID:???
じゃ、これも→OTL
0591nobodyさん2005/07/28(木) 20:19:33ID:???
俺はこれ派
OTZ
0592nobodyさん2005/07/28(木) 20:25:50ID:???
せっかくの良スレが荒らされていく...orz
0593nobodyさん2005/07/28(木) 20:34:17ID:???
あーあ、ミスってソース消しちまったorz
0594nobodyさん2005/07/28(木) 20:45:50ID:???
懺悔会場はここですか?orz
0595nobodyさん2005/07/28(木) 21:53:16ID:iGAmBrlm
じゃあ質問しまーす!
ソース書く時に半角スペースあるじゃないですか、それってぶっちゃけ自分どこを空けるかわかんないんだけどやっぱ空けた方がいいの?てか空けないと不具合起きる?
0596nobodyさん2005/07/28(木) 22:18:08ID:???
流れをぶった切って質問です。

シフト表のような、横軸に時間を表示して各行に誰が何時から何時まで何の作業をするか、
というグラフを
MySQLに登録したデータを下にPHPで抽出して、
TABLEタグで単位時間(10分)あたり1つのセルを区切って
作業時間に当たる部分のセルを結合・作業内容を表示する、
といったグラフを表示するスクリプトを作ったのですが、
こういうTABLEタグを使ったグラフの表示というのはお作法的に如何なものなのでしょうか?
JpGraphなどは利用したことはないのですが、それらのライブラリを使う等で画像で表示するほうがよいのでしょうか?
「テーブル厨」と言われるかもしれないのは分かっているのですが・・・。
0597nobodyさん2005/07/28(木) 22:25:21ID:???
>>596
つ[Excel]
0598nobodyさん2005/07/28(木) 22:46:09ID:???
>>499-501
横からスマソ
それをさページ全体に適用する方法ってない?
0599nobodyさん2005/07/28(木) 22:52:02ID:???
>>598
/g
06005962005/07/28(木) 23:07:28ID:???
>>597
レスありがとうございます。
ローカルでExcelでグラフを作成してアップロードすればいい、ということでしょうか?
誰かが元データに追加・変更を加えるたびに自分でローカルで作業、というのは避けたいので
できれば常に最新のデータから自動生成するか、あるいは追加・変更時にグラフ・画像生成という形にしたいのですが。
よろしくお願いします。
0601nobodyさん2005/07/28(木) 23:25:02ID:???
>>599
それをどこにつければいいの?(´・ω・)
06025612005/07/28(木) 23:31:00ID:???
>>568
色々ヒントをありがとうございます。
しかし、自分には難しく無理そうですが少しずつ、自分でそれらを使えるように頑張りたいと思います。
ところでなんでevalがお嫌いなんでしょうか?
スクリプティングのノウハウがあまりない者にとってはちょっとややこしい事を実現するにはすごく便利と感じているのですが。

>>569
すいません、確かに自分でもそう感じています。
もっと良い方法があるはずだ、とは思うのですが、その方法をきいたところで自分ですぐに出来るようになるとはとても思えないのもまた事実です。

>>570
現実的にそんな感じのスクリプトはレンタル鯖で使うと怒られたりするでしょうか?
06035992005/07/28(木) 23:37:13ID:???
>>601
なぁ、適当に書いちまった手前すまんが、そのままのコードで出来ないか?
試してみたが、出来るお。
0604nobodyさん2005/07/28(木) 23:50:48ID:???
>>603
$str = 'この中にページの内容を全部ぶっこんで';

ページの一番下に↓を入れればいいってこと?
>echo preg_replace_callback('/\\[ASIN:(.*?)\\]/', 'add_google_tag', $str);
中略
>// . urlencode($m[1]) . '&hl=ja&lr=lang_ja">' . $m[0] . '</a>'; }

漏れの知識ヤバス・・・(;´・ω・)
06055992005/07/28(木) 23:56:15ID:???
>>604
取りあえずファイルに>>501のソースはっ付けて、
$strに使用するHTMLのソースを代入すればおけ。
0606nobodyさん2005/07/29(金) 00:02:36ID:???
>>605
分かったお(`・ω・´)
ありが�d
0607nobodyさん2005/07/29(金) 00:03:42ID:???
>>596
ブラウザによって見え方が違ってくるので調整が結構難しいけど、
htmlのテーブルで棒グラフを表現するパターンは比較的採用されることの多い手法。
ただ、その場合グラフの再利用性が悪いのでGDなどのグラフィックライブラリが
使える環境な、ちゃんと画像生成してやった方がいい。
JpGraph使ってもいいけど、棒グラフ程度なら自分で好きな風に組んだ方が楽。
(HotScriptとかいけば、棒グラフだけ描画するライブラリとか軽いのもある)
0608nobodyさん2005/07/29(金) 07:49:53ID:???
PHP 4 で質問であります。

$hoge = & new Hoge();
と
$hoge = new Hoge();

後者はメモリに Hoge オブジェクトが2つできるという解釈であっていますか?
0609nobodyさん2005/07/29(金) 08:38:39ID:???
Hoge オブジェクトが2つできるってのは考え方としてはあってる。
だけど本当にメモリ上にできるかまではわからん。
実はPHPも裏ではもっとスマートに動いているという話も聞いたことある(真偽のほどは定かではない)。
まーPHP4では基本的に&をつけといたらそれでおkだと思われ。

つーか本当のことを知ってるor実際に測定可能orソースコード読める香具師いたら教えて。
0610nobodyさん2005/07/29(金) 13:37:32ID:???
「基本的に&をつけ」の一言で安心しました。
つけていないソースがいくつかあったので自分の考え違いと思って質問した次第です。
どうもありがとうございました。

つけない場合は構文通り2倍メモリとるんですかね、、興味深いです。
0611nobodyさん2005/07/29(金) 14:04:20ID:13Ftmufi
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
copy($_FILES['upfile']['tmp_name'],$copy_name;
}

としたところアップロードしたファイルが日本語名のファイルだと0バイトのデータになってしまうのですがなぜでしょう?
一つ気になったのですが、php.iniでupload_tmp_dirに/tmp/phpと指定してるのですが、アップロードを行っても/tmpにも/tmp/phpにもファイルはできません。
半角英数字のファイルだと問題なくコピーできます。
0612nobodyさん2005/07/29(金) 14:19:05ID:???
>640
PHP4までは&をつけないとメソッドとかまで全てコピーしていたみたいよ。
0613nobodyさん2005/07/29(金) 14:52:09ID:???
>>611
print_r($_FILES) すりゃ、さらに詳しく状況がわかると思うがどうかね?
0614nobodyさん2005/07/29(金) 15:18:15ID:???
>611
ShiftJISだと問題が起こった気がする。
解決策も無かった気がする。
0615nobodyさん2005/07/29(金) 15:24:31ID:???
>>612

$hoge = new Hoge();
$moge = $hoge;
$mora = & $hoge;

で、いつ消えるかはさておき、生成される Hoge オブジェクトの個数は
3個ということでおkですかね?
0616nobodyさん2005/07/29(金) 16:04:56ID:???
>>615
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スレよりこちらに誘導されてまいりました.

すみません,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:???
>>618
MySQLスレでecho "<td>$prizedt</td>";でOKとレスもらっているみたいだけど
ダメなん?
<td>$prizedt</td>をどういうコードで吐き出しているんだ?
0620nobodyさん2005/07/29(金) 17:39:02ID:???
var_dump($row)してみな。

要するにmysql_fetch_array()でどういう構造の
Arrayが返ってくるか理解汁。
06216202005/07/29(金) 17:43:39ID:???
いや「どういう構造のArrayが」じゃないな。「どういう値が」。
0622nobodyさん2005/07/29(金) 17:56:49ID:???
>>618
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:???
display_startup_errorsはスクリプト内で変えても無意味だな。
php.ini等でどぞ。
0624nobodyさん2005/07/29(金) 18:12:00ID:???
>>623
display_startup_errorsってPHP_INI_ALLなんだけど。。。
設定は反映されるけど実際には動作しないってこと?
06256182005/07/29(金) 18:52:48ID:???
自己解決しました。

実際に使うデータの変数の名前がいけなかったのが原因でした。
お騒がせしました。これから精進してまいります。
0626nobodyさん2005/07/29(金) 19:22:51ID:66TM2wnl
mb_send_mail()に渡す、メール本文の改行コードは、
CR+LFでないとダメでしょうか?
それともLFでも大丈夫でしょうか?
0627nobodyさん2005/07/29(金) 19:52:39ID:msnOOfVb
てゆーか、ダラって言うんだ。。
0628nobodyさん2005/07/29(金) 19:55:31ID:???
>>626
SMTPサーバー(qmail, sendmail, postfix etc)によっては
 LFでも送信してくれる「かも」しれない
 LFでないとエラーにする「かも」しれない
RFCで改行コードはCRLFと規定されているので横着せずに変換汁。
str_replace辺りで一発で変換できるでしょ。
0629nobodyさん2005/07/29(金) 20:00:38ID:66TM2wnl
>>628
mb_send_mail()で改行コードの自動変換はしてくれないんですかね?
0630nobodyさん2005/07/29(金) 21:03:57ID:???
フォームのダウンロードボタンを押すと
テキストエリアに挿入されているソースが
ファイルとしてダウンロード出来るプログラムを
作ろうと思っています。

ただ、これに利用される関数とかよくわかりませんので
参考サイトとかありましたら、教えていただけないでしょうか?
0631nobodyさん2005/07/29(金) 21:06:25ID:???
>>630
入力された文字列をダウンロードさせるってことか?
それとも、テキストエリアにデフォルト値として出力したものと同じものをダウンロードさせるってこと?

ダウンロードさせるならheader関数
06326302005/07/29(金) 21:12:00ID:???
前者です。ちなみにContent-Dispositionでしょか?
06335962005/07/29(金) 23:44:47ID:???
>>607
どうもありがとうございます。
とりあえず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:???
>>634
素人考えだが、無限ループしてる場合なら無限に書き出されるのでは?
apacheのエラーログではどうなってるの?

> print"$fruit[$a]"."\n";

の部分を
print ("xxx");
とかにしたらどうなる?
てかprintの内容を("")でくくらないのはドウなの?OKなの?
0636nobodyさん2005/07/30(土) 01:52:45ID:???
>>634

<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」にしたら普通に動いた。
0637nobodyさん2005/07/30(土) 02:09:46ID:???
>>633
更新頻度と参照頻度によるね。
少ない方で生成、これ常識
0638nobodyさん2005/07/30(土) 02:30:19ID:???
>>633
そりゃ閲覧頻度とデータ更新頻度にも依るがな。
誰も閲覧しないのにデータだけ黙々と更新され続ける場合と
データは余り更新されないのに、激しく閲覧されるものとは扱いが違う。
グラフ生成の負荷なんて大したことない場合が多いから、
個人の普通のサイト程度の閲覧頻度なら、どっちでもいいと思うけど。
06396342005/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初心者�T2005/07/30(土) 03:04:13ID:1xotdcs0
よろしくお願いします。HTMLとPhpでフォームからファイル名(変数?)を
受け取って、その画像をページの任意の位置で表示させたい時、
こういう風でいいのでしょうか?
<?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:???
>>640
・$_POST['file']の内容を精査しないと危ない。
・!$fileや$fileじゃなくて!isset($file)またはその逆を使う。
(ファイル名が'0'の場合の挙動を比較すること)
0642nobodyさん2005/07/30(土) 03:41:49ID:???
isset($file)じゃなくて、isset($_POST['file'])だ。
0643nobodyさん2005/07/30(土) 03:45:17ID:???
>>635
> 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
http://www.mysql.com/login.php?dest=http%3A%2F%2Fwww.mysql.com%2F

このURLのlogin.phpはわかるけど、その後ろの?dest以降はどういう意味があるん?
0645nobodyさん2005/07/30(土) 05:04:44ID:???
>>644
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:???
>>646
$imagesがArrayになるのはよく分からんけど、それならそれで print_r($images)してみれば原因が推測できるんじゃないかな。
パス名を含む文字列からファイル名を取り出すにはbasename()を使う。
0648nobodyさん2005/07/30(土) 07:16:03ID:???
>>647
すみません、今確認したら普通に表示されました。
何が原因かは全く分かりませんが、とりあえずできました。
ありがとうございました。
0649nobodyさん2005/07/30(土) 07:32:57ID:???
>>644
645が言ってる事が正解だと思うけど、
認証が必要なコンテンツで認証前だった場合に、一旦ログインに飛ばして
処理させた後に、戻ってくる時のリファラ代わりにそういうパラメータを
設定することがある。
0650nobodyさん2005/07/30(土) 08:16:05ID:XEEbjr3V
explodeってムチャクチャ便利だなw

$array = explode(" ", $string);

これで$stringがスペース区切りで配列$arrayに格納されるんだよ、
ぽまいら知ってた?
0651nobodyさん2005/07/30(土) 08:22:10ID:???
その分だと、
$string = implode(" ",$array); で、
配列$arrayがスペース区切りで$stringに格納されるのも知らなそうだな。
0652nobodyさん2005/07/30(土) 08:23:52ID:???
>>172を読めよ初心者www
0653nobodyさん2005/07/30(土) 08:30:08ID:???
ついでに初心者はarray_flipとarray_combineについて
勉強しておけwww
06546332005/07/30(土) 08:54:01ID:???
>>637,638
どうもありがとうございます。
更新頻度の方が圧倒的に低いので更新時に生成することにします。
どうもありがとうございました。
0655nobodyさん2005/07/30(土) 09:11:44ID:???
>>654
ま、蛇足だが、そこそこの更新頻度があって対象が携帯電話とかじゃないなら、
常に最新の画像が表示される(キャッシュを使わせない)ような工夫が必要かもね。

キャッシュコントロールとかでも良いかもしれないが、
簡単なのは、画像表示ページを動的にして、
<img src="hoge.jpg?<?php echo rand(0,1000) ?>">
とかかね。
0656640初心者�T2005/07/30(土) 09:41:57ID:1xotdcs0
ありがとうございました^^
自己解決しました。646さんのように『\"』(これ)を使い、
パスのところで$file変数の前の『.』を取ったら表示されました。
print "<img src=\"./test/$file\">"; 画像の表示はでできました。
If文の中の関数はまた今度勉強します。解決すべき問題は2点でした^^
””の間は『.』は文字列の追加として使えないのですね?
また疑問が沸いてきたのですが、``に挟まれた文字のあとに$が付く場合は何を意味しているんでしょうか。
0657nobodyさん2005/07/30(土) 10:10:03ID:???
>>640は>>641-642にあるような潜在的な問題はさておき、ちゃんと動作すると思うのだが。。。
""の間は文字列になるので、文字列の追加つーのがよく分からん。
`` は実行演算子。
ttp://www.php.net/manual/ja/language.operators.execution.php
0658640初心者�T2005/07/30(土) 11:17:11ID:???
>657さん   ありがとうございます。すみません『''』(これ:シングルクォートって言うんですね^^;)
      と間違えていました(汗)。画像ファイル名を変数に選別する所で、
      『if (ereg('.jpg$', $fnm))』っていう部分が気になってしまって。。
      ごく基本的な問題なんでしょうか??括弧の中のシングルクォートは
      文字列を扱って入るためですよね?その次に『,』と変数ですね。で、
      何で変数でもなさそうなJPGの文字列の後ろに$が付いているのだろう?、と。。
      下らない質問すぎるかも、、、
      
      文字列の追加、って言うのが多分素人の表現だと思うので許してください。。
      $no_image_jpg = $path_parts["dirname"].'/'.NO_IMAGE;
      というこの[]より後ろの部分の『.』は文字の足し算をしていると思ったのですが、
      間違いなのかな。。
0659nobodyさん2005/07/30(土) 12:09:05ID:qmDtI7sh
>>658
ereg('.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
__autoload()関数の使えば
自作クラスのrequireがしやすいと聞いたのですが。
ディレクトリ毎にクラスが分かれている場合、
ディレクトリ構造毎にif文でクラス判別を分けないとうまく行かず難しいですね。
0661nobodyさん2005/07/30(土) 14:54:33ID:???
>>660
チラシの裏に書けよ
0662nobodyさん2005/07/30(土) 16:22:35ID:???
最近のチラシは両面刷りが多いのも知らない
馬鹿がいるな
0663nobodyさん2005/07/30(土) 16:30:23ID:???
つ [ チラシの余白 ]
0664nobodyさん2005/07/30(土) 17:01:06ID:???
チラシの余白より便所の(ry
0665nobodyさん2005/07/30(土) 18:04:15ID:???
便所の(ryより2ch
0666nobodyさん2005/07/30(土) 18:17:39ID:???
ディレクトリ内のファイル数を求める関数ってありますか??
見つからん。。。
0667nobodyさん2005/07/30(土) 18:26:48ID:???
>>666
そのものズバリの関数は無いので、ディレクトリ関数あたりで地道に数えるしか無いと思われ。
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
>>669
無理なので、リンクを貼る際に自作のime.nuのような踏み台を用意して下さい。
0671nobodyさん2005/07/30(土) 21:06:37ID:???
何故技術書は肝心の所を書かないのか
http://pc8.2ch.net/test/read.cgi/php/1060009605/345-

にて 2ch 発の技術書企画が進行中です。
主に Web 開発・運営に付いてのノウハウが集められる予定です。
興味のある方・我こそはと思う方は一度覗いてみてください。
0672nobodyさん2005/07/30(土) 21:34:02ID:???
>>669
できるよ。
JavaScriptで。そういう解析できるツールもあるし
06736692005/07/30(土) 23:41:55ID:???
>>672
ほうほうJavaScriptではそんなことも出来るのですか?
一度も使ったことないけど、そっちも少しは勉強するかな。

具体的に使用する関数名か、
その解析できるツールってのを教えて貰えませんか?
0674nobodyさん2005/07/31(日) 00:00:51ID:???
>>673
onClickをトリガにして、リンク先のURLをロギング用スクリプトにGETで渡せ
0675nobodyさん2005/07/31(日) 00:33:20ID:xafAdIm1
UNIXドメインソケットをfsockopenするとき
ポート番号は何番を指定すればよいのでしょうか
06766752005/07/31(日) 00:36:13ID:???
0でしたね マニュアルに小さく書いてありました
0677nobodyさん2005/07/31(日) 02:49:12ID:wksgwGNX
どなたかここの質問に答えてやってくださいm(_ _"m)ペコリ
http://www.ortecweb.com/t-bbs/afi/
0678nobodyさん2005/07/31(日) 03:48:30ID:???
>>677
そんな過疎ってるぽいところで、答えても
情報が再利用されないし、こっちに誘導したほうがいいんじゃない?
0679nobodyさん2005/07/31(日) 09:27:26ID:???
>>674
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:???
>>680
$aryName = array("バナナ","リンゴ","メロン");
$names = implode("と",$aryName);
print("フルーツは".$names."です");
0683nobodyさん2005/07/31(日) 10:49:49ID:???
テキストボックスに["test","hoge"]
と入れて送信すると
\"test\",\"hoge\"となり、"に\が付くのですが、
どうしたら付かないように出来るのでしょうか?
0684nobodyさん2005/07/31(日) 10:58:59ID:???
>>683
magic_quotes_gpc = Off
ちょっとは自分で調べる癖をつけないと。。。
0685nobodyさん2005/07/31(日) 11:16:20ID:???
$a['name'][0] = hoge という多重配列があって、$a は可変で、様々な名前になっています。

これを、$name = hoge にしたいのですが、どうやって処理するのが効率的な抽出方法で
しょうか?
0686nobodyさん2005/07/31(日) 12:06:48ID:???
>>685
意味がよく判らないな。
とりあえず、自分の考えで書いたソースを貼ってみ。
そのほうが回答は得られやすい。
0687nobodyさん2005/07/31(日) 12:12:36ID:???
>>685
自分で書いてみたけど効率的でないっていうことなん?
効率的の意味(実行速度 or コード量 or 使用メモリ量 etc)もよく判らない。
あと、
$a['name'][0] = hoge
$a['name'][1] = hoge1
とあった場合はどうすればいいの?
0688nobodyさん2005/07/31(日) 15:22:06ID:UMC+uCHN
$valが配列か、普通の変数かを簡単に区別する方法はないでしょうか?
0689nobodyさん2005/07/31(日) 15:26:11ID:???
>>633
is_array
0690nobodyさん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:???
質問なら その2つのスレのどっちかで、
新ver.キター ウヒョー ノマノマ(ry なら、フジモト@PHPマスターを讃えるスレ でフッチー乙〜 ってのがいいかと。
06926902005/07/31(日) 17:40:29ID:???
>>691
レスありがとうございます。

フジモト@PHPマスターを讃えるスレ
http://pc8.2ch.net/test/read.cgi/php/1029342427/

このスレですね。

7/11以降の書き込み3、、、

googleでコマメに検索してみる事にします。
ありがとうございました。
0693nobodyさん2005/07/31(日) 18:22:02ID:???
Googleで検索って何がしたいのさ。
0694nobodyさん2005/07/31(日) 20:00:56ID:???
で、結局PHPの入門はどんな書籍を買えば良いのよ?
初心者ってリファレンス買うと失敗しますよねw?
0695nobodyさん2005/07/31(日) 20:17:47ID:tE006mzP
>>694
http://www.php.co.jp
0696nobodyさん2005/07/31(日) 21:33:26ID:???
GETで変数をphpに渡したいんだけど、
http://〜〜/xxx.php?2ch
といった感じで値だけで渡した場合、どうやって受け取れば良いでしょうか?
0697nobodyさん2005/07/31(日) 21:45:33ID:???
<?php phpinfo(); ?>

なページで確かめれ。
0698nobodyさん2005/07/31(日) 22:21:22ID:WZp9m1Ky
str_replaceで使う正規表現の"\r"って何?
0699nobodyさん2005/07/31(日) 22:26:23ID:???
str_replaceで正規表現は使えませんが。
0700nobodyさん2005/07/31(日) 22:40:39ID:???
>>696
QUERY_STRING
0701nobodyさん2005/07/31(日) 22:55:34ID:???
>>697,700
できました。ありがとうございます。
$_GETで取得しようとしてました。
0702nobodyさん2005/07/31(日) 23:30:19ID:???
<img src="./hogehoge.png" alt="hogehoge" />
って飛んできたら
<img src="./hogehoge.png" alt="hogehoge" width="88" height="31" />
ってな風に、画像のwidth , height を取得してタグを適宜変換してくれるようにしたいのだが、どうしたものか全くわからん。
0703nobodyさん2005/07/31(日) 23:52:01ID:???
やりたいことがさっぱりわからん
0704nobodyさん2005/07/31(日) 23:56:07ID:???
>>702
どっからどこに飛んでくるんだ?
0705nobodyさん2005/07/31(日) 23:59:31ID:???
>>702
たぶんこんな感じのことかな?

<?php
$src = './hogehoge.png';
$alt = 'hogehoge';
list($width, $height) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" width="<?=$width?>" height="<?=$height?>" />

はずしてたらスマソ
07067022005/08/01(月) 00:11:11ID:???
説明不足スマソ。
だが、 >>705 の説明がかなり的確。�dクス。
0707nobodyさん2005/08/01(月) 01:47:04ID:???
すごい無駄なことするんだな
0708nobodyさん2005/08/01(月) 02:02:48ID:???
>>707
誰に言ってんの?
0709nobodyさん2005/08/01(月) 02:39:23ID:???
受け取った$_GET['hoge']の値を受け取った後でスクリプトの中で別の値で上書きしちゃうとかってありでしょうか?
これをやると処理が非常に簡単になるんですが・・・
スパーグローバルを勝手にいじるってことの良い悪いがわかりません。
0710nobodyさん2005/08/01(月) 03:03:21ID:???
>>709
あり
0711nobodyさん2005/08/01(月) 03:59:17ID:???
>>710
いや、ないだろ?
0712nobodyさん2005/08/01(月) 04:15:02ID:???
単なる変数だし、いいんじゃないの?
0713nobodyさん2005/08/01(月) 06:13:40ID:???
>>712
そういう変なことやられると、引き継いだ奴が苦労するんだよ
今は個人でも変な癖はつけられると困る
0714nobodyさん2005/08/01(月) 06:21:03ID:???
>これをやると処理が非常に簡単になるんですが・・・
この時点で結構アイタタなソースのような希ガス。
根本的に作りが変なのでは。。。
0715nobodyさん2005/08/01(月) 06:50:03ID:KP4xPzSt
定数だと思うべし
0716nobodyさん2005/08/01(月) 07:43:23ID:???
>>705
list( , , , $size) = getImageSize($src);
?>
<img src="<?=$src?>" alt="<?=$alt?>" <?=$size?> />
0717nobodyさん2005/08/01(月) 10:05:10ID:???
>>708
702に対してに決まってるだろ文盲
0718nobodyさん2005/08/01(月) 10:15:05ID:???
>>707
俺は無駄ではないと思うが。
指定しないと表示が遅くなるし、読み込み中にレイアウトが崩れる。
0719nobodyさん2005/08/01(月) 10:24:47ID:???

━━━━━━━━━━━━━━━俺様用しおり━━━━━━━━━━━━━━━
0720nobodyさん2005/08/01(月) 11:06:43ID:???
いや、詩織は漏れの物だから
0721nobodyさん2005/08/01(月) 13:19:35ID:???
マニュアルが新しくなってたんでchmファイルをダウンロードしたんだけど前回同様キーワードが文字化けします。
誰か文字化けしないchm作って
くれないか
0722nobodyさん2005/08/01(月) 13:23:31ID:???
>>721
ここを参考に自分で汁
ttp://apollo.u-gakugei.ac.jp/~sunaoka/misc/php_manual_ja/
0723nobodyさん2005/08/01(月) 13:46:58ID:???
GDで画像に文字列を描画する際に文字列を特定の範囲内でセンタリングする方法ってありますか?
0724nobodyさん2005/08/01(月) 13:51:13ID:???
>723
画角から自分で計算汁
07257232005/08/01(月) 14:05:43ID:???
>>724
やはり自分でやるしかなさそうですね。
文字列はいろいろ変わるのでその都度自動計算させる必要があるのですが、
計算の仕方に今ひとつ自信がありません。
imagettftextを使っているのですが、
単純に「全角の横幅=指定したサイズ」「半角=全角の半分」「文字間隔=1px」と考えていいのでしょうか?
フォントによっても変わりそうだし、どうしたものか・・・。
0726nobodyさん2005/08/01(月) 14:40:44ID:???
>>725
つ [imagettfbbox]
0727nobodyさん2005/08/01(月) 15:23:45ID:moKfjlj6
コマンドライン用のスクリプトを「php -l xxx.php」でチェックしたら以下のエラーが出ました。
変数周りは確認しましたが$の付け忘れや$のみなどはありません。
何が原因なのでしょうか?(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]
07287232005/08/01(月) 16:13:43ID:???
>>726
自動計算ができるみたいですね。
かなり便利そうなので試してみます。
どうもありがとうございました。
07297272005/08/01(月) 16:30:01ID:???
すみません。解決しました。
0730nobodyさん2005/08/01(月) 16:30:56ID:???
>>722
最初出来なかったけどファイル名のH:/phpdoc/ja/を削除してやったら出来ました。
情報有賀と
0731nobodyさん2005/08/01(月) 18:32:41ID:???
>>713
「変なこと」か?ならば何故仕様上
書き換えできないものにしていない>PHP

いや俺も個人的にはやらないけど、書き換わってる可能性も
含めて他人のコードは読んでるよ。実際結構書ける人でも
そういうコードもあるし。
0732nobodyさん2005/08/01(月) 18:36:17ID:???
>>731
PHPの仕様は信用ならないからな
0733nobodyさん2005/08/01(月) 18:39:01ID:???
出来ること=変じゃない

が成り立つならこの世の中には変なモノは一切存在しえないよ
0734nobodyさん2005/08/01(月) 19:00:37ID:???
クライアントがクッキーを拒否しているかを
調べる方法があったように記憶しているのですが
思ったのですが、どうすればいいんでしょうか?
0735nobodyさん2005/08/01(月) 19:07:49ID:???
$sql = "select * from hoge;";
$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:???
>>714
あ、そういうのやっちゃってました。
if(!$_GET['mode']){$_GET['mode]='main';}とかって。
逝けないことだったんですか。
$_GET['mode']でcase文使って分岐させるのに、初期化の意味も込めて上記のように書いてたんですが。
0737nobodyさん2005/08/01(月) 19:18:28ID:???
>>734
全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
JavaScript使えるならwindow.navigator.cookieEnabledでチェックできるみたいだけど(ブラウザの制限不明)。
0738nobodyさん2005/08/01(月) 19:35:16ID:???
>>735
1レコードだけなら
 ループ内で $atode = $row;
 ループ外で $atode['a'];
全レコードなら
 ループ内で $atode[] = $row;
 ループ外で $atode[レコード��]['a'];

でも、ループ外でレコードの内容が必要なケースってなんなんだろう。
ループ内で処理できんのかのぉ。
0739nobodyさん2005/08/01(月) 19:36:12ID:???
>>735
ループ後 $atode = $row でいけると思う。ってか$rowをそのまま使ってもいいんじゃないの?
0740nobodyさん2005/08/01(月) 19:54:11ID:IMj74JwV
>>737
>全くゼロの状態でクッキーの可否を確認する方法は無いような気がする。
そうですか。Javascriptと勘違いしてたかも。
>チェックしたいページの前にクッキーを食わせるダミーHTMLを置いて本命ページで食ってるかチェックするとかはどう?
Javascriptは使わないポリシーなので検討してみます。
蟻10
0741nobodyさん2005/08/01(月) 19:59:59ID:???
>>736
ソースのあちらこちらで変更していないであれば、いいんでないかい。
漏れも含めて多分、グローバル変数である$_GETを「あちらこちら」で
書き換えられるとトラブル時に追いかけづらいから嫌悪感があるんだろうと思う。
個人的には$_GET等のスーパーグローバル変数は参照専用のほうが心理的にはありがたいんだけどね。

ちなみにその例であれば
 switch (isset($_GET['mode']) ? $_GET['mode'] : 'main') {
  case 'main':
   //main または省略時の処理
 }
でいいのではないかと。
0742nobodyさん2005/08/01(月) 20:12:58ID:???
>>741
それならdefault使えばいいんじゃないか?
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;
}
0744nobodyさん2005/08/01(月) 20:39:48ID:???
>>742
無指定(設計動作)と、よく判らん値を指定してきた
変なパターンは別にさせたいときもあるし。
0745nobodyさん2005/08/01(月) 20:52:46ID:cnoIwIPs
>>743
テストしてないけどリカーシブコールを使えばいいような希ガス。
元のコードをざっとしか見ていないんで間違っていたらスマソ。

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:???
>>738
ありがとうございます。まさに知りたい事はそれでした。
いちいち書かなくても添字(キー)がちゃんと渡されるんですね。いままでなんて面倒な事をしてたんだorz
今回必要だったのは1レコードしかヒットし得ないクエリだったのですが、複数ヒットした場合の例も試してみました。
ループ内で $atode[] = $row;
ループ外で $atode[レコード�]['a'];
この場合、レコード�のところには、ループの回数(もちろん0から)が入る、ということで良い訳ですよね?(一応動作させてみましたけど念のため聞く。)

>ループ外でレコードの内容が必要なケースってなんなんだろう。
ループの前後にテーブルやリストタグを書くのがいやで、すっきりと書きたいと思ってた次第です。ただそれだけの事なんですが。

>>739
ループ閉じた後はダメじゃないですか?

>>741
自分でも解らなくなるので、もちろん最小限にしてます。値が無いときに初期値を与えるとか、その程度です。

>>744
そうそう。そんな感じです。エラーはエラー、値がないと言うのは、想定内のことなんで。
0747nobodyさん2005/08/01(月) 22:34:31ID:???
ブログのトラックバック機能を作っています。

受信は問題なくできるのですが、送信が全くうまくできません。
ただ、自分の利用しているサーバ内であれば
フリーブログなどと送受信出来るので、送信機能には
問題ないのかも?っと思っています。

ping送信するに辺り、何か設定が必要なのでしょうか?
(php.ini的に)
07487382005/08/01(月) 23:48:09ID:???
>>746
ループの回数という表現に違和感あるけど、多分あってる。
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:???
>>748
>ループの回数という表現
変な言い方でした。sqlのヒットしたレコードの1件目が[0]2件目が[1]と、こういう意味です。
示していただいた例は、漏れにはちょっと難しすぎました。が、頑張って解読してみます。
ちょっと話はそれますが、phpのスクリプトでDBと連動させて吐き出したhtmlのソース、みなさんは綺麗さとか気にしますか?
漏れは、htmlばかりずっと書いてたんで、吐き出されたソースも綺麗にインデントのレベルがそろうように書いてます。ばからしいと思いつつ。
07507392005/08/02(火) 01:00:42ID:???
>>746
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:???
>>747
よくわからんが、オープンソースのを参考にするんじゃだめなのか?
ダメならここで聞いて作るのもダメな気がするがそれはいいの?
0752nobodyさん2005/08/02(火) 06:08:14ID:???
if (ereg("[0-9]{8}",$aaa)==false){
//エラー処理
}
$aaaが半角数字8文字でないときにエラー処理したいんだがうまくいかない
8文字以下ならエラー処理できるが8文字以上ならとおる・・・
なんか間違ってる?
0753nobodyさん2005/08/02(火) 06:34:12ID:???
^と$
07547472005/08/02(火) 06:54:45ID:???
>>751
参考にしています。ただ、外部に送信だけがなぜか出来ません。
ですので、サーバ的な問題があるのかと思い、
質問させていただきました。
0755nobodyさん2005/08/02(火) 10:56:22ID:pypKKfs6
初心者です。
画像のアップロードを含む個人情報登録画面を作ってます。

入力画面(データ入力)→確認画面(OKか確認のみ)→DB登録画面(insert文実行)

と遷移していく中で、入力画面からinput type="file"で画像を選択して
アップしたいんですが、move_uploaded_fileで渡すパラメータ($_FILESの中身)
って、hiddenか何かで持てないですかね?
そうじゃないと、DB登録と同じタイミングで画像をアップできなくて。
今は、確認画面で画像を実際にアップ、DB登録エラーなら画像を削除とか
面倒なことを考えています。
しかも、確認画面から戻るときも画像を消さないといけないし・・・。
似た処理を作った方教えてください。
ちなみにDBはMySQLです。
0756nobodyさん2005/08/02(火) 11:08:44ID:???
>>755
無理
0757nobodyさん2005/08/02(火) 11:15:37ID:???
>>755
アップロード時点でテンポラリーに入ってる訳だから、
それが消えるまでの間にDBのINSERT掛ければ良いと思うが?
成功すればmove_uploaded_fileで格納。
類推しにくいテンポラリー名だとしてもHIDDENは止めれ。
SESSIONで持っとけ。

あと確認画面でアップロードした画像はそのままで、テキストだけ
訂正したい場合の「やり直し」もモードに入れといたら?
0758nobodyさん2005/08/02(火) 11:16:37ID:???
やっぱムリすか・・・
こういうもの作ってる人いると思うんだけどどうやってるんだろう?
やっぱ上で書いた方法なのかな。
ヤフオクとかもそういう動き(あっちはJavaだが)してるけど、
効率のいい方法は何かないものか・・・
07597572005/08/02(火) 11:17:03ID:???
>確認画面から戻るときも画像を消さないといけない
これが要件なら仕方ないな。
0760nobodyさん2005/08/02(火) 11:18:39ID:???
>>755
input type="file"がなぜvalue値を指定できないようになっているのかを考えろ
それにPHP4から$_FILESで得られる名前はファイル名のみでファイルパスは含まれなくなったし
0761nobodyさん2005/08/02(火) 11:21:34ID:???
画像のアップロードは一番最後にする
07627552005/08/02(火) 11:25:12ID:???
>>757
レスどうもです。
やっぱSESSIONのほうが安全ですかね。
セッションは仕様としてやらないって方向だったんですが
(そこまでのシステムじゃないだろうってことで)
提案してみます。

>あと確認画面でアップロードした画像はそのままで、テキストだけ
>訂正したい場合の「やり直し」もモードに入れといたら?

モード追加は厳しそうです。決断権あんまりないもので・・・orz
入力画面に戻るたびに画像は再度指定し直すって方法でいこうと思ってます。
07637552005/08/02(火) 11:31:52ID:???
>>757
そうじゃないと、画像だけアップされてDBにデータの無いものは
なにも関連のないゴミ画像として残りますよね。
トランザクション成功時のみアップされればいいんですが・・・。

>>760
クロスサイトスクリプト対策、ですか?
すんませんイマイチ判ってないです。

>>761
確認画面で画像をアップ、ってことですか?
それはチト仕様上厳しいです。

厨な回答してたらごめんなさい。
0764nobodyさん2005/08/02(火) 11:45:31ID:???
全部の登録が完了してから、改めて画像アップさせりゃいいものを…

>それはチト仕様上厳しいです。

それは仕様が糞なんでは?
07657572005/08/02(火) 12:02:46ID:???
うーん、マニュアルより
>移動または名前の変更が行われていない場合、リクエストの
>終了時にそのファイルはテンポラリディレクトリから削除されます。
俺書いたプログラムでアップロードを受けるスクリプト以外でも
難なく取れてたような...ゴミ処理は自動でもしてたみたいだけど。
0766nobodyさん2005/08/02(火) 12:08:34ID:???
>>755
確認画面で画像を表示する場合は、大体こんな処理をしてるのが多いんジャマイカ?
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+
PHP+MySQL
MySQLに、2つのテーブルがあり、IDというフィールドをキーにしてリレーションをします。

テーブル1:ID、category
テーブル2:ID、name

この様な場合に、テーブル1のcategoryに対するテーブル2nameを全て列挙したいのですが、
どのようなクエリとPHPを書くのが一般的なのでしょうか。

いま考えているのは、
SELECT name FROM テーブル1 WHERE ID=○○
のようなクエリ自体をテーブル1のレコード数ループさせながらprintするというものなのですが、
あまり良い方法では無いような気がします。
07687672005/08/02(火) 12:11:38ID:Svt/6T9+
追記です。

表示結果は以下の様にしたいです。

カテゴリー1
 名前
 名前
 名前
カテゴリー2
 名前
 名前
 名前
  ・
  ・
  ・
07697572005/08/02(火) 12:12:19ID:???
ごめん、やっぱりPHPの仕様に合わせて確認表示時に
アプリ自前のテンポラリーに移動してたわ。mtimeを目安に自前でgcも。
>>757と>>765は嘘。
んで、テキスト関係の登録と同時に自前のテンポラリーから正規のところに移動。
(確認→訂正時には自前のテンポラリーからは削除しない。gcか正規登録時に削除するのみ)

07707552005/08/02(火) 12:20:20ID:???
次の質問来てるとこすみません。

>>769は、つまり>>766と同じような仕様ということですよね?

つまり
確認時に画像アップ(自前の一時ディレクトリに)、DB登録時に一時ディレクトリから移動
訂正時の画像はそのタイミングでは消えない、と。

一時ディレクトリの画像は定期的に消そうと思います。
この仕様でやってみます。ありがとうございました。
0771nobodyさん2005/08/02(火) 12:24:24ID:???
>>767
DB板の方がいいと思うんだが、、、
つ [ SQL 結合 ]
07727672005/08/02(火) 12:27:47ID:Svt/6T9+
すいません。
2chビギナーで、DB板というのがあるんですね。。。
マルチポストになりそうですが、行ってきます。
0773nobodyさん2005/08/02(火) 12:31:07ID:???
いや、DB板にきても、
つ [ SQL 結合 ]
とレスしちゃいますが。。。
0774nobodyさん2005/08/02(火) 12:37:37ID:???
>>767
SELECT category, name from テーブル1, テーブル2 where テーブル1.ID = テーブル2.ID
0775nobodyさん2005/08/02(火) 12:46:50ID:???
>>767
お前リレーションがわかってないだろ
07767672005/08/02(火) 13:15:53ID:Svt/6T9+
>774
 ありがとうございます。
この結果を768の様に表示したいんです。

>775
リレーションって何ですか?
わかっている人の説明が聞きたい。
0777nobodyさん2005/08/02(火) 13:19:26ID:???
>>776
あらら。こちらのスレとマルチだったのね。MySQLスレの方にレスしちまった。
MySQLスレの106を確認よろ。
0778nobodyさん2005/08/02(火) 13:48:58ID:???
>>776
キーフィールドを使って複数のテーブルをいろいろ(LEFT RIGHT INNER OUTER)と簡単に結合(JOIN)できるのがリレーショナルデータベースの利点
0779nobodyさん2005/08/02(火) 15:47:21ID:???
Mon Aug 1 00:00:00 2005 という文字列から、
2005/08/01 という文字列を返してくれるような
便利な関数はありませんか?
07807432005/08/02(火) 15:58:18ID:???
>>745
ありがとうございました。
期待した結果となりました。

非常に参考になりました。
0781nobodyさん2005/08/02(火) 16:01:46ID:???
>>779
この手の質問って定期的にあるな。
PHPマニュアルの日付関連の辺りを読んで、色々やってみりゃいいのに。

$day = date('Y/m/d', strtotime('Mon Aug 1 00:00:00 2005'));
0782nobodyさん2005/08/02(火) 16:11:11ID:???
>>779
date('Y/m/d',strtotime ("Mon Aug 1 00:00:00 2005"))
んでも、そんな不思議文字列使うよりは、タイムスタンプに統一した方がいいんでないの?
たぶんDBからの取得データだと思うから、SQLやDBの設定あたりで解決するほうがよいかと。
0783nobodyさん2005/08/02(火) 16:37:35ID:???
webArenaでpear使ってる人いる?
0784nobodyさん2005/08/02(火) 17:13:19ID:???
PHPとMySQLで登録ユーザーのみが閲覧・入力できるサイトを作っているのですが、
こういう場合にMySQLでは全てのユーザーについてそれぞれアカウントを作る必要があるのでしょうか?
それとも管理に必要なアカウントを除いて、一般ユーザー用のアカウントは一つだけ作って
それを使いまわせばよいのでしょうか?
後でログを確認するときなどに誰がどのような作業を行ったか分かるようにしたいのですが、
これはApache等のアプリケーション側でログを取るべきなのでしょうか?
よろしくお願いします。
0785nobodyさん2005/08/02(火) 17:42:10ID:???
include 'http://www.sample.com/sample.cgi?mode=test&code=a';
と同様のことを、httpを経由せずにしたい、
( =cgiにパラメータを渡して、出力テキストを取り込みたい)
のですが、方法がよくわかりません。ご教示ください。
よろしくお願いします。

なお、phpとcgiは同じディレクトリ内にあります。
0786nobodyさん2005/08/02(火) 18:09:35ID:???
>>785
httpを使わないとなると、コマンドラインで実行するしか無いねぇ。
phpでそれをするには、マニュアルのプログラム実行関数あたりを参照。
んでも、対象のスクリプト側にも手を加えなきゃいけなくなると思うよ。
(perlなら @ARGVを適切に処理するように。)
0787じじぃ2005/08/02(火) 19:19:18ID:53wND5J6
Yomi-Search PHPを初めて設置しようとしましたが、エンコードがわからなくて書き換えることが出来ません・・・
config.phpのエンコードって何ですか?
0788nobodyさん2005/08/02(火) 19:26:54ID:???
配布サイトにサポート掲示板があるから、そこでk(ry
07897572005/08/02(火) 19:35:12ID:???
>>770
>同じような仕様ということですよね?
Yes.「訂正時の画像はそのタイミングでは消えない」というのは
せっかくアップロードは成功したのにテキストの修正だけのために
もう一度アップロードさせたくない。及びアップロードファイルのクライアントローカルパスを
PHP側で知ることが出来ないので、undo時にその値で初期化できないということもある。
(JavaScriptでゴニョゴニョやってみたことがあるが、日本語ファイルの場合の
挙動がブラウザで結構まちまちで、面倒なので投げた)

UPLOAD_ERR_NO_FILEの時で既に一度でもそのセッションで
アップロードが成功していれば、自前テンポラリーのファイルを利用する。
そんな感じで一応うまく動作してる。
0790nobodyさん2005/08/02(火) 19:35:32ID:???
select * from hoge;というsqlクエリを実行して
while ($row = @mysql_fetch_array($result)){}
で値を取り出しました。(1件のみヒットという前提)
このなかに$row['a01']〜$row['a10']という値があるとします。
他にも$row['name']とか$row['hoge']なんていうのもあるとします。

このとき、$row['a01']〜$row['a10']のうち、値が'空'で無いものの数がいくつ有るかを数えたいです。
目的:その数分だけfor文で、テーブルのTRを描画させたい
0791JHON2005/08/02(火) 19:48:37ID:kmlqG+RX
あの、はじめまして。
早速質問ですが<table>使ってメニューボックス作ったんですけど
いくつか並べておきたいんですが、綺麗に並べる方法おしえてください。
ついでにメニューボックスにタイトルつけたいんですが、それも教えてください。
0792nobodyさん2005/08/02(火) 19:51:47ID:???
Webサイト製作初心者用質問スレに逝け>>791
0793nobodyさん2005/08/02(火) 19:58:24ID:???
こんなカンジ?>>790
$cnt = 0;
for($i=0;$i<10;$i++) {
$key = "a" . $i;
if (!is_null($row[$key])) $cnt++;
}
07947852005/08/02(火) 21:45:02ID:???
>>786

プログラム実行関数ですね。
調べて試行錯誤してみます。

ありがとうございます。
0795nobodyさん2005/08/02(火) 22:12:15ID:???
>>793
レスどもです。
数字の規則的な部分は01とかみたいに、0パディングで2桁だったので、
forループの中で、
$i = sprintf("%02d",$i);
としてみました。動作はばっちりですが、sprintfってこんな感じの使い方でよいんですかね?
0796nobodyさん2005/08/03(水) 03:06:52ID:Vw0PEp23
質問させてください
PHP4.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:???
ヒアドキュメントって何度も同じID使っていいんですか?

>>>DOC
DOC;

例えば同じページ内で何度もヒアドキュメント使うときに
DOCばっかりだとエラーの原因になったりします?
0798nobodyさん2005/08/03(水) 03:55:19ID:???
>>796
http://www.php.net/manual/ja/language.variables.php

>>797
試せ
0799nobodyさん2005/08/03(水) 06:00:15ID:???
>>797
PHPタンは賢いから問題にならないけど、
人間のほーがエラーを起こす原因になるですまる
0800nobodyさん2005/08/03(水) 10:16:49ID:Vw0PEp23
>>798
レスありがとうございます。
解説を読んで括弧で明示的にしてやらないとだめなのかと思い、
"{$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:???
>>800
「$1」は「$i」等の間違いじゃないの? 変数名の先頭は数字ダメだよ。
それと"$tmp[$1]"はダブルクオートなくてもいいでしょ。
0803nobodyさん2005/08/03(水) 12:09:11ID:???
(.*?)に一致した部分が $1 として使われて、該当部分が$tmp[$1]に置き換えられるのを期待してるんだと思うよ。
one#_hoge_#three -> $tmp['hoge'] = 'two' -> onetwothree
one#_huge_#three -> $tmp['huge'] = '-' -> one-three てな感じ。
08047962005/08/03(水) 12:12:19ID:Vw0PEp23
>>802
レスありがとうございます。
$str = preg_replace("/#_(.*?)_#/i","$tmp[$1]",$str);
このように正規表現でヒットした箇所のデータ参照を$1で行い
それを$tmpの連想配列の引数として使用し、値を参照しようとしています。
0805nobodyさん2005/08/03(水) 12:16:53ID:???
>>800
こう書くしかないんぢゃないのかなぁ。

$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:???
preg_replaceの実行時に、「$tmp[$1]」を評価させるんだから、
'tmp[$1]' あるいは "\$tmp[\$1]" にしないとダメでは?
0807nobodyさん2005/08/03(水) 12:26:21ID:???
>>804
e修飾子
$str = preg_replace("/#_(.*?)_#/e",'$tmp["$1"]',$str);
0808nobodyさん2005/08/03(水) 12:52:17ID:???
>>799
ありがとうございます。
確かにそうかもしれないので、ひとつひとつ変えてやってみます!
0809_2005/08/03(水) 13:27:21ID:???
質問させてください。
windowsとlinuxでphpを使用しているのですが
system関数で一部のコマンドが使えません。
どうしたら使えるようになるのでしょうか?
0810nobodyさん2005/08/03(水) 13:34:41ID:???
>>809
詳しく
0811nobodyさん2005/08/03(水) 13:53:34ID:OQNM6t9u
rand()でmt_getrandmax()の数字出せますか?
割り算してループさせると処理遅い・・・30秒でタイムアウトorz
0812nobodyさん2005/08/03(水) 14:13:53ID:???
何言ってるのか分かんない。
php4@win2k
echo getrandmax(); // 32767 int2
echo mt_getrandmax(); // 2147483647 int4
echo rand(2147483646,2147483647);
0813nobodyさん2005/08/03(水) 14:21:58ID:???
>>811
無限ループの罠
08148092005/08/03(水) 14:25:10ID:???
>>810さんレスありがとうございます。
詳しく言うと、
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:OQNM6t9u
間違えたスマソ
rand()でmt_getrandmax()以上の数字出せますか?
0816nobodyさん2005/08/03(水) 14:25:59ID:WIIsN5aX
携帯電話のダウンロードカウンターってあるのでしょうか?
PCは検索かけると出てきましたが
携帯に対応させるにはどうしてもできなく
こちらに書き込みさせて頂きました。
0817nobodyさん2005/08/03(水) 14:28:38ID:WIIsN5aX
携帯電話のダウンロードカウンターってあるのでしょうか?
携帯サイトでランキングを製作したいのですが
PC用のCGIダウンロードカウンターをいじってもまったくお手上げ(ToT)
0818nobodyさん2005/08/03(水) 14:29:24ID:WIIsN5aX
>816 817
間違って2度書き込みしてしまいました 汗
0819nobodyさん2005/08/03(水) 14:29:46ID:???
>>815
だせたらmaxじゃないだろ
0820nobodyさん2005/08/03(水) 14:30:36ID:???
>>819
それはわかっております
0821nobodyさん2005/08/03(水) 14:32:35ID:OQNM6t9u
>>819
スマソ

FFAPHPで能力値浮動小数点逝って困ってますorz
ダメージ計算でマイナス逝っちゃう・・
0822nobodyさん2005/08/03(水) 14:37:30ID:OQNM6t9u
>>820
その通り分かっております
08238112005/08/03(水) 17:07:36ID:OQNM6t9u
自己解決しました
 function random($num){
  $random0 = mt_rand(0,10000);
  $random1= $random0 * 0.0001;
  $random2 = round( $num * $random1 );
  return($random2);
 }
0824名無しさん@そうだ選挙にいこう2005/08/03(水) 17:08:00ID:pKopPkZZ
この板人大杉がでます。
PHPでなんとかしてください。
0825nobodyさん2005/08/03(水) 17:09:08ID:???
>>824
p2
0826nobodyさん2005/08/03(水) 18:51:24ID:???
PEAR::DBの
DB.phpってどこに入ってるんでしょうか?
WindowsのPHP5を使ってますが、どこにあるかわかりません
0827nobodyさん2005/08/03(水) 18:52:00ID:???
検索してみたか?
0828nobodyさん2005/08/03(水) 18:56:04ID:???
>>827
してみたけど、無いんですよ
もとから入ってるものじゃないんですかね?
tgzファイルがいくつかあるみたいなので、その中に
入ってるのかと思ってるんですけど
08298262005/08/03(水) 19:02:32ID:???
ついでに確認ですけど、これってWindowsでも使えますよね?

#pear install DB

しろって書かれてるページは多いんですけど、これってLinux系で
Windowsでやっても(パス設定しても)ダメでしたが・・・
0830nobodyさん2005/08/03(水) 19:07:09ID:???
環境変数のPATHにPHPやPear.batのあるディレクトリを追加するか
そのディレクトリまでcdしてから実行しろよ
08318262005/08/03(水) 19:33:07ID:TuHx69hT
>>829
のコマンド実行後ってどれぐらいで、完了するもんでしょうか?
>>830さんの言うようにパス設定ちゃんとしたら、エラーはでないんですけど、
実行後なんのメッセージもでないまま固まってるんですけど・・・
08328262005/08/03(水) 19:50:53ID:???
go-pear.bat を実行して、php.exeの場所を指定するだけだった('A`)
0833nobodyさん2005/08/03(水) 19:53:47ID:???
mysqlに投げるクエリ、
$sql = "select * from hoge;";

hogeのあとの「;」は有るのが正しい?無いのが正しい?どっちでも動いちゃうんですが。
0834nobodyさん2005/08/03(水) 19:57:56ID:???
>>833
その後になんかつなげるなら付けといてもいいだろうけど、
俺は紛らわしいしつけない。
0835nobodyさん2005/08/03(水) 21:14:47ID:???
>>833
他のDBでは通用しないのがあるので、無いのが正しいに一票。
うろ覚えだけどソース的には無いのが正しいというのを見たことがある。
2chだと思ったけど…。
0836nobodyさん2005/08/03(水) 22:19:14ID:ehblprIn
cgi版phpをつかわなければならなくなったのですが...
.htaccessでphp_valueを変更しようとしたんですが、反映されません。
ものすごく既出だと思うのですが、cgi版phpで、php.iniの値を変える場合はどうしたらよいのでしょう?
変えたいのは、
mbstring.encoding_translation
がonになっているので、これをoffにしたいだけなのですが...
0837nobodyさん2005/08/03(水) 22:43:14ID:???
>>836
そのCGI版PHPの設定ファイル検索ルートのどこかに
php.ini (別の名が使えるように設定している場合はその名前)を置く。
0838nobodyさん2005/08/03(水) 23:53:04ID:jkhIjHPp
ショッピングカートなどで、データを一時保存するためには
何の関数を使用すればいいんですか?
0839nobodyさん2005/08/04(木) 00:17:53ID:???
mysqlでテーブルの複数フィールドに検索したい語句が入っている可能性があります。
こういった場合、whereのあとに
where key1 like '%a%'
or key2 like '%a%'
or key3 like '%a%'
   ・
   ・
   ・
と続けるしかないんでしょうか?
0840nobodyさん2005/08/04(木) 01:17:42ID:???
>>839
オレなら、フィールドを連結した文字列にINSTRとか使ってみるかな。

ここらへんとにらめっこしてみそ。
http://dev.mysql.com/doc/mysql/ja/string-functions.html
0841nobodyさん2005/08/04(木) 01:18:39ID:???
>>838
一般的なのはセッションや、クッキー(使い方によっては両方ほぼ同義だが…)。
0842nobodyさん2005/08/04(木) 02:33:10ID:???
>>840
それだと
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で出力するにはどうすれば良いんですか?
0844nobodyさん2005/08/04(木) 16:16:30ID:???
>>843
ディレクトリって英数文字だろ
文字コード関係ないんじゃないの
0845nobodyさん2005/08/04(木) 16:22:58ID:???
>>844
すみません説明が少なかったみたいです。
サーバは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:6tkxUKoa

abc.def.ghi. というデータがあって、
最後の、.(ドット)だけ、削除して、abc.def.ghi というデータにしたいのですが、
どうすれば良いでしょうか?
0849nobodyさん2005/08/04(木) 23:36:40ID:???
入門書を一通り読み終えた程度のレベルなのですが、
違う本を買ってみたところ、echo文で文字列をくくるのに
<<<EOD
.....
EOD;
というやり方が使われていました。
ぐぐってみたところヒアドキュメントというのを初めて知ったのですが、
この場合IDはなんでもいいとのことですが、EODという言葉自体はどのような意味を持つのでしょうか?
何かの略なのでしょうか?
0850nobodyさん2005/08/04(木) 23:41:33ID:???
End Of DQN
0851nobodyさん2005/08/04(木) 23:43:07ID:???
EndOfDocuments...kana?
EOT na hito mo iru.
EndOfText kashira.
0852nobodyさん2005/08/04(木) 23:45:44ID:???
>>849
explosive ordnance disposalの略
(爆発物処理)
08538492005/08/04(木) 23:51:56ID:???
>>850-852
レスどうもです。(ネタ含めて)

それにしても文字列の中に連想配列を入れるときもいちいち"......" . $hoge["age"] . "..."ってやってたのに
波括弧が使えるとは知らなかった・・・orz。
入門本なんてそんなものなのかな?
0854nobodyさん2005/08/05(金) 00:07:35ID:???
>>848
$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
>>848
$string = "abc.def.ghi.";
$string = substr($string,0,strlen($string)-1);
0857nobodyさん2005/08/05(金) 00:21:56ID:???
>>855
strtr
08588482005/08/05(金) 00:22:38ID:???
>>854
>>856
ありがとうございました!
どちらの方法でも出来ました。多謝です!
0859nobodyさん2005/08/05(金) 01:21:39ID:???
ある程度の長さのある文字列を、頭から決まった文字数だけで切ってしまうにはどんな関数を使えばよいのでしょうか?
ブログなんかでたまにある、

なんたらかんたらなんたらかんたらなんたらかんたらなんたらかんたら...続きを読む、みたいな感じにしたいのです。
0860nobodyさん2005/08/05(金) 01:59:12ID:???
>>859
本読んだらすぐわかる気がするが。読む気ないのか?
0861nobodyさん2005/08/05(金) 07:32:44ID:???
>>856
$string = substr($string,0, -1);
0862nobodyさん2005/08/05(金) 07:48:09ID:???
>>848
$string = "abc.def.ghi";
0863nobodyさん2005/08/05(金) 08:37:06ID:xefaOJlU
apache2.0.54とphp5.0.4を連携させようと思うのですが
internal server errorがでしまいます。
OSはフェドラコア4でapacheとphpはyumでインストールしてきました。
このとき設定は特に変える必要はないそうなのですが、何か変更が必要ですか?
すれ違いなら誘導お願いします。
0864nobodyさん2005/08/05(金) 09:01:49ID:???
パーミッションじゃねーの?
0865nobodyさん2005/08/05(金) 09:19:40ID:???
まずエラーログを見れ
08668632005/08/05(金) 09:43:21ID:tHV4jGl/
パーミッションは大丈夫です。
エラーは
security alert This PHP CGI cannot be accessed directry
まずこれがあります。
ほかにもあるんですが、いまコピペできる環境にないんで。
0867nobodyさん2005/08/05(金) 09:47:17ID:???
php.iniの設定ミスっぽいね。

; cgi.force_redirect = 1
 ↓
cgi.force_redirect = 0
08688632005/08/05(金) 10:05:20ID:tHV4jGl/
わーーーーーーーーーー
できたーーーーーーーー
俺>>867さんのことダイスキ。ありがとうございました。
0869nobodyさん2005/08/05(金) 10:45:27ID:???
PHPでDOSのバッチファイルを作成して実行しています。
結果を変数に取り込むにはどうすればよいのでしょうか?
exec関数では結果が返ってきませんし、passthruやsystemでは
直接画面(ブラウザ)に表示されてしまいます。

$result = system($file_name);
↑みたいな感じで書いてみたのですが・・
0870nobodyさん2005/08/05(金) 11:04:18ID:???
>>869
画面に出ちゃうのは、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:???
>>870
なるほど。やってみます。
取りあえずバッチファイル内の各行末でパイプ使ってリダイレクトさせてみましたが、
余計なファイルを作らなくて良いならそれにこしたこと無いので。
0872nobodyさん2005/08/05(金) 14:24:09ID:???
>>859
mb_strimwidth()
0873nobodyさん2005/08/05(金) 14:56:29ID:vB1WCgKJ
インクルード使うと、ページの上下余白がなくなっちゃうのは仕様ですか?
0874nobodyさん2005/08/05(金) 15:01:54ID:???
>>873
読み込み先のファイルでCSSとか定義されてんじゃね?
0875nobodyさん2005/08/05(金) 15:13:20ID:???
>>873
ブラウザが取得するのは単なるhtmlで、それがPHPを経由してるかどうかなんて気にしないよ。
違いがでる場合の(htmlの)ソースを見比べてみ。
0876nobodyさん2005/08/05(金) 16:41:48ID:jDJVMZFR
DB検索について教えて下さい。PHP+MySQLです。

postメソッドで検索語句を変数$keyに渡しすのですが、語句が1語であれば

select * from TABLE like '"% . $key. "%'";

で出来るのですが、複数のキーワード(and検索)の場合はどうすればいいんでしょうか。
0877nobodyさん2005/08/05(金) 16:59:19ID:???
>>876
かなり難解なソースですね
0878nobodyさん2005/08/05(金) 17:07:08ID:???
';DELETE from TABLE WHERE 1 OR '
で検索してみようかな
0879nobodyさん2005/08/05(金) 17:14:45ID:DYX+HJMi
phpからphp_mssql.dllを利用してWindowsSQLServerのデータベースに
接続しています。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:???
>>877
南海ですか・・・。

一応、こういった処理までいきました。

全角スペース→半角スペースに変換
半角スペース→カンマに変換
検索語句をカンマ区切りで配列化させる

後はSQL文で複数のキーワードをどうやって入れるかなんですけど…。

like $key1 and $key2 and $key3 …

みたいな感じでできますか?
0881nobodyさん2005/08/05(金) 17:53:30ID:???
>>880
いや、はっきり言えばコードの抜粋の仕方も日本語もおかしいってことだ。

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:???
>>882
えらく見づらいけど、あってると思うよ。ただのリンクなんでalign=leftはいらないだろうけど。
動かないからカキコしたのかな。だったらどう動かないか書いた方がいいかも。
老婆心だけど直接 $_POST['key'] を埋め込むのはあまり良くないな。
理由が判らなければサニタイジングでググって味噌。
08848822005/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可能なファイルを画像だけでなく
その他の拡張子も受け付けるようにしたいのです。

サイタニシングという名の特殊記号による文字化け注意了解です
0885nobodyさん2005/08/06(土) 00:07:26ID:???
>>884
>サイタニシングという名の特殊記号による文字化け注意了解です
それ、正しく理解できてないから。
0886nobodyさん2005/08/06(土) 00:08:26ID:???
もっと酷いことが起こります。
0887nobodyさん2005/08/06(土) 01:05:47ID:???
日記スクリプト作ってる。
年・月ごとにフォルダを作って、一日分ずつログを作っていく形式にしようと思ってる。

・・・のだけど、レン鯖のPHPがセーフモードOnみたいで、mkdirとchmodが動作しない。
回避策を教えてくれエロい人。
0888nobodyさん2005/08/06(土) 01:11:10ID:???
>>887
PathInfoつかって偽装するのじゃダメなの?
0889nobodyさん2005/08/06(土) 01:12:01ID:???
>>887
年月ごとだったら、別にスクリプトで生成しなくたって、
予めFTPとかで作っておけば?
3年分でもたかだか36個だしょ?
0890nobodyさん2005/08/06(土) 01:16:31ID:???
>36個
08918872005/08/06(土) 01:18:47ID:???
>>888
PathInfoってのが初耳。
ちょっとマニュアル見てくるっす。

>>889
ん、それでもいいかも。

もうちょっと格闘してみようかな。
ありがとうエロい人達。
0892nobodyさん2005/08/06(土) 04:41:55ID:zdmG/ySS
phpで記述されたページから、もうひとつの違うphpで記述されたページにジャンプするときに
データを渡すことは可能なのでしょうか?
08938922005/08/06(土) 04:48:42ID:???
すいません。書き忘れです。
自動にジャンプするときです。たとえばログインボタンなどを押して、自動的にジャンプするときに
さらにデータを送るということです。
0894nobodyさん2005/08/06(土) 05:56:02ID:???
GETでもPOSTでもSESSIONでも好きにしてくれ。
0895nobodyさん2005/08/06(土) 06:07:53ID:???
すいません。書き方が悪かったかもしれませんね。
phpファイルが二つあるある場合にそれどれのファイルから違うファイルにデータを渡すということです。

自動ジャンプは header(Location: *******); しか知らない上に使い勝手が悪いので困っています。
0896nobodyさん2005/08/06(土) 06:38:10ID:???
だから>>894の方法でいけるでしょ。
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);
}
?>
0898nobodyさん2005/08/06(土) 07:19:29ID:???
>>897
if ($handle = opendir('XXX')) {
0899nobodyさん2005/08/06(土) 08:11:04ID:???
>>897
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:???
>>893
つ
 <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:???
PHP4とGDで画像出力をいろいろ試しているのですが、
あるスクリプトの一部で作成した画像をそのスクリプト内で表示することはできないのでしょうか?
調べてみたところ、この用法としては
・ヘッダーに画像情報を入れて*.phpを画像としてIMGタグで指定する
・画像ファイルを作成する
の二つのようですが、ファイルを作成することなく一時的な画像を同スクリプト内で表示することはできないものでしょうか?
0904nobodyさん2005/08/06(土) 11:48:48ID:???
>>903
1つのリクエストに対して、複数の内容のレスポンス(html + 画像)を返すというのは、
仕様としては存在してるんだけどブラウザ側で対応しているものがほとんど無い。
0905nobodyさん2005/08/06(土) 12:01:23ID:???
>>903
引数で表示画像内容を指定できるスクリプト(.php)と、
その.phpを<img>で呼び出すHTMLを吐き出す.php
の二つの.phpを作成汁
0906nobodyさん2005/08/06(土) 12:02:01ID:???
>>903
たぶんこんな感じのことをやろうとしてるのだろうか?

--- 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あたりで出力みたいなこと
-------------

でいいんで内科?
パラメータがデカイならセッションなりなんなりで。
09079062005/08/06(土) 12:02:52ID:???
>>905と内容かぶった・・・
09089032005/08/06(土) 12:04:58ID:???
むぅ。そうなんですか。>>904
ためしに一時的にファイルを作成してIMGタグで指定したあとでunlink()で削除したら
ブラウザには壊れた画像アイコンが出てきました。
直後に消すのもまずい様子。
・・・ってことはファイルに保存してもIMGタグで読み込むまでのタイミングで他の人が上書きしても
それは反映されてしまうかもしれないってことかな?
(実際に画像を読み込むタイミングはIMGで指定したよりずいぶん後になるのか?)
この辺はどういう仕様になってるんだろ??
0909nobodyさん2005/08/06(土) 12:06:25ID:???
>>903-905
検証もしていないし、IE限定っぽいんだけど、
phpでmhtファイルを送出したらどうなんでしょうね?
画像はbase64でエンコードして埋め込むことになる。

今度暇になたら検証してみよう。
09109032005/08/06(土) 12:14:35ID:???
スレ違いすまそ。>>905-907
言われてみれば最初から別ファイルにすればよかった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:???
まずは2次元配列覚えてくれ
0914nobodyさん2005/08/06(土) 14:24:30ID:???
>>912
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する。
0915nobodyさん2005/08/06(土) 14:24:38ID:???
>>912
佐藤はどうして"23"になったの?
0916nobodyさん2005/08/06(土) 14:27:23ID:???
誕生日になったから
09179142005/08/06(土) 14:29:55ID:???
>>912
あ、良く読んでなかった。
「田中」を全て削除するもんだと思って>>914書いてしまった、すまん。

それこそ、二次元配列でデータを入れる段階で、
$ary['田中']='18';とかにしていけばいいんじゃないか?

ちなみに、あなたの質問の仕方にもちょっと足りないところが。
「重複している『田中』を削除して」って、どういう削除だ?
最初に出てきた『田中』が残るのか、後に出てきたのが残るのか。
上記のように二次元配列を使うと、後に出てきたのが残るんだが…

>>915
ワロスwwwwwww
0918nobodyさん2005/08/06(土) 14:36:03ID:???
重複してるからって削除される田中[2]の意味がわからん。
削除されるのは常に後から来た方なのか?
09199122005/08/06(土) 14:43:07ID:???
>>915 誤記
>>913-918 詳しくありがとう。

説明不足で申し訳ない、

削除するのは前でも後ろでも構わない、片方どちらか残せば、

重複しているの『田中』だけじゃなく、仮に『高橋』『伊藤』『小林』....
がでてきた場合も削除したいんだ、できますか?
0920nobodyさん2005/08/06(土) 14:47:17ID:???
>>916も加味して忠実に書きました。

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 die("hoge");
みたいに
$fp = fopen("hoge.txt") or return;
とやりたいけど当然うまくいかない
ここをかっこよく書く方法を
0923nobodyさん2005/08/06(土) 17:57:55ID:???
>>922
かっこよいかどうか判らんが
if (!$fp = fopen('hoge.txt', 'r')) return;
ぢゃあかんのか?
0924nobodyさん2005/08/06(土) 19:16:22ID:???
SafeMode上だとスクリプトがファイルを作成するのは無理でつか?
0925nobodyさん2005/08/06(土) 22:33:54ID:if+rBJOC
ユーザーの名前とパスワードをデータベースに送ってもらうとき、
自動的にユーザーに0000とか、自動でユーザーIDを付加し、
DBに登録したいんだけど、どうやって処理つくればいい?
0926nobodyさん2005/08/06(土) 23:00:32ID:???
わけわからん
0927nobodyさん2005/08/07(日) 00:02:45ID:???
>>925
オートナンバーでいいんじゃないの?
0928nobodyさん2005/08/07(日) 00:30:30ID:???
>>925
DBMSで自動でユーザーID(連番)を付加してやればいい。
まあPHPで連番の採番処理してやってもいいと思うけど。
(カウンターと同じようなの)
0929nobodyさん2005/08/07(日) 02:50:31ID:OZokRLKO
<?
print "<A HREF="http://www.google.com/intl/ja/">google</A>";
?>

すいません。PHPの中で、リンクタグを貼ることは出来ないんでしょうか?
↑のようなことをやっても、parse error, unexpected T_STRINGとなります。
0930nobodyさん2005/08/07(日) 02:59:14ID:???
print "" ←これがどこからどこまでだとparseされるか考えてみよー
0931nobodyさん2005/08/07(日) 03:04:35ID:???
>>930
レスありがとうございます。

$test = "<A HREF="http://www.google.com/intl/ja/">google</A>";
print "$test";

↑みたいな事しても出来ません。
なにか代替処置みたいな事がありませんでしょうか?
0932nobodyさん2005/08/07(日) 03:06:37ID:???
>>931
やべぇ、くだらなさすぎて答える気がおきねぇ。
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>";
0935nobodyさん2005/08/07(日) 03:34:26ID:???
>>934
文字列に変数等がないなら、シングルクオートで括っても可
0936優しい人2005/08/07(日) 09:35:58ID:???
"から"までを認識するからな。"が4つもありゃわけわからんだろ。
覚えとけ(´_ゝ`)
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:???
$hoge == ''
0941nobodyさん2005/08/07(日) 11:57:21ID:???
[htmlのお話]
htmlの属性値は " ' のどちらで囲んでも良い。
属性値を引用符で囲まなくても良い場合もあるが、その条件とURIの表記とは一致しないので引用符を使った方がよい。
URIで使う文字に " ' のどちらも含まれていないので、(入力チェック等を通過した後は)どちらの引用符を使ってもよい。(RFC3986)

[phpのお話]
" "の中に$があれば、そこからできるだけ長い文字が変数名になるように探される。
つまり、変数名に使えない文字が出るまでが遠足^h^h変数名として利用される。 " ' は変数名の対象外。

で、>>937 それでもいいよ。
0942nobodyさん2005/08/07(日) 12:06:59ID:LvZBGVlb
あるphpファイルで関数を次のように定義して、
function 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:???
>>942
そういう時は物事を簡単にしていく。
function u(){ 〜元と同じ〜 }
<?php
require_once("test.php");
u();
print "$host $user $pass";
?>
やってみれば、分かるけど $host等が未定義のままになっている。
これは、変数のスコープの問題。(どの範囲まで変数が有効か)
ttp://www.php.net/manual/ja/language.variables.scope.php
0944nobodyさん2005/08/07(日) 12:14:45ID:???
>>942
いらない3行

function u(){
}
u();

ってかDEFINE使え
0945nobodyさん2005/08/07(日) 12:36:14ID:???
>>941
「'」はURIに使っていい文字じゃない?
sub-delimsに入ってる。
0946nobodyさん2005/08/07(日) 12:59:22ID:???
>>945
あー、ほんとだね。
じゃぁ、属性hrefに変数を使う場合は " "で囲った方がいいってことだね
0947nobodyさん2005/08/07(日) 13:41:15ID:???
print '<A href="' . $linkurl . '">';
これが最強
0948nobodyさん2005/08/07(日) 13:59:33ID:???
すいません、まだphp初心者なのですが、
MagpieRSSというRSSパーサー(http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS)を
設置したのですが、RSS0.92を取得して、RSS1.0へ出力するにはどのPHPファイルに
どのような記述をすればいいでしょうか?

サイトに埋め込む方法はよく取り上げられているのですが、
そのままRSSに書き出す方法が見つからないので・・・
09499122005/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+/II
入力データのチェックってどの程度やってる?
GETでもPOSTでもいいんだけど、SQLインジェクションというのを調べてたら
そのまま渡されたデータをSQL文に入れたりするのがちょっと怖くなってきた。
もちろん数値ならctype_digit、半角英数字ならctype_alnumとかでチェックはしてるんだけど、
たとえば半角全角オールオッケーなデータ(掲示板の投稿内容とか)はどうすればいいんだろう?
SQL文で使われそうな英単語を弾くというわけにもいかないし。
誰か安心できるいい方法教えてplz。
0951nobodyさん2005/08/07(日) 16:10:10ID:???
>>950
お好きな物を用途にあわせてドゾ

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
09529502005/08/07(日) 16:22:35ID:Comr+/II
>>951
即レスどうもです。
確かにSQL文中の変数をシングルクォートでくくっておいて、
入れる変数を全てhtmlspecialcharsで処理すれば問題はなさそうですね。

ところで最近買った本には
「入力した値をデータベースに格納する場合には、スクリプトの無効化はデータを表示するときに行う」
と書いてありました。
格納時にエスケープしてしまうと
「ブラウザを経由せずにデータ入力した場合にエスケープが行われない」
「ブラウザ以外に出力する場合にエスケープしたキャラクタを元に戻す必要がある」
だそうです。
言ってることは正しいけど、意図しないSQL文を入力されてしまう可能性を考えたら
SQL文発行前に処理しておいた方がいいのでしょうか?
09539502005/08/07(日) 16:25:57ID:???
とりあえずmagic_quotes_gpcをonにしておけばいいのかな・・・。
0954nobodyさん2005/08/07(日) 16:33:31ID:???
>>950

とりあえず自分はアドスラッシュだけして格納、表示の時点で
nl2br($str);またはnl2br(htmlspecialchars($str));
BBSで特定のタグを許したければstrip_tagsのオプションで指定しています。
ただ、マヌアルによるとstrip_tagsは構文チェックはしないらしいのでhtmlが壊れる可能性はある
09559512005/08/07(日) 16:38:54ID:???
>>952

ごめんなさい、952をちゃんと読んでいなかった…。
>確かにSQL文中の変数をシングルクォートでくくっておいて、
>入れる変数を全てhtmlspecialcharsで処理すれば問題はなさそうですね。

そんなんすか?格納時にhtmlspecialchars()かましてもしょうがない気がしますが…。
一度マヌアルのhtmlspecialchars、addslashesを読み返しておいた方がいいかもです
あと、関数個別以外にも
http://www.php.net/manual/ja/security.database.sql-injection.php
も一読しておいて損はないかと…
0956nobodyさん2005/08/07(日) 16:39:02ID:???
>>952
DB周りについては以下の考えでいいのではなかろうか。
DBに渡すデータ
 ・データ中に ' や \ が含まれているとSQLエラーになるんで addslashes でエスケープ
 ・データ中にSQLが含まれていてもただのデータとして扱ってもらうように前後を ' で挟む
 ・データ中にHTMLタグが含まれていてもDB上のデータとしては別に問題ないので何もしない
DBから取り出したデータの扱い
 ・ブラウザに表示する際、HTMLタグが含まれているとまずいので htmlspecialchars でタグを除去
0957nobodyさん2005/08/07(日) 16:51:06ID:/ebYkLvj
sjisのデータをaddslashesする時に注意が必要
09589502005/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:???
>>958
基本的に>>956の考え方がスマート。
ただ、更新頻度より表示頻度の方が圧倒的に多かったり、容量に余裕があるなら、
DBに入れる前にある程度表示用のフォーマット(htmlspecialchars然り)するのもありだね。
そのへんはサイトの規模に応じてケースバイケースで。
09609502005/08/07(日) 17:09:11ID:???
あ、ブラウザで表示するときもstripslashesの必要はないか。
あとはSQL文で変数をシングルクォートでくくる、と。
どうもありがとうございました。
09619502005/08/07(日) 17:36:38ID:Comr+/II
もう一つ質問。
入力フォームから、たとえばラジオボタンやリストから選択してその値をPOSTで渡すような場合、
渡された.phpの方ではその値が正しいものかをチェックしてる?
入力フォームをダウンロードしてvalueの値を改ざんし実行されると意図しない値が渡されたりするわけだけど、
そういうのってどこまでチェックする必要があるんだろうか?
たとえば製品名をリストから選択して製品番号をvalueに入れてある場合、
改ざんされると存在しない製品番号を送られてしまいいろいろ困ることになりそう・・・。
かといってその都度DBに照合するものなのかな?

経験者の方アドバイスお願いします。
0962nobodyさん2005/08/07(日) 17:47:33ID:???
>>961
ユーザからの入力は全て正当性チェックしてる。
ただ、数値を入れるべきとこに数値以外を入れてきた馬鹿に対して
「エラー:数値を入力してください」
なんて親切に出してやる義理はないので、PHPが勝手にゼロに変換したとしても放っておく。
(もちろんゼロが正当な値かどうかのチェックは別の話)
0963950=9612005/08/07(日) 17:54:29ID:???
>>962
レスどうもです。
やはり全部チェックしてますか。
エラー表示はほどほどに「不親切に」やることにします。

ところで、チェックは「全て」チェックしてますか?
というのは、例えばSELECT文で必要な検索条件を指定するだけの場合もチェックすべきなのでしょうか?
検索結果が0件になるだけなのでまぁいいかなと思ったりもするのですが。
選択された値をinsert/updateする場合には厳密にチェックする必要がありそうですね。
09649622005/08/07(日) 18:08:32ID:???
よくわからないけどチェックしなくても問題ないものはチェックしなくてもいいんでない?
っていうかそもそもチェックのしようがないものをチェックしろと言われても何が何だかって話になるし。

> ユーザからの入力は全て正当性チェックしてる。
って部分は
ユーザからの入力は必要なだけ全て正当性チェックしてる。
と言い換えるべきだったかな。
値の範囲とか、文字列長、不正文字、不正タグ、
その他コンテキストとの兼ね合いから必要なだけ全てチェックすべきだと思われ。
0965nobodyさん2005/08/07(日) 18:31:25ID:???
php5ts.dllはわざわざシステムフォルダに移動する必要ないのに、なぜ書籍やサイトでは移動するように書くのか疑問。
0966nobodyさん2005/08/07(日) 20:09:33ID:???
日付で「2005-08-07T20:08:00+09:00」の形式を、
UNIXタイムに変換したいのですが、strtotime()ではうまくいきませんでした。
他に方法ありませんか?
0967nobodyさん2005/08/07(日) 20:19:10ID:???
>>966
DBから引っ張ってきている値なら、SQLでなんとかする。UNIXタイムスタンプで取得できる場合もある。
どうしてもPHPでやりたければ、sscanfやsubstrや正規表現で各要素に分割する。
0968nobodyさん2005/08/07(日) 21:14:46ID:???
掲示板で文章書いて、投稿ボタンを押すと、この文でOKですか?
みたいな確認文章が表示されます。

投稿ボタンを押す前の書き込んだ内容を、投稿ボタンを押した後の
プレビューとして表示する画面にデータをうつしているんですか?
0969nobodyさん2005/08/07(日) 21:29:31ID:???
他にどうやっていると?
0970nobodyさん2005/08/07(日) 21:38:12ID:???
全然関係ない文が静的に表示されたらワロス
09719612005/08/07(日) 21:54:41ID:???
>>964
う。どうやら言葉が足らなかったようです。
例えばリストから時間(1時間単位)を選択さして値を渡す場合、
if($hoge < 0 or $hoge > 24) print "ぬるぽ";
とだけやりますか?
それとも1から24までの数値をリスト作成時に同時にセッション変数に配列として格納し、
if(!in_array($hoge,$_SESSION["list_hoge"])) print "ぬるぽ";
とした方がよいのでしょうか?
時間だと連続してますが、たとえば製品名を選択して製品番号を値で渡す場合、存在しない製品番号は弾く必要があるので・・・。

セッション変数に全部入れてしまえば意図しない数値は全て弾くことができそうですが、
入力フォームを表示したはいいけど「やっぱやーめたっ」とかで他のページに移られた場合、
無駄な情報がセッション変数に入ったままになってしまいます。
この処理をいたるところで行った場合、メモリの無駄遣いになりそうなので怖いのですが、
何か他に方法はあるものでしょうか?
0972971=9612005/08/07(日) 21:58:17ID:???
>>971の続き

各ページで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:???
>>973
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
1行のテキストエリアがあって、そこに文字列を入力して、
送信ボタンを押すと、入力画面下に入力項目が表示される仕組みを
作りたいのですが、どうすれば良いでしょうか?
フォームメールのように、画面を切り替えるような事はしたくないのです。

<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:???
当たり前のことだが、PHPはサーバーで処理するものなので、
いずれにせよ入力した内容をサーバーに送らないと表示できるわけがない。
javascriptとか使えばいけるのかもしれんがよくわからん。
0978nobodyさん2005/08/07(日) 23:06:10ID:???
>>973
その本が「書き忘れ」でしょ。
0979nobodyさん2005/08/07(日) 23:09:05ID:???
>>974
結構読みやすい本でしたので厚くもなく薄くもなく入門用として重宝していたのですが
PHPのインストールのところが他と違うので疑問に思っていました。
なるほどそういうことですか。
解決しました。
ありがとうございます。
09809782005/08/07(日) 23:09:13ID:???
ああ、>>974の言うとおりかもしれない>その本の構成が
09819762005/08/07(日) 23:09:48ID:???
>>977
レスありがとうございます。


<FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST"> を

<FORM ACTION="<?echo $PHP_SELF?>" METHOD="POST"> にする事で
出来ました!自分自身に送信してサーバに送ってるって事なんでしょうか。


0982nobodyさん2005/08/07(日) 23:10:39ID:???
>>978
そのようですが、>>974で解決しました。
ご指摘ありがとうございます。
0983nobodyさん2005/08/07(日) 23:11:34ID:???
>>981
それはまさに一度サーバーに送ってから入力フォームを再表示しているわけだがそれでいいわけ?
見た目が切り替わらなきゃいいとかそういう話だったのか?
0984nobodyさん2005/08/07(日) 23:12:46ID:???
>>980
別に書き忘れでいいと思いますよ。
0985nobodyさん2005/08/07(日) 23:12:58ID:???
>>981
出来たんならいいけど、その変更に意味は無いけど…。
09869762005/08/07(日) 23:15:15ID:???
>>983
submitボタンを押して、別のページに切り替えるような
処理がダルイなと思ってたんで、これが望んでいた処理です。
判りにくくて申し訳無いです。<(_ _)>
0987nobodyさん2005/08/07(日) 23:28:24ID:???
どうも>>973です。
ちょっと待ってください。
この本を見直したら、http.confがApache2.0のモジュール版でした
CGI版ではないです。
この場合は記述間違いってことですかね?
それともモジュール版はphp.exeを使うのでしょうか?
0988nobodyさん2005/08/07(日) 23:32:05ID:???
たびたびどうも>>973です。
php5ts.dllがphp5apache2.dllと同じディレクトリにあるからコピーする必要ないのかな?
0989nobodyさん2005/08/08(月) 00:15:30ID:???
>>975
クラス使えばいいんじゃないかと
0990nobodyさん2005/08/08(月) 00:57:47ID:54u1h4+D
php5でEthna使ってるんですけど

$db =& $this->backend->getDB();

の書き方で、&ってどういう意味になるんでしょうか?
PHPの文法をわかってないんですけど・・・
09919742005/08/08(月) 01:00:27ID:???
>>988
それで正解
0992nobodyさん2005/08/08(月) 01:03:42ID:???
>>990
&は参照わたし。 マニュアル嫁。
0993nobodyさん2005/08/08(月) 01:12:53ID:???
>>976
PHPとは関係ないが、JavaScript使えばできる。
XMLHTTPコントール使えば、バックグラウンドでデータの送信もできる。
いわゆるAjaxだな。
0994nobodyさん2005/08/08(月) 01:15:48ID:???
>>992
ポケットリファレンス使ってるんだけど書いてなかったんだよぅ

・・・次スレってもう立ってるのかな?
誘導でるまで書き込み控えたほうがいいかも
09959942005/08/08(月) 01:17:29ID:???
とりあえず、たててくるので、ちょっと書き込みまってねー
09969942005/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:???
>>988
php5apache2.dllにpathが通ってればいいけど、
そうでない場合はapacheがloadするpathに無いと駄目だから
WindowsのディレクトリとかApacheのディレクトリにないと駄目な筈。
でも、php5ts.dllが見つからなければApache起動時にPHPの読み込みに失敗すると思うが
それが出てないってことは、どこか別のところにあるバージョン違いも含むphp5ts.dllが
有効になってるんじゃないの?
09989942005/08/08(月) 01:20:07ID:???
埋め立てしよう・・・
09999942005/08/08(月) 01:20:28ID:???
1000!
10009942005/08/08(月) 01:20:43ID:???
はやかった・・・OTL
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。