1 :
nobodyさん :
04/08/06 15:44 ID:paJ4kjjQ
2 :
nobodyさん :04/08/06 15:45 ID:paJ4kjjQ
3 :
nobodyさん :04/08/06 15:50 ID:paJ4kjjQ
6 :
軟式PHP :04/08/06 17:03 ID:8a2aplVU
(*´▽`*)乙
>>5 前スレ「の」リンクじゃなくて、前スレ「に」新スレのリンクを貼れということだろ。
なかったから俺が貼ってきたけどさ。
8 :
nobodyさん :04/08/06 17:21 ID:MRWEjhxd
php4.2.2でcheckauth関数を使うにはどこの設定をかえればよいのでしょうか? おながいします
9 :
nobodyさん :04/08/06 17:30 ID:zD2/bc5/
PHPからMySQLにデータ書き込みするとき、 たまに文字化けするってのにもうずっと悩まされています。 色々試しに修正いれても、 たまにしか文字化けしないので直ったかどうか分からず辛いです。 どうすればイイかの方法論を教えて欲しいです。 助けてください。
【SJISで運用する場合】 my.ini の設定 以下のふたつは設定しておくこと [mysqld] default-character-set=sjis [mysql] default-character-set=sjis ってことじゃないの? あと影響しそうなのは php.ini magic_quotes_gpc = Off とか? 表とか十とか申とか化けてない?
ってか、設定変更するときは、本当にその問題なのか、 きちんと把握してから変更してね。
>>8 PHPの標準関数の中にはねぇな。
> Sorry, but the function checkauth is not in the online manual.
pearのAuthのやつなら pearのマニュアルのインストール部分を読んで入れれ
前スレ976です。 重複しますが、よろしくです。 /*前スレ990*/ $image_dir_path = dirname($image_path);/*元イメージ格納ディレクトリーパス*/ $mkdir_path = $image_path.$mkdir_name;/*サムネイルを作成するディレクトリーまでのパス*/ mkdir($mkdir_path , 0777); chmod ($mkdir_path , 0777);/*←これが無いとmkdirでは755にしかならなかった、*/ で一応目的のディレクトリーを作ってサムネイルも作成できるのだけど $mkdir_path へディレクトリーを作るにはその上層のディレクトリーのアクセス権を777にしないと 行けないので、mkdirの前にchownでchown($xxx , www); としたけど、 chownするのはそのまた上層にwwwへのアクセス権777が必要みたい・・・ 結局、サムネイルを作成するディレクトリーまですべてwwwをオーナにして777にしないと いけない状態。。 どうすればいいんだろうか。。
綺麗にかけよ
777しろよ
707にしろ グループは0にしとけ、マジで。 無料鯖はユーザーを同じグループにしてて普通に他人のディレクトリは入れるようなずさんなところあるから どっちにしてもセキュリティのためにグループは0で
php5.0のphp.iniで output_handler = mb_output_handler と指定してもphpinfo()では"no value"となってしまいます。 mb_stringsを使いたいのですが、この項目は必要ないのでしょうか
[No.13]
カポコン04/08/07 00:13
04/08/07 00:13
>>11 文句があるなら、ココに言ってくれ。
思いっきり.NETバイトコードって書かれてるだろ。
http://japan.linux.com/opensource/04/04/26/0139204.shtml ちなみにバイトコードとはネイティブコードの中間にあたるコードの事。
まーLinuxで.NETバイトコードって言われるゆえんは、LinuxOSに詳しい人間なら
分かるだろうけどね(ボクはまだ、マウス派だから分からないか?)
所詮、IT用語辞典関連の検索キーで調べた浅はかで唯々諾々とやってきただけの知識か・・・。
>ちなみにバイトコードとはネイティブコードの中間にあたるコードの事。 全然違う。 仮想コンピューター上でのコードのことであって、 中間というわけではない。
しったかはもううんざい
うんざいだな
>>13 safe modeでmkdirはやめておけ。使い物にならない。
だな、始めに作っとく方がいい
26 :
nobodyさん :04/08/07 17:26 ID:I/AgGnLb
PHP版の更新時刻取得エージェント(アンテナ)を配布しているサイトを ご存知の方はいらっしゃいませんか?海外のでも構いません…。 ぜひ参考してみたいと思いますので、どうぞよろしくお願いします。
28 :
Tom :04/08/08 00:20 ID:5rvsGlMW
PHP初心者です。詳しい方、何卒お助け下さい。 文字列をダブルクオーテーション内に書いたときは「"」を、シングル クオーテーション内に書いた時は「'」をエスケープしなくてはなりませんが、 ダブル、シングルの両方エスケープする必要がある場合はどうしたら よいのでしょうか? 例えば下記のようにJavaScriptのファンクションをコールするHTMLタグを PHPで書き出して、このファンクションにPHPの変数を渡したい場合、 シングルとダブルクオーテーションの両方を使わざるを得ないと 思うのですが、このファンクションに渡される変数に例の$details1 〜3のようにシングル、ダブルクオーテーションの両方が含まれて いると、いずれもエラーになってしまいます。 <?php $details1 = "My friend's name is \"John\""; //ダブルクオーテーション内 ダブルのみをエスケープ $details2 = ' My friend\'s name is "John"'; //シングルクオーテーション内 シングルのみをエスケープ $details3 = "My friend\'s name is \"John\""; //ダブルクオーテーション内 両方エスケープ echo "<input type='button' value='Show Details1' onClick='showDetails(\" $details1 \")' >"; echo "<input type='button' value='Show Details1' onClick='showDetails(\" $details2 \")' >"; echo "<input type='button' value='Show Details1' onClick='showDetails(\" $details3 \")' >"; ?> 変数に' や"が含まれるのが避けられないケース(ユーザによる フォーム入力値など)があると思うのですが、この場合皆さんはどう 処理されているのでしょうか? ご教授よろしくお願いいたします。
>>28 俺の場合、それは頻繁に使うからこうしている
変換する文字列を簡単に拡張できるようにstrtrを使っているが別にstr_replaceで置換を使ってもいいと思う
/* HTML特殊文字変換 */
function htmlspecialcharsEx( $text ){
$translations = array(
"'" => "?",
);
return strtr( htmlspecialchars($text) , $translations );
}
同様に改行付き出力の為にprintlnも定義したりしている。
おっと……こうね。 $translations = array( "'" => "'", );
31 :
Tom :04/08/08 01:51 ID:5rvsGlMW
レス29&30さん なるほど!!!そうすればいいのですね!早速やってみます。 レス本当にどうもありがとうございました!
32 :
nobodyさん :04/08/08 03:00 ID:F0zxfskV
PHPを書くときって借りてるサーバでテストできないですよね? 皆さんどうしてるんですか?
自分のPCで鯖作るとか、Eclipseでデバッグするとか。
34 :
nobodyさん :04/08/08 03:11 ID:F0zxfskV
Eclipse入れればテストできるのですか?
つか、なんで開発機にPHP入れないの? 鯖だってフリーのhttpdがいろいろあるのに。
36 :
nobodyさん :04/08/08 03:30 ID:F0zxfskV
これからはじめるので。
夏だね、夏過ぎる。
>>30 二重置換になってるぞw
winXPのローカル環境でmail関数を使ってメールを送れるかテストしたいんですが
"sendmail_from" not set in php.ini or custom "From:" header missing
と出て送れませんでした。
php.iniの[mail function]は
SMTP = localhost または SMTP = xx.xx.com(普段使ってるメールのSMTP)
sendmail_from =
[email protected] (普段使ってるメールアドレス)
で試しました。;は外してあります。Apacheも再起動しています。
telnetを試したところ、上記のメールアドレスとSMTPで正常に送信できました。
どこがダメなんでしょうか、誰か助けてください……
39 :
nobodyさん :04/08/08 13:04 ID:zYHZKtON
>>38 SMTP = xx.xx.comって中継を許可してんの?
ま、まさかねぇ・・・
SMTP = localhostって自分のPCでメールサーバーを動かしてるよね?
<win32/sendmail.h> #define W32_SM_SENDMAIL_FROM_NOT_SET19 <win32/sendmail.c> static char *ErrorMessages[] = {"\"sendmail_from\" not set in php.ini or custom \"From:\" header missing"}, // 19 /* Fall back to sendmail_from php.ini setting */ if (mailRPath && *mailRPath) { RPath = estrdup(mailRPath); } else if (INI_STR("sendmail_from")) { RPath = estrdup(INI_STR("sendmail_from")); } else { if (headers) { efree(headers); efree(headers_lc); } *error = W32_SM_SENDMAIL_FROM_NOT_SET; return FAILURE; } つーことは、sendmail_fromが設定されていないんでねぇの?
>>39 うう、たぶんそれです。
PHP関係ない部分でコケてたんですね…すいません。
正直なとこメールだのSMTPだの、よく知らないんで(PHP自体も、覚えたてでして)
エラー文とかをググって、出てきた方法を片っ端から試したんですが……
それ以前の問題ってことでしょうか。また調べてきます。
掲示板に1ページ目、2ページ目を作りたいのですが 皆さんどうしてます?
ヽ(`Д´)ノ
>>42 今のページに表示数を足したり引いたりしてまっしゅ。
軟式軟式。海いった?
>>42 必要ページ数 = ceil(記事数 / 1ページあたりの表示数)
計算はこんなところ。あとはrangeでも使ったりして。
47 :
nobodyさん :04/08/08 15:01 ID:zYHZKtON
ページの切り替えで何時も思うのは記事数を拾わないといけない点だよね。 ごっそりデータを読み込んでから拾うしかないのだろうか。 良い方法を見つけた人いないですか?。
49 :
nobodyさん :04/08/08 15:25 ID:zYHZKtON
>>48 ありません!。
投稿総数を保存しているのは当然の事だしなぁ。
カウンターにもっと高度なヒントが隠されているのでしょうが、
どんなヒントなのだろう。
私には思い付かないので教えてくださいm(_)m。
50 :
38 :04/08/08 15:48 ID:???
行き詰ったんで、もう一度質問お許しください。(忘れてましたけど、PHP4.3.4です)
mail関数などで調べると、どこのサイトを見ても、
php.iniの SMTP = xx.xx.xxx と sendmail_from =
[email protected] を自分の使ってるものにすれば、それで送れるようになる。
みたいに書いてあるんですが、勘違いなんでしょうか。それだけじゃダメなんですか?
指定先のSMTPサーバ動いていれば、それで問題ありません。
52 :
nobodyさん :04/08/08 16:23 ID:zYHZKtON
>>50 SMTP = localhost
smtp_port = 25
というのは、localhost:25でMTA(メールサーバー)が稼働している
事が前提であってMTAが無ければ当然メールは送信出来ません。
他は、
>>40 を参照
POSTの場合…$_POST['変数名'] GETの場合…$_GET['変数名'] これは普通の変数と何が違うんでつか?
安全面
55 :
nobodyさん :04/08/08 17:15 ID:mbHx5JiB
mbstring.internal_encoding って EUC-JP、Shift_jis、 どっちが一般的なんでしょう? Shift_jis で使うのってナンセンス??
上の質問と若干かぶるんですが、 mbstring.internal_encoding = euc-jp にするとメール送信フォームなんかのときに 再度、euc から shift_jisに変換する必要が出てくるんですよね?
あいうえお かきくけこ さしすせそ 仮に上のような複数行にまたがる文字列があったとして 「こ」を含む行全体(かきくけこ)のみを取得するには どうすれば良いのでしょうか? どうぞよろしくお願いします
59 :
55 :04/08/08 18:23 ID:???
あちゃ〜本当ですね。 shift_jis だと問題ありでしょうか?
>>60 >>内部コードはOSによる
(! ̄д ̄)えぇぇぇ
それはちょっとおかしいだろ。
そもそも本家で配布されているWin用バイナリは--enable-zend-multibyteしてるんだっけ?
--enable-zend-multibyte付でコンパイルされてなかったらSJISを内部コードに出来なかったと記憶しているが。
62 :
61 :04/08/08 18:35 ID:???
あ、スマソ。 スクリプトが--enable-zend-multibyteしていないとSJISは拙いんであって internal_encodingは問題ないのか。。。
基本的にはLinuxでもWinでも内部コードはEUCだったはずだし その方がいいと思うよ
>>45 いや、今年は行ってないな。周りから「色白すぎ」と言われる。
焼けても赤くなるだけのタイプ>俺
>>57 正規表現使うとか、改行で分割して判定して取得とか。
管理人にしかわからないものなんでしょうか?
68 :
nobodyさん :04/08/08 21:48 ID:Odqra96P
変数にあまり長い文字列を入れ、出力すると表示がおかしくなることってありますか?
>>68 いろいろ実験して誰でも再現できる現象を確認したらそれ持って又質問しに来い
>>57 $txt = <<<EOM
あいうえお
かきくけこ
さしすせそ
EOM;
$search = preg_quote('こ');
$txt = preg_grep("/$search/", explode("\n", $txt));
echo implode("\n", $txt);
$txt = <<<EOM あいうえお かきくけこ さしすせそ EOM;
$txt = <<<ERO いやん ばかぁん えっちぃ ERO;
ひさびささぶいぼたった
>>70 preg 系は文字コードが UTF-8 で u オプションを使用するときだけにした方がいい。
その例で、文字コードが EUC-JP の場合、「修学旅行」という文字が含まれていても引っかかる。
75 :
nobodyさん :04/08/08 23:22 ID:Odqra96P
変数がdata0からdata10まで作りました。 その変数をfor文を使って初期化したいです。 for($i=0; $i<10; $i++) $data$i = "abc"; これだと、エラーで動きません。 どこを修正したらいいでしょうか?
$data{$i}
for($i=0; $i<10; $i++) ${"data".$i} = "abc";
79 :
75 :04/08/08 23:32 ID:Odqra96P
使い忘れというか、変数名を変える予定だったので、てきとうにつけました。
>75は口調が小学生の息子に似てる
頑張れ75
82 :
78 :04/08/09 01:30 ID:???
何で俺スルーされてんの?
>>75 どーでも良いが、0から10まで作りたいなら
for ($i=0;$i<=10;$i++) じゃないのか?
>>78 なんでだろ?
<?php $name = "山田"; $_GET ["name"]; print $_GET; ?> 実行結果「Arrey」 $_GETの使い方教えてください・・・
86 :
84 :04/08/09 03:13 ID:???
ページが切り替わるとよく変数がカワップになるぽ
何がしたいのかわからん
○ o ○ ○ 「ママー夏過ぎるよ」 ○`「「「l \. V7 r‐、 ____`o ○ | |. >、,> // |O。゚-ト、. | | | .//| /(・) ∩ |o. | | | /\ | | |//| | | | | / | | ̄`l /\ |//| (・) \_| |─/ /く | / r、/`ーっ |// \ | / / | \/\/ `ー'" |/ ヽ__ // / | / mn____|___r──l__/ | / ヽ_______|__ノ────' ──''"
>>84 <?php
print 'GET:' . $_GET['name'] . '<br>' .
'<a href="'.$_SERVER['PHP_SELF'].'?name=山田">山田クリック</a><br>';
?>
<a href="?name=山田">name</a> <?=$_GET["name"];?> 軟式軟式。私も真っ白。
>>74 ついついpregしか使わない癖があってorz(perlから入ったからかなぁ、、、
ereg_replace_callbackみたいなのがあったら移りやすいのだけど…。
>>90 rawurlencodeをして渡したほうがいいのでは?
ブラウザによっては日本語をUTF-8に変換して取得しようとするから、
mb_convert_kana() って 変換可能文字列長制限とか、 そのた制限ありますかね? 〜だと全く変換されないとかっての $conv = mb_convert_kana($str, 'asHVc');
>>92 確かに。スマンカッタ。GETで直接日本語を渡す機会が殆ど無かったから忘れてた。
そういえばHDMLのFORM構文の初期値に日本語を入れる場合もurlencodeしてたなぁ。
初心者にはエンコ無い方が分かりやすいかもしれないからユルシテ。・゚・(ノ∀`)・゚・。
95 :
nobodyさん :04/08/09 11:46 ID:lYQyr6Nk
郵便番号をmysqlに入れて、検索できるphpスクリプトを 配布されているところって知らないかい?
知ってても君のような態度の人には教えてあげれない。
ていうかそんなの自分で作れよ まぁその前にSQLを全然知らないみたいだが
郵便番号の CVS データは癖があるので それを DB に落とし込むのは日本各地で車輪の最発明は無駄だよね。 あと、郵便番号は更新しないといけないし。 大学のデータとかもどこか SOAP や XML-RPC とかで提供しないかな。
車輪再発名ほど大変な作業ではない。
オブジェクト指向について質問です。 Class関連の使い方はだいたい分かるのですが、 実際に使っていきたいのですが、 どうもとっかかれなくて、書籍もJAVA関連になるので躊躇ぎみで、 こんなところから、とっかかればいいよ、などなど アドバイスを頂ければと思っています。 宜しくお願いします。
classを使うことがオブジェクト指向ではありません。 まずは言語とは無関係にオブジェクト指向が何かを学ぶことをお勧めします。
そんな100は構造化手法。 Class使えればオブジェクト指向と思ってる100君には 「オブジェクト脳のつくり方」でも読んでみるといいかも。
あとC++だけど 憂鬱なプログラマのためのオブジェクト〜も読んでみれ。・゚・(ノ∀`)・゚・。
104 :
nobodyさん :04/08/09 17:00 ID:GoEzAwXJ
お聞きしたい事があるのですが、 array_uniqueを使うと、配列から重複した値を削除しますよね。 もし、重複した値を残したければどう処理すればよいでしょうか? それ専用の命令はありますか??
何もしなければいいだけじゃん
<?php $array1 = array("1","2","3","3","4","4","5","6","7","8","8","9"); $array2 = array_unique( $array1 ); $array3 = array_diff_assoc( $array1, $array2 ); print_r( $array3 ); ?>
108 :
nobodyさん :04/08/09 18:06 ID:GoEzAwXJ
軟式PHPさん、 ありがとうございました。 array_diff_assocという関数があるのは始めて知りました・・・。
ってか、配列変数だけで網羅できないほどあるね。
110 :
nobodyさん :04/08/09 19:27 ID:w1W9HQho
PHP Version 4.3.4です。 clk(this,'res',15) (15は正の整数でいろいろ変わる) という文字列がたくさん含まれている文字列$contentsに対して、 preg_match_all("/,([0-9]+)/",$contents,$matches); とやると数字がとれるのですが、 preg_match_all("/',([0-9]+)/",$contents,$matches); や preg_match_all("/\',([0-9]+)/",$contents,$matches); とすると数字がとれません。なぜなのでしょうか?
夏だな
112 :
110 :04/08/09 20:28 ID:???
すいませんどなたか・・・
113 :
110 :04/08/09 20:34 ID:???
preg_match_all("/([0-9]+)\)/",$contents,$matches); でもひっかかりません。ということは、 なにか根本的な勘違いをしてるのでしょうか・・・?
114 :
nobodyさん :04/08/09 20:44 ID:1E04QFET
何言ってんのかよく分からん
115 :
110 :04/08/09 20:47 ID:???
すいません、どうも$contentsの中身がおかしいみたいです。でなおしてきますorz
116 :
nobodyさん :04/08/09 21:05 ID:lYQyr6Nk
php+mysql使って、 リスティング 個別ページ 検索機能 htmlテンプレート を作りたいが、どこからやればよいか・・・ 参考になる本・サイトはありますか?
1.Smarty 2.リスティング 3.検索 4.個別ページ 0.PHP
118 :
nobodyさん :04/08/09 21:13 ID:1E04QFET
漠然としすぎてよく分からん 機能だけ列挙したって意味がない 何が作りたいのかきちんと書け
出会い系だろ
file_get_contents関数で他サーバの内容をとりにいくとき、 UserAgentは「-」となっているみたい (確認しました)ですが、 これを任意の文字列に変える方法はありますでしょうか?
GDで作成した画像を保存したいのですがどうしたらいいでしょうか? 検索してみたんですがそのまま表示するだけの解説しか見つからなくて・・・ よろしくお願いします。
>>120 ini_setでPHPの設定を変更しれ。
ini_set("user_agent","hogehoge")
124 :
68 :04/08/09 22:28 ID:Wd+U0VKl
サンプル作ってみたので、アドバイスください。 コメントをこれ以上長くすると、表示がおかしくなってしまいます。 <?php // ファイルから読んでいくよ $fp = fopen("./test.txt","r"); for(;;){ // ファイルから一行読み込む $line = fgets($fp); if($line == null) break; list($ban,$com) = explode("<>", $line); // 読み込んだ行を出力する print "<H4>番号:$ban</H4>"; print "<P>コメント:$com</P>"; } fclose($fp); ?>
125 :
68 :04/08/09 22:31 ID:Wd+U0VKl
>>124 即興で書いてみた。
<?php
$fp = @fopen("./test.txt","r") or die("File open failed");
print("<dl>");
while( ($s = fgets($fp)) != null ){
list($ban,$com) = explode("<>",$s);
print("<dt>{$ban}</dt>");
print("<dd>{$com}</dd>");
}
print("</dl>");
fclose($fp);
?>
127 :
120 :04/08/09 22:52 ID:???
>>123 あー、なるほど、ありがとうございます。
128 :
nobodyさん :04/08/09 23:03 ID:uySv1+mC
129 :
68 :04/08/09 23:06 ID:Wd+U0VKl
>>129 どういう風に表示されるのか今ひとつわからない。
たぶん、テキスト表示に変わるのかなぁと思ってレス。
もしそれならIEのファイルタイプ自動判断の閾値を超えたのだと思う。
文書に対してタグの割合がある値より少なければテキスト、多ければHTMLと
表示するようになっている。(ちゃんと指定していれば別
要するにHTMLヘッダーをちゃんと書くべきだということ。
文字化けの場合もちゃんとMETAタグを書けば直るし?
>>129 1回のfgetsで行の最後まで読まないから、とか?そういう話?
それならば。
fgetsは行末まで読むとは限らない。
第2引数の指定と、読み込んだデータの最後が改行かどうかのチェックをやる。
って、これじゃなかったらスマソw
表示がおかしいじゃ意味わからんよな。 何がどうなのか説明もできないのか?
133 :
nobodyさん :04/08/10 01:22 ID:cuHg/9mk
色々調べましたが見つからなかったので、質問です。 例えば、グラビアアイドルのデータベース検索ページを作るとします。データベースはmysql4.0.20、PHPは4.3.7です。 やりたい事は、フォーム(form.html)からチェックボックスにチェックを入れてもらい、その結果をPHP(search.php)で表示する事です。 form.htmlのフォーム部分 <form action="search.php" method="get"> <!-- 年齢 --> <table> <tr> <td><input type="checkbox" name="age[]" value="19">10代</td> <td><input type="checkbox" name="age[]" value="20-24">20〜24歳</td> <td><input type="checkbox" name="age[]" value="25-29">25〜29歳</td> </tr> </table> <!-- バスト --> <table> <tr> <td><input type="checkbox" name="bust[]" value="79">〜79cm</td> <td><input type="checkbox" name="bust[]" value="80-89">80〜89cm</td> <td><input type="checkbox" name="bust[]" value="90">90cm〜</td> </tr> </table> <input type="submit" value="検索"> <input type="reset" value="リセット"> この結果をsearch.phpで表示させるにはどうすれば良いでしょうか? ちなみにsearch.phpはデータベース接続、動的データ取得は可能となっています。 ただ、現在はチェックボックスの検索機能が効かない為、全データが表示されてしまいます。 恐らく、チェックボックス『value="20-24"』がチェックされたら search.phpでsql文『SELECT * FROM MyDB WHERE age >=20 AND age <=24』が 実行されれば良いのではないかと思うんですが、そのやり方をどなたか教えて下さいませ・・・。
>>133 ・・・。夏だね。
switch ($_GET['age']) {
case "19": $sql="age < 20";break;
case "20-24" : $sql="age >=20 and age<=24";break
case "25-29" : $sql="age>=25 and age<=29";break;
}
$result=mysql_query("select * fom MyDB where".$sql) or die;
めちゃくちゃ単純に書いてみた。(これだと問題ありすぎなのはわかってるけどツッコまないで>エロイ人)
これ以上は自分で考えて。
考えられないなら、オマエには向いていないから諦めたほうが良いと思う。
136 :
133 :04/08/10 02:17 ID:???
>>134 早速のお答え、ありがとうございます。
なるほど、caseを使うやり方ですか・・・。
私はてっきり、if〜文で作るのかと思ってました。
しかし難しいですね。なんかアナタのおっしゃるとおり、諦めかけてます・・・
138 :
133 :04/08/10 02:35 ID:???
>>137 仲間内の中では自分が一番知ってるんですよw
いきなり専門外のPHPによるデータベース検索を作らなくてはならなくなったので、
このように四苦八苦している訳です。
perlのcgiみたく、フリーのサンプルスクリプトが全然無いので困ってしまいます。
「PHPによるWebアプリケーションスーパーサンプル」って本も買ったんですが、
私のやりたいようなサンプルがありませんでした。
ネット検索してやっとPHPサンプル見つけても、大体が掲示板とかなんですよね。
まだまだ先は長そうです・・・。
>>136 if ($_GET['age'] == "19") {
$sql="age < 20";break;
}elseif($_GET['age'] == "20-24") {
$sql="age >=20 and age<=24";break
}elseif($_GET['age'] == "25-29") {
$sql="age>=25 and age<=29";break;
}
$result=mysql_query("select * fom MyDB where".$sql) or die;
どこが分からないか分からないけど、
サンプルイジルヨリMySQL+PHPの入門書をサラッとやったほうが、
結構なんとかなると思うよ。がんがれ。
あっ break;取り忘れた
141 :
134 :04/08/10 02:56 ID:???
>>139 誤字までコピペしなくても・・・
fomって何だよw
・・・あ、俺だ
>>138 専門外って何だよ
ってか、ifを知っていて何でこの処理がわからないんだ??
142 :
133 :04/08/10 03:22 ID:???
>>139 そうそう!最初はそのようにif〜文で記述するんだと思ってた訳です。
確かに134氏の記述はシンプルで良いと思いましたが。
実はMySQL+PHPの入門書はスペンサー・K・OGAWA著の本を持っています。
それにも欲しいサンプルが無かくてそのままにしていたので、
これを機に読み返してみようと思います。
>>134 =141
自分はプログラマーでは無い、という意味の専門外という意味です。
コードがシンプルで分かりやすいので、アナタの提案してくれた
caseを使った記述を参考にやってみようと思います。
色々ありがとうございました。
スレ汚し失礼しました。
>>138 Perlで自分の使いたいようなサンプルがあるなら、
それみて(パクって)コーディングした方が早いよ。
caseのデフォルトで何も値が取れなかったときに
$sql="1=1"とでもしとくのが吉。まあwhere条件外すのが正解だけど。
それよかその場合は検索を弾くのが正解かな。仕様がわからんけど
おはよう眠いデス。
おはようす
フォームで入力された文字列の大文字部分を全て小文字に置換したいんですが、今は $data = ereg_replace("A", "a", $data); $data = ereg_replace("B", "b", $data); ↓ $data = ereg_replace("Z", "z", $data); という(アナログ的な?)方法を使っています。 もっと短くて済む表現はないでしょうか。 本や過去ログ見たり検索しても全然見つからなくて・・・。 初心者な質問ですみません。
$data = ereg_replace("[A-Z]", "[a-z]", $data);
150 :
nobodyさん :04/08/10 12:08 ID:5BcnoGGN
GD2ってgifに対応してないんですよね? 動的にグラフをつくりたいのですが、なんとかgifを生成できないものですか?
151 :
146 :04/08/10 12:26 ID:???
回答ありです。
>>147 それやったんですが
$data = 'ABC';
とやると
[a-z][a-z][a-z]と返ってきてたんですよ。
>>149 てっきりereg_replaceだと思い込んでました。
ググっても正規表現関係しか出てこなかったんだけど何かいい検索法とかあるんでしょか。
ググるのもいいけど、とりあえずマニュアル見よう。
ググってだめならヤフーは?
色々と流出する。
>>150 imagegif使えばいいんじゃないの?
>>150 ライセンス切れたから、そろそろimagegifが使えるようになるかも。
もう使える??
ライセンスの問題でgifは使えなくなったんだ。
最新版ではgifの書き込みもサポートされてる
1.6ぐらいから使えなくなったってどっかに書いてあったなぁ。 2.0から普通に使えるようになったんじゃないの?
gd 2.0.28からGIFサポート復活
pngあるんだからいまさらgifを使うメリットないからな。 gifにICCプロフィールが埋め込み出来るってのなら別だけど。
透過もPNGは出来るしなぁ。GIFって広まってから 「よっしゃ、広まったところで金取るかーー」っていうのが丸見えで萎え。
あの時期にgif使ってたけど全部jpgに変えて今でもgifって使わないようになったよな。 pngも24にすれば屁たれIEでもなんとか透過できるし。
携帯電話って GIF じゃないとダメなやつってあったっけ?
166 :
146 :04/08/10 16:29 ID:???
>>156 どもども。
検索じゃなくて目次から探すんですね。
なかなか難しそうだけどがんばってみますv
亀レスすまそ。
>>166 chm版なら全文検索があるからそれが使える
コナミ減収オメ
ドコモがPNG対応してくれれば、俺も完全にPNGに移行するんだがなぁ。 対応する気がないみたいだから、まぁ当分はgifかな・・・。 つうか、何故ドコモはPNGに対応しないんだべ。技術不足?
>>165 >>169 imodeの昔の端末はGIFでないとダメ
逆にJ-skyの昔の端末はPNGのみ
仕方が無いのでJPEGで吐き出してる
これも一部端末で見られないけど、
最近のはカメラ対応の関係で見られたりするんで
172 :
68 :04/08/10 20:55 ID:???
>>126 やっとできましたよ。
fgets($fp)のところをfgets($fp,4096)にしてできました。
どうもすみませんでした。
>>172 根本的な対策になっていないような気がするぞ。おい。
fgets使わなくても他の関数でいけるような
phpはじめたいんだけど、一から教えてくれる人いませんかー 全然わかりません。 ゲームの攻略サイト作りたいんだけど、php必要ない? どこにphpを使ったらいいのかわからんのよ
>>175 ヘッダーとかフッターとか、同じリンクボタンで複数のページに登場するときとか
phpでやると楽ですよ。
metaも全部のページに書かないでもいいので楽。
>>179 それがあたりまえになるともっと楽したくなるさ
181 :
131 :04/08/11 00:04 ID:???
やんけ
183 :
nobodyさん :04/08/11 00:41 ID:2sgdWAV8
DOM勉強してるんですが、 ファイルに出力するときって何を使えばいいのでしょうか? 普通に一つずつテキストとして出力するんじゃ駄目ですよね。 どうもDOM関係の資料が少なくて困ってます。 ヒントでもいいので教えてください。
>>184 わかりやすい図入りでよくわかりました。
186 :
165 :04/08/11 11:36 ID:???
>169-171 どもです。 GIF でないと表示できない端末があるっつーことは、GD の GIF 対応も うれしいかな。端末によって表示できないのは可哀想だし。
質問です。
require_onceで他サーバにあるライブラリ等を読込事は出来ないのでしょうか?
ini_set('include_path','
http://****** ')
で変更しても上手く出来ないです。
ご教授下さいます様お願い致します。
>>187 できるのかどうかは知らんが、できたら恐ろしい。
夏だ、夏過ぎる。
>>188 そうですよね…セキュリティの問題等もあるでしょうから、
出来なくて当然なのですよね。
有難う御座いました。
191 :
nobodyさん :04/08/11 12:04 ID:m7sM3Cg8
>>187 実行形式である限り結果しか読み込めない
読み込めたら面白いが問題山積み
今日は更に暑くなりそうだね
phpsとかなら読み込めるけどね
いやできるだろ。 ライブラリを置いている鯖がtext/plainとして吐いてくれればの話だが。
194 :
193 :04/08/11 12:35 ID:???
あ、text/plainつうより、ソーススプリクトをそのまま吐いてくれればってことね。
(つω;)
>>187 SOAP や XML-RPC を検討したら。
できるわけないじゃん
199 :
187 :04/08/11 14:25 ID:???
親切に皆さん有難う御座います。 行いたかったのはエラーの関数等を読み込んで 結果を別のPHPで行いたかったのです。 しかしそれが出来たら怖いですよね… 勉強が足りないです。ありがとう御座いました。
共通関数作ってライブラリ化してそれを読み込むってんなら常套手段だが 他サーバーってのがよく分からんのだが。
たぶん、エラー処理用のスクリプトがあって、それをrequireしたかったと 言ってるのだろうから、素直にコピーしたら良いのでは?
そだよね。なんで他サーバー・・・?(´・ω・`)
インターネットと仮定しているからあれだけどLAN等で複数のサーバーが あった場合なら出来そうな気がするのですが、それは先読みし過ぎだろうか^^; LANで接続されている環境であれば共有したい事もあるだろうしね
204 :
nobodyさん :04/08/11 15:02 ID:zEQw5zg8
PEARのMail_mimeDecodeをつかって、メールから本文と添付ファイル(画像)を 引き出してます。 が、あぽーのメーラーは、メールに画像を添付した場合、multipartのひとつ のpartがmultipartになってます。 multipartのネスティング状態です。 その中に、プレビュー用のパートと画像本体のパートに別れているようです。 $decode1 = new Mail_mimeDecode( メール全体 ); でPart1/Part2/Part3とデコードできるのですが、 Part3がmultipartだったばあい、どうやってでこーどすればいいのでしょう? $decode3 = new Mail_mimeDecode( Part3のbody ); とやっても、mime decodeしてくれません。 よろしくおながいします。
NASのようにしたいのだろうか。
>>203 その場合だってHTTP使わんでもいいと思うんだけど・・・NFSとかさ
Googleの検索文字の分割みたいなのをやりたいのです。 と、いっても全文検索みたいな高度なものではないです。 ひとまず実現したいのは・・・ 1. スペース区切りの場合はスペースで単語を分割 2. ダブルクォーテーションでくくられている場合は、その間のスペースは文字扱い 1だけなら explode() を使えばいいんですが、 2も実現するためにはどうしたらいいでしょうか? 例) あああ いいい ううう → "あああ" と "いいい" と "ううう" に分割 あああ "いいい ううう" えええ → "あああ" と "いいい ううう" と "えええ" に分割 スペースもダブルクォーテーション括りも複数可で。
まず、""で分割して、次にスペースで分割すれば
209 :
nobodyさん :04/08/11 17:39 ID:Ad++av00
PHP初心者で、分からない事があるので質問させてください。 よろしくお願いします。 $fp = fopen("xx.txt","a+"); fputs($fp,"あああああ"); でテキストファイルに何か文字列を書き込む場合、モードが a+になってるのでファイルが無かったら自動で作成するはずですよね? 事実、ローカルで試したら作成してくれたのですが、Web上で試そうと 思ってPHPが実行できる無料スペースにUPしたところ、エラーが出て書き込め ませんでした。 テキストファイルを先に自分で用意しておくと書き込みが成功しました。 なぜ、ローカルではうまくいってWeb上ではうまくいかないのでしょうか? サーバーの仕様とか、そういう問題なのでしょうか? こんな質問で申し訳ありませんが分からないので教えてください。
>>209 エラー内容を書く!
多分 パーミッション だと思うけど。
211 :
nobodyさん :04/08/11 17:44 ID:J4D7ZMSz
GDを使ってサムネイルを作った時に jpegにICCプロファイルの埋め込みって出来ないもんですかね。 webで見ると全然色が違うので。 分かる人居ませんか。
PHP初心者とあそぼう
>>208 ありがとうございます。
例)
あああ "いいい えええ ししし" ううう えええ "search text"
Array
(
[0] => あああ
[1] => いいい えええ ししし
[2] => ううう えええ
[3] => search text
)
なかなかいい感じなんですが、
最初に ダブルクォート で explode() しちゃうと、
[1] と [2] の区別がつかなくなっちゃいますね・・・。
うんこソースどぞー $str = 'あああ "いいい えええ ししし" ううう えええ "search text"'; $str2 = explode(" ",$str); $count = count($str2); unset($str); $flag = 0; $j = 0; for ($i=0; $i<$count; $i++) { if( mb_ereg("(^\")",$str2[$i]) ){ $flag = 1; $str[$j] = $str2[$i]; } else if ( $flag==1 && !mb_ereg("(\"$)",$str2[$i]) ) $str[$j].=" ".$str2[$i]; else if ( $flag==1 && mb_ereg("(\"$)",$str2[$i]) ) { $str[$j].=" ".$str2[$i]; $j++; $flag=0; } else { $str[$j] = $str2[$i]; $j++; } } foreach($str as $key => $value) echo "\$str[".$key."] = ".$value."<br>";
ウンコー __$1__ がとてもいけてない。 $text = 'あああ "いいい えええ ししし" ううう えええ "search text"'; $text = preg_replace("/\"([^\"]+)\"/", "\"__$1__\"", $text); $quote = explode("\"", $text); $list = array(); foreach ($quote as $item) { if (preg_match("/^__(.+)__$/", $item, $arr) != 0) { $list = array_merge($list, $arr[1]); } else { $list = array_merge($list, explode(" ", $item)); } } for ($i = 0 ; $i < count($list) ; $i++) { $list[$i] = trim($list[$i]); if (strlen($list[$i]) == 0) { array_splice($list, $i, 1); } } print_r($list);
リモートファイルの最終更新日を拾得するには allow_url_fopenを有効にするしかないのでしょうか?
$str = 'aaa "iii eee i\"iii\"kkk" uuu o\"oo "search text"'; $words = array(); if( preg_match_all('/("[^"]*(?:\\"[^"]*)*?"|\S+)(?:\s|$)/',$str,$m) ) { if( is_array($m[1]) ) { foreach($m[1] as $tmp) { $tmp = preg_replace('/^"(.*)"$/','$1',$tmp); $tmp = preg_replace('/\\\\"/','"',$tmp); array_push($words,$tmp); } } } print_r($words); バグ入ってないかな・・・確認求む 入れ子のケースは簡単そうでとても難しい 文字の出てくる順序を気にして考えるとよいよ
218 :
nobodyさん :04/08/11 23:33 ID:UR02D5bF
変数名$fileが20**00のときにこの条件を実行したいのですが、 これだとうまくいきません。 if($file == 20..00) どのように変更したら良いのでしょうか?
性器表現
"U" 性器表現むずい
if(ereg("20[0-9]{2}00",$file)){echo "U";}
functionの中でfunction以外のところで定義した変数は使えないんでしょうか?
使わない方が身のためです
>>222 どもー
ImageMagickはICCが埋め込みできるんですか?
ってググってみますー
ありがとねん!
227 :
nobodyさん :04/08/12 08:44 ID:aDJWVDD6
>>223 localとglobal...プログラミングのアロハでつね
ページ切り替えって headder "Location:index.html"; だっけ?
/public_html/fairy/page/item/touroku.phpから /public_html/fairy/data/clist.cgiまで飛ぶのに .../data/clist.cgiじゃだめなのか?
多分そんな感じ。
231 :
229 :04/08/12 10:07 ID:???
$clist = '.../data/clist.cgi'; にしたのに、 Warning: file(): Unable to access .../data/clist.cgi in /virtual/drk/public_html/fairy/page/item/touroku.php on line 177 だって;; だめだ_| ̄|○
普通こうじゃね? ../../data/clist.cgi
233 :
229 :04/08/12 10:11 ID:???
>>232 おお、あり!
どうやら.../はCGIしか無理だったようだ・・・
$time = data("Ymd");
にするとエラー出るぽウワァァァァァン
Call to undefined function: data()
dateじゃね?
パスの指定はCGI云々関係ないし。
236 :
229 :04/08/12 10:18 ID:???
>>234 スマ、あほな間違いだった&ありがと
間違え探し
$all = file($slist);
$yoyaku = "";
$count = count($all);
$put = implode(",", array($id,$item,$syurui,$str,$dex,$def,$luck,$taikyu,$plusa,$plusb.$plusc,$kazu,$memu,$comment,$time,$yoyaku));
$fp = fopen($all,"w");
flock ($fp,LOCK_EX);
rewind ($fp);
fputs($fp,"$put\n");
for ($i=0;$i<=$count ; $i++){
fputs($fp, $all[$i]);
}
flock ($fp,LOCK_UN);
fclose($fp);
データが書き込まれないぽ
間違え探しワロタ。素直になれよ・・な?初心者君。
238 :
229 :04/08/12 10:32 ID:???
素直になったぽ! 間違い見つかったので糸冬キボン
$allってカウントした数字だよね? $fp = fopen($all,"w"); $fp = fopen($slist,"w");じゃないの?
PHPで並列処理をさせる為に 特に気を付けなければならない点はなんしょうか?
242 :
nobodyさん :04/08/12 11:28 ID:I9M6Mw7p
mysql_fetch_arrayで進んだポインタを最初に戻すのはどうやるの?
軟式PHPって もしかして あのひと?
245 :
242 :04/08/12 11:51 ID:I9M6Mw7p
>>243 うーんわからん
mysql_field_seekのことか?
246 :
nobodyさん :04/08/12 11:54 ID:a319dClm
リンクの参照元って $_ENV['HTTP_REFERER'] で宜しいのでしたっけか?
$yoyakuの中身が空っぽなのに if ($yoyaku != ""){ $color = '#cccccc'; }else{ $color = '#ffffff'; } で、$colorが#ccccccになります。なぜでしょうか
248 :
247 :04/08/12 12:13 ID:???
よく見ると半角スペースが入っています。
>>248 だったら半角スペースを入らないようにすればいいのでは??
250 :
nobodyさん :04/08/12 12:26 ID:aDJWVDD6
trimしたら?
251 :
247 :04/08/12 12:31 ID:???
>>249 といいますと?
>>250 初心者なんで使い方がわかりません・・・
もしよければ教えていただけると有難いです。
初心者なので……とか言ってないで頼むからマニュアルを検索してくれよ
初心者なのでではなく、調べる気がない怠惰で救いようがない人間の間違いだろう。 検索すれば一瞬で分かることすらやろうとしない。
>といいますと? って言い方がマジ腹立つわw
>>初心者なのでではなく、調べる気がない怠惰で救いようがない人間の間違いだろう。 これ良いな。俺も使わせてもらおう。的射すぎw
【PHP】質問スレッドpart21【といいますと?】 次スレはこれにケテーイ
if ( if($syurui2!=""){$syurui==$syurui2}){ みたいにifの中にif入れられないのかな〜 検索システム勉強中なんだが・・・
259 :
242 :04/08/12 13:27 ID:???
なんとか解決
if(if2($syurui2!=""){}else{}){$syurui==$syurui2}
>257 したいことは if( ($syurui2!="") && ($syurui==$syurui2) ) なんじゃないかな、と予想してみる
>>260 if2とか初めて聞いたよママン
>>261 検索の時、検索内容が空白ならその項目を除外して検索したい。
変数がどうゆう内容なのかわかんないし意味不明
$joukenA $joukenB $joukenC があるとする。 list (jA,jB,jC)(ry を読み込む $joukenAとjAを比較して同じ、joukenBとjBを比較して同じ、joukenCとjCを比較して同じだったらTRUE &joukenAが空白ならjoukenA以外を比較して同じならTRUEとやりたいんだ
265 :
264 :04/08/12 13:42 ID:???
すまん、&joukenA→$joukenAな
266 :
nobodyさん :04/08/12 14:02 ID:aDJWVDD6
(($joukenA == '') || ($joukenA == $jA)) && ....
>>264 list($JA,$JB,$JC);
if($JA != $jyoukenA){continue;}
if($JB != $jyoukenB){continue;}
if($JC != $jyoukenC){continue;}
else{TRUE;}
こんな感じかなぁ?
270 :
nobodyさん :04/08/12 15:14 ID:TRKJBK11
PHP上のフォームからサーバのcronを編集するには、どうすれば良いでしょうか?
適切な権限を設定するか、root権限でsビットを設定したプログラムを使うか、 外部プログラムとしてsudo等を使うか、 特定の場所に置いたファイルをcronで定期的に確認させて変更するか、 方法はいくらでもあるが本当に一つも思いつかなかったのだろうか?
PHPを使ってサーバ上にupしたファイルを任意の大きさに分割することって出来ますでしょうか? 何卒宜しくお願いします。
>>272 昔、分割ファイル+結合するexeを吐き出すプログラム作った時は
ファイルの読み込み位置をずらしながら一定の量を取得しつつ分割していったよ。
一気に読み込んで分割すると何かOSの挙動がメモリ不足になったり変になった。
PHPで作る場合もそんな感じで分割読み込みしていったほうがいいと思う。
276 :
272 :04/08/12 16:13 ID:???
>273さん やっぱり出来ますよね。 freadあたりを使えばいいんでせうかね。
278 :
270 :04/08/12 17:57 ID:TRKJBK11
>>271 レスありがとうございます。
とりあえず、cron.confというファイルを作って
<?php
system("/usr/bin/crontab cron.conf");
?>
としてみました。エラーは出てこず、通常終了(0)でした。
しかし、crontab -l としても結果が反映されていませんでした。
コンソールから crontab cron.conf とすると反映されます。
system()関数自体は使えていますし、パスもあっていると思います。
なにがいけないのかサッパリorz
cron.confの中身は
10 * * * * w
です。
crontabを実行しているユーザは誰だ
280 :
270 :04/08/12 18:07 ID:TRKJBK11
>>279 FTPのログインID(SSH)と同じユーザです。
281 :
nobodyさん :04/08/12 18:21 ID:TRKJBK11
コンソールから $php cron.php とやると反映されていました…
281は本当に理解しているのだろうか・・・
実行ユーザーがApacheになってるんじゃないの?
PHPで掲示板作ってますが、串制限ってどうやってやったらいいですか?
ここの皆さんは質問に親切に答えてくれるのでとってもいいですね 僕もがんばってPHP勉強しようと思います。 分からないところがあればまた聞くかもしれませんけど、その前に なるべく自分で調べますので、その時はよろしくお願いします。 ではでは・・・。
>>284 ホストを逆引きしてみるとか・・・俺も詳しくは分からんが
287 :
nobodyさん :04/08/12 21:52 ID:oR5u/X7X
クラスを作るときに $AB = new ABC; と $AB =& new ABC; というのがあるんですけど違いはなんですか?
>>284 プロキシを使ってる場合は、プロキシサーバーから
「俺はプロキシだよ」ってな情報を送ってくるから
それを取得する。
ただ、そういう情報を送ってこないサーバーもあるから、
そういう場合はIP単位やホスト単位で個別に弾くしかない(いわゆる匿名串)
俺が実際使ってるコードを載せておく。場合によってはプロキシじゃない
ものを弾いちゃうこともあるので、あんまりきつく制限しない方がいいよ。
詳しくはGoogleとかで検索してね。結構出てくるよ。
//------------------------------------- // プロキシからアクセスしているか //------------------------------------- function is_proxy_access(){ //サーバー変数のキー $server_keys = ""; foreach ($_SERVER as $key => $value) $server_keys .= $key.","; //プロキシと思われる変数 $proxy_keys = "HTTP_CACHE_INFO|" . "HTTP_CLIENT_IP|" . "HTTP_FORWARDED|" . "HTTP_PROXY_CONNECTION|" . "HTTP_SP_HOST|" //. "HTTP_TE|" . "HTTP_VIA|" . "HTTP_X_FORWARDED_FOR|" . "HTTP_X_LOCKING|" . "HTTP_XROXY_CONNECTION|" . "HTTP_XONNECTION";
//判定 if (preg_match("/($proxy_keys)/i", $server_keys)) return TRUE; //UserAgentでの判定 if (preg_match("/(via|proxy|anonym)/i", @$_SERVER["HTTP_USER_AGENT"])) return TRUE; //リモートホストでの判定 if (preg_match("/(anonym|cache|delegate|^dns|keeper|^ns.|proxy|^www)/i", @$_SERVER["REMOTE_HOST"])) return TRUE; //規制しない return FALSE; } 改行が大杉とか言うエラーが出るから分割した。 もうね、アホか馬鹿かと
291 :
nobodyさん :04/08/12 23:42 ID:K+6vy8Mq
PHPに連続してファイルにアクセスするプログラムを組んで、ファイルがなくなった時点で処理を終了し、 続きのHTMLを表示するプログラムを作りたいのですが、終了させる方法がわかりません。 〜〜 <?php while(1){ $fp = fopen("$logfile","r"); if($fp == false) break; } ?> 〜〜 だとWarningメッセージが表示されます。Warningメッセージを表示させないで終了させる方法ってありあすか?
292 :
291 :04/08/12 23:44 ID:K+6vy8Mq
すいません@$fpでできました。
Perl?
どうでも良いことかもしれませんが、PHPカンファレンスの詳細ってどこかに書いてあるページ 知りませんか? PHPユーザ会のページにも見当たらないし・・・。どこで登録とかしたらいいんだろう。。 本当に開催するんですよね?
>>217 おおお。なんかうまくいってますね。
preg_match_all のところの正規表現が理解できないので、
調べてから使います。
ありがとうございます。
>>289 $server_keysには何か入れるのですか?
初めて書き込み致します。 大変初歩的な事とは思いますが、検索してもなかなか見つからなかったので こちらで質問させて頂きます。 場違いな質問かもしれませんが、ご教授して頂けると有難いです。 $_SERVER['HTTP_USER_AGENT'] を使ってアクセスしてきたOSやブラウザを調べ、 それに対応するcssをlinkさせるスクリプトを書いているのですが・・ $_SERVER['HTTP_USER_AGENT'] の返り値で、macのOS9がどのように表示されているのかが分からないのです。 OSXのIEとOS9のIEでは表示が違ってきてしまうようなので、OS9もちゃんと識別をしたいのです。 分かりにくい質問かもしれませんが、宜しくお願い致しますm(__)m
>>299 本当に助かりました!
有難うございますm(__)m
アクセス解析 os9
HTTP_USER_AGENT os9
とかでググってました(´・ω・`)
ブックマーク入れておきますです。
本当に感謝ですm(__)m
この間4.3.8にしたから様子見
4.3.9 も出るね。
304 :
nobodyさん :04/08/13 16:24 ID:MYpDNZIf
$subject = 'あいうえお':
$message = 'かきくけこ';
$to = 'テストさん <
[email protected] >';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=EUC-JP\r\n";
$headers .= "From: "送信者 <
[email protected] >\r\n";
mail($to,$subject,$message,$headers);
これをEUC-JPで作って、送信したところ、Windows Outlookではちゃんと日本語が反映されていました。
しかしBeckyで受信したところ、タイトルとFromの部分が文字化けを起こしていました。
そこで、Shift_jisで作ったところ、特定の受信メールアドレスでは文字化けし、それ以外はちゃんと受信できました。
いずれもタイトルとFromの日本語部分のみです。
なにが原因でしょうか?
文字エンコード
メールはiso-2022-jpで送るのが基本 mb_encode_mimeheaderをつかう iモードはShift_JISで送っても平気? content-transfer-encoding: 8bit でいけるのかな
変数にいくつか入れる場合って $A[]=("1","2","3"); であってるよな?
array使えよ
>>309 THX、arrayワスレテタよ
これって全角でもいけるのか?
$テスト = "9999"; とか
>310 ってかマニュアル読め
試せば
今まで何をやってきた人だったら 変数名に全角使えるとか発想できるんだろう
漢字ベーシックって変数名に漢字が使えなかったっけ? 骨董品だから知らないか・・・
$Sに90を代入 $Jに$Sを代入して print "$($J) <BR>"; とやってみたが、出力されるのは「$S」です。 なぜでしょうか?
>>313 ええとね、ぱそこんが全角にみせてるだけなんだよ。
VBも変数に日本語使えるな
$S = "90"; $J = "$S"; print $($J);
$S = "90";
$J = "$S";
数字と変数を""で囲む意図は?
>>311
$S = array("a","i","u","e","o"); $J = "S"; print &$($J)[0]." <BR>"; 実際はこうやってます↑
つまり$とSを繋げたいって意味か? 単に$S[0]を出力したいだけって意味か?
単に$S[0]を出力したい>324
$J = $S[0]."<br>"; print ("$j"); とか echo $S[0]."<br>"; でいいかな
echo ${$J."[0]"}
すみません。教えて頂きたい事が。 php4.3.8でImageGifは使えるのでしょうか? よろしくです。
$J053 = array("0","0","0","20","25","30","35","40","45","50","60"); $J054 = array("0","0","0","0","15","25","30","35","40","45","50"); $J055 = array("0","0","0","0","0","10","15","20","25","35","45"); $J056 = array("0","0","0","0","0","0","10","15","20","30","40"); $J057 = array("0","0","0","0","0","0","0","10","15","25","35"); $S6 = array("$J050","$J051","$J052","$J053","$J054","$J055","$J056","$J057","$J058","$J059","$J060"); $on = $S6 print $on[5]."[3]"; 上記のようにやったのですが 出力結果が「0」ではなく「Array[3]」となるんですが なぜでしょうか?
その場合は普通に echo $on[5][3];でいい
332 :
329 :04/08/13 20:29 ID:???
なぜか「a」と出力されるんだが・・・
333 :
328 :04/08/13 20:46 ID:???
>>330 うぉーありがと!
もう少しですね。今年の6月で日本も切れたのかな?
気長にまちます!
どもでした。
>>329 基礎中の基礎が理解できてないと思われ
悪いこと言わんから入門書か何か一冊買いなさい
336 :
nobodyさん :04/08/13 21:17 ID:iU64GMXW
Yahoo!のように、PHPで構築されているにも関わらず 拡張子「.php」のファイルが一切見られないサイトは、 どのようにしてファイル内にPHPが記述されているのか否かを判別させているのでしょうか??
.htaccessで拡張子の指定をすることは出来るけど。 AddType application/x-httpd-php .php .html .htm AddType application/x-httpd-php-source .phps
質問です。 <html> 省略 <?php処理1?> 省略 </html> <?php処理2?> 処理2が重たい&出力に関係ないので 先に処理1だけ出力させたいのですが、どのような方法があるでしょうか?
>>338 言ってる意味がわからんが、必要な時に呼び出せばいいんでないのかな?
<?php
function 処理1() {
}
function 処理2() {
}
?>
<html>
<?php 処理1(); ?>
</html>
<?php 処理2(); ?>
内容的には変わらないけど。
>>287 クラスをインスタンス化するか
インスタンス化しないかの違いじゃないの?
>>339 有難う御座います。
解り辛くてすみません。
そういう意味ではなく、
</html>までのバッファを先に出力して処理2に移りたいという意味です。
>>341 表示と同時にワンアクションで処理を実行したいなら無理じゃないかな?
ob_flash
>>343 やはりflashですか。
それが幾らマニュアル読んでもさっぱりなんです。
どの様に記述すればいいのでしょうか?
345 :
344 :04/08/13 22:28 ID:???
flush()ですたOTL
文頭に ob_implicit_flush(1); while (ob_get_level()) ob_end_flush(); 書けば、逐次表示されます でもこれ、 mb_http_output('SJIS'); ob_start('mb_output_handler'); と併用するとうまくいかないんだよなー エロイ人教えて
348 :
344 :04/08/13 22:37 ID:???
>>347 たった2行でできますたOTL
ネ申でつ。
以後覚えておきます。
ありがとうでした。
349 :
294 :04/08/13 23:48 ID:???
<?php <html><head></head><body> $opendir = dir("."); $i = 0; while (($ent = $opendir->read()) != FALSE) { if (is_dir($ent) != FALSE) {//ディレクトリのみ $i++; $dirname[$i] = $ent; echo '<a href="aaa.php?page='.$ent.'">'.$ent."</a><br>\n"; } } if ($page == $dirname[1]) { echo "ああああああ"; } echo "</body></html>"; ?> こういう風にしているんですが、$dirname[1]に当たるリンクを押しても ああああああの文字列が表示されないんですが、いったい どこが間違ってるんでしょうか・・・
>>350 print "_GET['page'] : ".$_GET['page']."; page : ".$page; を仕込んで
表示されるかどうか試してみ
readdir() は読み込む順番がランダムなので、多分それが原因。
353 :
nobodyさん :04/08/14 03:32 ID:RcWJyX8g
えっと。 function abcd($1,$2,$3) { などで、この例えば$2に値が入っていない(入れ忘れてしまった) 場合には、phpがエラーを出すのですが、 この$2に値が入っているか居ないかを調べるにはどの関数を使えばいいでしょうか? defined かなと思ってやってみたのですが、うまくいかなくて。 よろしくお願いします。 (使い方は $2に値が無い場合(空)に予め用意したデフォルト値を代入?したいのです。ifとかつかってですが。)
> $2に値が無い場合(空)に予め用意したデフォルト値を代入?したいのです これさえ満足させればいいなら function abcd($1,$2='でふぉると',$3) でいいんじゃないかい?
関数のデフォ値設定は 右に詰めなきゃいけないんじゃなかったっけ? その場しのぎでいいなら、全部にデフォ値設定かなぁ。
>>354 さん
>>355 さん 早速ありがとー
今からやってみます!
結果をまた書き込みにきます。
どもでした。
357 :
353 :04/08/14 05:13 ID:???
できました!
function abcd($1,$2="hoge",$3="moge") {
です。
デフォルト値を入れるのなら右側にしないとだめでした。
>>354 さん
>>355 さんありがとうさんでした〜
ifとか使ってごにょごにょしないとだめかなと思ってたので大喜びですw
>>353 の方と少しかぶります。
関数の引数の初期値にグローバル変数を定義することはできますか?
具体的には、次のようなことがしたいのです。
---------------------------------------
1 $variable = "global variable";
2
3 function test($var="$variable")
4 {
5 print $var;
6 }
7
8 test();
---------------------------------------
このようなスクリプトを書くと、以下のようなエラーになってしまいます。
Parse error: parse error, unexpected '\"' in index.php on line 3
対処法がありましたら、教えてください。
360 :
350 :04/08/14 12:13 ID:???
非常に助かりました。GETで無事取得できました。 4時間ぐらい悩んでいたのが嘘のようです。 本当にどうも有り難う御座いました。
361 :
nobodyさん :04/08/14 13:08 ID:go/x2Owu
>>358 頭から水をかぶって、頭を冷やせば見えてくるよ
362 :
358 :04/08/14 13:35 ID:???
>>359 ,361
どうもありがとう。関数の引数のデフォルト値は、変数ではだめなのですね。
違う方法でやってみようと思います。
>>362 違う方法も何も、引数のデフォルト値に変数を利用するという発想自体がそもそもおかしい。
PHPのバージョンは5.0.1です。 <son> <taro></taro> <jiro></jiro> <sab></sab> <white></white> </son> 上のようなXML文書を、 simplexml_load_fileで読み込んで、下のような形式で子ノードの一覧を出力したい と思っています。 son jiro sab white その場合、どうすればいいのでしょうか?
son jiro : ではなく、 taro jiro : でした、すいません。
せっかく PHP5 やってんなら SimpleXML 使ったら? ドキュメントがまだ十分に無いから、使い方とかどこかに書き残すと重宝されるよ。
教えてください。 現ディレクトリ以下の下位ディレクトリのファイルの取得は どうすればいいんでしょうか。
>>367 ./現ディレクトリ/下位ディレクトリ/ファイル
または
下位ディレクトリ/ファイル
369 :
364 :04/08/14 17:11 ID:???
すいません、説明がいくらなんでも ひどすぎました。 要するに、要素名を得たかっただけなのですが……SimpleXMLには、そういった関数が用意 されていないみたいです。じゃあ、どうやって要素名を得ればいいのか――が、今回の質問で あります。
>>364 XML分かんないんでやっつけだけど、これで一応子ノード一覧取れるよ
<?php
function child_list($xml, $nest=0) {
foreach ($xml->children() as $key => $element) {
echo str_repeat(" ", $nest) . "$key\n";
child_list($element, $nest+1);
}
}
$xml = simplexml_load_string(
'<son>
<taro></taro>
<jiro></jiro>
<sab></sab>
<white></white>
</son>');
child_list($xml);
?>
371 :
364 :04/08/14 19:15 ID:???
>>370 ! なるほど、そうすれば良かったんですか。
どうもありがとうございました、これでガリガリ作業が進められます。
function test($array) { array_push($array,"test"); } $a = array(); test($a); print count($a); このようなスクリプトを書いたのですが、$aに値が代入されず、最後の行で0と出力されてしまいます。 どのようにすれば$aに値が代入されるようになりますか。
>>372 function test(&$array)
{
array_push($array,"test");
}
もしくは
function test(&$array)
{
return array_push($array,"test");
}
にして戻り値を使う
>>373 「リファレンス」なるものがあるとは・・・はじめて知りました。
どうもりあがとうございます。
phpとかperl初心者って値渡ししかしらねーんだよな
参照渡し・値渡しはどの言語であるか問わず基礎
値渡し意識してるなら、普通にreturnで返すだろうし、
参照渡しを意識してるなら&ぐらい気づくだろうと思うのだが、
なぜ、
>>372 は それで値の変更ができると思ったのかなぁ。
元VisualBasicユーザーならば可能性はなきにしもあらず。 # VBは省略すると参照渡しになる
378 :
nobodyさん :04/08/14 22:28 ID:8vlh+W98
非常に初歩的な質問かもしれませんが、 $timestamp = 年/月/01 という時間を入れた変数を $timestamp = 年/月-1/31 というようにしたいのですが、 (つまり1日前日にずらす) どのようにすればいいのでしょうか? ご教授おながいしますm(_ _)m
includeで呼び出したページからフォームを使ってデータを変数に格納するのができないのは既出?
>>378 エポック秒に直して60*60*24を引けばいい
381 :
nobodyさん :04/08/14 22:36 ID:8vlh+W98
>>379 レスありがとうございます。
つまり、エポック秒に直して、ひいてまた
もとの形に戻すってことですね。
ついでで恐縮ですが、エポック病になおしかた、
戻し方も教えてもらえないでしょうか?
調べたのですが、エポックってぐぐってもあんまりでてこないようなので・・・
>>381 /でexprodeして年・月・日に分割して、それからmktimeすればいいんじゃないかな
384 :
nobodyさん :04/08/14 22:56 ID:8vlh+W98
ありがとうございます。参考にします。 にしてもあれですね、1日戻すだけでも結構だるいもんですね。
>>384 strtotimeもいろいろ使えるよ。一度見ておくといいかもしれない。
04/08/14とあったら解釈が違ったりするけどね。
(外国は年月日の順番が違うから
2004/08/14ならちゃんと解釈してくれる。
UNIXタイムスタンプってエポック秒とも言うのか 勉強になった
>>384 てか、わざわざ文字列で保持しておく必要があるのか?
最初からエポック秒で持ってれば手間全然掛からんのだが
普通そうだよ エポック秒で格納しておいて date()で書式変えて表示すればいい
$timestamp = strtotime ("- 1 days", $timestamp) これでOKじゃね??
$timestamp = mktime(0,0,0,08,01,2004); echo date("Y/m/d H:i:s",$timestamp); $timestamp = mktime(0,0,0,08,date("d",$timestamp)-1,2004); echo date("Y/m/d H:i:s",$timestamp).;
鯖の影響で変数に格納できないってことある? 変数に何入れても空白なわけだが・・・
392 :
nobodyさん :04/08/15 00:12 ID:ThpZR4Ya
C-BOARDで、投稿画面に追加したセレクトボックスの 投稿データチェック(未選択不可)を行いたいのですが、 どうすればいいのですか? 下記のところに、新しく追加したら大丈夫だと思うのですが.. チェックの仕方がわかりません。 #── メールアドレスをチェック length($::FORM{'email'}) && ($::FORM{'email'} !~ /^[!-?A-~]+@[!-?A-~]+\.[!-?A-~]+$/) && push(@error, 'メールアドレスが不正です。'); #── パスワードをチェック ($::FORM{'key'} =~ /[<>&"]/) && &::error(\('パスワードに「<, >, &, "」は' . '使えません。'));
394 :
392 :04/08/15 00:16 ID:ThpZR4Ya
すいません、間違ってPHPのところに質問してしまいました。 申し訳ないです....
395 :
nobodyさん :04/08/15 00:37 ID:nLnvBjde
396 :
395 :04/08/15 00:37 ID:nLnvBjde
「したいと思ったら」の間違い。すぽ。
397 :
394 :04/08/15 00:42 ID:nLnvBjde
398 :
391 :04/08/15 00:52 ID:???
スマンが真剣だ
>>398 ありえんと思うが、検証できる最低限のコードを晒して味噌。
モノ好きが吊れてくれるやもしれん。
http:// 〜/index.php?mode=site
上のURLの上体で
〜〜〜〜〜〜〜
</TBODY>
</TABLE>
</TD>
<TD bgcolor="#5788b5" valign="top">
<?php
if ($mode != ""){
include "./page/$mode.php";
}else{
include "./page/main.php";
}
?>
</TD>
</TR>
</TBODY>
</TABLE>
</TD>
〜〜〜〜〜〜
にしてあるんだが
表示されるのは
http:// 〜/page/main.php デツ
ちなみにindex.phpでも
http:// 〜/page/main.php デツ
誰か釣れてやってください;;
<?php のあとに $mode = $_REQUEST["mode"]; をいれてみ。
UNIXタイムスタンプで管理って2038?年だっけかその辺までしか対応出来ないべ。 しかしお盆どうすっかなぁ( ´-`)
墓参り行くべ〜〜(´_`)§ll
405 :
391 :04/08/15 01:32 ID:???
>>402 ありがと、早速やってみま〜!
(と思ったら鯖落ちてるよ〜;;)
あれで鯖のせいにするとは鯖がかわいそう・゚・(つД`)・゚・
つか、共用鯖でテストしてる悪寒…
くだらない質問かもしれませんが… BBSのログ等を表示する際の処理は for foreach while どれが効率良いでしょうか。 ご教授願います。
だいぶ前にここで速度比較してたよね その時の結論は忘れたけど 俺はあんまり気にせず、状況に合わせてソースがきれいに書けるやつを選ぶ
>>410 さん
そうなんですか。
速さよりもどれが負荷が少ないかなと思いまして。
でもそんなには変わらないのですかねー。
有難うです!
WindowsでPHP5.0.1をインストールし、コマンドラインから使ってます。 なんか、namespaceとかprivateとかの新機能が使えないんですけど、なぜですか? 心当たりがあれば教えてください。
>>409 1.while 2.for 3.foreach と予測してみる
設定ファイルで設定した内容をプログラムのほうで変更することはできますか。 具体的にはinclude_pathに追加したい。
ini_setかな?そのあたり
確かにforeachは一番遅そうだなw 俺も410のように保守性を重視するよ。
<FORM method="POST" action="other/anq/index.php"> <SELECT name="sex"> <OPTION value="女" selected>女</OPTION> <OPTION value="男">男</OPTION> </SELECT> <INPUT type="submit" name="action" value="送信"> </FORM> としてるんだが、変数が格納サレマセン。なぜでつか?
>>417 action="info.php"として info.phpの中身はphpinfo();のみ。
表示されたhtmlの中でセックルを探してみ
Warning: Cannot modify header information - headers already sent byって何ぽ?
420 :
417 :04/08/15 12:23 ID:???
>>418 Request使えば変数が入るんだが・・・なぜだ?
>>419 いやそのままと思うけど。既にヘッダーが出力されているから
header()は使えないってことだよ。header()周り見てみ。
何か出力してるところがあるはず。
423 :
419 :04/08/15 12:55 ID:???
ちなみにこれだけでつ;;
<?php
$action = $_REQUEST["action"];
$age1 = $_REQUEST["age1"];
$age2 = $_REQUEST["age2"];
$Region = $_REQUEST["Region"];
$sex = $_REQUEST["sex"];
$server = $_REQUEST["server"];
$cls = $_REQUEST["cls"];
$monster = $_REQUEST["monster"];
if ($action == "送信"){
$data = 'data.cgi';
$age = $age1.$age2;
$input = implode(",", array($age,$Region,$sex,$server,$cls,$monster));
$fp = fopen($data,"a");
flock($fp,LOCK_EX);
rewind($fp);
fputs($fp, "$input\n");
flock($fp,LOCK_UN);
fclose($fp);
$ok = 1;
}
header("Location:
http://**********/index.php ");
?>
>>423 ヘッダー出力できない警告の前にほかのエラーか警告が出てるんじゃないの?
425 :
412 :04/08/15 13:18 ID:???
privateがエラーになったのは、「private $x;」と書かなければならないところを 「private var $x;」と書いていたためでした。ばかです。 namespaceのほうはやっぱりエラーになります。 namespace Foo { class Bar { } } これだけなんだけどな。
てか、PHP5のRelease版ってnamespaceサポートしてんの? RC2で消えたんじゃなかったん?
>>413 実際は「1.while 2.foreach 3.for」っぽい。
後半の二つはファイルを全部読み込むのはいいけど配列にするため
(explode&配列アクセス)の処理で時間を食っている様子。
forとforeachが違うのは、forが$i++や$i < count($data)とかを
毎回通しているためのロスみたい。
とはいってもテキトーにしか調べてない(というか差が誤差の範囲で
しかでない)から正確にはよくわからない。
whileはファイルを1回だけ読むのなら適当。
ただ、私は何度チェックしても無限ループが怖い。
forは添え字を自分で管理でき、
前とか後とかをすぐに参照できるという点で良い。
foreachは添え字が数値でなくても、
ちゃんとすべて処理できるという点で良い。
こんなところ。ただし、これは私の考えなだけ。
>>336 の続き
>>337 のやり方で拡張子無しのファイルをPHPとして認識させるにはどうしたらいいですか?
または、別のやり方でできるのでしょうか?
<?php $mode = $_REQUEST["mode"]; if ($mode != ""){ include "./page/$mode.php"; }else{ include "./page/main.php"; } ?> もし、modeに「aiueo」が格納されているとして 「./page/aiueo.php」がない場合に他の処理を行いたいんだが・・・ どうすればよい?
>430 <Files ~ "^[^\.]+$"> ForceType application/x-httpd-php </Files>
<?php $mode = $_REQUEST["mode"]; if ($mode != ""){ if (! file_exists(./page/$mode.php){ include "./page/$mode.php"; }else{ include "./page/404.php"; } }else{ include "./page/main.php"; } ?> これでいいのかな・・・・
>435 よく見直した方がいい
is_fileよりfile_existsを使った方が良いのですか? is_fileの「filenameが存在して、かつそれが 通常ファイルであればTRUEを返します。」と ありますが、この通常ファイルとはCGI以外という意味なのでしょうか?。
438 :
435 :04/08/15 19:31 ID:???
全然ワカンネ
>>438 エラーはログになって画面表示にしてないのかなぁ
どちらにしろ1からマニュアルを読むなり、ぐぐるなりした方が良いよ^^;
>>437 ファイルを読めるかを調べるのにはis_readableを使うことをすすめます。
>>440 userIDの事まで考えるとis_readableが良さそうですね^^
これからはこちらを使う事にします。
{}数あってるのに parse error, unexpected '}' in
>>435 .php?mode=../../../../../../etc/passwd
お約束。
444 :
444 :04/08/15 21:37 ID:???
<? $data = 'count.cgi'; $file = file($data); $date = date(Ymd); $host = getenv("REMOTE_HOST"); $addr = getenv("REMOTE_ADDR"); if($host == "" || $host ==$addr){ $host = gethostbyaddr($addr); } list($date1,$scount,$host2) = split( ",", $file[0]); list($date2,$tcount,$tdate) = split( ",", $file[1]); list($date3,$ycount,$ydate) = split( ",", $file[2]); if ($host != $host2){ $scount++; if ($date != $tdate){ $ydate = tdate; $tdate = date; $ycount = $tcount; } $tcount++; $host2 = $host; //書き込み $data[0] = implode(",", array($date1,$scount,$host2)); $data[1] = implode(",", array($date2,$tcount,$tdate)); $data[2] = implode(",", array($date3,$ycount,$ydate)); $fp = fopen($data, "w"); flock($fp,LOCK_EX);
445 :
444 :04/08/15 21:38 ID:???
for ($i=0;$i<=3;$i++){ rewind($fp); fputs($fp, "$data[$i]\n"); } flock($fp,LOCK_UN); fclose($fp); }else{} print " <TABLE cellpadding=0 cellspacing=0>"; print " <TBODY>"; print " <TR>"; print " <TD align=right><FONT size=2>Total:</FONT></TD>"; print " <TD><FONT size=2>$scount</FONT></TD>"; print " </TR>"; print " <TR>"; print " <TD align=right><FONT size=2>To:</FONT></TD>"; print " <TD><FONT size=2>$tcount</FONT></TD>"; print " </TR>"; print " <TR>"; print " <TD align=right><FONT size=2>Yes:</FONT></TD>"; print " <TD><FONT size=2>$ycount</FONT></TD>"; print " </TR>"; print " </TBODY>"; print " </TABLE>"; ?>
446 :
444 :04/08/15 21:39 ID:???
上記のプログラムcounter.php これをincludeでページに貼ったのですが、 ページを表示して実行するとカウントされずに ttynt.cgiというプログラムができます;; なぜでしょうか?
include する前にこれは動くのか?
php,perl両質問スレ なんかこう、、、夏真っ盛りだな・・・ このスレはクエリをそのまま変数に勝手に入ると思ってるのもいるし(?mode=xx→echo $mode) もうね、アホかと
>>448 > $mode = $_REQUEST["mode"];
>>449 いやそれは分かってるけど
${クエリでの名前}に勝手に入ると思ってる奴が居るってこと
>>443 どっかのPHPのセキュリティーに関する書籍で
$mode = str_replace('../', '', $_GET['mode']);
にすればいい、とかかいてるダメなやつがあったな。
〜.php?mode=....//....//
ってどうなるんですかと問いたい。問い詰めたい。小一時間(ry
# と、愚痴をもらしてみる。
# そもそもそういうクエリを送ってくるやつははじくべきなんだよ。
global_registerをONにすれば入るよ( ´▽`)ノ まぁ、マルチはいくないな。
>>450 ああ、
>>400 以降ね。
どうでもいいが、これから PHP やるヤシは何故そんな実装になってるのかよく考えてみれ。
特に変数のスコープや register_globals 関係。
例文だから考慮してないだけかも知れないが、ちょっと安易杉。
>>400 だって、ある機能に対して認証を飛ばしてアクセスが可能になるかも知れないワケで。
例えばユーザーのパスワード変更を chpasswd.inc.php に切り出して認証されたページ内から呼び出していたら
?mode=../../chpasswd.inc&new_passwd=hogehoge
とか突っ込まれる可能性もある。
>>443 も言いたいのはそれだろ。
>>451 > # そもそもそういうクエリを送ってくるやつははじくべきなんだよ。
ちょっと興味深い。
手軽な方法ある?
クラック目的で突っ込まれたコードが効果的に検知出来るなら、勉強のためにトラップしてログっときたい。
セキュリティを意識して欲しいだけで。バッドノウハウはびこりすぎなんで。
しっかりしたアプリケーションが書ければどこから何突っ込まれようと大体は大丈夫だ。
取り敢えず変数を区別しないのはマズい。
一つの変数を二つの意味で使うとか、由来を考えずに使うとか、ユーザーからの入力値を深度の限界無しに受け付けてるとか。
なんで勝手にファイルが作られるかねぇ・・・
PHPでperlのサブルーチンと同じような機能ってやっぱりfunctionでしょうか?
458 :
456 :04/08/15 22:52 ID:???
>>454 preg_match('/[^\w]/', $_GET['mode']) and die('不正クエリ');
これくらいの勢いでもいいんじゃないかってこと。
どうしても"/"や"."がいるのだったら
strpos('../', $_GET['mode']) === false or die('不正クエリ');
$_GET['mode']{0} == '/' and die('不正クエリ');
とかいろいろ試してみるとよろし。その場その場にあった処理が必要だと。
# 上の例は上位ディレクトリを参照させないようにする処理
# 下の例は直接変数と使う場合以外はいらないが、絶対パスを防ぐ処理
それと、いろいろとやっかいなのが"\x00"の処理。
phpでは大丈夫(なはず)だけど気になるので、
$_GET = array_map(create_function('$a',
'return str_replace("\x00", "", $a);'), $_GET);
こんな感じであらかじめ省いておくと安全かもしれない。
# $_POSTや$_COOKIEの時も同様にしておくといい
# 場合によれば改行系列も省いた方がよい場合がある
preg_match('/[^\w]/', $_GET['mode']) and die('不正クエリ');
>>459 参照先ディレクトリの制御に限った話でつか。
それは誤動作誘発に通じるルートを叩き潰すって発想で付加的な話。
基本はルートを掘られて利用されるような脆弱性をつくらない事なのでは。
という話も出しておきまつ。初心者が佃煮状態みたいなんで。
- safe_mode を使う
- ライブラリ単体で動作させない (require/include で結果を返すような書き方をしない)
- 外部ライブラリはそれ自体をセキュアな作りにする
とか。定石と普段からの意識とバッドノウハウの排除。
色々、試すのはいいけど、試されないように・・・。
463 :
nobodyさん :04/08/16 02:30 ID:vS77LDZv
お盆もおわっちゃいましたけど、いかがお過ごしですかw えと。 127.0.0.1/hoge/ で「hoge」ディレクトリーを作るのなら mkdir(hoge,0777);で作れるけど、 例えば、127.0.0.1/hoge/hogehoge/hohoge/ でこの「hohoge」を作るにはまず上層の「hoge」と「hogehoge」を作らないといけないわけですが、 この作業を行うにはどんな書き方になるんですか? 毎回階層が決まっていれば問題はないけど、 決まってない場合がわからなくて。 よろしくお願いすます。
>毎回階層が決まっていれば問題はないけど、 >決まってない場合がわからなくて。 ↑がよく解らないんだけど、 必要なディレクトリ名を配列に入れて、その数だけループさせたら?
>>464 さん
>>465 さんありがとー
今ファイルをアップする部分をつくってて
POSTされたアップロード先のアドレスが毎回違うだろうし、ってことです。
すでに作られたディレクトリー内に、1階層だけディレクトリーを作るのなら
mkdirを1度すればいいんだけど。。。
ヒントページみてみます〜〜
また分からなかったらまたきますw
よろしく!
467 :
466 :04/08/16 04:38 ID:???
自己レス できました。 丸写しだけど・・・ $dir=split("/", $up_dir); for ($i=0;$i<count($dir);$i++){ $path.=$dir[$i]."/"; if (!is_dir($path)) @mkdir($path,0777); @chmod($path,0777); } if (is_dir($up_dir)) return 1; 間にいくつかif入れて目的の事は完成です。 お世話になりました!
468 :
nobodyさん :04/08/16 05:54 ID:gbbwkQJr
ローカルのファイルのパーミッションを変更するにはどうすればいいでしょうか
chmod いや、まてよ・・・まさかと思うが、サーバに置いたPHPスクリプトから、 クライアント側の何かのファイルのパーミションを変更したいってわけじゃないよな?
470 :
468 :04/08/16 06:49 ID:???
>>469 いえ、全てローカルにあります
できました ありがとう
472 :
466 :04/08/16 08:18 ID:???
>>471 どもー
mkpathってphpで使えるんですかね?
perlのだって聞いたことあったんだけど。ちと試してみます〜
474 :
nobodyさん :04/08/16 09:38 ID:2LXrMV/7
助けて下さい。質問です。 phpでラップ関数って作れるんでしょうか?
うん
abcdef @ hijklmp @ aiueos. という文字列があって1つ目の@を(1)、2つ目の@を(2)という風に 置換したいのですが、良い方法があれば教えてもらえると助かります。
477 :
nobodyさん :04/08/16 10:37 ID:go59Ftbg
レスありがとうございます。正規表現でやれるんですねー。 何番目の@か取得する方法が分からないため、正規表現スレで聞いてこようと思います。 $1,$2の数値の部分を取る方法があるのだろうか…。
>>478 とりあえず、こんなこともできたりする。
$data = 'abcdef @ hijklmp @ aiueos.';
echo preg_replace_callback('/@/', create_function
('', 'static $a;$a++;return "($a)";'), $data);
>>479 まさにそれがやりたかったんです!ありがとうございます。
匿名関数を作って静的変数を使ってるあたりがテクニカルでいいっすね(>_<)
本当参考になりました。謝謝。
>>480 こんな感じでもいけそう。
$i = 0;
echo preg_replace('/@/e', '"(" . ++$i . ")"', $data);
>475 その「うん」は >474 に対しての「うん」であるならば、 できれば具体的な内容を教えて頂きたいのですが・・・・
>>460 /[^\w]/ って /\W/ じゃダメなの?
create_functionって何回(というより何千回)も使うと遅くならね?
>>484 それでもいい、というよりかそっちのほうがいい。
create_functionは関数をつくっちゃってるからねぇ、
何回も使うのならば>481のようなものを使ったほうがいい。
そうしないと、なにをするにも遅いプログラムになってくる。
486 :
466 :04/08/16 15:28 ID:???
>>473 お〜またまたレスありがと!
popenもやってみます!
mkpathの方は書き方が悪いのかうまく動かなかったです。
うむ。難しいですねー
配列に対して htmlspecialchars を適用したいのでつが、適当な関数はありませんか。 array_filter を試してみましたが htmlspecialchars は使えない模様でつ。
webspaceのレンタル(実際にはしないと思いますが^^;)をする上
でWebからの登録で自動的にディレクトリを割り当てたいと考えて
おります。
ディレクトリを作成すると所有者がapacheになりますが、その
ファイルの所有者を変更したいのです。chownはスーパーユーザで
ないと実行出来ませんとありますが、
http://hoge.co.jp/でアクセスさせて スーパーユーザーで動作させる事は可能なのでしょうか?。
apacheはapache権限です。
でつまつ厨も出たか・・・夏だな
スネちゃま!そんなこと言っちゃだめざまつ
本家サイトからインストーラーがダウンロードできないー どうしたらいいんだー マニュアルインストールなんて難しいことはわかりません。 ヘルプミーぷりーず orz
たまにいるんだよな でつまつ使っただけで「厨だ」とかぬかすアホが。
488だか私は別に「まつ$」でも気にしない
そもそも、2ちゃんで礼儀などは期待していない
礼儀知らずが厨かどうかは知らないが、それに食いついてる
494が厨だとしか思えん
>>493 Windows?
496 :
493 :04/08/16 21:21 ID:???
>495 そうです。
>だけで 条件を満たしていると思われ(厨)
>>496 ぐぐれば置いてある所もあるけど本家が復旧するのを待ってた方が
良いと思うよ
DLできるじゃん
サイトでエラーが出てるからDL出来ないんだよ ミラーもダメだね
504 :
493 :04/08/16 23:08 ID:???
>>502 >>503 復旧するまであきらめるしかないのかと思ってたら・・・
ありがとうございます。m(_ _)m
_, ._ ∩ ( ゚д゚)彡 サァ!! ⊂彡
おっぱいには使えないね
PHPとjavascript間で値のやり取りをしたいのですがどうすればよいですか?
>>510 PHPが外部から受け取る変数は $_GET $_POST $_COOKIE である以上、
javascriptからそれらを操作するものを使う他あるまい?
_, ._ ∩ ( ゚д゚)彡 サァ!! ⊂彡 何か面白いもんつくりてーな。
どもです (_ _) ある PHP スクリプトが include/require 等で呼んでいるファイルを全部引っ張る方法って無いでしょうか。 fileA include('fileB'); fileB include('fileC'); include('fileD'); とあった場合、fileA が fileB, fileC, fileD を読み込んでいる事を fileA 側から確認出来ないか、といった具合です。
>>513 ソース読めば確認できるだろうが。
どこで何を読み込むかも管理できずに書いてるのか?
>>514 人様の書きやがったスパゲティなコードの修正なんです。
>>515 ありがとうございます (_ _)
517 :
nobodyさん :04/08/17 18:03 ID:Jto412WC
Apache monitor is already started というエラーが出て サーバーやPHPの環境設定、ブラウザの設定等に問題がないかも チェックしたほうがいいかもしれませんね。 と上司にいわれましたが設定のチェックの方法が分かりません。 知っている方教えてください。
(つω;)ヾ(・д・ )ヨシヨシ
>>519 エラーメッセージを理解できない部下を持った上司も慰めてやれよ
arrayをハッシュとして使っているのですが、キーを削除する方法がわかりません。 $hash = array('key1'=>10, 'key2'=>20); array_delete_key('key1', $hash); ← こんな関数ないっすかね? array_key_exists('key1', $hash); #=> false
>>517 英語くらい訳してみろよ
アパッチのモナカがすでに開始してるって書いてあるじゃん
>>522 unset($hash['key1']);
でいけました。
そうか、$hash['key1'] 自体がひとつの変数ということか。
どうもありがとうございました。
525 :
nobodyさん :04/08/17 21:24 ID:hQEO8cuE
PHPの4.0.3を入れてるサーバがあって バージョンアップ不可の条件をいただいたのですが 4.0.3のマニュアルのURLご存じの方いたら教えて下さい。 ググったら「最低4.0.6まで上げる事をお薦めします.」とか書かれてて(´・ω・`)
>>525 普通にその辺のマニュアル使える。
例えば 4.3.0 から入った関数の場合、マニュアルに記載がある。
逆にマイナーバージョン固有のバグとかの場合はマニュアルには載らない。
前後の ChangeLog を地道に追う。
後はエラい人、補足よろ。
PHPで改行の数を調べるにはどうやって調べるのですか?
528 :
527 :04/08/17 22:11 ID:???
解決しますたw
>>517 ML に投げようかとも思ったけど、Google に残るのがイヤなのでこっちで。
取り敢えずコンピュータの管理はコントロールパネルからな。
それくらいググれ。
取り敢えず集中砲火浴びる前にここ読んで ML って何なのか掴んだ方がいい。
http://www.hyuki.com/writing/techask.html で、分からない事全部が勉強だと思って調べまくる。それが当たり前に出来ないとこの仕事辛い。
特に知識系産業は国際間の壁が低く世界的に集約/役割が割れていくからどんどん寒くなる。
技能職って事で目の前の待遇の良さだけを見てるなら考えた方がいい。
それにプロって事は、責任だって相応。
俺は無関係だが、規模のデカい開発投資がプログラムで失敗して営業から展開から全部狂って悲惨な目にあったのを知ってる。
まぁその会社のマネジメントも悪いんだが、俺はたまたま開発担当を別件で知っていてコードもちょっと見た。
一番タチ悪いのはソイツが能力低すぎて、何が悪いのかさえ分かってないって事だ。
ML で何か言ってるが、顧客から見れば 俺初心者なんで とか明後日方向の事情は言い訳にもならない。
甘え捨ててもっと自助努力しる。
530 :
nobodyさん :04/08/17 22:43 ID:LR9RAB4Q
PHPからoggをエンコードしてタグを書きたいのですが、 shell_exec('oggenc ファイル.wav -t "タイトル" -a "アーティスト名" > /dev/null &'); のようにすると日本語が######のように化けてしまいます。 (実際はshell_exec()の中身は.shファイルに書いてあってもう少し長いですが、上のように書いても同じ症状でした。) 何か良い方法は無いでしょうか? 環境はLinuxです。
>>530 oggencは使ったことないけどスクリプトの書かれている文字コードとかを
もちっと検討してみてはどうだろうか
>>530 Ogg 扱える PHP アプリケーションどこかで見たな、と思って PHP ogg でググってみると
コードいろいろ出てきた。
英語ね。
533 :
532 :04/08/17 23:09 ID:???
補足、
それで他の原因潰しつつ
>>531 の言うように文字コード関連にかかってみては、って意味
534 :
530 :04/08/17 23:20 ID:???
LinuxはEUC-JPですよね? スクリプトも全てEUC-JPで書いたのですが・・・。 試しにXウインドウから.shファイルを動かしてみたらちゃんと日本語になりました。 Xウインドウ無しだと日本語使えないのかと思って、 shell_exec('mkdir フォルダ'); みたいにすると日本語のフォルダ作ってくれたので、 Xウインドウ無しでも使えるみたいですし。 >532 英語ですか・・・。 苦手ですけど一応調べてみます。
>>534 例えば Fedora は UTF-8 がデフォです。それに PHP の設定や Ogg のエンコード環境は別ではないかと。
あとまぁ英語出来ないと一定以上の事出来ないので。
Ogg とか人があまりやってない事をやろうとすると特に。
536 :
530 :04/08/17 23:42 ID:???
Linux+PHP+ogg+日本語ってのは特殊すぎますか・・・orz
個人的には好きです。頑張ってください。
# mp3 の ID タグ? 編集ライブラリとかも見たことあるので海外探せば ogg も転がってるかも
# で、それに日本語関連の修正&メモ書き入れて weblog か wiki にでも押し込んでおけば皆幸せ (・∀・)
って無責任に言うだけもな〜 と思ってググってると PEAR で見つけました。
http://pear.php.net/package/File_Ogg
>>530 タグはUTF8で書き込まないとダメだろ
>>534 つか、PHP-usersでも最近出てたと思うが、
"PHPがshell関数で動かす環境の"言語等の設定がそもそも何なのよ。
keyword:LANG
540 :
nobodyさん :04/08/18 11:56 ID:x3r+WkyO
こんにちはー 最近お世話になりっぱなしですが、よろしくです。 セーフモードがオンのサーバーで Warning: mkdir(): SAFE MODE Restriction in effect となってしまうのですが、 オンのサーバーでもディレクトリーを使う方法? はないでしょうか? もしくは、無理なのでしょうか? よろしくお願いします。
>>540 マニュアル嫁。
それ以外にも色々と制限出るからきっちり目を通しておいた方がいい。
>>541 うぉーありがと。
ってことはやっぱり代わりに使えるものがあるってことですね?
マニュアル声出して読んでみますw
「セーフモードにより制限を受けるか無効となる関数」
ってページあってそこを見ると自分の使ってる関数が沢山でてて・・・
いやになるw
ありがとさんでした!
いや… 嫁よ。 マニュアルの使い方を覚えるだけで、PHP は 256 倍楽になるのに。 不用な本買わなくてもいいからお財布にも地球にも優しい。 > mkdir() 処理を行うディレクトリが実行するスクリプトと同じUIDを有しているかどうかを確認します。
vodafoneの端末固定IDです。
あと、Docomoも。・゚・(ノ∀`)・゚・。
○| ̄|_ スンマセン
付き合いきれねぇよ ヽ(´ー`)ノ 俺知らね
wwwww
「なるほどw」ってところがポイントだな。
プロ釣師
Cannot modify header information - headers already sent by (output started at /usr/home/free/home/market/public_html/mmorpg/index.php:4) ってなんだよウワァァァァン
>>552 今すぐCTRL+Fを押して「modify」と入れて検索してみるといいよ。
>>552 そのエラーメッセージを訳したらどうなる
ちゃんと英語を読め
555 :
552 :04/08/18 16:23 ID:???
ヘッダー情報を修正することができません。
>>555 r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 よく頑張ったじゃねぇか。
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ もうちょい先まで読んでみようぜ。
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
557 :
552 :04/08/18 16:37 ID:???
スマン、サパーリだ_| ̄|○
ヘッダーは既に (・・・・・・) で 送信されている。
頼むから読んでくれ.辞書の引き方くらい中学校で習っただろ. > headers already sent
560 :
552 :04/08/18 16:40 ID:???
・・・つまりヘッダーは1個しか無理ぽ系?
header() とか setcookie() とか の前に echo とか print とかしてると 起こりやすいね。
562 :
552 :04/08/18 16:42 ID:???
printもechoもないぽ <?php if ($action == "投稿"){ $mynews = 'page/〜/data.cgi'; $file = file($mynews); $count = count($file); if ($count > 10){ $count = 10; } $host = getenv("REMOTE_HOST"); $addr = getenv("REMOTE_ADDR"); if($host == "" || $host ==$addr){ $host = gethostbyaddr($addr); } list ($name2,$url2,$title2,$comment2,$host2) = split( ",", $file[0]); if ($host != $host2 && $url != url2){ $input = implode(",", array($name,$url,$title,$comment,$host)); $fp = fopen($mynews, "w"); flock($fp,LOCK_EX); rewind($fp); fputs($fp, "$input\n"); for($i = 0; $i < $count; $i++){ fputs($fp, $file[$i]); } flock($fp,LOCK_UN); fclose($fp); unset($file); } header ("Location:http://〜/index.php"); } ?>
>>562 > Cannot modify header information
の前に何かエラーか警告が出力されてないか
<?php の前に改行や空白がないか
564 :
562 :04/08/18 16:50 ID:???
エラーはこれ一つだけです 空白もナイポ
ぽ$って マジきもいんだけど
locationのhttp:が全角なんだけどこれは意図的にやってるんだよね それからエラーの出ているHTMLのソースはどうなってるかよく見てみれ
>>562 $mynews = 'page/〜/data.cgi';
なんでデータファイルがcgiなのかと子一時間
わざわざデータファイルを実行系ファイルの拡張子にする時点でオhル
>>570 無償のレンタル鯖でアクセス制限が掛けられない時、
データファイルの拡張子をcgiにしておけば、URL直打ちでも
データファイルを覗かれないという利点がありますけど。
データファイルの拡張子を.cgiにしておけばそのファイルにアクセスされても 500がでて見れないようにしているんだと思う # 自分だったらそんな変なことしないで.htaccessによるアクセス制限するが
>>568 ( ゚∀゚)アハハ八八ノヽノヽノ \ / \
拡張子の話はどっかのスレで さんざんやってたような希ガス
576 :
nobodyさん :04/08/18 19:05 ID:QMhJW4BU
拡張子なんて飾りですよ。偉い人にはそれがわからんのです。
*.gifをphpでパースするようにサーバを設定してみますた
チンコって反ってる方が強そうだよな?
579 :
578 :04/08/18 20:32 ID:???
スマン、誤爆だ
>577 すげー。このサイト全部 GIF かよ。ってことになるのか。 で、GIF 画像を表示するとき困らないかしら。 あふぉなブラウザが勘違いして妙なことになりはしないかしら。 わたしもやってみよー。
581 :
nobodyさん :04/08/18 22:03 ID:sgbsN4EW
ヒアドキュメントで、変数展開を防ぐ方法はありますか? $str = <<<EOS aaa $x bbb EOS; この例なら $x を展開しようとして「初期化されてない変数」というエラーがでてしまう。 もちろん \$x と書けばいいのだが、ちょっと面倒くさい。 $s = <<<'EOS' aaa $x bbb EOS; と書いたら変数展開されないかなーと思ったけど、シンタックスエラーだ。
””
>>577 jsp にしたら多少リソース喰っても許される
aspx にしたら客が他に移管するって言い出さなくなるし単価も上がり、初期投資も色乗せれる
cgi にしたら単価下がるけど杜撰な運用でデータ漏れても泣き寝入り度上がる
php にしたら 普通じゃーん と思われつつ、人員の技能レベルとセキュリティホールやバグを執拗に心配される
まぁどれを選ぶかはおまい次第だ。
# .html を被せて運用してるところはマジであるよね。運用情報隠して被いたずら/クラッキング率を下げる
初耳だな
>>581 1字付け足してエスケープするのが一番楽だろう。
それかその部分だけエラー制御で殺す。テンプレートエンジンはコレやってる。
ヒアドキュメント自体そんなに使う物でもないし、不満になってきたら他のやり方探す方がいい。
忘れてた、 > それかその部分だけエラー制御で殺す。テンプレートエンジンはコレやってる。 考え無しにコレをやると脆弱性作るぞ。 運用段階で register_globals を有効にされたり、そのコードの前で外部変数を extract されたらまさに鴨。 テンプレートエンジンがソレやって許されるのは、きっちり閉じ込めてあるからで。
@使えばいいじゃん
もう一つ忘れてた。 PHP の変数ではなく、> 変数 $hoge に対して~ とか文章の流れで $var が出てくるってのなら、 $ はエンティティにでもしておくのが妥当だと思われ。
590 :
530 :04/08/19 01:08 ID:???
あれから文字コード変えてみたりphp.ini弄ってみたりと色々やってみたのですが、
シェルからphp hoge.phpとしてphpを呼び出すとちゃんと日本語にしてくれて、
apacheから呼ぶと駄目みたいです。
どっちも同じユーザーでやってみたので権限の問題でもないようですが、
もうさっぱりです。
どなたかご教授願います。m(_ _)m
>>539 PHPがshell関数で動かす環境の言語とは何処を設定すれば良いですか?
PHP-usersも検索してみましたが探し当てられず・・・。
>>590 shell_exec('touch 日本語のファイル名.txt');
としてapacheとシェルから実行したらどうなるかやってみてよ
592 :
530 :04/08/19 01:54 ID:???
>>591 mkdirでも出来たので予想はしてましたけど、
apacheとシェルどちらもEUC-JPで日本語名のファイル作ってくれました。
EUC-JPで.shファイル作ってやっても出来たので、oggencの引数はEUC-JPで良いみたいですし。
何が悪いのでしょう?
それでoggencの引数にUTFで値を渡したときはやってみたの?
594 :
530 :04/08/19 02:11 ID:???
>>593 やりました。
apacheからやった場合は文字コードの1バイトが#に置き換わって表示されます。
シェルからやった場合は#と?で出てきます。
どちらも英字の部分は普通に表示されています。
595 :
581 :04/08/19 02:15 ID:???
>>585 どうもありがとう。
背景をちょっと説明すると、PHPスクリプトの中にPHPスクリプトを書く必要があって、
それをヒアドキュメントで書いています。
$code = <<<EOS
#PHPスクリプトをここにかく
<?php echo \$x ; ?>
EOS
それで、Cut&Pasteで貼り付けてるんだけど、そのあとに¥でエスケープするのが
面倒だったので質問しました。
\n なんかも \\n としなきゃいけないんで、結構面倒なんですよ。
まあ頑張ってちまちま直します。
>>587 どういう意味?
>>587 どういう意味?
エラー制御演算子 でぐぐれ
>>595 俺ならテンプレート使って終わり。
っていうか
?>
好き勝手書けや (#゚Д゚)オラー!
<?php
まずヒアドキュメント使う必要があるのかと
599 :
もん吉 :04/08/19 10:35 ID:???
現在PHPとMySQLを使って検索システムを作ってるんですけど SQL文で $sql = "SELECT * FROM data WHERE NAME LIKE '%".$data."%'"; $dataは前ページからもらってきたデータが入ってるんですが データベースの中身(NAME)が全角(例:カーショップ)の場合で $dataが半角(例:カーショップの場合bとかjでした)の場合 なぜか引っかかってしまいます。 これはなぜでしょうか?
しつもーん。 $hoge .= "ほげ"; これだとエラー。 $hoge = ""; $hoge .= "ほげ"; これだとエラーなし。 そういうもんなんでしょうか? php4.3.4
601 :
もん吉 :04/08/19 11:06 ID:???
$hoge .= "ほげ";は$hogeに"ほげ"を追加するため 先に$hoge = ""; としておかないと追加する場所がなく エラーが出るのだと思います。 $hoge = "ほげ";だと問題ないですよ。
ケータイ用のサイト(Shift_JIS出力)の人でPostgreSQL+PHPで運用している方が いれば教えてホシイのですが、どういう手段で文字コード変換やってますか? jcode.phpとかだと半角カナをうまく使えないですし、 かといってレンサバなのでphp.iniをいじくったりモジュール追加できないので悩んでいます。
includeでCGIを挿入できたっけ?
604 :
602 :04/08/19 11:22 ID:???
>>603 よく読んでみてください
jcode.cgiじゃなくてjcode.phpですよ
includeって拡張子は何でも良いのでは?
includeでCGIを呼び出そうとしたらCGIの中身が出てきますた
>>602 jcode.phpって半角カナで何か不具合あるの?
Shift_JISはあちこちでマルチバイト対応に迫られるね そもそもjcode.phpって必要
$2ch['php']['1091774679']['body'] .= '?';
Warning: rewind(): supplied argument is not a valid stream resource in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 19 Warning: fputs(): supplied argument is not a valid stream resource in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 20 Warning: fclose(): supplied argument is not a valid stream resource in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 24 Warning: Cannot modify header information - headers already sent by (output started at /usr/home/free/home/market/public_html/mmorpg/link/index.php:19) in /usr/home/free/home/market/public_html/mmorpg/link/index.php on line 28 もうだめぽ_| ̄|○
parse error, unexpected T_STRING, expecting T_CASE or T_DEFAULT or '}' とはどういう意味でしょうか?
>>611 文法エラー
文法上の誤りがあります。
本来、case(T_CASE)またはdefault(T_DEFAULT)または}であるべき
ところが文字列(T_STRING)になっています。
>>610 その前にもっと大切なエラーが出ているはずなのになぜ省略するよ。
615 :
611 :04/08/19 13:27 ID:???
switch($listB2){ case1:$a = "q";break; case2:$a = "w";break; case3:$a = "s";break; case4:$a = "x";break; } って間違ってるのかな〜
普通に間違ってるし
617 :
602 :04/08/19 13:48 ID:???
>>607 "アホ自動車"をEUC-JPで保存して、
JcodeConvert()でEUC->SJIS変換して出力してみてください
>>615 2ちゃんは半角スペースが消えるからわからんが、
そんなオチの気がする
case 1 case 2 case 3 case 4 だろ。
620 :
nobodyさん :04/08/19 14:43 ID:HVGJn52b
MySQLで、select round(166.5); が167にならないのって一体どういう事だ? おかげで徹夜しますた。
>>620 注意: 引数の値が 2 つの整数の中間にある場合の ROUND() の動作は、
C ライブラリの実装に応じて決まる。
実装に応じて、最も近い偶数に丸められる場合と、
常に切り上げまたは切り下げられる場合、
あるいは常にゼロ方向に丸められる場合がある。
特定の丸め方法を必要とする場合は、この関数ではなく、
TRUNCATE() や FLOOR() などの明確に定義された関数を使用するようにする。
>>617 普通に変換されたけど
どこか他の部分で間違ってるんじゃない?
>>619 そこを本人に考えさせるのが615のため
そだなー。スマソ。 あと俺はcase処理を1行で書くのは嫌いだな。 619のようなやつだったら配列処理でいいし。
625 :
620 :04/08/19 15:15 ID:HVGJn52b
PHP上では普通にできるのに・・・
なんか
>>621 の文言が言い訳にしか聞こえない(^^;
で、結局「四捨五入」する方法ってどれなの?
TRUNCATE() や FLOOR() ってどう工夫すると期待した結果が得られるの?
0.5足して切り捨て
>>624 私も書き方は気に入らないが個人の好みもあるし
最初はあんなものでしょ
>>625 てかMySQLにいけ
オマケにマニュアル読め
>>625 "四捨五入 銀行型"辺りでぐぐれ
明確にされてないのが気に食わないのかもしれないが、
そのround実装は普通(の範疇)だ
>>625 私はマニュアルをコピペしただけですが?
0.5引いて切捨てしろってことだろ
FLOOR(`num` - 0.5)
630 :
nobodyさん :04/08/19 16:14 ID:h2ZrLQAF
こんにちは 教えて頂きたいのですが、 アドレスで 123/456/ の時は最後の「/」を削除して 123/456 の時は何もしない 最終的にどちらも123/456 となるようにしたいのですが、 何か方法ないでしょうか? よろしくお願いします。
>>630 最後が「/」の時は最後の「/」を削除して
ほかのときは何もしない。
をそのままプログラムにすればいいじゃない。
>>630 ついでに言うとif文を使わずすっきり書く方法がある。
それがrtrimだ。あとはマニュアルをよく見ろ。
>>632 ども〜
マニュアルみてきました!
$trimmed = rtrim($text," \t.");
ってのがのっててそれで目的が達成できそうです。
欲しい関数はなんでもありますねw
ありがとうございました!
>>632 630ではないが、rtrimってこういう使い方もあったのか・・・知らなかった
「/」が可能という事は全ての文字で利用出来るという事ですね
「この関数は文字列の最後から空白文字を取り除き、 取り除かれた文字列を返します。 rtrim()は以下の文字を削除します。」と書いてあるが空白文字以外でも利用出来るなら そう書いてくれよ
なるほど
>>635 string rtrim ( string str [, string charlist])
[]はオプション。お前オプション注意して見たことないだろ?
phpの関数には至る所にオプションがある
_ = 半角スペース
<tr>
__<td class="">
____<a href="
http://hogepage.com/sample.php ">サンプル</a>
__</td>
__<td class="">
____2004/08/19 00:00
__</td>
</tr>
以上の文字列から、パターン %<a href=\"(.+?)\">(.+?)</a>(.+?)</tr>% で
リンク部分を抽出して、さらに3番目にマッチした部分から、
パターン ([0-9]+/[0-9]+/[0-9]+ [0-9]+:[0-9]+:[0-9][0-9]) で時刻を
抜き出していますが、最初のパターンで、更新時刻もきれいに取得したいのです
もう少しコンパクトにすることはできないでしょうか?
どうぞよろしくお願いします。
>>640 こんな感じか?
preg_match_all('%<tr>(?:.*?)<a href="(.+?)">(.+?)</a>(?:.*?)(\d\d\d\d/\d\d/\d\d \d\d:\d\d)(?:.*?)</tr>%s', $html, $m);
print_r($m);
642 :
620 :04/08/19 18:54 ID:HVGJn52b
遅レススマソ
>>629 いや、知ってる、そのマニュアルの文言が言い訳っぽいって事
>>628 せめて一貫性を保ってほしいよな
select round(166.5); が166なのに
select round(167.5); が168になるのはどうかと・・・
そんな中途半端な関数最初から作るなって感じだな
というわけで、MySQLスレ逝ってくるわ
if(isset($_COOKIE['ck'])){ echo "COOKIE"; } この処理をディレクトリ変えたらできなくなるのですがなぜでしょうか? よろしくおねがいします
645 :
620 :04/08/19 19:02 ID:???
>>645 "四捨五入 銀行型"でぐぐったのか?
0.5を偶数になるように繰り上げたり切り捨てたりするのさ
167.5 -> 168
166.5 -> 166
165.3 -> 165
>644 > ディレクトリ変えたら 意味わかんね
648 :
644 :04/08/19 19:10 ID:???
ええと、 <?php if(isset($_COOKIE['ck'])){ echo "COOKIE"; } ?> このファイルがa.phpで、hogeというディレクトリに入っていて、a.phpを実行するとCOOKIEと表示されます。 で、a.phpをhoge2というディレクトリに入れると、COOKIEと表示されないのです。
649 :
628 :04/08/19 19:16 ID:???
>>642 世の中には「偶数側に丸める(round(166.5)→166, round(167.5)→168)」
という丸め方法があって「銀行型の四捨五入」と呼ばれています
それに一貫性がないってのは……、銀行に文句を言ってみてくださいね(苦笑
>>641 うまくできました!
本当にありがとうございました
結婚させてください!
if(isset($_COOKIE['ck'])){ echo "COOKIE"; } これって間違ってますか_? なぜディレクトリ変えただけでクッキーの値取れないのだろう(汗
652 :
620 :04/08/19 19:32 ID:???
なるほどね、トンクス とりあえず銀行に文句言ってくるわ
>>651 setcookieのオプションを全部うめてみればいかが?
いい加減コテハンうざいと思うのは俺だけか。
setcookieのオプションとは?(汗
657 :
530 :04/08/19 19:47 ID:???
どうも分からないので、PHPから直接oggファイルを弄る事にします。
エンコード後にタグ変える必要も出て来そうですし。
助言して下さった方々、ありがとうございました。
>>537 ちゃんとした物が出来たら何処かに放り投げておきます。
何処に投げれば良いかな?
使う人なんて居なさそうですけど。 ^ ^
>648 Cookieのpath設定してる?
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| |
>>655 / ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
setcookie("ck", "a=1", time()+3600,"/"); pathは"/"としていますが、間違ってますかね?
変数に格納されない_| ̄|○ 鯖を変える前まではできていたんだが 鯖を変えたらできなくなったぽ(´・ω・`)ショボーン ちなみにどちらもPHP対応です、何が違うんでしょうか?
>661 鯖が違う
\ \(⌒-⌒) (・(ェ,,)・ ) < そんなエサで俺様がクマー!! `つ `つ (´⌒(´ ゝ_つ_`つ≡≡≡(´⌒;;;≡≡≡ (´⌒(´⌒;; ズザザザ どこまで行クマ? \  ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ (´´ \(⌒-⌒) o (´⌒(´ (・(ェ,,)・ )つ⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
664 :
nobodyさん :04/08/19 21:15 ID:JfzAv2ME
みなさんは、掲示板などのログを保存する際に区切り記号は どのようなものにしていますか? 私はタブにしているのですが、ネットでは<>が圧倒的に多いので その利点なども教えていただけると幸いです。
Kent タブでいいよ。<>は本文にないとも言い切れないし
自分もタブ。 ログファイル開いた時も見やすいし。
,
fopen()でサイズの大きいファイルを開くにはどうすれば良いですか? FATAL: emalloc(): Unable to allocate エラーが出ます file_get_contents()でも使って変数に読み込むしかないのかな タブか…良いことを聞いた。φ(.. )メモメモ
>>668 freadの第二引数を512*1024くらいにしながら順番に処理するべし。
>>668 fopenごときでそんなエラーが出るはずは無いんだが・・・。
・根本的な対処
スクリプトのメモリを無駄に使っている部分を直す。
(ファイルの中身を一気に変数に入れてたのを一定サイズに抑えるとか)
・刹那的な対処
PHPやWebサーバのメモリ関係の制限を緩和する。
(当然他の部分に皺寄せが行くので刹那的)
672 :
671 :04/08/19 22:11 ID:???
あ(汗 他のところでミスってました。 1GBも読み込もうとしてたorz お手数をおかけしました。
タブってどんなの?
>673 \t
fopenもmallocを呼ぶけどな
そんなの当たり前だろ・・・
ログはserialize() / unserialize() を使う方がPHP的で良いんじゃないだろうか。
>>677 実はserializeはexplodeより高速という(ry
PHPでコマンドラインスクリプトつくってます。 標準入力から読み込む方法と、標準エラー出力にだす方法がわかりません。 マニュアルのどこに書いてありますか?
〜〜〜このスレはマニュアルの読み方から教えるスレになりました〜〜〜
標準入力とエラー出力が判らない人がいるのは、 WebPage記述用スクリプトとして生まれてきた性なんだろうな。
まあPCスキルが高くて経験が豊かな俺から言わせてもらえば UNIXを知らない奴はプログラム作っちゃだめだな
>>681 マニュアルのどこに書いてあるのか分からなかったので質問しました。
Windows用のマニュアル(*.chm)を使ってるのですが、キーワードにないし、
検索しても見つかりません。
件枠キーワード: standard output, stdin, stdout, ...
なお英語版のマニュアル使ってます。
>>684 stdin で検索したらあったけどな。
(*.chm)日本語版だけど
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| |
>>683 / ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
軟式たべろ
長いHTML文中に数十の<?php ?>を埋め込むような場合、 まとめて全てを<?php ?>で囲っちゃった方が負荷が少なかったりします? 大した差は無いかな。。
>>688 そんなことより、それじゃ読みにくいので、
テンプレート(またはソレっぽいの)として分割してください。
PHP で作った禁則処理ってどこかにありませんか?
すみません、質問させてください。 100 / 1.05を計算すと95.238095238095になるのですが、 小数点第何位までと決めることはできますか? また、やり方もご教授お願いします。
692 :
691 :04/08/20 16:12 ID:ttg46q2U
age忘れました。
PHPのスクリプトからファイルにバイナリデータを出力するにはどうすればよいのでしょうか? 配列に入っている数値を1バイトずつファイルに書き出したいのですが どうやってもテキストで出力されてしまいます。。。orz
695 :
691 :04/08/20 16:16 ID:???
>>694 初心者にはchr関数ですべてループさせることをすすめる。
すっきりやりたければこんなことしてもできる。
call_user_func_array('pack', array_merge(array('c*'), $list));
>>691 $a=round(100/1.05*100)/100;
echo $a; //95.24
>>697 round(100/1.05, 2)のほうがいい
>>698 うおーー
それでも行けるのかw
ちとスクリプト書き直すよ!
ありがとう〜〜
700 :
691 :04/08/20 16:50 ID:???
>>697-698 なるほど、そういう書き方もありましたか。
$motone=$_POST["money"] / 1.05;
$motone=round($motone , 0); //round関数で$motoneの値を整数にする
と書いていました。
ところで、最近php初めてようやく上で書いた $a=round(100/1.05*100)/100; ってのも覚えたんだけど、 例えば、 function a(){ $zz = 1234; } function b(){ echo = $zz; } としてもecho = $zz;は表示されないのだけど、 これを$zz = 1234;の値を他のfunctionで使い回す事ってどうやればいいんでしょうか? 今は全部のfunctionで$zz = 1234; を書いてます・・・ よろしければ教えていただきたいのですが。
>>701 function a(){
global $zz;
$zz = 1234;
}
function b(){
global $zz
echo $zz;
}
>>701 b関数内のglobalのセミコロン抜けた。
というわけで報告ついでに別な方法も。
function a(){
define('ZZ', 1234);
}
function b(){
echo ZZ;
}
>>702 >>703 さん早速ありがと〜
そういう方法なんですね!
多分マニュアルに書いてあると思うのだけど、
その方法をマニュアルで探す方法がわからなくてw
ありがとうございました!
\ \(⌒-⌒) (・(ェ,,)・ ) < そんなエサで俺様がクマー!! `つ `つ (´⌒(´ ゝ_つ_`つ≡≡≡(´⌒;;;≡≡≡ (´⌒(´⌒;; ズザザザ どこまで行クマ? \  ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ (´´ \(⌒-⌒) o (´⌒(´ (・(ェ,,)・ )つ⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
>>702 global は綺麗にスクリプトを書こうとする時邪魔なので
class化してvarにまとめる事をオススメする
707 :
706 :04/08/20 17:42 ID:???
バイナリデータを16進数にして2byteずつ読み込み10進数にする 〜略 $hdata = bin2hex($bdata); $i=1; while($i<=$size){ $ddata = hexdec(substr($hdata,$i*2-2,2)); $i++; } 略〜 こういう感じの処理を速くすることはできますか? forからwhileにしたら少し速くなった base_convert(,16,10)からhexdecにしたら少し速くなった これくらいしか思いつかないのでよろしくお願いします。
class hoge { var $zz; function a() { $this->zz = 1234; } function b() { echo $this->zz; } }
>>708 バイナリデータを一旦16進数にする意味はあるのか?
〜略
$hdata = unpack("C*",$bdata);
$i=1;
while($i<=$size){
$ddata = $hdata[$i];
$i++;
}
略〜
これだと
>>708 のほうが速いのです。
PHPAccelerator を 使えば一発。
>>712 $i=0;
while($i<$size){
$ddata = ord($bdata[$i]);
++$i;
}
だとどうだろうか?
>>713 実行テストは自分のPC(OSはWindows)で行ってますが、
最後に使うのはレン鯖なのでインストはむりぽ
と思ったけどxreaは実験的に導入してくれてるようです。
またxreaに厨が増えたのか・・・
>>714 速くなりました。
ありがとう御座います。
ord -- 文字のASCII値を返す
↑ASCII値ってのが意味わからなかったので触ってませんでした。
これかもPHPの勉強を励んでいきます。
>>717 こうしてほしかったんだけどまぁいいや。
foreach (unpack("C*",$bdata) as $ddata) {
}
720 :
nobodyさん :04/08/20 21:06 ID:ho3qNz5a
>>719 たしかに巨大ファイルだったら配列に入れない>714の方がはやいがな。
722 :
714 :04/08/20 21:32 ID:???
(´д`*)デヘヘ....
久しぶりに良スレになってるな・・・(・д・)。
724 :
684 :04/08/21 00:29 ID:???
>>685 見つかりました。
fopen('php://stdin') とか fopen('php://stderr') とかするんですね。
PHPのことだから、「標準エラー出力に出力する関数」とか、
「標準入力を表す定数」とかがあるんじゃないかと思って、そのあたりを探してました。
でもそうじゃなくて、Streamだったんすね。
あまり美しさを感じない仕様だけど、まあこんなもんか。
ていうかいちいちオープンしなきゃならんのはちょっとだけ面倒。
ありがとうございました。
PHPプログラムのチューニング、またはプロファイラについて説明したページありませんか?
>>724 phpではそういう形式で開くようになってる
perlは違う
>>724 探し方が足らんな。
CLI版なら標準入力を表す定数があるし、
いちいちオープンしなくても入出力できる。
htmlに出力するところで echo "<p class=\"2ch\"><? include 'inc/giko.inc'; ?></p></div>"; とやると<? include 'inc/giko.inc'; ?>の部分がそのままでてきてしまいます。 これを出力するにはどうしたらいいでしょうか? ?>で一旦閉じる方法も考えましたが、それだとincludeが全部出力されてしまいちょっと都合が悪いのです。
ダブルクオートの中で命令が使えるわけ無いだろう。 もし使えたら予約語の文字列を全て把握しなければならない上、 びくびくしながらプログラムを組まなければならなくなる。
>>728 現在の状況と期待する内容が良く分からんが、
giko.incをphpスクリプトとして実行したいってことなら、
giko.incが <?php 〜 ?>の形式になってないだけじゃないの?
include()の説明を良く見てみ。
731 :
728 :04/08/21 14:44 ID:???
>>729-730 giko.incはhtmlがそのまま入っています。
htmlでメニューだけincludeして使っていたので(使い方間違ってるかもしれませんが)、それをプログラム中のhtml出力にも使いたい訳です。
現在の状況は
echo "<p class=\"2ch\"><? include 'inc/giko.inc'; ?></p></div>";
html出力
<p class="2ch"><? include 'inc/giko.inc'; ?></p></div>
と表示されるのを
期待している出力
<p class="2ch">(;゚Д゚)</p></div>
((;゚Д゚)=inc/giko.inc内テキスト)
としたいわけです。
<? echo "<p class=\"2ch\">"; include 'inc/giko.inc'; echo "</p></div>"; ?> これで確実にOKと思う
733 :
728 :04/08/21 14:55 ID:???
>>732 おお、いけました。ありがとうございました。
ファイルのCRC16取得したいんですが、うまくいきません。
http://jp.php.net/crc32 にあるcrc16用の関数を用いて、
function fcrc16($file){
if(!$fp = fopen($file, 'r')){
return 0xffff;
}
// メモリが足りないかも。
$buf = fread($fp, filesize($file));
$crc = crc16($buf);
fclose($fp);
return $crc;
}
としてやったのですが、うまく計算できませんでした。
どのようにすればうまく計算できるでしょうか?
>>727 教えてくれ。
今、コマンドラインで使うスクリプト書いてるが、stderrに吐くのを簡単にしたい。
>>736 php -r 'fputs(STDERR," イ ヤ だ ! ! !");'
739 :
734 :04/08/21 17:00 ID:???
>>738 エラー内容くらい書いたら?
STDIN, STDOUT, STDERR という定数は PHP 4.3.0 以降の CLI 版の PHP で使用可能。
>>738 は CGI 版の PHP で実行していると予想してみる。
php -v で確認してみれば分かる。
どうしても CGI 版とか PHP 4.2.x 以下の環境でその定数を使いたければ、スクリプト
の最初で以下のように設定してしまうという方法もあるみたいだけど。
if (!defined('STDERR')) {
define('STDERR', fopen("php://stderr", "r"));
register_shutdown_function(create_function('', 'fclose(STDERR); return true;');
}
詳しくは以下のあたりを参照。
http://jp.php.net/manual/ja/features.commandline.php#22356 >>739 単純に 16進数変換をしていないだけだったりしない?
$crc = crc16($buf);
printf("%04X\n", $crc);
>>740 function crc16($string){
$crc = 0xFFFF;
for($x=0; $x<strlen($string); $x++){
$crc = $crc ^ ord($string[$x]);
for($y=0; $y<8; $y++){
if(($crc & 0x0001) == 0x0001){
$crc = (($crc >> 1) ^ 0x8408);
}
else{
$crc = $crc >> 1;
}
}
}
return $crc;
}
これでどうよ
742 :
741 :04/08/21 17:57 ID:???
743 :
734 :04/08/21 17:59 ID:???
>>740 違いますね。。別で取得した値と
fcrc($file) == 0xBD9A
とかして、比較して検証しているんですが、結果異なっていますし。
>>742 一瞬氏ねに見えた
ごめんと言いつつ頃す姿を想像してしまった
>>743 ABCDEFGHをCRC16したときの期待する結果は何?
746 :
nobodyさん :04/08/21 19:21 ID:Ro1xuyZQ
オブジェクトの練習中です。 PEARをつかってます。DAOの部分はDBになるんでしょうか? userDAOはDBを継承してソメッドをしこしこ書けばよいのでしょうか?
Java 厨 ( ´,_ゝ`) まぁ PHP-Java は相互補完できるとこ多いけど。 誰かに PEAR コードの歩き方習うか試行錯誤で身につけろ。 ググれ、英語嫁、ダンプ取れ、コード読め、PHPDoc 嫁 それがイヤならマニュアルの整備されたパッケージ以外使わない方がいい。 DataObject ならマニュアル嫁。
748 :
734 :04/08/21 21:30 ID:???
>>748 いろいろ目を通したけど1つも見当たらなかったです。
というよりかそのCRCコードはファイルデータ以外に
ファイルサイズなども入っているとか…
# っつーかなんか面白いものつくりてー
# N-GRAM全文検索でもつくろっかな
751 :
736 :04/08/22 02:06 ID:???
>>740 おおっ、すばらしい。さんくす。
そうか、マニュアルのこんなところに載ってあったのか。
予想と違うところに書かれてあると、見つけられんわ。修行してくる。
お前ら口だけだな
753 :
nobodyさん :04/08/22 03:56 ID:97mKEXwz
リファレンスでわからないこと教えてください。
>>349 とかマニュアルとか読んだ。
・ポインタとリファレンスが違うのはわかった。
・ $a =& で、変数もオブジェクトもリファレンスできるのもわかった。
・ function foo(&$var) の渡し方と返り方もわかった。
けど、結局わからなかったこと。
function定義の時の
<?php
function &foo(){
の関数名の最初の&ってどういう時に必要?
あと、
ttp://mylog.ishinao.net/id/117 の人はなんか偏執狂に見えるのは間違いか?
>>753 なくてもプログラムは動くっぽいけど、
PHPマニュアル > II. 言語リファレンス > 14章リファレンスの説明
には以下のようなことが書かれている。
注意: パラメータを渡す場合と異なり、ここでは、
通常のようにコピーではな くリファレンスで返り値
を指定し、リファレンス結合を指定するために
両方の場所で&を使用する必要があります。
$fooについて行われたのは、通常の代入ではありま せん。
ここの人はperlから来たてでイライラしてただけじゃない?
>>753 以下のスクリプトで違いが分かるかもしれない。
<?php
function foo1() { static $a = 1; return $a; }
function &foo2() { static $a = 1; return $a; }
$foo1 =& foo1();
$foo2 =& foo2();
var_dump($foo1);
var_dump($foo2);
$foo1 = 2;
$foo2 = 2;
$foo1 =& foo1();
$foo2 =& foo2();
var_dump($foo1);
var_dump($foo2);
?>
多分、関数の前に & を付けると関数からの返り値には関数内の変数の
リファレンスが返ってくるということだろう。
よく分からなかったらあまり使わない方が安全かもしれないけど。
756 :
755 :04/08/22 11:21 ID:???
php+IISの環境にNamazuをインスコしたいのですが どうやったらいいのでしょうか。
こんにちは height = 200+100 (と入ってると仮定して) <input type="text" name="height" size="10" value="" /> これでPOSTして $height = $_POST['height']; echo $height; //ここが200になる。 のですが、これを300 200+100した値が取れるように出来ないものでしょうか? POSTのFORMで200/2 や200*2などをやりたいのですが。 よろしくお願いします。
('A`)
760 :
753 :04/08/22 13:26 ID:97mKEXwz
>>754-756 レスthx.
実は、
http://jp2.php.net/manual/ja/language.references.return.php ココのマヌアルページが理解できなくて......onz
>>755 >> 多分、関数の前に & を付けると関数からの返り値には関数内の変数の
>> リファレンスが返ってくるということだろう。
あぁ、function &foo(){...... return($a); }と $hoge =& foo();と両方とも "&" を
つけた場合にのみ、function foo()の返り値の$aのリファレンスが$hogeにおさめられると。
それ以外の、
・function foo(){...... return($a); }; で定義して $hoge =& foo(); でコール
・function &foo(){...... return($a); }; で定義して $hoge = foo(); でコール
だと、普通に$aが$hogeにおさめられる仕様になるわけですね。
これで、すこし━━━(゚∀゚)━━━━ッ!!って感じだったけど、
>>755 でいただいたサンプルスクリプトを実行して???になりました。
最後のvar_dump($foo2)がなんで、int(2)になるんですか?..... onz
function foo2()の返り値$aのリファレンスが返ってくるということは、・・・・$aの実体はなんですか?
static $a = 1;だから、$a の実体は、int(1)じゃないんですか?なんで、int(2)がかえってくるんだろう?
function内のリファレンスを理解できてないな。
# $aはstaticというのは、function foo1とfoo2の$aは自分が呼ばれた記憶を$aに保持していると
# いうことで理解しているんですが合ってますか?それは、function内のリファレンスとは関係ない?
761 :
755 :04/08/22 14:12 ID:???
>>760 static については、マニュアルを参照。
ttp://jp.php.net/manual/ja/language.variables.scope.php 最後の var_dump($foo2) が int(2) になるのは、9行目の $foo2 = 2; を実行したから。
これは、foo2() の中の static $a で定義した $a を変更したのと同じ。
つまり、言いたかったことは、
3行目の $foo1 =& foo1(); で取得した $foo1 は foo1() の static で定義された $a のリファレンスではないけど、
4行目の $foo2 =& foo2(); で取得した $foo2 は foo2() の static で定義された $a のリファレンスということ。
static の変数が単なる変数ではあまり大したことはできないけど、この形でクラスや配列を扱うよう
になると便利さがわかるようになるかもしれない。
PHP のソースを読んで確認した訳でもないのでもしかしたら間違っているかもしれないけど。
762 :
nobodyさん :04/08/22 15:48 ID:E2HwDzLs
MySQLのphpmyadminでOverload ってのがありますが、 これって負荷と同義で考えて問題ナッシングでしょうか?
763 :
753 :04/08/22 16:11 ID:97mKEXwz
>>760 あぁ。理解できました。ありがとうございます。
自分的には、こうしたらわかりやすかったです。
<?php
function foo1(){static $a = 1;return $a;}
function &foo2() { static $a = 1; return $a; }
$foo1 =& foo1();
$foo2 =& foo2();
var_dump($foo1);
var_dump($foo2);
$foo1 = 2;
$foo2 = 8;
$foo1 =& foo1();
$foo2_2 =& foo2();
var_dump($foo1);
var_dump($foo2_2);
?>
$foo2 =& foo2(); で、function foo2 の返り値へのリファレンスを作って
$foo2 = 8; で、function foo2 の返り値に8を入れる。リファレンスなので、function内の$aに影響して$a = 8;
static $a; と、foo2()で定義してるので、そのあとに
$foo2_2 =& foo2(); で呼ばれた時にも$a = 8;が有効なので $foo2_2 には8が入る。
最後の $foo2_2 =& foo2(); は、$foo2_2 = foo2(); でも同じ結果ですね。
リファレンスを得るか値を作るかが違うだけで。
764 :
753 :04/08/22 16:21 ID:97mKEXwz
あと、
http://jp2.php.net/manual/ja/language.references.return.php が理解できなかった原因として、下記のサンプルコードがあるんですが、
<?php
function &find_var ($param) {
� ...コード...
� return $found_var;
}
$foo =& find_var ($bar);
$foo->x = 2;
?>
このfunction find_var()は$found_varを返していますが、
これは次の
$foo->x = 2;
とあることから、....コード....で、作られたオブジェクトと考えていいのでしょうか。
「リファレンスを使う最大の目的はインスタンスの複製を行わないでメモリ消費を抑える」
ということから、あえて自明として....コード....の部分でオブジェクトを作ってると
マニュアルには記述してないのかなと思いますが。
合ってる?
それとも、「->」ってインスタンスのメンバにアクセスする以外の使い方で用いてるのかな?
766 :
755 :04/08/22 17:50 ID:???
>>764 確かに分かりにくいコードだね。そこのマニュアルには、
「この例では、関数find_varにより返されたオブジェクトのプロパティが、設定されます。」
と書かれているので、find_var() はオブジェクトを返すのは間違いないと思うけど。
とりあえず、無理矢理サンプルを考えてみた。
static 変数を使わなくても global 変数でも同じ様にできるということで。
class Foo { }
$bar =& new Foo;
$bar->x = 1;
function &find_var($param) {
$found_var = null;
if (isset($GLOBALS[$param])) {
$found_var =& $GLOBALS[$param];
}
return $found_var;
}
function test1() { $foo =& find_var('bar'); $foo->y = 3; }
function test2() { $foo =& find_var('bar'); $foo->z = 2; }
test1();
test2();
$foo =& find_var('bar');
var_dump($foo);
サイトに会員制の部分をつくりたいのですが、パスワードをセッション 変数として保持しながらページを作成していくと、javascriptの history.back()を使用してページを戻るときに「有効期限切れ」と なってしまいます。 フォーム入力確認で戻る必要があるのですが、どういった方法で 会員制にするのがよいのでしょうか?
↑は無視してください。 すいません。セッションのスレで聞きなおします。
769 :
nobodyさん :04/08/22 19:52 ID:a2aIDnS/
phpinfo.phpをIEで開くとファイルのダウンロードが起動します。 どうして見れないのでしょうか? 設定の段階で何か失敗しているのでしょうか? 助けてください。
>>769 お前が何をどうやったかわかるエスパーがいると思うか?
771 :
769 :04/08/22 20:03 ID:a2aIDnS/
どのように説明すればいいでしょうか?
>>769 1)PHPをインストールしていない
2)webサーバの設定をしていない
「インストールってどうやるんですか」とか「設定ってどうやるんですか」なんて聞くなよ
773 :
769 :04/08/22 20:21 ID:a2aIDnS/
PHPのインストール、サーバーの設定(Apache)も本を見ながら行いました。
>>773 たぶんhttpd.confの問題
一応訊いておくがApacheが起動してなかったりしないよな?
だからその設定やインストールの仕方も一緒に書かないとどうなってるのかわかんないだろ
もうほっとけよ
スレ違いはスルーしろや 夏になると教えたがり厨も増えて困る
778 :
nobodyさん :04/08/22 21:17 ID:dLrjNlop
Nucleusの設置でYour PHP version does not have support for MySQL と表示されるんですけどどのバージョンなら動きますか? ちなみに今は、「php-4.2.3-0vl5」です
>>778 どのバージョンなら動くってよりも、
どのバージョンだから
Your PHP version does not have support for MySQL
ってでたのか書いた方がよくないんか?
しかもphpが究極にふるいけど。DBはいくつだ?
ちなみにうちは PHP4.3.4〜4.3.8 MySql 4.0.2 でNucleus3.0は動いてたよ。
>>780 前に、WIN板だけど、
自分で試すともしものリスクがあるから、イヤダってやついたからな。
。。さすがだと思ったけど
783 :
nobodyさん :04/08/22 21:35 ID:yiZXjncr
PHPのビルドってどのくらい時間かかりますか?
自分でタメセヨ
漏れのばあい疲れてると5分、調子いいと15分、締まり具合によるけどな。
786 :
nobodyさん :04/08/22 22:52 ID:yiZXjncr
>>784 自分で試したいのは山々なんですが、devenv5個起動してて、
さすがに無理そうです。
1分ですもうと1週間かかろうと必要ならやらんとイカンだろ。 とりあえずやってみ。
788 :
734 :04/08/23 01:24 ID:???
PHP勉強しようと思い先ほど始めました マニュアル読んできますー これからお世話になるかもしれませんので、 おyろしく
790 :
nobodyさん :04/08/23 04:04 ID:Cbp61B7f
eregで複数マッチした場合、配列[0]には何が入るのでしょうか?? 基本的なことで申し訳ありません_(..)_
試しました。申し訳ありません。 マッチしたうちの最も大きな文字列が入るという噂もあったんで迷っていたんですが、 そうじゃないみたいですね。ありがとうございました。
793 :
nobodyさん :04/08/23 11:20 ID:mw0a3S3I
アホアホな質問でもスミマセヌ PHP 内でタグを記述する時に <br /> 見たいな感じで、">" の出前に "/" が付与されてる事が あるんですが、これの意味って何なのでしょうか・・・?
794 :
793 :04/08/23 11:22 ID:mw0a3S3I
もしHTMLの話であれば、完全なスレ違いだと思いますんで 自分で調べられそうなサイトだけでもご教授くださいマセ orz
>> 793 XHTML 入門 でぐぐってみそ。
XML
>>790 print_r
という関数を使えば配列を全て表示できるよ
デバッグ用に使ってね
799 :
nobodyさん :04/08/23 18:42 ID:OxTNe7cI
pear落ちてるぞ。
お前だけな
Linuxの共有鯖を借りて、Win環境で製作したPHPの サイトを作ろうと思ってるんですが 何か気をつけた方が良いことってありますか?
802 :
nobodyさん :04/08/23 22:33 ID:YOffYGPl
PHPの日本語chmはいつになったら文字化けが治るんですか(`Д´) 2003年4月頃のをいまだに使用しております(`Д´)
GETとPOST何が違うんだろ
804 :
nobodyさん :04/08/23 23:00 ID:ozJ0+2Je
特に文字化けしてないけど… どのページ?
805 :
nobodyさん :04/08/23 23:06 ID:ozJ0+2Je
>>801 ずばり、文字コード。EUCとShift-JISね。
あと細かなところでは、ファイルのパスとか(「\」じゃなくて「/」を使ってるよね?)。
あとはファイル名の大文字小文字を区別うんぬんとか。つまりOS依存の部分ね。
>>803 そう思った理由を書いてみないと。
同じなら、GETの方が文字数少ないしネットにやさしいかなって。 1文字しか違わないけど、ちょっと思いました。
>>807 さん詳しそうですね。
もっといろいろ知りたいのですが、質問してもいいでしょうか?
うっ、プロと見た!
>>808 答えられる範囲なら。
眠いからもう寝るかも。
今、HTTPサーバ作ってるんですけど、pukiwikiがうまく動かないんです。 phpinfo()も、ロゴが表示されません。 たぶん、CGIの子プロセス側に与える変数が不足してるような気がするんだけど、 最低限必要な変数の一覧ってどこかに無いですか? CGI/1.1Specは全く不十分でした。 そもそも変数をどうやって渡すかといった規定すらなく、 色々試してみるしか有りませんでした。
それとも、PHPはCGIで起動すると機能制限があるのかな?
在るわけない SafeModeはmod_phpのみ
>>811 PHPのバージョンが古いんだよ。でバージョンは?
そうですか・・・ PHP Test Suiteとかないかなぁ?
バージョンは、PHP Version 4.3.8です。 System Windows NT XP1 5.1 build 2600 Build Date Jul 13 2004 17:31:56 Server API CGI/FastCGI Virtual Directory Support enabled PHP API 20020918 PHP Extension 20020429 Zend Extension 20021010 Debug Build no Thread Safety enabled Registered PHP Streams php, http, ftp, compress.zlib こんなの。
817 :
nobodyさん :04/08/23 23:51 ID:YOffYGPl
あるぇー? 化けてないよ?
化けてたw
漏れは化けてないよ?どのページ?
キーワードのとこ。
SJISで化けるだけだろ UTF-8にしろ
823 :
nobodyさん :04/08/23 23:59 ID:YOffYGPl
>>820 chmを開くと左側に検索フレームが出るべ?
[目次][キーワード][検索][お気に入り]ってさ。
そのキーワードが化け化けだっぺさ。
それが原因かしらんが、検索もできないだっぺさ。
とてとて困る(;´Д`)
2003年4月頃はまだ化けてなかったので
そのとき落としたchmを今だに使用しているよ(;´Д`)
なんとかして > 偉い人
化け化けだよ ページは化けてないけどね。使い物にはならないよね
825 :
822 :04/08/24 00:00 ID:???
って、chmだったかスマソ
826 :
nobodyさん :04/08/24 00:00 ID:Q8I08UQN
>>822 > SJISで化けるだけだろ
> UTF-8にしろ
やりから教えてたもられ
Note: The htmlhelp.xsl is currently not too useful alone, as it's used by the new CHM build system which is not available in CVS right now いまいち意味が・・・ 待てって意味なのかな??
その勢いで、CGIのほうもよろしくお願いします。
>>828 うぉぉぉぉおおおお!ありがてー
ずっと困ってたんだよね<文字化け
ていうかこんなの本家でなんとかしる!
833 :
802 :04/08/24 01:19 ID:???
>>828 ありがとう〜
自分も探してみればよかった
でもほんと、本家でなんとかしてほしいですね
>>834 うぉ!こんな便利なのがあったのかー。
さんきぅ
超初心者です。お手柔らかに。。
test.php内で
<?php include($content); ?>
と記述して
http://xxxx.com/test/test.php?content= "content.htm"
としてtest.phpにcontent.htmをインクルードしようとしているのですが、
エラーがでるので何かトンチンカンな間違いをしてるはずです。。
目的として、フレームレスのページを作りたくて、アドレスで変数を書き換えて
メインコンテンツの表示を分岐させたいのです。
どうすれば上手くいきますでしょうか?
宜しくお願いいたします!m(_ _)mm(_ _)m
<?php echo file_get_contents($_GET['content']); ?> こんなの?
そこはちゃんとPHP側で禁止処理しないとな
841 :
836 :04/08/24 11:40 ID:???
>837さん ありがとうございます!以下のようにしましたら上手くいきました! これでサイドメニュー付きのフレーム無しページが作れそうです。 [test.php内] <TABLE> <TBODY> <TR> <TD> <?php echo file_get_contents($_GET['content']); ?> </TD> <TD> <a href="test.php?content=content01.htm">コンテンツ1</a><br> <a href="test.php?content=content02.htm">コンテンツ2</a><br> </TD> </TR> </TBODY> </TABLE> >838さん >839さん 以上のようなソースのままではディレクトリを見られる危険性はあるということですね。 PHP側で禁止処理とは具体的にどういったものでしょうか? それとも別な方法で、もっとスマートなやり方があるのでしょうか? 一応はググってみたのですがはっきりとわかりません。 教えて君ですいませんが宜しくお願いいたします。
>>841 index.php?name=うんこ
とか、名前にうんこ入って飛んで来たらいややん、
受け取ったうんこをどうにかしたいよね。
if(ereg("うんこ",$_GET['name'])){$_GET['name']="";}
そこで、名前にうんこが入ったら、名前を空にするとか
>>841 あと、Smartyでぐぐり スマートになるから
>>841 ex)
$content=array('content01'=>'content01.htm','content02'=>'content02.htm');
if(array_key_exists($_GET['content'],$content)){
$view_content=$content[$_GET['content']];
}else{
$view_content='not_found.htm';
}
-snip-
<?php echo file_get_contents($view_content); ?>
-snip-
<a href="test.php?content=content01">コンテンツ1</a><br>
<a href="test.php?content=content02">コンテンツ2</a><br>
-snip-
ShiftJISかEUC…どっちがいいんだろ
俺はEUCで書いてるが
SJISを選ぶメリットなんかあるの? 携帯相手に変換しなくてもいいってぐらいしか思いつかない
>>845 ちゃんと設定していれば同じだろ。
開発環境とか鯖によって使い勝手が違う程度。
エンジン内部はUnicodeだったと思うが。
PHPの内部処理デフォルト文字コードはEUC。 だからEUC推奨。
850 :
848 :04/08/24 18:36 ID:???
851 :
nobodyさん :04/08/24 18:47 ID:JRjosLZb
俺はUTF-8で書いてるんだけどダメ? XHTMLとRSS吐き出させてるから楽なんだけども。。
文字コード議論はループするの巻(´・ω・`)
コーディングはEUC 出力はSJISでやってる
UTF-8でないと表示できない文字とかあるのでUTF-8
厨質問で申し訳ないんだけど、 UTF-8で書くってのは・・・・ どんな設定のことを言うの? まず、ソースの文字コードだよね? あとブラウザに吐き出す header だよね? テンプレートの文字コードだよね? 他には?
なんでもかんでもEUCでいいじゃん 楽だから
なにがいいたい?
858 :
857 :04/08/24 20:38 ID:???
ぜんぶSJISがいいじゃん
fsockopen を使ってpopと会話する様なコードを作成してるのですが fgetsで取得毎に mb_convert_encoding($buffer, "EUC", "JIS") という処理をかませているけども ヘッダの Subject 部分がどうしても普通の日本語表記になってくれないんです... Subject: =?iso-2022-jp?B?SVRTUxskQkw1TkE/R0NHJTUhPCVTJTkkTiQ0MEZGYhsoQg==?= ↑こんな感じで 本文及びHTML全体の日本語部分は正常に変換・表示できているのに ヘッダのこの部分だけなんとも出来ない状態です もしかして、これは仕様でしょうか? それとも、変換処理がまだなにか足りないのでしょうか? どうか神のご加護を
とりあえず
>>845 は絶妙なタイミングで定番のエサを撒くフィッシャー
とりあえず
>>863 は絶妙なタイミングで定番のスレの流れを止める馬鹿
>>857 実際にUTF-8で運用するってなったら、
ソースの文字コードだけでなく、色々設定必要だよね?
ってか普通はコーディングのみUTF-8でやるってことなの?
(で、出力はSJISとか)
ってことはEUCで書いたコードを全部文字コード変換でUTF-8に変換すればいいってわけ?
866 :
Tom :04/08/24 21:19 ID:l95C3MHe
PHP初心者です。現在、move_uploaded_file を使って画像ファイルを ウェブ上のimageフォルダにアップロードするページを作っています。 しかしimageフォルダにファイルを移すためには、このフォルダの パーミッションをゆるくしなくてはならず(一応テストでは777に してます。。。)、セキュリティ面でちょっと心配なのですが、 皆さんはこのようなケースではどのように対策されているのでしょうか? imageフォルダには一応、トップページにリダイレクトするindex.php を入れていますが、他にも何かできること、対策がありましたら 是非ご教授いただけると幸いです。 よろしくお願いします!
>>851 RSSって何を使って生成してますか?
PearのXML_RSS?
>>866 “PHP(mod_phpならApache)がアクセスできるセキュリティ設定”ってことでいいのでは?
870 :
nobodyさん :04/08/24 21:43 ID:BjXF/ulZ
>>866 わたしは特に気にしてませんね。
だってプロバイダとかが提供してるスペースにCGIおく場合も
パーミッション777とか755とかがデフォルトだし
871 :
nobodyさん :04/08/24 21:47 ID:G+Zi/Jg+
あ、XML_RSSってRSSを作ることはできないのか・・・
873 :
nobodyさん :04/08/24 22:05 ID:gv2tQqB7
新規質問です。 phpでxml宣言(<?xml〜?>)を出力したいときはecho以外にどんな方法があるでしょう? 教えて下さい凄い人。
874 :
nobodyさん :04/08/24 22:07 ID:k28OQysD
>>873 php.ini で short_open_tag = Off
これを設定すると <? だけでなくて、<?= の形式も使えなくなるので注意が必要。
876 :
nobodyさん :04/08/24 22:58 ID:9mq/YpZu
いや、受け取れるから
>>878 ああそういうことか。
&を何か別のセパレータに変えてGETで渡して
もらったところで、$_GET['url']を先ほどのセパレータで分割
とか?
素直にurlencodeかrawurlencodeしてみては?
$_SERVER["QUERY_STRING"]から抜き出すしかないだろ。
882 :
879 :04/08/24 23:20 ID:???
あ、ただ受け取るだけか。
http://google (ryの中の&を\tにでも変える。
んで、GETで渡す。
もらった奴の\tを&にもどす
つーのでいいのでは?
普通に受け取れてる漏れは?
>>874 CLI版では流石に無効な罠……
俺strtrで置換させちまった
887 :
876 :04/08/25 00:25 ID:N00bMw4b
ありがとうございます。 $_SERVER['QUERY_STRING']で解決できました。 もう一つ、恥ずかしいのですが、"url="以下を取り出す際、 $URL = $_SERVER['QUERY_STRING']; $URL = strstr($URL,"url="); $length = strlen($URL); $URL = substr($URL,4,$length); としています。 なんか不恰好な気がするのですが、もう少しスマートなアイデアありませんか?
888 :
873 :04/08/25 00:37 ID:2ASjXTcy
>>887 $URL = $_SERVER['QUERY_STRING'];
$URL = substr($URL, strpos($URL,"url=")+4);
とか
preg_matchとか。
890 :
nobodyさん :04/08/25 00:59 ID:hWDzpod0
>>887 おれならこうする。
$URL=preg_replace("/^url=/,"",$_SERVER['QUERY_STRING']);
>>887 ていうか
$length = strlen($URL);
は何がしたいんだ?
>>890 発想がちょうど逆だったw
preg_replace('/url=(.*)$/','$1',$_SERVER['QUERY_STRING']);
893 :
876 :
04/08/25 01:12 ID:N00bMw4b 再度感謝です。
もやもやがすっきりしました。よく眠れそうです。
>>891 長さを指定しなきゃいけないもんだと思い込んでました。
ありがとうございました。