【PHP】下らねぇ質問はここに書き込みやがれ 40
1 :
1様 :
2007/02/22(木) 22:37:41 ID:???
2 :
1様 :2007/02/22(木) 22:39:19 ID:???
3 :
1様 :2007/02/22(木) 22:40:36 ID:???
4 :
1様 :2007/02/22(木) 22:41:41 ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
→1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
→
http://example.com/が例文などのために予約されている 。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
→ Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
→ cronかタスクスケジューラを使え。
7.extractって危険なの?
→変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
→ .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
5 :
1様 :2007/02/22(木) 22:43:03 ID:???
10. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
→ よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40 15. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
→ C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(
http:// 〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
→19.を参照
21. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
→ 好きにしてください
乙鰈
7 :
nobodyさん :2007/02/22(木) 22:54:32 ID:DRqW6V/h
PHPで画像にExif情報って書き込めますか? Exifじゃなくてもコメントみたいなのを書き込められればいいんですが。
8 :
nobodyさん :2007/02/23(金) 00:24:55 ID:kn9G5EQ+
table hoge seq type 1 a 1 b 2 b 3 a 3 a 4 a MySQLと絡めた質問なのですが、上のようなデータが格納されていたとき、 GROUPした後のseqの数(上の場合だと4)を取得したいのですが、どのようにすればいいでしょうか? SELECT COUNT(*) FROM `hoge` WHERE `type`='a' GROUP BY `seq` これではできませんでした。 このクエリをcountした数を現在は取得しています
UTF-8だとたまにメールが文字化けします。 なぜでしょうか?
11 :
nobodyさん :2007/02/23(金) 00:35:50 ID:awTHtUaF
初代PHP質問スレの過去ログURL教えてください。 昔の人がどんなことで悩んでいたのか勉強したいんです。 よろしくおねがいします。
>>9 はネタなのでスルーおながいします。
IDださないで質問する態度は釣りにしかみえない。
13 :
nobodyさん :2007/02/23(金) 00:53:31 ID:DxH8hg7x
>>前972 >見た目に関するロジックは全部Smarty側でやってる。 >(htmlspecialcharsみたいなエスケープとかは除く) そういう表示にのみ関係する処理こそSmartyで。 {$foo|escape:"html"}
現在、 $a = "aaa\n"; $a .= "bbb\n"; $a .= "ccc\n"; の様な記述で、変数に複数行を代入しています。 質問なのですが、Perlの $a=<<"EOB"; aaaa bbbb ccc ddd EOB の様に、変数に複数行を一度に代入する方法はありませんか?
15 :
14 :2007/02/23(金) 00:58:21 ID:???
自己解決しました。
16 :
nobodyさん :2007/02/23(金) 00:59:40 ID:mvdvT2ju
$s_id = "guest"; $s_pw = "guest"; この状態で SELECT * FROM account WHERE id='$s_id', pass='$s_pw' を実行すると You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' pass='guest'' at line 1 というエラーが発生します。 idもguestもあるのになぜこのようなエラーが出てしまうのでしょうか?
17 :
16 :2007/02/23(金) 01:00:50 ID:mvdvT2ju
追記です。 PHP 5.1.4 MySQL 5.0 WindowsXP
exciteで訳せ
20 :
nobodyさん :2007/02/23(金) 01:16:57 ID:mvdvT2ju
合っていると思うのですが・・・ バグですかね?
phpファイルの1行目にミスがあるだけだろw
22 :
nobodyさん :2007/02/23(金) 01:41:55 ID:mvdvT2ju
' pass='guest'' at line 1 ↑なぜシングル?
$s_id = "guest"; $s_pw = "guest"; こう書いてないで $s_id = "guest"; $s_pw = 'guest"; ←こうやってないか?
25 :
nobodyさん :2007/02/23(金) 01:46:01 ID:mvdvT2ju
>>23 $sql = "SELECT * FROM account WHERE id='$s_id', pass='$s_pw'";
だからです
26 :
nobodyさん :2007/02/23(金) 01:48:46 ID:mvdvT2ju
$dbHost = "localhost"; $dbUser = "root"; $dbPass = "root"; $dbName = "name"; function Do_MySQL($sql){ global $dbHost,$dbUser,$dbPass,$dbName; $dbHandle = mysql_connect($dbHost,$dbUser,$dbPass); if ($dbHandle == False) { print ("#can not connect db\n"); exit; } $dbLocate = mysql_select_db($dbName); if ($dbLocate == False) { print ("#can not connect db2\n"); exit; } $result = mysql_query($sql); echo mysql_error(); ←ここでエラーを吐き出しています。 mysql_close($dbHandle); return $result; } $s_id = "guest"; $s_pw = "guest"; $result = Do_MySQL("SELECT * FROM account WHERE id='$s_id', pass='$s_pw'"); 正確にはこのように実行しています。
27 :
nobodyさん :2007/02/23(金) 01:49:22 ID:mvdvT2ju
SELECT * FROM account だけでやったらどうなる?
つーかさ WHERE id='$s_id' AND pass='$s_pw'
SELECT * FROM account WHERE id='$s_id' AND pass='$s_pw' カンマとかふざけてるのかと
>>26 $dbHost = "localhost";
$dbUser = "root";
$dbPass = "root";
$dbName = "name";
ここらへんは普通定数にしないか?
そしたらglobalなんてやる必要もないし。
普通は定数にすべきじゃないけどな
全部引数でいいよもう
PHPの勉強に簡単な掲示板のプログラムを作っています。 mysql> CREATE TABLE KIJI( -> id MEDIUMINT NOT NULL AUTO_INCREMENT, -> name VARCHAR(50), -> mail VARCHAR(50), -> naiyou VARCHAR(50), -> PRIMARY KEY(id)); この様なテーブルがあって、ここから記事一覧を取得しようとしているのですが、 Fatal error: Call to a member function query() on a non-object in C:\Program Files\xampp\htdocs\sample_bbs\bbs.php on line 14 となってしまいます。 何かアドバイスいただけませんか? --ソース抜粋-- $sql = <<<EOS select id,namae,mail,naiyou from kiji EOS; //クエリ実行 $result = $con->query($sql);//ここが14行目 --ここまで-- 環境:WindowsXP,XAMPP最新版
ドンマイ
37 :
35 :2007/02/23(金) 08:55:48 ID:AmbF/Hk9
どうやらコネクション周りに問題があるようです。PEAR接続とmysql_connect接続とが混同されているのが問題みたいです。勉強してきます。
38 :
虚弱PHP :2007/02/23(金) 09:18:26 ID:???
>>13 そういうのサニタイズ脳だと思うんだ。
いや、別にdefault_modifiers使ってもいいんだけど、
オレオレフレームワークの思想で、
ViewオブジェクトでSmartyアサイン直前にやってるの。
>>39 インスタンス化されているけど、
コンストラクタがデフォルトになっているんじゃないか?
>>9 メール処理じゃないけど、UTF-8とUTF-8Nの違いを知らなくて、どえらい悪戦苦闘したことがありました。
それ以来、PHPのスクリプトファイルは、UTF-8Nで保存するように意識しています。
UTFの「BOM」が邪魔してるって可能性は?
43 :
42 :2007/02/23(金) 12:55:11 ID:???
>>26 あれ?URLが違ってた。
http://www.php.net/manual/ja/function.mysql-query.php#70686 function mysql_prepare ($query, $phs = array())を以下のように使います。
$s_id = "guest";
$s_pw = "guest";
$sql = "SELECT * FROM account WHERE id = ? AND pass = ?";
$phs = array($s_id, $s_pw);
$sql_prepare = mysql_prepare($sql, $phs);
$result = Do_MySQL($sql_prepare);
>>38 出力するデータをどこでエスケープするか?
Smartyに渡す直前の段階でエスケープした値を、Smartyに渡すのが良いと思う。
テンプレートファイルに処理(ロジック)が乗っかっているのは、保守性が中途半端になりそうな予感。
テンプレートファイルは、DreamweaverでデザインをいじることだけできればOK
mysqlでdeleteするときにjoinってできないんですか?
46 :
虚弱PHP :2007/02/23(金) 14:51:30 ID:???
>>45 そういえばdeleteでjoinやったことないなぁ。
where句で繋げばいいんじゃない?
MySQLにはFKがないからDELETEのJOINはないんじゃない?
48 :
nobodyさん :2007/02/23(金) 15:19:41 ID:X1ZVe2VS
質問です。 複数の画像をアップロードするコードを書いたのですが、 長辺が1500px超える画像をアップするとうまく動きません。 photoshopで1600*1200の真っ白なファイル(76kb)をアップロードするとエラーになり、デジカメで撮影した1280*960の画像(250kb)をアップロードすると、普通にアップできます。 GDを使ってリサイズする処理が途中に入るのですが、その辺が原因でしょうか? レンタルサーバでphp.iniでmemory_limitを16Mにしています。 よろしくお願いします。
>>48 GDで画像処理はかなりメモリ食うからそうかもね
1600*1200だと32ビットカラーにしても8Mバイトになるからね
memory_limitあげたらいいんじゃないの
51 :
nobodyさん :2007/02/23(金) 15:50:25 ID:ynqfDxVO
メールを配信するとき UTF8からISO-2202-JPに変換する場合はmb_convert_encoding で行うと変換できない文字でメールが切れてしまうのですが 日本語のメールを配信する場合、mb_convert_encodingを使って 変換するのが一般的なのでしょうか? なにかよいライブラリがありましたら紹介していただけないでしょうか?
52 :
nobodyさん :2007/02/23(金) 15:55:18 ID:qX2geE0Z
age
>>47 JOINしたテーブルの値を条件としたDELETEとか出来ますよ。
JOIN先のテーブルの値は無理だけど、
適宜CASCADEとかでリレーション貼っておけば一緒に消えますね。
>>53 どうやればいいんですか?
select * from table1 natural join table2 where table2.id = 10
でヒットするレコードを消すために
delete from table1 natural join table2 where table2.id = 10
と実行してみたのですが構文エラーが出て消せないんですよ
left joinでも同じですね
マニュアル読んだけどやっぱりInnoDBでFKつけないと無理じゃん。 delete join なんて聞いたことないしな。
59 :
虚弱PHP :2007/02/23(金) 19:01:40 ID:???
delete from table1, table2 where table2.id=10 and table1.id=table2.id; みたいな感じで行けないの?
60 :
nobodyさん :2007/02/23(金) 20:20:02 ID:mvdvT2ju
携帯の固有IDを取得する方法とかないですか? モバゲーのように自動的にログインさせたいのですが、 何か方法などはないのでしょうか・・・。
62 :
nobodyさん :2007/02/23(金) 20:37:34 ID:mvdvT2ju
for($_SERVER as $key => $value){ echo "[".$key."] = ".$value."<br>\n"; } これで一気に書き出せると思ったが無理だったorz
forじゃ無理だろうそりゃ
var_dump($_SERVER); とか言って見るテスト
66 :
nobodyさん :2007/02/23(金) 21:03:50 ID:mvdvT2ju
foreachと間違えてたwwwサーセンwwww 携帯でアクセスして、foreachでまわしたときは、 [HTTP_X_UP_SUMBO] = 携帯固定ID が表示されたのですが、 直接 echo $_SERVER['HTTP_X_UP_SUMBO']; だとページが表示されないのはなぜなのでしょうか・・・?
>>66 スレ違い
ここは初心者が集まる全員初心者スレだ
HTTP_X_UP_SUBNOじゃないかね
70 :
66 :2007/02/23(金) 21:42:15 ID:mvdvT2ju
>>67 俺も実務経験なしの初心者です
>>68 echo $_SERVER['HTTP_X_UP_SUBNO'];
にすると、「リクエストされたページは表示できません。」と出ます。
>>69 ソースは
<?
echo $_SERVER['HTTP_X_UP_SUBNO'];
?>
だけです。
<? var_dump($_SERVER); echo $_SERVER['HTTP_X_UP_SUBNO']; ?> してみ?
72 :
nobodyさん :2007/02/23(金) 21:48:45 ID:mvdvT2ju
>>71 var_dumpの45行と、最後のechoの個別IDが表示されました。
$_SERVER['HTTP_X_UP_SUBNO'];を実行するにはそれ以前に何か実行しておかないといけないのでしょうか?
74 :
nobodyさん :2007/02/23(金) 21:53:12 ID:mvdvT2ju
ナゼ携帯でそんなマンドクサイことやっているのか
76 :
nobodyさん :2007/02/23(金) 21:56:34 ID:mvdvT2ju
ちょっと前のレスで、出てた質問について疑問に思ったんだけど、 会員制のWEBでパスワードをスクリプト側で暗号化してDBに保存する のって意味あるの? DBサーバーが乗っ取られても大丈夫ということかもしれないけど、 DBサーバーが乗っ取られたらパスワードが分かろうと分かるまいと、 全てのデータが盗まれるわけだからもう終わりだよね?
passを使い回してる人がいたりするからでね?
DBサーバが乗っ取られるから暗号化するというより システム上誤って(セキュリティの不備とか)パスワードが 盗まれたり漏れた場合に平文のパスワードが漏れるのと 不可逆暗号のパスワードが漏れるのとじゃ全然意味合いが違うっしょ
>>79 管理者であってもユーザのパスを知る必要がないからだろ
もちろん暗号化には単方向アルゴリズムのを使う
>>80-82 あ〜、なるほどね。サンクス。そういう意味か…
大手の企業サイトでも、結構パスワード再送機能で、再度同じパスワードが
送られてくるケースが多いけど、それは逆にそれらを全然考慮していないってことなのかな?
>>84 実装が見える見えないは関係ないだろうが。
パスワード再送が可能ということは、パスワードをハッシュ化してないか、
またが可逆暗号で保存しているということであり、
これは万が一のときに非常に危険である。
普通、サイトごとにパスワードを全部変えているという人は少ない。
だから、ほぼ絶対に復号できない方法、すなわちランダムSalt付きでのハッシュ化がベスト。
ああ、同じパスワードの再発行か ランダムの生成して送っといて変更してもらうっていう手とってるな
銀行のシステムのように第二暗証とかまであったりすると高級感が出てくるよなw
>>87 セキュリティーを強化すれば、利便性が悪化する。要はバランス。
>>85 前にその話題を出したものなんですが
>ランダムSalt付きのハッシュ
これの使い方が良くわかりません。
これは、それぞれのユーザーのパスワードを暗号化するときに、
それぞれ別の文字を与えるということであってますか?
で、その与えた文字はどこに保存すればいいのでしょうか?
DBクラックされたらその文字もわかってしまうと思うのですが
別のところに保存しておくということが必要なんですか?
非可逆保存で済むのはWebのみで閉じた単純なシステムだけでしょ。
91 :
nobodyさん :2007/02/24(土) 00:24:00 ID:SolPpwuf
HTTP_X_UP_SUMBOって検索してもでてこないんですけどなんですか?
日本では使われてないからじゃね?w
HTTP_X_UP_SUBNO
>>90 お前はPHPをweb以外のどんなシステムに使いたいんだ?ww
100字以内で回答せよ。
>>89 ハッシュ化された文字列をばらつかせるために使うから一緒に持ってていい
>>94 共有するのはDBでしょ
なんかここの面子で面白いPHPアプリ作れないかな 実用さとか追求せずに適当な感じで
formにutnつければそれで終わりでしょうに
98 :
nobodyさん :2007/02/24(土) 01:43:49 ID:i51GRfpk
MySQLでテーブルが複数個あるのですが、 これらのテーブルのフィールド名とか型とかを一括して取り出して表示したいんですけど、 なんか便利な関数かライブラリってありますでしょうか? イメージとしては、配列の中身を整形出力するvar_dump()みたいな感じで、 テーブルの構造を整形出力して確かめたいんです。 今のところphpMyAdminを使って一つ一つのテーブルを手動で開いてカラム名とか確認してるので面倒で・・・
mysql_fetch_field()
100 :
nobodyさん :2007/02/24(土) 01:55:20 ID:TWO55K1R
指定した文字が最初に出た以前の文字を取得したいです 例 $sitei = 'C'; $str = 'ABCDEFG'; 指定したCまでの文字 ABC と出力したい
substr( $str, 0, strpos( "C" ) );
substr( $str, 0, strpos( $sitei ) );
103 :
nobodyさん :2007/02/24(土) 02:19:09 ID:/9A/DTQN
FCKEditorを掲示板に組み込むことを考えました。 もちろん、そんなことをすれば、穴だらけになります。 そこで、FCKEditorから受け取った値を正規表現を使って変換することを考えました。 例: <p>→[p] <strong>→[strong] <table width="200" cellspacing="1" cellpadding="1" border="1"> → [table---200---1---1---1] tableタグも正規表現を使えば、上手く表現できそうな感じです。 その後でhtmlspcialcharsすれば、セキュリティ的にも問題ないと思います。 表示するときは、正規表現を使って逆に変換します。 質問は、上記のような事をやっている方・プロジェクトは無いですか? 便利なので、誰かやってそうな気がしますが。
104 :
nobodyさん :2007/02/24(土) 04:12:21 ID:XQwWa3rh
変数に入ってる文字列からファイル名に使えない文字だけを置換したいのですが htmlspecialchars() のように手軽にできるものありますか? 今は str_replace を使って個別に置換してるんですけど $str = str_replace("/", "/", $str);
>>104 ファイル名に使えない文字なんて、
ファイルシステムで変わるし、自分で関数作っちゃうのが早いんじゃないかな。
>今は str_replace を使って個別に置換してるんですけど
個別というと1個ずつおきかえてるのかな?
str_replaceはしらないけど、
preg_replaceなら配列に入れて全部いっぺんに置き換えれるよ。
>>104 ファイル名に2バイトを使うのもいただけない。
ただの例なのかもしれないがエスケープするほうがいいよ
>>106 ファイル名に2バイトなんて普通だろ。
1バイトしか使えないような馬鹿なOSがあるのかw
2バイト文字に神経質すぎだろ、オマエ
108 :
104 :2007/02/24(土) 06:02:24 ID:XQwWa3rh
>>105 対象の文字って結構たくさんあるんですかねぇ
preg_replace や strtr を使ってやってみます
先人が便利な関数作ってくれていないかなぁと
>>106 日本語ファイル名を扱うのでとりあえず
2バイト有りでやってみてます
>>108 Shift JISだと表とかで失敗する
strtrだと1バイト->2バイトの置換は無理
え?
>>107 こういう奴がいると引き継いだ時苦労する。
windowsしか使った事ないんだろ ほっとけよ
113 :
nobodyさん :2007/02/24(土) 07:54:50 ID:xkGH8kMq
おはようございます
>>97 utnつけてるHTMLを読み込まれるだけで良いのでしょうか?
アクセスしたら自動的にログインされた状態にしたいのです
>>113 utnはDoCoMoのFOMAしか対応していない。 ユーザーが「端末情報を送信しますか?」とでるので、いいえと選択したら送信されず、自動ログインはできない。
HTTP_X_UP_SUBNOはauで、携帯本体で「端末情報送信する」に設定してる人のみ。
softbankは知らない。
115 :
nobodyさん :2007/02/24(土) 11:25:55 ID:SolPpwuf
おねがいします。HTTP_X_UP_SUBNOはなんなのか教えてください。
いくら下スレだからといってもgoogleくらい使おうよ
ガタガタうるせーなw
118 :
115 :2007/02/24(土) 11:52:04 ID:???
自己解決しました
119 :
117 :2007/02/24(土) 11:56:52 ID:???
ポルターガイストでした
|ω^)
ってか、なんでいきなりutnとかの話になってるの??
>>97 が突然その話を始めたわけだが。。。
昨日の夜からいる携帯厨だろ HTMLタグ書くようにPHPコード書けば動くと思ってるのかもしれんぞw
php5で以下のコードと結果はあってます? php5って変数から変数への代入って参照渡しじゃなかったっけ? それともオブジェクトのみの話? $a = 100; echo $a."<br>"; $b = $a; echo $b."<br>"; $a = 'a'; echo $a."<br>"; echo $b."<br>"; 100 100 a 100
>>124 マニュアルくらい読もうぜ僕ちん。
ってかPHPがそんな仕様になったらえらいことになりそうだな
>>125 PHP4は値渡し、PHP5は参照渡し
だよ
>>128 まだぜんぜん読んでないが
>$IPcount = "yes";
うーん(^ω^;)
とりあえずもっと抽象度を高めたら? あとyes/noの文字列じゃなくてtrue/falseや1/0使ったら? $flagの意味もわからんけど
131 :
128 :2007/02/24(土) 14:48:41 ID:???
>>129 え、ひょっとしてもうダメッぷり発揮すか?
>>130 抽象度。ってなにy=ー( ゚д゚)・∵.
同一IPでも日付が変わってればカウントしたいので、
とりあえず$flagたててます。
うあ、住人がたでも「?」なコーディングしてるらしい('A`)
細かいところは見なかったことにして Counterというクラス名なのに、カウンター固有のロジックはほとんどクラス外にあるし。 staticなfunctionをまとめてるだけだから、クラスのインスタンスを作る意味ゼロだし。
関数をclass{}で囲っただけじゃねーかw
>>128 カウンタだから、必要なメソッドはカウントアップと
各データ取得だけでよいよ後は隠して
インターフェイスこんな感じで
class Counter
{
var $_logdir = '';
var $_options = '';
function Counter($logdir = './log/', $options = array()) {}
function setLogDirectory() {}
function setOptions() {}
function countUp() {}
function getCountTotal() {}
function getCountToday() {}
function getCountYesterday {}
function getLastAccess() {}
function _write() {}
function _read() {}
}
インデントもいい加減だしコーディングスタイルも統一されてない。 見てて気持ち悪い。
137 :
128 :2007/02/24(土) 15:46:46 ID:???
>>132-133 やっぱ全然オブジェクト指向になりきれてないすか…。
ベタ書きとそう変わらないorz
>>134 ありがとです。
とりあえずその示してくれた型に入れて作り直してみます。
>>135 きっとよくわかってないことの裏返しですorz
やっぱりわかったようでわかってなかったようで…。
ググって、ちょっとしたら作り直します。
>>136 124で変数から変数への代入は値渡し?参照渡し?
125でそんなわけない
126でPHP4は値渡しだよ、PHP5は参照渡しだよ
127でんなわけねーだろボケ
136で意味不明なリンク
やっぱりボケだったようで
>>137 あのね、わかってないんだったらコード書く前に基礎を学んだほうがいいと思うよ
言われたことそのまま取り入れても、なぜそうするのかが分かってないだろ?
そもそも「〜〜」すればオブジェクト指向になるってもんじゃないし。
140 :
nobodyさん :2007/02/24(土) 15:57:31 ID:26WGt2h1
phpでパス関連はdifineでするのが良いでしょか
それともDBの中に入れちゃっても大丈夫かな
保存ディレクトリまでのパスとかURLとか
皆さんどうしてますか?
TABLE1
商品カテゴリ URL パス ページimg (略
事務用品
ttp://ry /usr/html/jimu /user/html/img/jimu
パソコン用品
ttp://ry /usr/html/paso /user/html/img/jimu
TABLE2
商品名 商品カテゴリ
机 事務用品
モニタ パソコン
棚 事務用品
鉛筆 事務用品
結果セットテーブル
商品名 URL パス ページimg (略
机
ttp://jimu/ry /usr/html/jimu /user/html/img/jimu
モニタ t
ttp://paso/ry /usr/html/paso /user/html/img/paso
棚
ttp://jimu/ry /usr/html/jimu /user/html/img/jimu
鉛筆
ttp://jimu/ry /usr/html/jimu /user/html/img/jimu
結果セットを foreachで 表示やら各種処理です。
アドバイスお願いします。
相対パスだけ入れとけば?
あのね、ここは 素人が質問して、 素人が答えるスレ わかってるか?
よく言うと、みんなで助け合おうって事です。
146 :
nobodyさん :2007/02/24(土) 18:04:12 ID:C5SeaRxM
サーバ上の画像ファイルのパーミッションを 変更したいのですがchmod()、ftp_chmod()以外でも可能でしょうか? 環境はwinのPHP5です
>>146 Windowsにパーミッションはありません。 ので、変更は出来ません。 さらにchmod,ftp_chmod以外ではパーミッションの変更はできません。
150 :
nobodyさん :2007/02/24(土) 18:37:48 ID:wnb8mZxA
$var に全角文字が含まれているかどうか、 の判断ってどのようにすればいいでしょうか。
152 :
115 :2007/02/24(土) 19:13:46 ID:???
>>151 strとmbstrの長さと比較する。
USキーボードで認識されちまった…アンダーバーどこだ!!
その発想はなかったわw
>>150 「php グラフ ライブラリ」でググルだけで相当出て来るんだが
156 :
nobodyさん :2007/02/24(土) 20:31:35 ID:YJBwbPsK
1、id passを自由に記入して登録してもらい、 2、その後、ログインする機能をつけたいと思っています 1でフォームを通じてデータベースに登録するところまではできました 2ではどうしたらいいのでしょうか ログインするページで、データベースから登録された全てのIDパスを読んで、フォームに入れられた情報が合致するかどうかをチェックしているのでしょうか?
whereでID探してPassの整合性をチェック
select * from idとpass入れたテーブル where id=入力されたid and pass=入力されたpass
159 :
nobodyさん :2007/02/24(土) 20:44:34 ID:YJBwbPsK
>>157-158 すばやい解答ありがとうございます!
プログラムど素人で、phpは勉強し始めて一ヶ月でわからないことだらけですが、
すごく面白いですね
ここのスレの人たちも親切ですし、すごくやる気がでてきます
本当にありがとうございました
160 :
nobodyさん :2007/02/24(土) 20:46:43 ID:YJBwbPsK
>>157-158 すばやい解答ありがとうございます!
プログラムど素人で、phpは勉強し始めて一ヶ月でわからないことだらけですが、
すごく面白いですね
ここのスレの人たちも親切ですし、すごくやる気がでてきます
本当にありがとうございました
何で二回言ったん?
ありゃ、どうやら本当のようだな。 どうなってんのよおぃ……
ん? かける?
ん? かける?
167 :
nobodyさん :2007/02/25(日) 01:05:09 ID:gfMJR4ri
PHP初心者です よろしくお願いします dbから取り出すプログラムを組みたいのですが エラーが出てしまうのでよろしくお願いします。 16:$con=mysql_connect("localhost","y","p","test1"); 17:$query="select*from db;"; 18:$res=mysql_query($con,$query); 19: 20:while ($row=mysql_fetch_array($res)){ 21:print('<tr><td>'.$row["id"].'</td><td>'.$row['db'].'</td><tr>'); 22:} 23:mysql_free_result($res); 24:mysql_close($con); エラー内容 Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Program Files line 18 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files line 20 Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\Program Files line 23 取りあえず以上なんですがよろしくお願いします。
168 :
nobodyさん :2007/02/25(日) 01:15:25 ID:/w8sKU8x
>>167 まずDBに接続出来ていない。
mysql_connect("localhost","y","p","test1")
の条件で本当に接続できるか確認。
出来ているなら、mysql_connectのマニュアル読んでさらに確認。
mysql_query (PHP 4, PHP 5) mysql_query ? MySQL クエリを送信する 説明 resource mysql_query ( string query [, resource link_identifier] )
$query="select*from db;"; がおかしいだけだな。 $query="select * from db"; にして味噌
173 :
168 :2007/02/25(日) 01:29:01 ID:???
>>172 >var_dump($status);
string(0) ""
でした。
だったらdefaultになるの当たり前やん
175 :
168 :2007/02/25(日) 01:33:36 ID:???
string(0) ""になる原因に何が考えられるのか、 どのようにその原因を探せば良いのかが分からないのです。
$status をたどっていくしかないと思うが・・
177 :
168 :2007/02/25(日) 01:45:18 ID:???
無知な上に、理解力が無くて申し訳ないのですが、 $statusをたどるという事の意味がよくわからないです。 Auth.phpのコードを読むという事でしょうか?
俺PEARって使ったことないんだけど便利なの? ログインごときでハマるぐらいなら使わないほうがよっぽど早いと思うが。
181 :
178 :2007/02/25(日) 01:58:53 ID:???
読み進めていったらその書き方で"loginFunction"に色々書くみたいね statusに何も入らないって事はセッションが確立できてないとか? とりあえずさっきのURLの奴を最初から順に追ってくべきだと思うが
182 :
168 :2007/02/25(日) 02:15:30 ID:???
183 :
nobodyさん :2007/02/25(日) 02:23:47 ID:0G38USQn
定数とかロケールの設定とか例外ハンドラーなど システム全体で使う物を定義したphpをいちいち全php(というか実際には一番下の) にrequire_once書かないで、自動的に読み込む方法ってありますか? DBにアクセスする基底クラスとか、いろんな場所から使う物にrequire_onceしとけば たいてい、読み込むだろうけど、なんか管理しづらいというか、 「ああ、ここには読み込まれてないのか」的なエラーは面倒なので あったらお願いします。
185 :
168 :2007/02/25(日) 02:30:37 ID:???
186 :
185 :2007/02/25(日) 02:42:09 ID:???
訂正。スラッシュ入れ忘れてた。 .htaccessに <IfModule mod_php.c> php_value auto_prepend_file "hoge.php" </IfModule> だった。
187 :
185 :2007/02/25(日) 02:44:48 ID:???
訂正。数字入れ忘れてた。 グダグダやな。 PHP4なら .htaccessに <IfModule mod_php4.c> php_value auto_prepend_file "hoge.php" </IfModule> だった。 PHP5なら、5で。
>>182 PEARが便利に感じないなら、無理に使う事はない。
取捨選択自分でしないと
189 :
183 :2007/02/25(日) 03:53:14 ID:0G38USQn
>>187 ありがとうございます
とうぜんですがphp.iniでもいけるみたいですね。
.htaccessを使えばディレクトリ単位で変えられますね
ふむ。便利だ。
ありがとうございました。
どうでもいいけど。phpの公式日本語マニュアルが出ない・・・
まあ、他にもいろいろあるから良いけど。
190 :
nobodyさん :2007/02/25(日) 06:03:56 ID:t/+ZOEaw
質問です www.x.com と secure.x.com で一つのクッキーやセッションを共有することはできますか? やり方を教えてください よろしくお願いします
191 :
nobodyさん :2007/02/25(日) 06:11:50 ID:t/+ZOEaw
190ですが補足します 完全な共有でなくても、擬似的に共有したような状況にできる方法があったら ご教授ください
192 :
nobodyさん :2007/02/25(日) 06:22:31 ID:t/+ZOEaw
連投スミマセン フォームにデフォルトで " と ' を含む文を表示させたいのですが崩れてしまいます・・・ フォームの中の " ' をちゃんと表示させる方法はありますか?
194 :
190 :2007/02/25(日) 08:18:49 ID:t/+ZOEaw
\
特殊キャラ
>>194 phpじゃなくてhtmlの話だな
既に二人が答えてるけど、マジッククオート関係を調べれば意味がわかると思う
$str_m = "あああ"; echo "結果$str_m"; 例なんですが、↑は大丈夫で↓は駄目です。 $str['m'] = "あああ"; echo "結果$str['m']"; そこで中括弧で括るとOKな事は分かったんですが、 {$str['m']} 、 ${str['m']} 両方動作するのですが、どっちがいいのでしょうか? echo "結果".$str['m']; にしろってのは無しの方向でお願いします。
どっちがいいかはどんなプログラムかによって変わるのでお答えできましぇーん
>>198 どっちでもいいよ意味は同じ
むしろパーサからしたら echo "結果" . $str['m'];
の方が早いだろうしダブルクォート内に
変数を入れ込まないと相当読みづらくなるっていう
場合でもない限り俺は最後のスタイルで書く
201 :
198 :2007/02/25(日) 14:05:36 ID:???
ありがとうございます。
ぐぐっても分からなかった(検索キーワード的にも難しかった)のでスッキリしました。
速度に関しては、以前から連結が最速というのは知ってますが、
実際はヒアドキュメント内で$_SERVER['']などの記述をどうしようか模索してました。
出力部がスクリプト内に点在しているのが管理的にも嫌だったので、
変数にためて最後に出力したり、ヒアドキュメントなど利用しているのですが、
そもそもその方法が駄目なのかなとも思います。
最後に
>>200 さんの改行スタイルを解析中です。
202 :
nobodyさん :2007/02/25(日) 14:11:11 ID:0G38USQn
>>200 に一票
早いって言うのは
}を見つけるまでそれが変数だとPHPが解らないからって感じかな?
まあ、微々たるモンだろうけど。
それにクォート内の色が変わるエディタを使っていたら
一番下のやり方が見やすいし。
たしかに一度ドットで抜けて、また戻ってって面倒なときあるけどね。
どうしても{}を使うなら{$hoge}が見やすいかな?
203 :
182 :2007/02/25(日) 14:31:00 ID:???
>>188 おっしゃる通りです。
どうしても無理なら、あきらめます。
echo "結果" , $str['m'];の方が早いって聞いたけど、ホント?
えー、カンマ?ピリオドで連結が最速じゃね?
結果<?php echo str['m'];?> これで十分
単純なのならいいけど、 <? ?>で全部区切るのは相当読みづらいと思うが。
負荷削減
>>206 そんな全角スペースで動作すると思ってんのか貴様ー!!
俺はカンマで追加していく派。 ついでに言うと$output .= ってやってって最後にどんと。 zen-cartだったかな? <? ?>で書いてあってすげー読みづらかった… しかも同じようなコード繰り返してるし。
すごく・・・・どうでもいいです
デザイナーといっしょに仕事したことがないやつがたくさんいるな
smartyとかテンプレート知ってるだけで鼻高々ってのもどうかと思うが
おれはsmartyをパソコンにインストールできるだけで偉いと思ってるぜ!
216 :
nobodyさん :2007/02/25(日) 16:55:06 ID:XAraiK/y
ユーザーが自分で投稿したコメントを編集できる掲示板を作っています そこで質問です フォームで改行された場合、 str_replaceで\r\nを<br>で置き換えます 投稿された文章を見る場合だけなら問題ないのですが、 投稿したコメントを編集しようとした場合、<br>タグが出てきますよね 編集の際、 普通に書き込む時と同様に、<br>を表示させないようにするためにはどのようにすればいいのでしょうか
俺がやっている仕事ではデザインは仕様で既にきまっているから デザイナーの入る余地はない。 っていうかデザイナーの絡む仕事って言うのやったことない
>>216 DBには投稿されたまま保存して
画面上に表示するときだけ<br>に変換する
textareaに表示するときはそのまま表示
掲示板作っているのですが、投稿された文の文字コードチェックをすべきでしょうか? if (mb_detect_encoding($str) != 'EUC-JP') { mb_convert_variables('EUC-JP', mb_detect_encoding($str), $str); } これ必須だったりします?別になくてもおk?
君のシステムでは 1.異なった文字コードで投稿される場合があるのか 2.異なった文字コードを変換して保存する必要があるのか による
素朴な疑問なんだけど、コメント箇所ってどういう風に書いてる? 俺は今まで /*入力確認*****************/ 〜ソース〜 /*DB登録処理***************/ 〜ソース〜 みたいに書いてたんだけど、なんか分かりづらい気もして。 気にする事はないだろうけど、、綺麗なソースを書きたいので、気になりました。
>>221 zendやpearのコーディング規約でも見るがよろし
>>222 そんなのあるのかー。ググって見ます。ありがとです。
PEARっぽく無理して英語で書いて、 グダグダになるに$1
225 :
nobodyさん :2007/02/25(日) 19:31:15 ID:XAraiK/y
226 :
nobodyさん :2007/02/25(日) 19:45:40 ID:eI7feJlv
PHPスクリプトを公開していらっしゃる作者さんへ質問です。 どこのレンタルサーバを使われていらっしゃいますか? あと、PHP4とPHP5のスクリプト互換性は合った方がいいですか?
仕事で鯖からなにからこっちで立ち上げるのなら5で。 レン鯖をつかうような掲示板とかのちょっとした小物だったらphp4で書いてる。 よく使うレン鯖は今んと頃軽くて使い勝手が良いので勘弁。
>>221 Para poder salvar mi servidor de todo ese
229 :
190 :2007/02/25(日) 20:58:19 ID:IYDfC2eT
>>197 説明不足ですみません
htmlspecialcharsで変換するのは知っていますが、ユーザーがフォームに " ' を入れた場合、それを
修正してもらうためにもう一度 フォームの中に " や ' が表示された状態で画面を再表示させたいの
です。
フォームのvalueにhtmlspecialcharsで修正した値を入れると、"e;などの文字列がフォーム内に直接
表示されてしまいますよね。しかしhtmlspecialcharsで修正しないと " のせいでフォームが途中で途切れ
てしまいます。これをなんとかしたいのです。
230 :
190 :2007/02/25(日) 20:59:42 ID:IYDfC2eT
>>229 の "e; は " の誤りです
>>231 マジッククォートはoffだし、onでもフォーム内にバックスラッシュが表示されるだけでしたが。
そうではなくて、例えばユーザーがフォーム内に「Arcator"bar"Baalouse」と入力したら、まったく
同じものが修正要求のメッセージと共に表示されないと困るのです。
htmlspecialcharsの引数をもうちょっとよく調べれば解決するんじゃね
フォーム内で&quot;表示したら普通に”になるんでないの?
症状をもっと最初に丁寧に書け 何をどうしたくて現状どうなってるのかサッパリわかんねえ
236 :
nobodyさん :2007/02/25(日) 21:20:20 ID:IYDfC2eT
つまり $val = ""e;"; <input type="text" name="test" value="{$val}"> ↑これでは変換前の実体参照がそのまま表示されるだけですね $val = '"'; <input type="text" name="test" value="{$val}"> ↑これでもフォームが途中で途切れてしまいますね フォームのデフォルトバリュー内に " や ' が混在するとき、どうすれば正常な 表示が可能なのか、というのが質問の趣旨です。マジッククォートやhtmlspecialchars では、この問題を解決できないと思うのですが。
\ ∩─ー、 ==== \/ ● 、_ `ヽ ====== / \( ● ● |つ | X_入__ノ ミ 、 (_/ ノ /⌒l /\___ノ゙_/ / ===== 〈 __ノ ==== \ \_ \ \___) \ ====== (´⌒ \ ___ \__ (´⌒;;(´⌒;; \___)___)(´;;⌒ (´⌒;; ズザザザ
>>236 > ↑これでは変換前の実体参照がそのまま表示されるだけですね
されない。
以上。
>>238 \ ∩─ー、 ====
\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;; ズザザザ
quoteじゃなくて quotって事か? 何言ってるのか本当に意味わからん
241 :
nobodyさん :2007/02/25(日) 21:39:37 ID:CDvbRnfg
@param じゃ引数じゃないか? @return foo だと思うが
@return objectでいいんでないの? PEARの書式でもながめてみたら? 関数はPHPのソースにあるでひょ Cで書かれてるはずだけど
245 :
241 :2007/02/25(日) 21:57:24 ID:???
Ooooooooooops!!
@returnでした。
>>243 なるほど。素直に'object'ですね。
参考にPEARを覗いてみます。
>関数はPHPのソースにあるでひょ
>Cで書かれてるはずだけど
grepで検索して覗いてみます。
ありがとうございました。
246 :
nobodyさん :2007/02/26(月) 01:29:31 ID:MqypCXgA
ちょっと行き詰まったので、質問します。mysqlと絡んだ内容です(php4.4.2、mysql4.0.27)。 テーブル名:list_table ----------- id | name | ----------- 1 | tato | ----------- 2 | hanako| ----------- これをWEBフォームよりnameを一括変更するのが目的です。 やり方としては全レコードをmysql_fetch_assocで抽出し、 フォーム部分<input name="name" type="text">のvalue部分に表示させ、 そのフォーム部分の名前を変えて送信すれば、データベースのレコードも変わる、という感じです。 各個人を一人ずつ変える事なら出来たのですが、 一括変更がなかなか出来ません・・・。 どなたかお知恵をお貸し下さい。 宜しくお願いします。 次に現在の内容を晒します。
247 :
246 :2007/02/26(月) 01:30:02 ID:MqypCXgA
//php該当部分抜粋 $editFormAction = $_SERVER['PHP_SELF']; if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "edit")) { $updateSQL = sprintf("UPDATE list_table SET name=%s WHERE id=%s", GetSQLValueString($_POST['name'], "text"), GetSQLValueString($_POST['id'], "int")); mysql_select_db($database_MyDB, $MyDB); $Result1 = mysql_query($updateSQL, $MyDB) or die(mysql_error()); } //フォーム部分抜粋 <form method="post" name="edit" action="<?php echo $editFormAction; ?>"> <?php do { ?> <?php echo $row_Recordset['id']; ?> <input type="text" name="name" value="<?php echo $row_Recordset['name']; ?>"> <input type="hidden" name="id" value="<?php echo $row_Recordset['id']; ?>"> <?php } while ($row_Recordset = mysql_fetch_assoc($Recordset)); ?> <input type="submit" value="送信"><input type="hidden" name="MM_update" value="edit"> </form> 如何でしょうか? 宜しくお願いします。
複数行のデータが送られてくるのにUPDATEを1回しか発行してないぞ
>>247 var_dump($_POST['name'])
初めて知ったけど、includeやrequireに括弧は付けないんだね。 include "hogehoge.php"; ってことか。
このすれれべるひきいwwwwwwwww
メールのヘッダ情報において、「詐称できないもの」って、 Received:の経路情報だけ? 他にも詐称が不可能なヘッダ情報ってある??
254 :
nobodyさん :2007/02/26(月) 04:58:19 ID:7mBYKw3T
正規表現の中に変数を含めることって出来ますでしょうか? たとえば、 $var = "abc"; preg_match('/^aaa{$var}zzz/', $str, $result); のように、$varを正規表現の中に入れて中身を展開させたいのですが・・・
自分で試せ
なんでまずやってみないの? アホだろ
>>254 何故、変数展開させたい文字列をシングルクォートで括るか。
ヴァカしかいねーのな
質問者の10割と回答者の9割がアホ それがここの仕様
260 :
254 :2007/02/26(月) 05:59:13 ID:7mBYKw3T
>>255-256 254で記載したコードで試したうえで出来ないので質問いたしました。
>>257 あっ、すいません、ここには手打ちで書いたのでうっかりシングルにしちゃいましたが、
実際のソースのほうではダブルで括ってます。
でも正規表現では{}は意味を持つので、変数を囲うのに使えないし・・・
>>260 使えるって。先に変数展開されてから関数に渡されるんだから。
試してもいないで言ってるだろう、お前。
つか、正規表現の「{}」って何?
262 :
261 :2007/02/26(月) 06:12:37 ID:???
あ、前の表現の回数指定か。忘れてた >「{}」 でも問題ないよ。たとえば $s = "aaaabbbcccddd"; $x = "bbb"; print preg_replace("/a{3}{$x}c{2}/", "ZZZ", $s); というコードで結果は aZZZcddd ってなるから。
263 :
nobodyさん :2007/02/26(月) 06:43:34 ID:xTDxI0kc
MySQLのテーブルtableのレコードnameには a?b が入ってます $name = "a'b"; select * from table where name = '$name'; PHPでこれを実行するとちゃんとname = a'bが取得できます。 しかしこれは select * from table where name = 'a'b';なわけで、危険なのでは?と思い質問しました。 magic_quotes_gpc は Offです。 問題なしでしょうか?
264 :
263 :2007/02/26(月) 06:46:01 ID:xTDxI0kc
>MySQLのテーブルtableのレコードnameには a&#39b が入ってます ↑半角&#39bです。
a'bなんてname入れんな
>>263 問題あります1スレに10回は出る質問なので
上を探せばでてきます
>>263 > PHPでこれを実行するとちゃんとname = a'bが取得できます。
どう実行したのか具体的に書いてよ。
単にライブラリの方で自動エスケープしてくれただけじゃないの?
>>263 が何らかのwebサービスを開始したら、ぜひ教えてほしい。
そしたら、速攻でSQLインジェクションやってあげるから。
>>263 > select * from table where name = 'a'b';なわけで、危険なのでは?と思い質問しました。
危ない以前にSQLシンタックスエラーで実行できない。
271 :
263 :2007/02/26(月) 07:47:26 ID:xTDxI0kc
ちょっと略しました。申し訳ないです。 正確には $name = "a'b"; ではなく $nameはPOSTまたはGETで送られたa'bです
272 :
263 :2007/02/26(月) 07:52:29 ID:xTDxI0kc
>$nameはGETで送られたa'bです ↑GET
273 :
263 :2007/02/26(月) 07:59:42 ID:xTDxI0kc
あ、違いますね。 間違いです。勘違いしてました。 忘れてください。
>>246 <input type="text" name="name" value="<?php echo $row_Recordset['name']; ?>">
を
<input type="text" name="name[<?php echo $row_Recordset['id']; ?>]" value="<?php echo $row_Recordset['name']; ?>">
にする。
で、$_POST['name'][1]〜$_POST['name'][最後]までループで回して、毎回UPDATEする必要がある。
246のソースのままじゃ、1人分しか対応できない。
<input type="hidden" name="id">は消す。
mysql_select_db($database_MyDB, $MyDB);
foreach ($_POST['name'] as $key => $value) {
$updateSQL = "UPDATE list_table SET name = '" . $_POST['name'] . "' WHERE id = " . ($key + 1);
$Result1 = mysql_query($updateSQL, $MyDB) or die(mysql_error());
unset($updateSQL);
}
でいいんじゃないかな。
一括で変換したい場合は、フォーム1つの中で、idとnameの組み合わせをレコード数分見つけられないといけないから、作り方に工夫が必要。 1フォーム1レコードだったらhiddenでidとか埋め込めるけどね。
278 :
275 :2007/02/26(月) 09:13:50 ID:???
orz ENT_QUOTESだ。
>>271 普通に考えたらGETだろうとPOSTだろうと「a'b」は「a'b」のままなんだが、
ひょっとしてテーブルに格納されてるのも検索で使った入力値も
「a'b」じゃなく「a&#39b」だって話か?
画面で見ると where name='a'b' に「見える」というだけで実は where name='a&#39b' ?
じゃあ一体何の問題が言うんだね、君は。
文字コードやら文字エスケープ程度でつまずく奴は何やっても駄目
どこかで自分のソースをチェックしてくれるサイト・もしくはサービスって無いかな? HTMLの書き方についてはネットでも自動チェックできるところがあるけど、 PHPについては、どういう書き方が正しいのか?処理がスムーズに行われるのか? について、いつも悩む。書き方によってパフォーマンスも違うだろうし。
>>281 プログラムとHTMLは違う。
PHPは構文エラーがあれば教えてくれるんだし。
コーディングなら、他人が書いたソースでも読んでみて
参考になるところがあれば、どんどん真似をして自分のものにしなさい。
コーディング規約を読んでみるのもよし。
>>281 HTMLだって文法チェックはしてもデザインの良し悪しなんてチェックはしてくれないのだよ。
285 :
284 :2007/02/26(月) 12:20:51 ID:???
な、なんだお前ら! 昼休み暇だからって被りすぎだろ コラー!
>>284 文法チェックだけなら
php -l ソースファイル
でいいじゃん。
287 :
nobodyさん :2007/02/26(月) 12:44:43 ID:eLbz34G2
皆さんphp4で開発する時、クラスを多用します?
サッカーやる時、ボールよく蹴ります?って聞いてるようなもんだよそれは
そうなのね。 関数でべた書きしてました・・ 出直してきます。
291 :
289 :2007/02/26(月) 13:07:28 ID:???
293 :
nobodyさん :2007/02/26(月) 13:15:59 ID:blVK8UOL
1つのファイル上で「入力」→「確認」→「完了」を行い、 それぞれの用途に合わせたテンプレートを読み込む仕様にしたいと思っています。 例えば、最初にアクセスした時にform.phpというテンプレートを読み込むとします。 必須項目をすべて入力したら、次のconfirm.phpを読み込む。 入力してなかったら、form.phpを再度読み込んでエラーをフォームの上に表示する。 ここまではよくあるパターンだと思うのですが、入力エラーの場合 最初に入力した内容もリセットされます。 form.php内のフォームを <input name="test" type="text" value="<?=$_POST["test"]?>"> とすれば元の入力値も表示されますが、ラジオボタンやチェックボックスの場合は このような方法は使えません。 そこで質問ですが、確認を入力フォーム上で行う場合、どのような 構築の仕方・ソースの書き方をすればいいのでしょうか?
294 :
289 :2007/02/26(月) 13:16:10 ID:???
295 :
289 :2007/02/26(月) 13:23:26 ID:???
>>293 フォーム内容をポストの際にセッションに入れてから
判定処理
297 :
289 :2007/02/26(月) 13:27:51 ID:???
XAMPP使っている人いますか?
使ってるよ
300 :
293 :2007/02/26(月) 13:33:31 ID:???
>>295-296 テキストボックスやテキストエリアの場合、それでもいいのですが、
チェックボックスやラジオボタンの場合は、どうするのでしょうか?
if ($_POST["items"]=="あああ") {
echo <input name="items" type="radio" value="あああ" checked="checked" />
} else {
echo <input name="items" type="radio" value="あああ" />
}
みたいなのを数だけ用意するのでしょうか?
でも、それだとソースが増えすぎる気が。。
301 :
289 :2007/02/26(月) 13:42:03 ID:???
checkedだけ変数に入れてもよいかと if ($_POST["items"]=="あああ") { $aaa = "checked"; } echo <input name="items" type="radio" value="あああ" $aaa />
302 :
293 :2007/02/26(月) 13:53:37 ID:???
>>301 じゃ、テキストボックスが10個あったら
if ($_POST["items"]=="あああ") {
$aaa = "checked";
}
を数だけ用意する事になりますよね?それだとソースが増えすぎる気が・・。
(それが普通の書き方なら、分かるのですが・・・
303 :
293 :2007/02/26(月) 13:54:11 ID:???
じゃ、テキストボックスが10個あったら ↓ じゃ、チェックボックスが10個あったら すみません、書き間違いです。
304 :
289 :2007/02/26(月) 14:06:39 ID:???
switch($items){
case "あああ" : $aaa = " checked"; break;
case "いいい" : $iii = " checked"; break;
case "ううう" : $uuu = " checked"; break;
・
・
・
}
増えすぎますね でもこれしかわかりません ごめん
詳しい人いたらよろしくです
>>297 の質問もよろしくです
おいらはフォーム関連はHTML_quickformで処理してる。 投稿された、及びセッションからの値を デフォルト設定arrayに流してるなあ
チェックボックスの値の保持&再現か・・・うーん。 そのHTML自体をPHPで生成して、checkedにしたい項目だけ置換して使うとか?
307 :
293 :2007/02/26(月) 14:35:58 ID:???
>>305-306 ありがとうございます。
自分でも色々考えたりググったりしているのですが、
どうしても問題が解決しません。
今回のケースでは「登録時」ですが、「編集時」はどうなるのか?
とか考えると、SESSIONで保持する方法は合わないと思うんです。
フルコントローラぽっく、ひとつのファイル上でテンプレートを読み込む
形を考えてるのですが、現状では難しそうなので、個々のファイルに
アクセスする方法に変えた方がいいかもしれませんね。
>>297 rawurlencode( "♥" );
309 :
289 :2007/02/26(月) 14:58:22 ID:???
<?php
$keyword = $_GET['keyword'];
$keyword = rawurlencode( "$keyword" );
echo $keyword;
?>
>>308 ありがとうございます だめでした・・・
>>293 多次元配列にしてループで回せばいいじゃん
配列の配列で$valueと$checkedの値もってさ
xxx.php?mode=regist&type=form (入力 ($_get[type]==form){$tpl='form.php'} 白紙表示 :セッション[formdata]が在ればセッションから表示 ↓ ポスト->セッションへ格納 xxx.php?mode=regist&type=confirm (確認画面表示 ($_get[type]==confirm){$tpl='confirm.php'} エラー戻りはエラーメッセをセッション[error等]へ格納してformへ、 OKで完了はcomplateへ xxx.php?mode=regist&type=complate (完了 保存処理&リダイレクト等 編集は xxx.php?mode=modify&type= (略 こんな感じじゃないのかねえ なんとでもできそうな・・ <文法適当です
313 :
289 :2007/02/26(月) 15:24:13 ID:???
>>313 無理だよそんなの。URLのパラメータの仕組みを理解してください
>>293 結局の所
チェックボックスの再現問題のみ?
316 :
289 :2007/02/26(月) 15:53:41 ID:???
>>314 無理ではありません
一応正規表現で置換するとできます
特殊文字全部置換しろってことでしょうか?
>>316 RFC1738を参照:
http://www.faqs.org/rfcs/rfc1738 URIに含むことが許されていない文字は、全てRFC1738に基づいて
URLエンコードしなければならない。
もちろん「?」もそのままではURIに含むことができないので、URLエンコード
する必要がある。rawurlencode("?") の結果をパラメータに指定するだけ。
318 :
317 :2007/02/26(月) 16:01:37 ID:???
&harts; が 「?」に化けた。 脳内変換しておいてくれ。
320 :
293 :2007/02/26(月) 16:08:21 ID:???
>>311-312 ありがとうございます。セッションに関してですが、
if (isset($_POST["name"])) {
$_SESSION["name"]=$_POST["name"]; //フォームの数だけ用意
}
みたいな感じになるのでしょうか?
それとも一括でポストをセッションに格納するのでしょうか?
>>315 自分で検討してみたところ、チェックボックスやラジオボタンについては
if (isset($_POST["name"]) {
$checked = "checked=checked";
}else{
$checked="";
}
みたいなのでいけました。(チェックボックスなら配列に入れてarray_search)
ただ、あまりスマートじゃありませんね。求める方法としては
312さんが書かれているような方法が最適だと思っています。
}
321 :
293 :2007/02/26(月) 16:09:32 ID:blVK8UOL
>>319 いえ。自分はひとつの事しか質問してません。
それにパラメーターにハートは無理だと思いますし・・。
322 :
nobodyさん :2007/02/26(月) 16:10:05 ID:Sd3D9dFc
クラス内で定義された関数をコールするには $this->関数名(...) でできる と思ったのですが、「Fatal error: Call to undefined function」が返ってきます。 どうすればできるのでしょうか? PHPのバージョンは PHP 4.4.4 です。 class MyClass { function foo() { return "にゅるぽ"; } function bar() { echo $this->foo() } }
>>316 そりゃ、QueryStringから抽出すればできるけど
そういう質問じゃないだろ。だったらURLエンコードするべき。
そんなURLが来るようなら元のURLを作ってる部分のバグ。
ためしに&heartsでググったらURLがどうなるかやってみろ。
324 :
291 :2007/02/26(月) 16:22:03 ID:???
>そりゃ、QueryStringから抽出すればできるけど >そういう質問じゃないだろ。 最初からそういう質問ですけど・・・ URLはエンコードされてることくらいわかってるつもりですごめんなさい
>>324 >最初からそういう質問ですけど・・・
自分で書いた
>>297 のソース見てみろよ。
普通にGETパラメータから取得しようとしてるじゃんか。
あれでやるならURLエンコードするしかないし
QueryStringから抽出するなら正規表現なり、substrなりご自由に。
>URLはエンコードされてることくらいわかってるつもりですごめんなさい
わかってるやつが書く文章とは思えない。「されてる」んじゃなくて「する」んだから。
盛り上がってきました
327 :
291 :2007/02/26(月) 16:42:02 ID:???
>>325 QueryStringで取得してもGETで取得してもrawurlencodeするでしょ
>ためしに&heartsでググったらURLがどうなるかやってみろ。
URLはエンコードされてることくらいわかってるつもりですごめんなさい
googleに「されてる」と言う意味です
>>327 何度も言うけど、URIに含まれてはいけない文字は、URLエンコード
する必要があるんだってば。
パラメータで指定する際に、
http: //localhost/test.php?keyword=%3F (Shift-JISの場合)
329 :
291 :2007/02/26(月) 16:53:57 ID:???
>>328 わかってます 何度も言うけどそれはわかってます
しかしもし特殊文字を入れられたときそれをちゃんと表示させたいのです
完璧を求めちゃいけませんか?
>>327 >QueryStringで取得してもGETで取得してもrawurlencodeするでしょ
この文章も意味がわからないし・・・
1.$_GET["target"]で取得する
元のテキストをrawurlencodeしてください
2.QueryStringから取得する
$_SERVER["QUERY_STRING"]を使って
正規表現、strpos、substrなどで抽出してください。
これのどちらかです。好きなほうを選んでください。
個人的にはrawurlencodeするのをそこまで渋る理由がわからない。
331 :
291 :2007/02/26(月) 17:06:08 ID:???
>>330 違います URLに特殊文字を直接入力されたとき
置換するとそのまま表示できるので
特殊文字全部を置換しなければいけないのでしょうか?
特殊文字全部を置換するとできますが、他に簡単な方法はないのでしょうあk?
>>329 / \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ < 完璧を求めちゃいけませんか?
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
>>331 フォームからの入力じゃなくて
URLをエンドユーザーにいじらせるの?新しいなw
334 :
nobodyさん :2007/02/26(月) 17:12:40 ID:eLbz34G2
皆さんアドバイス下さい! PHPからmySQL等でDB取得する際にSQL文が必要ですが、 1,パターンに応じてPHPでSQL文を色々と生成して一つの取得関数からdataを取る 2,取得関数を沢山つくりそれぞれで取得 検索やら、WHERE後の条件が複雑な時、皆さんどうしてますか!
335 :
291 :2007/02/26(月) 17:15:38 ID:???
>>334 テスト的にコンソールからSQLを実行するときに
コピペだけで済んでラクだから2
337 :
246 :2007/02/26(月) 17:17:50 ID:nxJeXNNs
返事が遅くなりました。
>>248 >>249 ヒント、ありがとうございます。
なるほど、確かに1回しか発行してませんね・・・。
機能している個別の修正フォームを使い回した為、
その部分は問題ないと思いこんでおりました。
>>277 詳しいご説明、ありがとうございます。
自宅に戻り次第、試してみます!
一括で変換する場合は注意が必要と、勉強させてもらいました。
ありがとうございました。
>>335 やっぱりURLパラメータじゃないじゃん。substrしなよ、簡単でしょ。
339 :
291 :2007/02/26(月) 17:23:22 ID:???
>>338 substrですか? ちょっと意味がわかりません
詳しくお願いします
>>339 <?php
//$requestURI = $_SERVER["REQUEST_URI"];
$requestURI = "
http://ja.wikipedia.org/wiki/PHP♥ ";
$lastIndexOfSlash = strrpos( $requestURI, "/" );
echo substr( $requestURI, $lastIndexOfSlash+1 );
?>
>>335 それはPATH_INFO使ってるかApacheのmod_rewriteじゃないかと思う
くそ、Janeで化けた
<?php
//$requestURI = $_SERVER["REQUEST_URI"];
$requestURI = '
http://ja.wikipedia.org/wiki/PHP♥"e; ';
$lastIndexOfSlash = strrpos( $requestURI, "/" );
echo substr( $requestURI, $lastIndexOfSlash+1 );
?>
質問です。 ページを表示した際、 <!--kokotitle-->と記した箇所を、任意のページタイトルに置き換える様に $title = str_replace('<!--kokotitle-->', $pagename, $title) とPHPを記述したのですが、Yahoo、googleなどの検索エンジンで タイトル部分を読み取ってくれません。 ロボットはPHPを実行してはくれないのでしょうか? ご教授お願いします。
>>345 <?php
$pagetitle = "下らねぇ質問はここに書き込みやがれ 40";
...
?>
<html>
...
<?= $pagetitle ?>
...
</html>
googleかなにかではGETでidっても文字使ったのは極力使うなと言われてるかな
hogehoge.php?id=777
347 :
345 :2007/02/26(月) 18:38:47 ID:???
>>346 idに文字は使ってません。
テンプレート型のアルバムで
<title><!--kokotitle--></title>
このタイトルが可変部分で、表示した時にタイトルが置き換わる様になってるんです。
ちなみに$pagetitleが含まれてるのが別スクリプトなので、
<title><?include("../../../../../title.php"); print $pagetitle?></title>
といちいちincludeしなきゃいけないのも何だか負荷かかりそうですね。
>>347 ひょっとしてそれはギャ(ry
>>346 は1つのファイルの中に記載
phpの場合はhtmlとphpが共存できる
<?php ... ?>の部分はphpで処理されてそれ以外はhtml
ん?別ファイルじゃダメな理由は? 例えばSMARTYだとタイトルきちんとなってない?
思うに <!-- これ使うから表示されないんじゃね?
351 :
291 :2007/02/26(月) 19:26:00 ID:???
もういいです。
353 :
nobodyさん :2007/02/26(月) 19:51:42 ID:FYsfyk0l
zendやpearにもあるインデントでタブの使用をすすめないのはなぜでしょうか? タブのほうが楽なんですけど理由があるなら空白に移りたいです
>>353 見る人のタブのインデントサイズによって見え方が変わるから
なるほど、それなりの理由があるのですね。 ありがとうございます。
356 :
nobodyさん :2007/02/26(月) 20:36:32 ID:Sd3D9dFc
class MyClass { function foo() { return "にゅるぽ"; } function bar() { echo $this->foo() } } 同一クラス内で定義されたメンバにアクセスしたいのですが $this->関数名() や self::関数名() では「Fatal error: Call to undefined function」が返ってきてしまいます。 どうすればできるのでしょうか? PHPのバージョンは PHP 4.4.4 です。
echo MyClass::foo(); こうならできるんですか……
358 :
nobodyさん :2007/02/26(月) 20:48:14 ID:Sd3D9dFc
>>357 それならできます。
が、あるスクリプトのソースを読んでみたら
$this->関数名() や self::関数名() が使われていました。
その関数は同一クラス内でコールされた関数です。
ちなみに self::関数名 だと「Fatal error: Undefined class name 'self'」が返ってきます。
undefinedなら普通に関数名間違えてるだけじゃないの
360 :
nobodyさん :2007/02/26(月) 20:54:37 ID:P0Om59/A
for($ore=0;$ore<100;$ore++){ if($ore==50) die; }
361 :
nobodyさん :2007/02/26(月) 20:56:06 ID:Sd3D9dFc
>>359 それが何度も見直したし、関数名をコピー&ペーストしてみたんですが
やはり結果は同じです。関数名は間違えていないと思います。
そのあるスクリプトというのが、PHP5で書かれているとあったので
$this->関数名() や self::関数名() は PHP4.4.4 では使えないのかしら?
とりあえずテストした原文そのまま張った方が早いんじゃなかろうか
echo $this->foo()のセミコロンが抜けてるあたりからして 実際のコードとは違うんだろうな 実は タ イ ポ なんじゃないか?
364 :
nobodyさん :2007/02/26(月) 21:06:58 ID:Sd3D9dFc
>>356 をテストしたら
「Fatal error: Call to a member function on a non-object」が返ってきました。
うーん、素直に クラス名::関数名() でアクセスするしかないか……。
クラスnewしてないとかそういうオチじゃなかろうな
366 :
nobodyさん :2007/02/26(月) 21:09:15 ID:Sd3D9dFc
>>363 すみません。
でも、実際のコードを貼ると何百行にもなってしまいます。
しかもそのクラスはincludeされる方なので……。
367 :
nobodyさん :2007/02/26(月) 21:10:21 ID:Sd3D9dFc
>>365 それかも知れません。
詳細情報をお願いします。
>>356 の下に
$obj_myclass = new MyClass();
$obj_myclass->bar();
追加して php -f test.phpしたら にゅるぽ って普通に出るが
WinBinary php 4.4.5
>>367 $hoge = new MyClass();
$hoge->foo();
なんだかどっと疲れが出たぜ…
372 :
nobodyさん :2007/02/26(月) 21:24:09 ID:Sd3D9dFc
なるほど、MyClass::bar() のように静的にアクセスするのではなく new でオブジェクトを生成しないと、$this->関数名() でコールできないんですね。 今度はうまくいったみたいです。 ありがとうございました。
373 :
nobodyさん :2007/02/26(月) 21:43:00 ID:lOqD3fXr
すいません質問です ユーザーが自由に登録できるフォームで、半角英数しか使わせたくないのですが、 /や\などの記号を禁止するにはどうしたらいいのでしょうか? strstrで特定の記号を含むかどうかチェックしていくのでしょうか?
>>373 正規表現使うか、ctype_alnum()を使う
フォームでJavaScriptでチェキするとコスト削減になる(PC)
375 :
nobodyさん :2007/02/26(月) 22:09:53 ID:lOqD3fXr
>>374 すばやい返答ありがとうございます
ジャバスクリプト使えないので、ctype_alnum()を調べてみます
ありがとうございました
376 :
375 :2007/02/26(月) 22:14:04 ID:lOqD3fXr
>>374 ctype_alnum()で一発でできました
本当にありがとうございます
あなたが今晩良い夢を見られますように
377 :
nobodyさん :2007/02/26(月) 22:51:50 ID:bnCsMm+y
初めましてよろしくお願い致します。 $con=mysql_connect("localhost","us","pas","test1"); $query="select*from kate;"; $res=mysql_query($con,$query); while ($row=mysql_fetch_array($res)){ print('<tr><td>'.$row["id"].'</td><td>'.$row['name'].'</td><tr>'); } mysql_free_result($res); 初めてのPHPで、データベースからidとnameを取り出したしたいんですが 以下のようなエラー表示がされます Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in が表示されます。 自分で調べてみたのですが良くわからなくなってしまって・・・ よろしくお願いします。
379 :
345 :2007/02/26(月) 23:00:34 ID:???
380 :
345 :2007/02/26(月) 23:07:37 ID:???
381 :
nobodyさん :2007/02/26(月) 23:17:25 ID:7mBYKw3T
フォームからアップされた画像、またはメール添付で来た画像を そのまんまファイルとして保存するときに注意するべきことってありますか? 特にセキュリティ的な観点で。 JPEGはいろいろ埋め込めるとかいう情報を聞いたので不安になって。 あと画像に偽装したexeファイルとかがありうるのか??とか。
>>377 自分で調べてみたとのことですがまずどう調べたのかを教えてください
386 :
nobodyさん :2007/02/27(火) 00:23:44 ID:vlBw/BNp
ある文字から一文字を取得する正規表現を書いたのですが配列が無駄に作られてしまいます。 自分が求めている結果はArrya([0]=>a)なのですが、配列の中に配列ができてしまいます。 どなたかご教授お願いいたします。 $str="abcdefg"; preg_match_all("[a]",$str,$hensu); $hensuの中身 Array( [0] => Array([0] =>a) )
>>386 一文字あるかどうかなら preg_match のほうがいいんじゃね。
んであれば preg_match が1を返すから
if(preg_match("[a]",$str)){
print "aあるよ!";
}
でいいんじゃない?
いまいち使用目的が分からんから的外れかもしれんけど。
388 :
387 :2007/02/27(火) 00:58:01 ID:???
見つけた回数数えたいなら、preg_match_allの返り血も見つけた回数返すからそっちでもいいと思うけど。
>>386 それがpreg_match_allの機能だが。
自分の無知を棚に上げて無駄とかほざくんじゃねぇカスが。
関数リファレンスみてパラメータや関連関数を使えばお望みの出力が得られるんじゃね。
390 :
386 :2007/02/27(火) 01:19:51 ID:vlBw/BNp
preg_matchだとArrya([0]=>a)という結果ができました。ありがとうございます。 preg_match_allだと無駄に配列ができてしまうのですが解決策はないでしょうか? 正規表現で結果を配列に取得したときにArrya([0]=>a)としたいのですがなかなか解決しないっす。
>>390 自分でCで関数書くので無い限り、道具に自分を合わせるべきだと思う。
そこにこだわる必要性も感じないし。
柔軟に考えたほうがいいんじゃない。
>>381 なにかの本に、「画像ファイルは拡張子がついてても信用するな!」って
書いてあった(気がする)。
396 :
nobodyさん :2007/02/27(火) 03:42:18 ID:kRyot4Bb
398 :
nobodyさん :2007/02/27(火) 04:12:48 ID:UeI7w9y/
file_exists()ってURLだと機能しないんだね。何年もphp使ってるけど今日はじめて知ったよ。 それで、家にある本しらみつぶしに調べたけどどの本にもそんな注意書きないんだよね。 php.netのマニュアルにも明確に書かれてないし。。 file_exists()がURL指定ではダメで、fopenなら大丈夫って言う境界線は何なんだろう。
399 :
nobodyさん :2007/02/27(火) 04:15:31 ID:LoXhV5hd
DBをMySQLやめてSQLiteにしたほうが速度が出るとかってあります? DBサーバーがクソ遅いれんさばを借りてしまったんです。
401 :
nobodyさん :2007/02/27(火) 06:18:42 ID:L7ggisbu
半角二十字前後、2500行程のファイルを処理したいのですが、これはPHPで扱う上で大きすぎる物でしょうか? プログラミング歴が浅く、自分が扱うファイルが大きい方なのか小さい方なのか検討が付きません。 もし大きすぎるようであればファイルを分割する等して対処しようと思っています。
>>390 allは複数の結果を一発で取得するために用意されてる機能なんだから
配列の配列じゃなきゃ意味がないじゃない。
なんでallにこだわるの?
404 :
nobodyさん :2007/02/27(火) 06:47:33 ID:L7ggisbu
>>403 普通ですか、有難う御座います。
そのまま処理する事にします。
すみません、質問です。 phpにアップロードされたJPGファイルを複製して サイズを変更した上でサーバーに保存するみたいな機能ってありますか? たとえば画像掲示板とかって、書き出し時にAタグのwidth属性とかで 縮小版を表示⇒クリックして元のサイズの画像表示してますけど、 縮小版ではなく、完全にオリジナルとは別の小さいサイズの画像を表示させるとか 出来たらいいなぁと思ってるんですが、、 phpで無理なら、他のやり方ってありますか?
407 :
390 :2007/02/27(火) 07:51:20 ID:vlBw/BNp
う〜ん、仕様なら仕方ないですよね。 allを使わず、preg_matchで求めてる結果になるよう挑戦してみます
>>407 仕様っつーか、マッチするもの全部(複数個)取得→match_all()、1件だけ→match()と
使い分けるものなのに、何故わざわざ1件のみの取得にallを使おうとするのかが意味不明。
そもそも元のコードで
$str="abcdefg";
preg_match_all("[a]",$str,$hensu);
とあったけど、
$str="abcadefg";
preg_match_all("[a]",$str,$hensu);
という内容だったらどういう結果が返ってきて欲しいわけ?
>>406 おお、ありがとうございます。
助かりました!
>>395 お前は氏んだほうがいいよwww
こういう馬鹿なド素人ばかりだから、システムの脆弱性はいつまでも無くならない。
411 :
nobodyさん :2007/02/27(火) 08:54:52 ID:vlBw/BNp
すみませんでした。 乗せたコードの$strに入っているaは一つだけですが、 複数存在した場合Array([0]=>a,[1]=>a,[2]=>a・・・)のような結果を期待しております。 match_allですと配列の中にまた配列というふうに多重になってしまい期待した通りにはならないアドバイスを受けました。
$hensu[0]で扱えばいいんじゃね?
>>411 ふーん。
じゃあ、
$str="abcadabefg";
preg_match_all("(a)(b)",$str,$hensu);
の場合は?
>>411 preg_match_all("[a]",$str,$hensu);
$hensu = $hensu[0];
でいいんじゃないかな。
415 :
nobodyさん :2007/02/27(火) 10:38:27 ID:dFVIrde4
変数の中身見て振り分けで。 :D
foreachで回せ!
417 :
虚弱PHP :2007/02/27(火) 11:07:41 ID:???
>>372 staticメソッドとか、インスタンスとか勉強した方がいいと思うよ。
>>374 javascriptでのチェックはユーザーの利便さのためであって、
サーバー側でのチェックがいらなくなるわけじゃない。
再チェック絶対必要。
>>379 本題とは関係ないけど、ひとまずXSSされないように気をつけてね。
>>399 ベンチマークをとりましょう(ローカル環境でね)。
SQLiteの方が速い場合はあるよ。
よく使う変数名について解説・表示しているサイトってないですかね? どういう変数名を付ければいいか悩んで なかなか進まない時があります…。
カコイイ変数名を考えてるだけで一日が終わってしまう事ってよくあるよね〜
>>418 ・普通に英語にする
・わからなかったら辞書引く
・ライブラリやフレームワークのソースをたくさん読んでみる
$result にするか $res にするか迷うよね〜♪
上部で /* 変数名+番号:顔写真 変数名+番号:身分証写真 */ って感じでコメント付けちゃってるな コード使い回すときに便利良いかなとおもって。
そういえばコメントの付け方も迷うよな。 /** * 会員登録 */ とかするのが、コーティング規約なんだろうけど、これだとわかりづらいしな。。
>>418 仕事でやっていないなら、変数名なんて、自分が分かりやすいのをつければいいだけど。
昔、VBの変数名を日本語でやっている人もいたけど、それで分かりやすければ、それもありかと。
仕事でなら、プロジェクト内のネーミング規約を作るはずだから、それに従えばOK。
>プロジェクト内のネーミング規約を作るはずだから 作るものなの?
作らないものなの?
427 :
424 :2007/02/27(火) 12:32:25 ID:???
>>425 >作るものなの?
普通は作るよ。
たまにドキュメント不要論を声高に主張する人がいる現場だと、
作らないこともあるけど、違う人がソースを読む時に、混乱する。バグの元。
同じつづりなのに、全く違う意味を持ってたら、読みにくいでしょ。
>>427 ある程度の構築仕様書は作るんだけど、ネーミングは作ってないな。
最初にネーミングを考えて作るより、作りながら考えた方が早いと思って。
が、実際に悩むもんな〜
揉めるのが変数に型名を入れるかどうか。 この変数は見た目でブーリアンとか分からない!とかかんとか。
クラスやメソッド、定数の命名規約はあるけど、さすがに変数の規約は経験ないなぁ。 命名規約っていっても、キャメルケースとか、特定のPrefixをつけるとかそんなもんだけどね。
作ってて後から変数名を変えたくなるの、結構あるもんな。 最初はnameだけにしてた箇所も、後からc_name(会社名)とかm_name(会員名) に分けたいとか言った場合とかさ。 なんしか、悩むべき箇所だよな
432 :
424 :2007/02/27(火) 12:42:42 ID:???
>>428 俺は、詳細設計の段階で変数となりそうなものを、ピックアップしてリストにしちゃうけど、
# クラス設計の際にクラス名、メソッド名で使うから、その流れで。
その後は、情報を共有してなるべく統一するように心掛けるって感じかな。
設計段階で、全て割り出せエスパーはいないから。
>>429 VBだとプリフィックスでstrとかblnとかつけるけど、javaやphpはつけないなぁ。
javaはコンパイラでエラーがでるから早期に分かるけど、phpはバグの時に気付く...orz
433 :
nobodyさん :2007/02/27(火) 12:44:04 ID:2btkWh5g
ini_setの質問です php5.1.6
でかい動画のアップロードをしようと思っています。ini_setで↓POSTとUPLOADを変えようと思っても、変わらないのです…メモリーは変わりますが…
ini_set('post_max_size', '500M');
ini_set('upload_max_filesize', '450M');
ini_set('memory_limit', '500M');
phpinfo();
マニュアルを見る限り、少なくともupload_max_filesizeは変わるはずなんです…
upload_max_filesize "2M" PHP_INI_PERDIR PHP <= 4.2.3では、PHP_INI_ALL
post_max_size "8M" PHP_INI_PERDIR PHP <= 4.2.3 では PHP_INI_SYSTEM。 PHP 4.0.3 以降で利用可能。
ttp://jp2.php.net/manual/ja/ini.php php.iniの方を変えれば勿論大丈夫ですが、流石にアタック食らったりしたら…と言うことで、一部だけ変えたいのです。何故変更できないかご存知の方いませんか?;;
ネーミング規約はないなあ せいぜい大文字を使う場合とか_を使う場合とか そのへんのフレームワークと同じ程度 ちょっと長いクラスを書くと関数名が被って 面倒になってxxxxx1とかつけちゃって読みにくいったら
それに動作も書くと余計に長くなる。 例えば、「会員用のプロフィールにある名前」 とか言う場合だったら $member_profile_nameとか、$m_profile_nameとか $memberProfileNmaeとかになるだろうけど、いかんせん長い。 だから434みたいに数字付けるけど、たしかにわかりにくい。
Cとかコンパイル言語は変数名長くても気にしないんだけどPHPはどうなの
長いと少し遅くなるのか(といっても誤差範囲だろうけど)
>>433 PHP_INI_PERDIR は .htaccessまで ini_setじゃ無理
>>433 両方ともPHP_INI_PERDIR
ini_setからは変えられない
>>435 だんだん長くなってきて、むかついてきて、
そのうち $member_profile_name_getを
$m_p_n_g1 とかやっちゃって余計に分からなくなる。
440 :
nobodyさん :2007/02/27(火) 13:31:47 ID:2btkWh5g
>435>437 ありがとうございます でも、 PHP <= 4.2.3では、PHP_INI_ALL って、php4.2.3以上では、ALLで何処でも変更可能って、解釈してたんだけど、違いますか?
441 :
nobodyさん :2007/02/27(火) 13:34:04 ID:2btkWh5g
>440 取り消す… ごめん、不等号読めてなかった。。。w 素直にiniいじります
POSTのデータをPHPに渡す時、 外部サーバからデータを送信されるのを防ぐのに一番適切な方法は何ですか? 当初リファラでチェックしてたんですがi-modeでエラー出るみたいで。
やっぱりリファラでチェックするのが一番いいって事ですか?
もっと自分に自信を持てよ
自分がやってる事がほかの人と同じかどうか気になるってなんだろうね 日本人気質か セッション使うとか、いろいろやり方はあるだろ
>>445-446 一番セキュリティにいい方法は何かなと意見仰いだだけなのに何でそこまで言われるのか…orz
受けたw
「××使うとか色々あるだろ?」とか言うのは 知識だけ知ってて実際のやり方は知らない 所謂知ったかぶりの典型 日本人気質か
携帯(docomo)でエラーがでているという時点で セッションも潰れるのは確定。 もちろんプロキシ変数もだめ。 携帯も使えてなるべくセキュアにというのなら 携帯のみ別ルーチンしなければならない。
ドコモでセッション駄目だったっけ? リファラーやクッキーは怪しいけどセッションは通ったような。
「意見を仰ぐ」という用法はおかしい
で、携帯以外での方だけど確実って言える方法はまずないです。 ある程度自分で決めて実際にやっていったら良いと思う。 リファラを抜けるくらい必死な奴だとちょっとした串チェックも 抜けてくるので焼き鳥等でブラックリスト化するってくらいかな
なるほど。どうもです。
また日本語に五月蝿いやつか
456 :
nobodyさん :2007/02/27(火) 14:35:38 ID:2KFAKokD
>>353-354 それはいつも思うんだが、タブ(の幅)っつうのはエディタの設定でしょ?
そのプロジェクトのルールで、タブ幅は4文字分って決めればいいだけの話じゃない?
空白ははっきりいって効率が悪い。
>>451 もしかしたらクッキーとまちがいたかも…
以前docomoでクッキーかセッションかで渡したら
んなもんないぞゴルァっていわれたのしか覚えてないんだ
適当言ってゴメン
>>456 同意! 前の会社は半角スペース2文字だった
確かに見た目はそれなりに良いとは思うが面倒くさくてたまらんかった・・・・
しかしながら、ソース内のテーブル定義を編集する時
カラム毎の複数行にわたる部分コピペとかでは楽だった。
ドコモはリファラとクッキーは駄目 クッキーが駄目なんでURLに付加するセッションなら可
>>459 ああ、URLに何もくっつけないでとばしてたからか…
>>442 優しい俺が教えてやろう。
お前がやろうとしてることは「CSRF対策」と本質的に同じだ。
したがってCSRFについてググれ。
462 :
虚弱PHP :2007/02/27(火) 15:48:20 ID:???
>>456 タブ幅とインデントを区別しないと
4インデント、8タブとか使ってるような
Emacsユーザーに「は?」とかムカつく反応されるぞw
>>456 別にそのプロジェクトだけだったらそれでいいんじゃない
ただアンカー先の話題はpearやzfの話だろ
公開ライブラリみたいに不特定多数が使う場合は
環境によって見え方が変わらない方がベターって事
あとスペースで効率が悪いのは
スペース設定のタブ使ってないからじゃないの
それこそエディタ設定の話
まぁ文句はコーディング規約に言えという事で
まぁエディタだけでソースを見る訳じゃないからね。 lessでちょっとだけ見たいときもあるし、csvwebとかから見ることもある。 diff -u で作ったパッチをわざわざエディタで確認することは滅多にないけど、 良く見る情報だからズレるとちょっとイヤかな。 そんなわけで分割スペース派
GNU-GPL-Q3(オープンソースなquake3エンジン)使えば一括インストーラーになってインストールもラクチンになるよな! なんて夢を一瞬見ました。
>>434 そうやって意味の無い数字で名前つけるのはやめれ
引継ぎが発生すると後から面倒見るやつが地獄を見る
そうでなくても未来の自分は他人と同じ
>>435 クラスを使えばそんな名前付ける必要は出ないんじゃ
468 :
nobodyさん :2007/02/27(火) 19:00:42 ID:DCSYlRNJ
指摘されてこちらに来ました。 どなたかご存知でしたらご教授下さい。 $_POST に渡される文字列で "." が "_" に自動的に置換されてしまいます。 Apache もしくは PHP の設定かと思うのですが、良く分かりません。 原因をご存知でしたら教えて下さい。 よろしくお願いします。
470 :
nobodyさん :2007/02/27(火) 21:13:50 ID:WfwsS845
必要ないです
サンプルのXMLの場合はmovieもcharacterも1つだからどっちでも値は取れる ただ映画情報のXMLでmovieとcharacterのエレメントは 複数登録されるようなフォーマットのイメージだから そういう取り方をしてるのかと
関数内の global って、 多次元配列変数を指定した場合、その配列内の3次元以上のものは 取得できないのでしょうか? 関数内で print_r してみると、 配列変数内の、3次元以上のものが表示されません。
*recursion*してるだけじゃない?
>>473 普通に関数外のものと同じものが得られるはずだが。
サンプルコード出せる?
>>474-475 ありがとうございます。呼び出し元自体が関数で、
そこに global で呼び出していないのが原因でした。
凡ミス恥ずかしい限りです。ただ、
function func1() {
global $test; // これを書いていなかった
// 〜配列の生成処理等〜
$test["items"] = $_tmp["items"]; // これのみ二次元配列の代入
$test["prices"] = $_tmp["prices"]; // 一次元配列の代入
$test["data"] = $_tmp["data"]; // 一次元配列の代入
print_r($test); // 正常に出力
Test_Class::viewArray(); // global $test; print_r($test); を処理
}
のような処理をしていたのですが、最後の処理で、$test["items"] の配列のみ
出力されないのが理解できませんでした。(多分どこか自分の書き方がおかしいのだと思いますが・・)
とりあえず、ありがとうございました。
477 :
nobodyさん :2007/02/28(水) 03:23:13 ID:NIuJbHw3
pngやjpeg画像などを、GD関数を使ってリサイズし、サムネイルを作る場合の質問です。 たとえば縦横サイズをある任意の値(元の半分とか)にリサイズした場合、 たしかにピクセルサイズは指定した通りになるのですが、ファイルサイズ(バイト数)が増えてしまいます。 普通、サイズが小さくなればファイルサイズも小さくなると思うのですが。。。 たとえば240*192で4374バイトのpng画像を120*96にリサイズしたら、8094バイトになってしまいます。 これはどうにかならないのでしょうか?? ちなみにソースは、レッツPHPの写メールBBSのthumb_create関数をほぼそのまま借りました。
>>477 pngで出力してるなら、
imagepngのqualityパラメータで調整。
PHP4ならzlibのデフォルトの圧縮レベルが使われる。
jpegで出力してるなら、
画像パターンによってはファイルサイズが大きくなる事もある。
imagejpegのqualityパラメータを下げてもいいけど、たぶん激しく汚くなる。
jpegの仕様だから仕方ない。
phpの画像生成ってやっぱり普通の処理に比べて負荷かかるの? レンタル鯖使ってるからわからん
480 :
nobodyさん :2007/02/28(水) 05:06:04 ID:NIuJbHw3
>>478 > imagepngのqualityパラメータで調整
特に調整してないのでデフォルト値になっていると思います。PHP4です。
デフォルト設定(100%?)で、ファイルサイズが大きくなってしまうものなんでしょうか?
なお、PNGでもJPEGでもどちらでも、なぜか見た目のサイズは小さくなってるのにファイルサイズは増えてしまいました。
もちろん元の画像サイズがかなり大きい場合にはこの限りではないのですが、
「元の画像サイズが小さい&サムネイル化した画像と元画像との差が小さい」という条件では、
このような逆転現象(?)になってしまうようです。
481 :
nobodyさん :2007/02/28(水) 05:45:30 ID:mYjvryh6
Win9x、PHP4です。 キー入力があったかを調べる標準関数 みたいなのがありましたら教えてください。 コンソールプログラムならkbhit、 ウィンドウズプログラムならWM_KEYDOWNみたいなのです。
まずはクライアントサイドとサーバサイドの用語から覚えろ。 話はそれからだ。
>>481 なんか斬新な質問だな
javascriptでやれば?
484 :
481 :2007/02/28(水) 06:20:21 ID:mYjvryh6
>>482 >>483 ありがとうございます。
phpの内容はhtmlに変わるので無理っぽいですね。
ボタンの送信みたいなのを使えば代用はできるかもしれませんが。
→のボタンをチェックした状態で送信したら
キャラクターが右に移動した状態で再読み込み、みたいな。
jsは構文チェックしてくれるエディタが見つからなかったので、
すっ飛ばしてphpを勉強していました。
PHPだけでできるわけがない。自分でエクステンション作ってやるなら別だが
>>477 元のPNGが8ビットで縮小版が24ビットになってる
とか
「ページの有効期限切れ」で困っています。 (環境)IE6、WinXP-sp2、Apache、PHP5 画面A(検索画面)でPOST実行し、画面Aに結果表示した後、 画面A内のリンクから画面Bに遷移し、画面Bから 画面Aにブラウザの戻るをしたら、ページの有効期限切れとなってしまいます。 ケスケやFireFox、Operaでは発生せず、IEだけです。 PUKIWIKIの対策ページを参考にしましたが、解決しません。 何か解決方法や参考サイトがあれば、宜しくお願いします。 セキュリティ上どうしようもないのでしょうか? 解決したような事を書いてるHPも複数あるので、なんとか なると思っていますが。。。
489 :
488 :2007/02/28(水) 10:51:23 ID:???
書いててなんですが、板違いのような気がするので移動します ごめんなさい。。^^;
新たにHPを開設しようと思っているのですが、phpとjavaで迷っています。 大手の銀行や上場企業のサイトを見るとjavaがほとんどですが、 phpって企業サイトには向かないのでしょうか? 私は数人の会社なので、どっちでもいいのかもしれませんが、 javaに比べてphpだとセキュリティーとかに不安があるとか、 処理速度が遅いとかっていうことがあるのでしょうか?
>>490 セキュリティーは関係ない。JAVAに比べてphpはメモリー関係で融通が効かないから。
大規模になればなるほど、その辺がまず問題なるが、アクセスが多くなるほど、phpはクラッシュして不安定になる。
小規模ならphpで十分だ。JAVAは運用がその分面倒だし。
数人の会社ならPHPで十分。いろんな面で敷居が低いから。
セキュリティは設定とプログラムの問題だからどうでもいいけど 処理速度は遅いと思うよジャヴァと比べたら
>>493 そらぁ何台もアプリケーションサーバがあるようなシステムではJavaだろうけど、
一台のホストにWebサーバもデータベースもぶちこむ安システムならPHPもそう負けないだろ。
何をやるかによる。会社HPだったらHTMLだけで十分なわけだし。
PHPで作って*.jspをPHPでパースでいいよもう
>>497 話をちゃんと聞けよw
今は、PHPとPHP研究所とどっちがいいか言ってんだろ。
499 :
nobodyさん :2007/02/28(水) 12:41:26 ID:NIuJbHw3
>>486 > 元のPNGが8ビットで縮小版が24ビットになってるとか
GD関数ではビット数を調べたり、変換させたりが出来るのでしょうか?
ざっとマニュアルを見たところ、ビット数に関する記述は見つかりませんでした。。。
ちょっと聞きたいんだけどSmartyのデリミタ何にしてる? 参考までに教えてほしい。
501 :
nobodyさん :2007/02/28(水) 12:42:55 ID:mYjvryh6
win9x、php5.2.0(先ほどのは違っていました)、apache2 ローカルサーバーでクッキーの実験をしているんですけど、 以下のようにしても何も表示されません。 原因を教えてください。 output_bufferingをonにして警告を出なくはさせました。 <?php setcookie ("Test_Cookie", "syuturyoku", time() + 3600); echo $_COOKIE['Test_Cookie']; setcookie ("Test_Cookie", "", time() - 3600); ?>
>>501 何も表示されなくて当たり前。
setcookieはレスポンスヘッダに値を書く命令。
$_COOKIEはリクエストヘッダから読まれた値。
youtubeのRelatedVideoの仕組みがわからないんだけど、どういう風に表示してるのかな? 投稿されてからある程度だったビデオは他の動画からのリファラとかクリックでカウントすればできそうだけど、 投稿されたばかりのビデオとかはどうするんだろ・・・。
リファラでやってんのかよ・・・
505 :
nobodyさん :2007/02/28(水) 15:08:01 ID:Y6O44be+
質問です。 ブログの最新記事を表示させてるのですが <?php get_archives('postbypost', '10','custom' ,'<li>' ,'</li>'); ?> これで記事は取得できるんですが 取得した記事の後に時間を表示させたいのですがどう組み合わせたらいいのか 教えて下さい。 <?php the_time('Y.m.d H:i') ?> 時間取得は上記で取得してます。 試行錯誤したのですが組み合わせができなくて困ってます。 助けて下さい。
>>505 なんなんだお前は。
独自関数が入ったコードで、さも当たり前のように質問するな。
それで回答できる超エスパーは存在しないぞ。
>>505 get_archives なんて標準関数は無くない?
何の質問をしてるか分かりにくい。
508 :
nobodyさん :2007/02/28(水) 15:17:12 ID:dDErVMbV
知っている関数が問題だと思うのですが、とあるサーバーでフォームで簡体字を渡したいです html(UTF8)入力⇒html(UTF8)一部文字化け、となります。 最初は日本語でも文字化けしていたのですが 調べたらEUCで受け渡しているようです。 とりあえず渡れされたものを、EUC⇒UTF8で日本語や繁体時など普通の字は元に戻るのですが 簡体字はEUCで渡す時点で?に文字化けしてるようで対処しようがありません。 受け渡しをUTF-8に統一したいのですが どういった指定方法があるのでしょうか? .htaccessに php_value default_charset utf-8 php_value mbstring.internal_encoding UTF-8 など書いて見ましたが何も変わらず・・・ mb_language("uni"); mb_internal_encoding( UTF-8 ); とかも・・・
>>508 それは、単に化けているんじゃなくて、フォントがないだけ。
繁体字は、MingLIUだぞ。
510 :
505 :2007/02/28(水) 15:25:24 ID:Y6O44be+
すいません。wordpressのブログ改造でした。 独自仕様なのわかりませんでした。 すいません;;
>>510 それが分からないようなら、PHPの基礎から勉強できる書籍でも買って勉強してください。
その部分のソースを張れば誰か答えてくれるかもしれません。
またはwordpressを知ってる人が答えてくれるかもしれませんが・・。
512 :
nobodyさん :2007/02/28(水) 15:45:35 ID:miuFrXG1
table1からaddress1とaddress2の重複を取り除きたい select address1 from table1 union select address2 from table1 このSQLをPHPでmysql_fetch_arrayするとエラーがでます。 エラー: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource しかしデータベースを直接操作するとエラーは出ずうまく取得できます。 なぜでしょうか?
514 :
512 :2007/02/28(水) 15:58:14 ID:miuFrXG1
ええと 2つ以上のレコードから重複を取り除きたい コード 住所1 住所2 1 東京都 中央区 2 東京都 新宿区 3 大阪府 中央区 住所1は東京都と大阪府 住所2は中央区と新宿区 を取り出したいのです。 1つのレコードなら select distinct address1 from table1 で取得できますが2つ以上の場合どのようにすれば取得可能でしょうか?
>>514 質問以前に、個人情報をこういう匿名掲示板で出してはいけないことは分かるよね?
>>510 <?php get_archives('postbypost', '10','custom' ,'<li>' , the_time('Y.m.d H:i').'</li>'); ?>
>>509 UTF-8で受け渡しのする他のサーバーでは文字化けしないので
使用しなければならないサーバーでEUC渡しになってしまうようです。
その段階で?になっているので、内部エンコーダーを
レンタルサーバーなりの範囲で変えればいいと思うんですが
何をいれても変化がなく・・・(うけつけない?)
519 :
505 :2007/02/28(水) 16:11:53 ID:Y6O44be+
>>511 phpサイトを見て勉強してきます。
丁寧にありがとうございます。
>>517 神様ありがとうございます。
本当に助かりました
感謝です!
520 :
509 :2007/02/28(水) 16:12:51 ID:???
>>518 そういうことか。
おれも中国語扱っているから分かるが、それなら、プログラムの先頭で
mb_internal_encoding("UTF-8");
を使え。それで、解決だ。
>>520 mb_internal_encoding("UTF-8");
・・・・
print_r(mb_detect_encoding ( $name ,$arr, TRUE ));
EUC-JP
なぜでしょうorz
>>521 $nameがEUC-JPだから
$name = mb_convert_encoding($name, "utf-8", "euc-jp");
rint_r(mb_detect_encoding ( $name ,$arr, TRUE ));
でどう
ソースがEUCだから
>>512 unionって列の名前が異なっててもいいの?
select address1 from table1
union
select address2 as address1 from table1
だったらどう?
525 :
514 :2007/02/28(水) 16:50:24 ID:miuFrXG1
自己解決するしかないみたいなので、がんばってみます。 ありがとうございました。
526 :
514 :2007/02/28(水) 16:52:49 ID:miuFrXG1
>>522 今のところ後ろの方は
そういう感じで集計しているのですが
結局?は?のままなのです。
そして.htaccessで、変換関連は拒絶されました・・・
コンソールとかphpMyAdminからはSQL通るの? それ通らなければSQLのエラー。ちなみにMySQL3ではunion使えないよ。
>>526 SELECT DISTINCT address1,address2 FROM table1
でいけない?
なんのDB使ってるか分からんからなんとも言えんけど;
あと、group byも検討してみたら。 なんかsqlだけなのでスレ違いな気もするけど。
531 :
nobodyさん :2007/02/28(水) 17:09:21 ID:AnB9SYoh
今月の月数(例えば二月の2)を テキストボックスの初期値にできるんでしょうか?
533 :
514 :2007/02/28(水) 17:12:03 ID:miuFrXG1
>SELECT DISTINCT address1,address2 FROM table1 重複を取り除けません >SELECT address1,address2 FROM table1 GROUP BY address1 address2を取得できません
>>512 ,514
まず
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
は直ったの?SQLの問題じゃないし
mysql_fetch_arrayの引数が適当なリソースじゃないってエラー
;
$result = mysql_query(....);
$row = mysql_fetch_array($result);
mysql_queryのリターンを指定してるかい?
てst
test
配列のキー操作について質問です。 現在、$array[0]=a $array[1]=b $array[2]=c となっています。 これらのキーをそれぞれプラス1して、 $array[1]=a $array[2]=b $array[3]=c; …としたいのですが、どうやったらいいでしょうか? 標準関数一発で出来そうな関数は無かったので質問しました。
538 :
nobodyさん :2007/02/28(水) 21:29:47 ID:/OxDoLcN
hoge.dat の中身 ほげほげ,ほげ\n もげもげ,もげ\n PHP $fx = fopen("hoge.dat", "r"); while (!feof($fx)) { $str = fgets($fx); trim($str); $elem = explode(",", "$str"); $print "$elem[0] $elem[1] "; } fclose($fx); 結果 ほげほげ ほげ もげもげ もげ 期待する結果 ほげほげ ほげ もげもげ もげ というわけでtrim関数が期待通り動いてないみたいなんですが 俺のせいですかorz
539 :
nobodyさん :2007/02/28(水) 21:33:57 ID:ZCmQSNG7
そんな糞みたいな処理を標準関数で用意しろというほうがどうかしてる
540 :
481, 501 :2007/02/28(水) 21:49:59 ID:mYjvryh6
ありがとうございます。
>>502 できました。
>>485 $_COOKIEでロードし変化させてsetcookieでセーブ
みたいなのを考えていたんですけど、
呼び出す順番に制約があるので無理っぽいです。
エクステンションというのも調べてみます。
オブジェクト指向で作っていくときクラスの数が大量になると思うけど、 クラスフォルダ(classes等)の中でさらに機能ごとに分類して設置したりしてる?
542 :
537 :2007/02/28(水) 23:24:41 ID:???
自己解決しました
543 :
537 :2007/02/28(水) 23:37:16 ID:???
>>538 hoge.datの
ほげほげ,ほげ\n
は本当に\nだけ?
$str = trim($str); とか
>>514 住所1 重複不可
住所2 重複おk
ってことかな?
既存のデータベースに対する操作ならEXISTSあたりでできそうだけど
新規にテーブル作ってつっこむならコードと住所1をプライマリキーに
546 :
nobodyさん :2007/03/01(木) 00:35:17 ID:d9i72hOu
php5です。 ユーザー関数functionの引数の型の 指定の仕方がありましたら教えてください。
547 :
nobodyさん :2007/03/01(木) 00:38:55 ID:a/RduvQD
掲示板の文字表示の制限をする処理で悩んでいます。 どんな場合でも10行以上の表示をさせない為には どうすれば実現できますか?(最後の行には[続き]リンクを入れる) mb_strpos関数で\nを検索して、改行数をカウントする方法で やっていますが、これだと改行いれずに文字を多く書かれてしまうと スルーされます。改行と文字数をいっぺんにカウントする 関数を作っていますが、複雑でよくわからなくなってきました。 何か良い方法や解説しているサイトなどあればご紹介お願いします。
>>546 受け取ってから関数内でif文とgettype使う
>>547 投稿した文字の改行を取り除いて、指定した文字数ごとに改行いれればいいんじゃない?
文字ごとに切り抜いていって配列に格納して、countで10以上なら10までは表示して以降は[続き]リンクを
続きリンクはview?id=1002&mode=allみたいな感じで普通の閲覧(10行までの表示)と全て表示を切り替える
>>514 鯖移転で返せなかったが
二回SQL発行でいいんじゃね
551 :
547 :2007/03/01(木) 00:57:40 ID:a/RduvQD
>>549 レスありがとうございます。
なるほど〜改行とった後で文字列のカウントですか〜
いや〜まったく思いつきませんでしたw
解決できそうです。ありがとうございました!
552 :
481, 546 :2007/03/01(木) 02:05:12 ID:d9i72hOu
553 :
547 :2007/03/01(木) 02:05:28 ID:a/RduvQD
一旦解決しましたが、改行も入力したまま反映したいと思い 再度考え直しました。以下の方法で実現できそうです。 1列の文字数を30と仮定して、30文字までを抜き出し mb_strpos関数で改行を探し、あった場合、その位置までを 変数に格納、次のmb_strpos開始位置を改行のあったところから 30文字分を抜き出し検索、改行がなかった場合、抜き出した文字全てを 変数に格納、これを10回繰り返し、まだ文字が残っていた場合、 [続き]リンクを入れて終了。 しかし問題もありそうです。ブラウザの文字の大きさはそれぞれ違うし、 人によっても大きさを変えています。その場合の対処が できそうもありませんが、それはそれとして置いときますw あと、mb_strpos関数の挙動が不審なのも気になりますが、 文字コード等の問題かな?ま〜置いときますw 一応、事後報告として。。。^^;
俺は単に文字数だけで切ってるな 改行も投稿内容のうちってことで 携帯ユーザーに多い改行しない投稿も携帯らしさってことでね
昨日このスレ見てたら、いきなり人が多いとかいって、 スレッドが消えちゃったんですが、掲示板に戻るで戻ったら、 このスレが再度見つかりました。これって何?? 俺だけ?!
板移転
>>547 trim()は標準でスペースもタブも\rも削除するから多分大丈夫
>>538 Perlやってるやつが良く陥る罠
558 :
547 :2007/03/01(木) 09:28:54 ID:???
>>554 文字数だけってことは
あ
い
う
って感じに入れられると、場合によってはすごい行数を
使ってしまう場合がありますよね?
それが嫌だったので、なんとかしようと思ってました。
全く手付かずで、1日悩んでしまいました ><
>>558 そもそも
「どんな場合でも10行以上表示させない」
とかいう要求が無茶すぎるのでは。
560 :
547 :2007/03/01(木) 09:47:05 ID:???
>>559 投稿する人に負担になってしまうかもしれませんね〜^^;
でも投稿文字制限は1000文字なんですが、558のようにやると
すごい行数を表示してしまうので、やはりなんとかしたいですねw
行数を増やそうかな。。。
・1行あたりの最大文字数 ・N行までの改行数制限 ・全体の最大文字数 でそれぞれ制限かけたら?
1文字1文字改行するような荒らしまがいのやつの画面に 1000行表示されたところで自己責任だろ。そういうバカなユーザーは切り捨てろ
563 :
538 :2007/03/01(木) 10:39:56 ID:mfeLki9Q
>>544 これでうまくいきました。
ありがとうございました。
>>557 ご指摘の通りPerlやってるやつです。
本当にあり(ry
本文を改行コードでexplode。 配列10個のstrlenの合計が規定値より多ければ字数で。 少なければ改行コードで。 ってのはどう?
565 :
547 :2007/03/01(木) 11:06:34 ID:???
>>561 文字数の制限というより、改行の制限ですね。
文字は1000文字以内ならいくらでも問題ないですが、
改行がいっぱい入れられて、行数を稼がれることが問題です。
>>562 荒し対策は難しいですね〜^^;
レスポンスを考えると、今作ってる処理はforの中にfor文があって、
さらにifが多数。。。ほんとはやりたくないんですが。。
>>564 良さそうですね!改行コードでexplodeは素晴らしいかもw
もう少し煮詰めてみます。ありがとうございます!
亀ですが、
>>386 の場合って$strに特定の1文字が存在する場合なので
別に正規表現使わずにstrpos()でするのが最適ですよね?
>>566 特定の1文字が何回含まれているか、になると
strposの場合ループ処理になるから微妙かな。
関数で一発処理できる場合はその方が速いことも多々ある。
568 :
547 :2007/03/01(木) 11:43:08 ID:???
以下のように考えてみました。
1列の文字数を30と仮定して、
>>546 さんの言われた改行コートでexplodeして配列格納。
配列ごとに、30文字以内ならそのまま表示用変数に文字格納して、
改行カウントを+1し、30文字より大きければ、
その時の改行カウント×30を300から引いた数値Aと比較し、
大きければその数値Aまでを表示して[続き]リンク表示して終了。
数値Aより少なければ、表示用変数に配列の文字を格納して、
(配列の文字数÷30)+0.99=改行カウント(整数部)とする。
改行カウントが10超えて配列に文字が残っていれば、
[続き]リンク表示して終了。
なんとかいけそうな感じです^^
mb_strpos関数が不審だったので、explodeでの処理はテストも減るし
大助かりですw ありがとうございます!
569 :
547 :2007/03/01(木) 11:43:50 ID:???
570 :
軟式PHP :2007/03/01(木) 11:46:21 ID:???
substr_countはいらない子ですか。
571 :
547 :2007/03/01(木) 12:02:51 ID:a/RduvQD
>>570 私に言っていただいてると仮定して。。w
substr_count関数を使うということは、300文字までに
改行が10個あればそこまでを表示して、なければそのまま表示する。
という処理に使えますね。。。。あれ?使えるのかなw
9個なら30文字、8個なら60文字まで、1個なら270文字まで、
今まではこの関数だと、強制10行処理はムリと思ってましたがw
。。。しばらく考えます。レスありがとうございます!
572 :
nobodyさん :2007/03/01(木) 12:05:18 ID:KfGKDn9N
mb_eregですが 事務系<br> IT系<br> サービス・接客系<br> 介護・福祉系<br> 工場・作業系<br> その他<br> という物が入っている変数から "サービス・接客系"をマッチさせようとすると、なぜか検知しません。 中身を変えて "サビス・接客系"で erge("サビス" というように ー を抜かすとマッチするんですが いったいどういうことでしょう?
573 :
547 :2007/03/01(木) 12:09:24 ID:a/RduvQD
>>570 私に言ったのでなければ、すいませんw
substr_count関数だと最後の改行位置が分らないので
やはりムリと思います。いや〜昨日から悩みっぱなしですw
574 :
566 :2007/03/01(木) 12:32:50 ID:???
576 :
547 :2007/03/01(木) 13:09:15 ID:a/RduvQD
577 :
虚弱PHP :2007/03/01(木) 13:18:48 ID:???
578 :
nobodyさん :2007/03/01(木) 14:00:04 ID:Ji+dT1nk
>>576 いや、この場合アンカーを付けない奴が悪い。君の対応は紳士的だと思うよ。
ある本に「インスタンス化は、一般的に負荷の大きな処理です」と書いて あったのですが本当ですか?
>>579 メモリ確保とかメンバ変数初期化とかコンストラクタ検索して実行とか
やること多いからな。
581 :
547 :2007/03/01(木) 14:25:27 ID:a/RduvQD
>>578 どうもです^^
でも自分の勘違いが周りも勘違いさせる可能性があるので、
一種の荒らしかもしれませんw
>>580 では、一度インスタンス化したら、クラス内や関数内で
もう一度インスタンス化しないほうがよいのですね?
583 :
虚弱PHP :2007/03/01(木) 14:44:43 ID:???
>>582 どんな負荷要求があるのか…。
ひとまずインスタンスが使いまわせるなら、
Singletonパターンのようなもの使ったりすればいいと思う。
本来使いまわせないものを使いまわそうと工夫するぐらいなら、
パフォーマンスを犠牲にした方がマシだと思う。
PHPでのインスタンス化ってそんなに負荷かかるかな?
Arrayとそんなに変わらないと思うよ。なんか中身は似てるし。 array()がどんだけ遅いかはまぁ、自分の環境でテストするしかない。
上のほうでも似たような質問がありますが、 URLが正当なものかチェックするプログラムを書いているのですが、 URLに含めてはいけない文字列があったらfalseを返すか、 全てエンコードしてtrueを返すかどちらがいいのでしょうか?
588 :
nobodyさん :2007/03/01(木) 17:44:06 ID:WjIfG4Om
>>588 グロ警報
コラだと思って気にしない事にする・・
590 :
586 :2007/03/01(木) 17:46:54 ID:???
目的は2chのようにリンクをはったら、 リンク先を確認する画面を出したいのですが、 その際にURLが不正だったらエラーを出して何もしないか、 エンコードしたURLを出して、 確認してクリックしてくださいというような メッセージを出すかといった感じです。
>>588-589 ???と思いながら3回ほど上下左右に視線を動かしてみたが、
どこがどうなのか分からなかった
もう見ない方がいいのか
592 :
547 :2007/03/01(木) 17:52:28 ID:a/RduvQD
掲示板の10行のみの強制表示に成功しました〜^^
forではなくてdo〜whileだったりと多少誤差はあるものの、
>>547 で書いたとおりにほぼ作りました。
レスくれた皆さんありがとうございました!
593 :
547 :2007/03/01(木) 17:54:18 ID:a/RduvQD
インスタンス化による負荷など、相対的に大きいだけで、絶対的には気にするほどじゃない。 いったい一度にどれだけの同時アクセスがあるんだ、と。 そんなレベルで悩んでるということは、たいしてアクセスの無いサイトを運営してると思われる。 だったら、負荷がどうのこうのとか悩む前に、アクセスアップを悩むほうが先じゃないか、と。
>>588 バカみたい。
列車に跳ねられたらそんなもんじゃすまないぞ。
もっとぐちゃぐちゃになるからね。
596 :
nobodyさん :2007/03/01(木) 19:08:13 ID:7eZkn0sw
タグの中にPHPの処理結果を反映させることってできませんか? $_GET内によってリンク先などを変えたりする場合に <a href=hoge.php?$_GETの内容>hoge</a>のようにできると条件分岐が必要なくなるので便利なのですが。
>>595 知りたくも無い人もいるし、いらんレスしないで下さい
>>590 ここでアンケートとってるの?
好みの問題だろ
それほどグロくない。
>>596 <a href=hoge.php?<?= $_GET['argv'] ?>>
>>596 それくらい出来ないと使えない言語ってことになる。
>>599 想像力の問題
見えてるものしか評価しないなら想像力が乏しいかと
>>602 ニヤニヤしながらコラ作ってるピザデブしか想像できません
606 :
574 :2007/03/01(木) 20:03:48 ID:???
>>585 俺は390ではないんだが。
>>602 想像力とか関係ないだろ、単に免疫の問題
以下質問どうぞ
皆さんには糞スレ化した罰として画像合成のルーチソを書いてもらいます
609 :
nobodyさん :2007/03/01(木) 20:47:37 ID:lXqb5ag8
IP から 県名とか国名を求めるのには どうやればいいのですか?
国はまだしも県名を取得できるのは一部のプロバイダだけだ
>>609 IPアドレスをwhoisで検索する。whoisを利用するには、PEARを使うのが一番早い。
[email protected] というメールアドレスにメールが来た場合、
内部的にセッション入りの登録ページURLを返信してくれる
といった機能を
XREAで
実装したいのですが可能でしょうか?
どこにphpと関係してるんだ?
>>612 できるんじゃない?
POP3でhoge.hogeのメールを受信してくればいいんでしょ。
>>615 そう?
メールの送信先が@xrea.comでなく任意のhoge.hoge相手なら
.forwardやaliasesも使えないだろうから、
1.POP3でxreaサーバからhoge.hogeサーバのメールを受信
2.メールのFrom:を見て規定のフォーマットのメールを送信
っていうPHPスクリプトをcronで起動するって感じになりそな気がするけど。
(hoge.hogeからxrea.comにメールを自動転送する手もあるけど)
617 :
nobodyさん :2007/03/02(金) 01:45:09 ID:BzmNP0/K
>>607 配列にある全ての画像を合成するプログラムなら組んだ
618 :
nobodyさん :2007/03/02(金) 02:12:38 ID:2TC1CsXh
当たり確率1/12を2000回試行してちょうど180回当たりを引く確率を出す式をご伝授頂けないでしょうか。
宿題は自分でやれ
C[2000, 180]・(1/12)^180 (11/12)^1820
621 :
nobodyさん :2007/03/02(金) 02:34:08 ID:2TC1CsXh
宿題?学生でも無いリーマンです。パチスロでの設定看破に使おうと思いまして
622 :
nobodyさん :2007/03/02(金) 02:35:31 ID:2TC1CsXh
>>620 これをそのまま
echo C[2000, 180]・(1/12)^180 (11/12)^1820;
で表示されますか?今テスト環境が無いのですぐ確認出来ませんので…
確率を求めたいの?式を求めたいの?
愛を求めたいの
>>622 数式も分からんやつが看破プログラム作ろうとか考えるなよ。
最初から大金積んで人に作ってもらえ。
>>622 >これをそのままecho
orz あまりのバカぶりに萎えた
628 :
nobodyさん :2007/03/02(金) 02:55:48 ID:2TC1CsXh
式がわかってても、PHPでその式を使うにはどうやって書いたらいいか分からないってことなんだけど…
その表現として
>>622 みたいなこと書いたんですが。
629 :
nobodyさん :2007/03/02(金) 02:56:28 ID:2TC1CsXh
マルチというかCGIじゃ無理そうだからPHPに流れてきたんだけど。
マルチがバレルと急に偉い口調なった件
>>629 つまりマルチってことね
perl でできないわけないと思うけど
>>628 君は基本的な勉強からやり直しなさい。
それじゃ結局「仕様作成とそのコーディングまで全部書いてください」と言ってるだけだ。
>>628 式は分かってんの?
分かってんなら最初から書けよ。
俺らに無駄な労力を強いる気か
634 :
nobodyさん :2007/03/02(金) 03:52:35 ID:2TC1CsXh
計算は出来ます、約1.77%で合ってると思うのですが。 ただ、PHPでこの計算をする方法が全く検討つかないので。 たとえば10の3乗を出す、程度の計算なら思い浮かびます。 $a = pow(((12*1/2)+(2*2)),3) 自分で書けるのはこのくらいの式でして…pow()も最近覚えたばかりです。
マルチに対するコメントはないのか?
636 :
nobodyさん :2007/03/02(金) 04:03:00 ID:2TC1CsXh
マルチって、Perlの仕様とかをここで聞いてる訳じゃないし何でそこまで責められなきゃなんないのさ… まして向こうでは式の事なんか触れてもいないし。
はい乙、迷惑なのでもう書き込みやめてください
ID:2TC1CsXhは50万円払ってからモノを言え。
どうでもいいけどシミュレーションはJavaScriptにしろよ。
640 :
nobodyさん :2007/03/02(金) 09:20:42 ID:DDcuD0TE
PDO覚えるのマンドクセ('A`)
641 :
634 :2007/03/02(金) 10:51:36 ID:???
何でこんな人を見下した発言する人ばっかなんですかね? そんなに偉いんですか?優越感に浸りすぎじゃない? マルチどうこうってのは完全にただの言いがかりだし。いくら何でも暗すぎ。 なんかスレ全体見ても、いくら教える側とは言え態度でかすぎだろ。 タメ口で話すとか、そういうんじゃなくて、知らないってだけでバカだのアホだの、 中には死ねとかいう発言まであるし。何でPC得意な奴って攻撃的なんだ?このスレは異質
前にこのスレでも話題になってたデザインパターンの本買ってみたけど結構良かったよ.前半のほうは。
>>642 もう少し詳しく
俺も買ってみようか迷ってる。
>>641 そんなに不満があるなら自力で調べろよww
そんな「攻撃的で異質」なヤツらにわざわざ質問してないでさ、自分で考えなよw
>>641 別人だとは思うが一応答えとくか。
>>618 の質問の内容からして
テンプレから飛んでマニュアルさえ見れば済むような内容。
仮に誰かがその式を教えたとしてもその後に1から10まで質問してくるとしか
思えないようなスキルの無さがレスの端々に伺える。
丸投げ風な質問内容。
逆に最近でいうと
>>547 みたいな質問者にはみんなちゃんと答えている。
自分で先ず基本的なところを勉強してからくるか丸投げ板にいくといいよ
特定の部分の require_once がまれに Warning: failed to open stream : No such file or directory を吐き、確認してもファイルパスは合っており、 試しに require に変更すると一時的に収まるのですが、 その後少しまた開発していると、今度はその require が同じエラーを吐き、 require_once に戻すと収まる始末。暫くするとまたエラーで変更の繰り返し・・ これなんでしょうかね? PHP 5.2.1 on FreeBSD 6.1(VMware)
マルチうんぬんについては完全に言いがかりだなw ちょっと引いた
>>646 どうしてもじゃないなら2007/2/14リリースの
こなれてないバージョンなんて使わないほうがいい。
651 :
648 :2007/03/02(金) 14:00:11 ID:???
>>649 これで再現できるかと
$socket = fsockopen ($host, $port);
fwrite ($socket, $req_hdr . $req_body);
// socket_set_timeout ($socket, $sec);
do {
$dat = fread ($socket, $rbufsize);
$res_data .= $dat;
} while (strlen ($dat));
fclose ($socket);
$enc = mb_detect_encoding($body); if($enc != 'SJIS') { $body = mb_convert_encoding($body, 'SJIS', $enc); } 投稿された文字列が mb_detect_encodingで'SJIS'以外だった場合、 mb_convert_encodingで文字コードを'SJIS'に変換してDB保存したいのですが mb_detect_encodingがうまく作動せず、英文だとASCIIと日本語だとFALSEを返してきます。 ちゃんとSJISを返す(SJISの場合)ようにできないのでしょうか?
>>652 何でもかんでもsjisに変換すれば良いよ
あとdetectは使い物にならない。
>>653 さん
返レスありがとうございます。
$body = mb_convert_encoding($body, 'SJIS', 'auto');
をかければOKということでしょうか?
>あとdetectは使い物にならない。
そうなんですか(^^;
多用してました…
>>650 およ? PHP5.2.1はバレンタイン・デー時点での
最新安定版なんじゃないの?
さっき桜鯖にインストールしたばっかりなのに (;_;)
>>655 つまり最新バージョンにバグが混入してても情報が少ないということ。>2007/2/14 5.2.1
>>656 なるほど。でも、とりあえず無事に動いているみたいなので
私はこのままにしておきます。
「『動いているならそのままにしろ』が鉄則」と誰かが言っていたので。
何か問題があったらPHP5.1.xくらいにしてみます。
659 :
虚弱PHP :2007/03/02(金) 15:06:31 ID:???
>>646 >>650 FedoraCore5+PHP 5.2.1で動かしてるけど、
問題は起きてないなぁ。
アクセラレーターとか入れてない??
660 :
646 :2007/03/02(金) 15:33:32 ID:???
みなさん、レスありがとうございます
>>659 特にいれてないですね
$php -v
PHP 5.2.1 with Suhosin-Patch 0.9.6.2 (cli) (built: *)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
先日、開発環境の PHP 4.4.* をアップしてから症状が出だしたので、
やっぱりこちらの環境の PHP 5.2.1 の問題なんですかねぇ
自分のスクリプトの書き方がまずいどうこうの問題ではなさそうですし
もう少し様子をみてみます、どもでした
PHPのソースから差分を抜き出して自分で比較でいいよもう
function test() { static $a = 0; } とういう具合に、static変数に初期値を設定するのはOKでしょうか?
663 :
nobodyさん :2007/03/02(金) 16:31:19 ID:SAy252Rv
>>663 ;my.cnf
skip-character-set-client-handshake
ID:2TC1CsXh鹿馬…
666 :
nobodyさん :2007/03/02(金) 17:18:39 ID:SAy252Rv
664有難うです。
667 :
虚弱PHP :2007/03/02(金) 17:47:43 ID:???
>>660 そっか。
Suhosinパッチが当たってるね。
FreeBSDって標準でパッチ当たってるんだっけ?
問題切り分けのために、
できるならパッチが当たっていないPHPでテストした方がいいと思う。
皆さんお久しぶりです。元気で頑張っていますか。 下山伸二です。 あれから、色々引越しなどもありましてphpの勉強が進んでいないのですが、 なんとか自分のHPらしいものができあがりました。感謝感謝です。 また、ここで勉強させて頂きますので、どうもお手柔らかにお願いします。 今日は、これから出かけますので、この辺で。
asdf0002asdf.jpg こんな文字列データから数字のみ取り出すのはどうしたら良いですか。 eregだとマッチはするのだけれども、その文字のみ取るというのが出来ません。 アドバイスお願いします。
>>668 おぉぉ、ご無沙汰!
HP出来たんだ。まぁ、頑張れよ。よかったら見せてくれぃ。
671 :
nobodyさん :2007/03/02(金) 18:45:26 ID:Q6VSKbxP
$array[]の中に、配列$valueの値をAND区切りで入れたいんですが、 for ($i=0;$i<count($value);$i++){ $array[] .= $value[$i]; $array[] = implode(" AND ",$array[]); } エラーが出ます。どうすれば良いでしょうか。
>>671 どういう配列状態でほしいのかもわからない
foreach ($Array as $val) { for ($i=0;$i<count($value);$i++){ $array[] .= $value[$i]; $array[] = implode(" AND ",$array[]); } }
>>671 $array = implode(' AND',$values);
676 :
671 :2007/03/02(金) 18:59:21 ID:???
要は小配列を大配列の一つにしたいという感じです
>>675 それやると
Warning: implode(): Bad arguments. in /public_html/test.php
が大量に…
小配列大配列からして意味不明
>>669 $filename = "asdf0002asdf.jpg";
$number = preg_replace("/.*?([0-9]+).*?\.jpg/", "$1", $filename);
679 :
nobodyさん :2007/03/02(金) 19:10:09 ID:w2JedoDo
サニタイズについて質問です。 フォームの内のタグを排除する為に $_POST = array_map("strip_tags",$_POST); としているのですが、これだとタグを排除するだけで、<とか"は排除出来ません。 普通はhtmlspecialcharsを使うのでしょうが、これを使うと配列内の値は 適応されずに、エラーになりました。 フォームからの値を一括でサニタイズする場合、どういう書き方をするのが 一番ソースが少なく、最適だと言えるのでしょうか?
680 :
669 :2007/03/02(金) 19:10:26 ID:6EETpm2C
>>679 これぞサニタイズ脳。
入力値をサニタイズするんじゃなくて、
入力内容はそのまま受け取って
出力値をサニタイズするんです。
PHP4.3系での質問です。宜しく御願いします。 $aの配列の中身がこうなっています。 ( 1=A, 1=B, 2=A, 2=K, 2=D, 3=SS, 3=AX, 4=A…) この時、 (1=A / 1=B) + (2=A / 2=K / 2=D) + (3=SS / 3=AX) + (4=A … という様に数字ごとに一組になる様に置き換えたいのですが、 いい方法ありますか? ややこしくてすみません。
684 :
679 :2007/03/02(金) 19:21:54 ID:???
>>681 $name=htmlspecialchars($_POST["name"]);
こういうことですよね?でも、これだと必ずhtmlspecialcharsを付けないと
行けなくて、ソースが増えすぎると思うのですが・・。
>>679 サニタイズ脳に答えるなんて親切だろ?
preg_replace("/\'|\"|\&|\<|\>/", "", $str);
サニタイズ言うな言うな
688 :
虚弱PHP :2007/03/02(金) 19:34:20 ID:???
>>684 array_walk_recursive()
嫌サニタイザー多いな。 コーディングスタイルなんて人それぞれだろ?
690 :
679 :2007/03/02(金) 19:36:16 ID:???
>>685-688 みなさんありがとうございます。
いただいたソースとURLを参考に勉強します。
>>683 配列を回してそれぞれの要素に対して内容を判別して新たに配列を組みなおせば?
693 :
nobodyさん :2007/03/02(金) 19:54:21 ID:g1P/5yv2
PHPで主成分分析をしたいんですが、フリーで使えるライブラリを ご存知の方いませんでしょうか? 行列計算に関しての情報が全然見つからなくて困っています。 下らない質問ですいません…。
696 :
683 :2007/03/02(金) 20:01:52 ID:???
>>692 すみません、ちょっとよくわかりません。
私が考えていたのはif文を使って、
数字が同じなら / で区切り、数字が変わったら )+( で区切る様にする
という感じですが、その数字の判別をどうやってやるのかよく分からなくて、、、
>>696 1=A
とかっていうのは文字列なのかしら?
ヒント:配列とキー
700 :
683 :2007/03/02(金) 20:09:53 ID:???
>>698 そうです。
1-A,2-B,2-X,3-AB…
という感じで「半角数字=文字」の束がコンマ区切りで格納されています。
=でexplode
>>700 左辺も右辺も重複する場合があるって言うのが結構面倒そうですね
703 :
683 :2007/03/02(金) 20:17:38 ID:???
>>700 1=A,2=B…イコールの誤りですすみません
explodeすると
1,A,2,B,2,Cという感じにバラバラになってしまうので余計やりにくい様な
カンマなら配列要素の区切りだと思うだろ常識的に考えて
テンプレも読めない奴は氏ね、帰れ
706 :
683 :2007/03/02(金) 20:32:41 ID:???
すいません、死にます;;
$test = []; for ($i = 0; $i < count($arr); $i += 2) { $test.push({key: MODEL[$arr[$i]], val: $arr[$i+1]}); } すべてカンマ区切りならこうすれば結構やりやすいんじゃないかと。
>>697 pearやpeclも調べてないんだったら厳しいね。(っていうか調べてたんなら最初から書いてね)
やり方分かってるなら自分でモジュール作ってみたら?
他の人も助かるかもしれないし。
>>708 ってか、投稿前に調べておくなんて常識だろw
調べないで投稿する方が異常なんだよ。つまりお前は異常。
710 :
683 :2007/03/02(金) 20:44:33 ID:???
先頭が必ず数字なので、正規表現使って先頭の数字を変数に入れて、 その数字が変われば次の処理にいく、という感じにしたいと思います。
712 :
nobodyさん :2007/03/02(金) 21:17:48 ID:g1P/5yv2
>>708 書き忘れてすみませんでした。
ライブラリは無さそうですか…。残念ですが、自分で作ることにします。
PEARとPECLに登録されるようがんばります。
わざわざレスありがとうございました。
713 :
nobodyさん :2007/03/02(金) 22:43:15 ID:iNFjaYc/
MySQL 4.0を使用している環境でWebアプリを構築する場合、 PHP側が文字コードをMySQLの設定文字コードに合わせないといけないのでしょうか? PHPのinernal encodingをEUC-JP、MySQLの設定文字コードをSJISにすると、 正常に検索が行えませんでした。 (LIKE %日本語% を発行すると、一部しか拾って来ませんでした。)
エンコーディング合わせろって話ではなくて?
>>713 検索前に検索文字列を変換しとけばいいじゃん
717 :
713 :2007/03/02(金) 23:13:02 ID:iNFjaYc/
3件も回答ありがとうございます。
>>714 さん
レンタルサーバで、MySQLの設定をいじることができません。
>>715 さん
PHPの内部エンコーディングをMySQLの設定文字コードに合わせたくないという事です。
>>716 さん
追加したデータは、EUC-JPで入っています。
INSERT時も内部エンコーディングEUC-JPのPGを使っているので、
データ自体、EUC-JPになっています。
ですので、検索時だけ対処しても駄目だと思います。
>>717 SJISのデータベースにEUCのデータを格納するんじゃねEEEEEEE
あなた馬鹿ですか。
>>717 接続時に SET CHARACTER SET ujis; とか
720 :
713=717 :2007/03/02(金) 23:31:13 ID:iNFjaYc/
>>718 さん
馬鹿です。
本番環境のエンコーディングが今まで分からなくて・・・
>>719 さん
MySQL 4.0だから、その手は使えません。
それで、最初の質問で「MySQL 4.0を・・・」と書きました。
皆さんは、どうされていたのか、知りたいと思いまして。
やはり、SQL投げる度に(INSERTもSELECTも)、
文字コードの変換を書く必要がありそうですね。
データ量が10万件規模なので、面倒だと思いましたが、
仕方ないようですね。
>>720 これはもうPHP全然関係なくて、さすがにMYSQL内部でがエンコードが違うと
likeで部分一致を試みようと思ってもうまく処理できないんだよ。
諦めてデータベースの中身を1度入れ替えるべし。
722 :
713=717 :2007/03/02(金) 23:40:16 ID:iNFjaYc/
>>719 さん
失礼しました。
SET NAMESではないですね。
ただ、それを実行すると、
#1115 - Unknown character set: 'ujis'
となります。
SHOW VARIABLES LIKE 'character%'
とすると、
latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
となるのですが・・・
>>722 MySQL4.0以下ならPHPのmbstringで文字コード変換してからinsert。
これが基本。
724 :
713=720=722 :2007/03/02(金) 23:44:26 ID:iNFjaYc/
親切な回答ありがとうございます。
>>721 さん
なるほど。エンコードが違うと、部分一致がうまく処理されないんですね。
>>723 さん
何か上手いやり方があるかと思いましたが、地道にするしかありませんね。
皆さんのおかげで、無事、解決しました。
mb_convert_encodingで文字コード変換します。
ありがとうございました。
725 :
nobodyさん :2007/03/03(土) 03:03:11 ID:fjJSaYh6
すんません
ZendFrameworkの板から流れてきたんですけど、どうやら問題はPDO関係っぽいので
こちらにおじゃまします。
postgresqlでPDO使ってる人いますか?
接続は
$db=new PDO('pgsql:dbname=testdb user=user');
であってますよね?これでつなげるし、クエリーも出せて結果も受け取れるんですけど
ZendFrameworkを使って接続すると、apache(httpdのuser)君にはそんな権限はありませんって
エラーが出て、どうやら、ユーザーを認識していない様子。
で、ソースをいじって、PDO接続するところを上記のように(ZF使う前からずっとこれでつなげてました)
変えたら、接続できて、その他のメソッドも動きました。
あちらでも指摘されたんですがPHPのマニュアルには
new PDO('mysql:host=localhost;dbname=test', $user, $pass);
と出てるんですよね。でも、このまま頭をpgsqlに変えると、apache君〜のエラーが出ます。
ちなみに、httpdの実行ユーザーをDBの接続ユーザーと同じ名前にすると接続できたりします。
ttp://www.php.net/manual/ja/ref.pdo-pgsql.connection.php ここを見ると、postgresqlは違うような表記になってますけど、
これって、つなぐDBによって表記が変わるようなしろもんじゃないですよね?
長文失礼しました。
ご指摘ありましたらお願いします。
>>725 変わる代物です。例えば
MySQL : mysql:host=[HostName];dbname=[DatabaseName];charset=[MySQL Charset]
PostgreSQL : pgsql:host=[HostName] port=[PortNumber] dbname=[DatabaseName] user=[UserName] password=[Password]
SQLite3 : sqlite:[DatabaseFileName]
SQLite2 : sqlite2:[DatabaseFileName]
727 :
725 :2007/03/03(土) 03:08:17 ID:???
追記 PHP5.2.1 postgreSQL8.2.3 apache2.2.2 です。 エラーは SQLSTATE[08006] [7] FATAL: role "apache" does not exist です。(権限はないじゃなくて、いませんでした。勘違いですOTZ)
728 :
nobodyさん :2007/03/03(土) 03:13:14 ID:fjJSaYh6
>>726 即レスサンクス
やっぱりdbによって違うんですか。
ってことは、ZendFrameworkのバグでしょうか?
あっちでも書いたんですけど^^;
いくら試用段階とはいえこんなコアな部分にバグあって
誰も気づかないはずないですよね?
もうちょっといろいろ試してみます。
引き続き何かありましたらレスお願いします。
>>728 必要な情報がDB毎に異なる部分だからこの辺は
統一されている必要性があるとも考えてもいないんじゃない?
バグでなく「仕様」かと。
>>725 DSNの指定はDBごとに異なるものだけど、userとpassについては
第二引数、第三引数に指定することで各種DB共通に処理できる。
$db=new PDO("pgsql:dbname=testdb", "user");
で動かんか?
>>683 <?php
$array = array( "1=A", "1=B", "2=A", "2=K", "2=D", "3=SS", "3=AX", "4=A" );
$str = "";
$i = 0;
// sort($array);
foreach ($array as $val) {
$num = (int)$val;
if ($num == $i) $str .= " / " . $val;
elseif ($num > $i) {
if ($i == 0) $str .= "(" . $val;
else $str .= ") + (" . $val;
$i = $num;
}
else exit("Error");
}
$str .= ")";
echo $str;
?>
$array = array( "1=B", "2=A", "2=K", "2=D", "3=SS", "3=AX", "4=A", "1=A",); だったらだめじゃん
sortFunc($m,$n){ $m=(int)$m; $n=(int)$n; if ($m == $n){ return 0; }else if ($m > $n){ return 1; }else{ return -1; } } sort($array,'sortFunc')
sortFunc($m,$n)→ function sortFunc($m,$n) sort($array,'sortFunc') →usort($array,'sortFunc')
なーんかダサイコードだな
736 :
731 :2007/03/03(土) 08:24:45 ID:???
>>732 数字はあらかじめソートして配列が作ってあるのが前提です
並べ替えてよいのなら
sort($array, SORT_NUMERIC );
にしてください
出力が決められた文字列として出す事が前提だから どうしてもださくなるわな
なんか沸いたぞw
>>739 >なんか沸いたぞw
この場合の「わいた」は「沸いた」ではなく「湧いた」ではないでしょうか。
ご確認のうえ、訂正をお願いします。
functionを使った関数の書き方って function hogeHoge($name,$type,$format); 出力側は、hogeHoge("名無し","テキスト",""); みたいな感じですよね?なんか他所で function hogeHoge($name,$type[,$format]); こういう書き方を見たのですが、こういう書き方って出来るんですか?
なんか湧いたぞw
>>741 Parse error: syntax error, unexpected '[', expecting ')' in C:\home\php\test.php on line 3
人に試させるなよ
マニュアルだろ
>>741 PHPマニュアルか
[, 変数 ]は省略可能を表している記号だ
747 :
741 :2007/03/03(土) 11:43:10 ID:???
>>746 マニュアルです。省略可能という事は、
hogeHoge("名無し","テキスト");
こう書けるって事ですか?ただこれをすると
Missing argument 4 for hogeHoge(), というようなエラーが出ました
ソースを晒したほうが早いです。
>>747 関数定義するとき省略可能なようにする
function hogeHoge ( $name, $type, $format = "")
{
echo $name;
echo $type;
if ($format) echo $format;
}
750 :
741 :2007/03/03(土) 11:57:25 ID:???
>>749 意味分かりました。ありがとうございました。
751 :
nobodyさん :2007/03/03(土) 12:35:53 ID:Z8h+tc0/
クラス外にある設定ファイル上の変数を、クラス内から使いたい場合ってどうすればいいんでしょうか。。 下記のような方法では、無理でしょうし。 * hoge.php require_once 'settei.php'; Class Hoge { function sample(person){ echo $name[person]."さんです。"; } } * settei.php $name = array(1=>"taro",2=>"jiro",3=>"saburo");
定数かglobalじゃ駄目なん? とクラスが使えない俺が言ってみる。
PHP5なら static $name = array(1=>"taro",2=>"jiro",3=>"saburo"); にして settei::name[$person] でアクセス PHP4なら define( "name", array(1=>"taro",2=>"jiro",3=>"saburo") ); にして name[$person] でアクセス 検証はしてないのでたぶん
サニタイズの高木の話、べつに悪いとは思ってないけど、 htmlspecialcharsでも悪くはない。 高木の言うことを鵜呑みにするのは初心者ですか?
755 :
nobodyさん :2007/03/03(土) 13:33:41 ID:2CUy4PID
PHP4.4.6リリースあげ
756 :
725:728 :2007/03/03(土) 13:40:25 ID:fjJSaYh6
>>729 >>730 レスありがとうございます
すいません。わかりました。
passwordを省略すると、そのエラーが出るようです。
しかもZendFramework版のほうで指摘されてたのに見逃してたみたいです。
まじでごめんなさいOTZ
いいわけ:でも、エラーの出方が紛らわしいと思いません?^^;
ありがとうございました。
757 :
nobodyさん :2007/03/03(土) 13:57:33 ID:2CUy4PID
PHPマニュアルのページから目次以下の関数名と説明書き↓を取得したいのですが、
余計なものまで取得したり、配列がぐちゃぐちゃになって困ってます。
どこを手直ししたらよろしいのかご教授お願いいたします。
【取得したい内容】
apache_child_terminate ? このリクエストの後にApacheプロセスを終了する
・
・
virtual ? Apache サブリクエストを実行する
【ここまで】
(計14行文)
<?php
$url = "
http://www.php.net/manual/ja/ref.apache.php ";
$subject = file_get_contents($url);
$subject = mb_convert_encoding($subject,"EUC-JP","auto");
$patten = "[(<dt>)+(.*)(</a></span>)+]";
preg_match_all($patten, $subject, $set);
echo"<pre>";
print_r($set);
echo"</pre>";
?>
758 :
nobodyさん :2007/03/03(土) 16:18:07 ID:cG1UPfnL
PHP4です。 300行ほど並んだCSVファイルから、ランダムで1行だけを取り出し、 その列のデータを配列$arrayに入れる方法を教えて下さい。
これは釣よ
$file=file("CSVファイル"); srand((float) microtime() * 10000000); $array = array_rand($file);
762 :
nobodyさん :2007/03/03(土) 16:26:28 ID:cG1UPfnL
>>759 $file = "data.csv";
$file = @fopen($file);
$array = array($file);
$close;
でストップしてます
>>762 マニュアルでfopen関数のとこ見るといいよ
>>757 $patten = '[<dt>(.+?)</dt>]';
すいません、
>>761 の通り
$file = "data.csv";
srand((float) microtime() * 10000000);
$array = array_rand($file);
とした時、$arrayには行数が入りますよね?
>>765 マニュアルでarray_rand関数のとこ見るといいよ
>>757 HTML化される前のSGMLを使った方がいいんじゃまいか?
<refentry id="function.apache-child-terminate">
<refnamediv>
<refname>apache_child_terminate</refname>
<refpurpose>このリクエストの後にApacheプロセスを終了する</refpurpose>
てな感じにXMLの形式で書かれている。
元ネタはCVSで取得するしか無いが、まぁ難しいもんでもない。
今のように毎回本家に負荷を掛けるより、一回チェックアウトしてローカルファイルとしてやったほうがいいべ。
cvs -d :pserver:
[email protected] :/repository checkout -d phpdoc-ja/reference
>>763 >>766 理解しました。
$file[$array]で出力するとうまく一行だけ取り出せました。
ありがとうございました。
769 :
nobodyさん :2007/03/03(土) 16:51:04 ID:2CUy4PID
>>764 さんのご指摘の箇所を修正しました。
しかし全部14行取得できません。悩みます。
>>767 さんのおっしゃること通りですが、私には勉強不足な点がございますので調べてみます。
770 :
nobodyさん :2007/03/03(土) 16:53:18 ID:2CUy4PID
結果はります。 Array([0] => Array ( [0] => apache_child_terminate ? このリクエストの後にApacheプロセスを終了する [1] => apache_get_modules ? ロードされた Apache モジュールのリストを取得する [2] => apache_get_version ? Apache のバージョンを取得する [3] => apache_getenv ? Apache の subprocess_env 変数を取得する [4] => apache_note ? Apacheリクエスト記号(note)を取得/設定する [5] => apache_request_headers ? HTTPリクエストヘッダを全て取得する [6] => apache_reset_timeout ? Apache の書き込みタイマーをリセットする [7] => apache_setenv ? Apacheサブプロセスの環境変数を設定する [8] => ascii2ebcdic ? ASCIIからEBCDICに文字列を変換する [9] => ebcdic2ascii ? EBCDICからASCIIに文字列を変換する [10] => getallheaders ? 全てのHTTPリクエストヘッダを取得する [11] => virtual ? Apache サブリクエストを実行する ) [1] => Array ( [0] => apache_child_terminate ? このリクエストの後にApacheプロセスを終了する [1] => apache_get_modules ? ロードされた Apache モジュールのリストを取得する [2] => apache_get_version ? Apache のバージョンを取得する [3] => apache_getenv ? Apache の subprocess_env 変数を取得する [4] => apache_note ? Apacheリクエスト記号(note)を取得/設定する [5] => apache_request_headers ? HTTPリクエストヘッダを全て取得する [6] => apache_reset_timeout ? Apache の書き込みタイマーをリセットする [7] => apache_setenv ? Apacheサブプロセスの環境変数を設定する [8] => ascii2ebcdic ? ASCIIからEBCDICに文字列を変換する [9] => ebcdic2ascii ? EBCDICからASCIIに文字列を変換する [10] => getallheaders ? 全てのHTTPリクエストヘッダを取得する [11] => virtual ? Apache サブリクエストを実行する ) )
$patten = '[<dt>(.+?)</dt>]s'; とか
>>771 さんのやりかたで14行取得できましたが、配列の最初に関係ないものを取得してしまいました。
アドバイスいただきありがとうございます。
773 :
nobodyさん :2007/03/03(土) 19:19:38 ID:Z8h+tc0/
file_get_contentsで失敗した時には〜みたいな処理をphp4でしたいのですが、マニュアルには
のってませんでした。可能でしたら、お教え下さい。。
file_get_contents("
http://www.yahoo.comcomcom ") <= 404エラー
rescue
exit
みたいな。rubyでいう。
マニュアルくらい読めよ・・・ 失敗した場合、file_get_contents() は FALSE を返します。
776 :
773 :2007/03/03(土) 19:34:42 ID:Z8h+tc0/
さんくす!
777 :
773 :2007/03/03(土) 20:11:37 ID:Z8h+tc0/
Warning: file_get_contents(
"
http://www.yahoo.comcomcom "): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
ためしてみたんですが、WARGINGは出ますねぇ。。
あー、違うかもな とにかく自分でソース確認しましょうね。
780 :
nobodyさん :2007/03/04(日) 00:54:24 ID:/sugyBqZ
>>664 すいません今度はそれでも駄目でした・・・
my.cnfの[mysqld] に
skip-character-set-client-handshake
を貼り付ければいいわけですよね?
うん〜
781 :
nobodyさん :2007/03/04(日) 02:01:20 ID:74jdPdk8
ifや何もないブロックでも、関数と同じく、 ブロックが閉じる時に変数は破棄されますか? if(***) { $hoge; } { $foo; } function Bar() { $bar; }
俺、夢見てるのかな
783 :
nobodyさん :2007/03/04(日) 02:55:29 ID:j6Pq8T7o
PHP5にて、クラス自体へのアクセスを制限する方法はありますか? 例えば、クラスAは、クラスBからはnewできるが、クラスCからはnewできない、などです。 packageやfriendクラスの概念が無いので正攻法では無理だと思うのですが、 何か擬似的な方法がありましたらご教授下さい。
自作関数の中で、switchにてcase分けし、あるcaseの場合にはそこで 関数から抜け出したい(関数内に書かれているその後の処理をしたくない)のですが、 どうやって任意のポイントで関数から抜け出したらいいでしょうか? breakとかじゃないし・・・ exitだとプログラム全体が終わっちゃうし・・・
return
return
>>785 、
>>786 えっ、returnって値を返すだけじゃなくて、関数から抜けられるの!?
知らなかった・・・
今までいちいち
return $hoge;
exit;
とかって書いてた・・・orz
exitしたらそこでスクリプト終了だよ。 その直前でreturnしてるから、exitまで行ってないけど。
>>781 関数以外のブロックはスコープを隔てません。
>>783 定義したクラスは全てグローバルな同一の名前空間に押し込まれるので、できません。
いや、無理すればできるかもしれないけど、むしろ設計や命名規則などをうまく構築すべき。
無理な方法@コンストラクタの引数に特定のクラスのオブジェクトを渡し、不正なオブジェクトだったら例外投げたりエラー吐いたり。
無理な方法AクラスAを無理やりクラスBの親クラスにすれば、AのprotectedなメソッドにはCからアクセスできないので、そこでしかnewできないようにする。
無理な方法Bコンストラクタ内で、debug_backtraceで直前にどこのメソッドにいたのか調べる。
$this->hoge -> hogeArr($str); こんな感じのことしたいのですがどのようにすればいいでしょうか?
$this->hoge = new HogeClass;
>>788 >>えっ、returnって値を返すだけじゃなくて、関数から抜けられるの!?
同じ事を言っている事に気付かないのは、俺も共感は出来る。
まぁそういう発想もあるのかと勉強になった
>>780 SQL再起動したのか?
後質問するならバージョンとかもちゃんと書けよ。
「PHPプログラムを動かすと文字化けする」ってのも実は良くわからんし。
>>788 まあ、問題は return と exit の挙動を理解しないで書いてることだな。
797 :
781 :2007/03/04(日) 06:44:40 ID:74jdPdk8
798 :
nobodyさん :2007/03/04(日) 06:44:57 ID:qW7P3ujl
ファイルのパーミッション変更について質問です。 今、パーミッションが「0600」のtest.gifというファイルがあるとします。 このとき、rootでSSHログインし、以下のような内容のPHPスクリプトを実行します。 $file = '/home/httpd/(省略)/test.gif'; chmod($file, '0644'); すると、なぜかtest.gifのパーミッションが、「0644」ではなく「1204」になってしまいます。 どうしてこうなるのでしょうか・・・?? スティキービットを立てろなんて命令してないのに。。。
サーバ名も挙げずによく質問できるな。 その図太い神経だけは認めてやるw
800 :
nobodyさん :2007/03/04(日) 07:00:50 ID:qW7P3ujl
>>799 サーバ名と言いますと・・・??
もしかしてOSのことでしょうか?
OSはLinuxです。
PHPは4.3.1です。
801 :
791 :2007/03/04(日) 07:03:53 ID:???
お願いします…
802 :
798 :2007/03/04(日) 07:04:46 ID:qW7P3ujl
追記です。 直接シェルから chmod 644 test.gif と入力してやれば、期待通りの結果(0644)になります。 それなのに、なぜかPHPのchmod()だと「1204」になってしまいます。
>>798 0644ってのは8進数値なんだからシングルクォートで括っちゃダメだよ。
805 :
798 :2007/03/04(日) 07:50:53 ID:qW7P3ujl
自己解決しました・・・と思ったら、
>>803 さん、ありがとうございます。
そうですね、そこに気づかずにハマってしまいました。。。
$this = new this(); $hoge = new hoge(); $this->hoge = $hoge $this->hoge->hogeArr();
$thisに代入は無理だろ常識的に考えて・・・
クラス内じゃなきゃいけんじゃね
やってみればいいんじゃね
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★ このスレを見ている人はこんなスレも見ています。(ver 0.20) SOHOやフリーでWeb制作してる奴 二十人目 [Web制作] 【漢検】 漢字検定2級スレ part2 【2級】 [資格全般] 【アフィゴマ疑惑】Smart-C Part2【濃厚?】 [Web収入] 【支払遅延】Ads by Goooooogle Part77【奢れる者】 [Web収入] ▲漢字検定って意味ある資格?▲ [教育・先生]
漢字検定3級なら余裕
816 :
nobodyさん :2007/03/04(日) 12:31:40 ID:VcUPN6gu
教えてください。 配列の添え字に日本語って使ってもいいのでしょうか? いや、実際やってみたら使えるんで便利だと思ってるんですけど 英数字の添え字以外はなじみがなくて。
PHPのマルチバイト関数とか見てると、マルチバイトの添え字のテストなんてまともにやって無さそうだし怖い。 SJISでなんて怖くて出来ないし とか色々考えると俺には出来ないな
別にいいんでない?文字コードにさえ気をつければ
819 :
816 :2007/03/04(日) 13:25:09 ID:???
ありがとうございます。 まあ怖いのはそうなんですがwどうせ商用じゃないし利便性が勝るので気をつけて使います。
820 :
nobodyさん :2007/03/04(日) 13:35:23 ID:J36PC9WX
変数の受け渡しについてなのですが、 あるファイルで function hoge(){ $hoge = $_POST['hoge']; } としておいて、別ファイルから hoge(); で呼び出しをしてそれ以降の処理で$hogeを使うのはムリでしょうか? 一度試してみたのですがうまくいってなくて。 できないものなのでしょうか?
function hoge(){ $hoge = $_POST['hoge']; return $hoge; } ↓ としておいて、別ファイルから ↓ $hoge = hoge(); ↓ それ以降の処理
普通にできると思います
function hoge(){ global $hoge; $hoge = $_POST[?hoge?]; } hoge(); echo $hoge;
824 :
820 :2007/03/04(日) 14:03:12 ID:???
>>821-823 ありがとうございます
こんなに早く教えていただけるなんてびっくりしました;
変数の数が少ないときはreturnを使って、
変数の数が多い場合はglobalを使うのが良さそうですね!
どうもありがとうございました!がんばります!
>>816 配列の添え字とか、DBのフィールドに日本語とか
プログラマとして上を目指すなら今のうちに止めたほうがいいな。
趣味程度なら他人に迷惑かけなければ利便性重視でおk
この関数名に日本語使ってるコード渡されて どこからもってきたのか聞いたら某大手自動車メーカー経由だった あほか
function getShouhin(){ return $this->shouhin; } ぐらいならいいけど function getShouhin(){ return $this->商品; } とか function 商品取得(){ return $this->商品; } は死刑だな
しっかりとしたポリシーがあれば日本語でもいいんじゃないの? そういうことができる仕様になってるわけだから。 でも、俺はめんどうでやっかいなだけだと思うから、 そういう変なポリシーは持たない!
まあポリシーの問題とかじゃなくてさ、ム業界全体で考えると コードにマルチバイト使用できる「機能」がないほうが速度とか角度とか色々いいだろ
830 :
nobodyさん :2007/03/04(日) 17:21:07 ID:BeWvury2
削除機能付のゲストブックを作っています 投稿された内容を、一行づつ書き込む(一つの投稿ごとに改行して同じテキストに書き込む) 見るときは、そのテキストから、file()で格納した配列をforeachでループさせる これで書き込まれた内容と、それに対応する行番号が取得できましたが、 任意の行を削除するにはどうしたらいいのでしょうか?
>>827 2バイト日本語は当然ダメだけど、
1バイトでローマ字日本語は完全に許して欲しいなぁ・・・
クラスについての質問です。 複数のクラス間で同じもの共有したのですが、 class Super { function Super() { $this->time = time(); } } class Sub1 extends Super { } class Sub2 extends Super { } a = new Sub1; print a->time; sleep(1); b = new Sub2; print b->time; 例えば上のような形で、同じtimeの値を共有する方法はありますか?
833 :
829 :2007/03/04(日) 17:34:22 ID:???
>>831 うーん、それはカッコ悪いってのはあるけど俺的には許容範囲
$str1, $str2 よりはマシだよな
requireする文字コードEUC-JPのhtmlファイルをまとめて SJISに文字コード変換したいのですが、どのようにすればいいでしょうか?
837 :
834 :2007/03/04(日) 18:04:54 ID:???
838 :
783 :2007/03/04(日) 18:15:01 ID:j6Pq8T7o
>>790 遅ればせながら、ありがとうございます。
debug_backtrace方式は目からウロコでした。
濫用しない程度に特攻してみます。
839 :
834 :2007/03/04(日) 18:28:40 ID:???
自己解決しました
840 :
834 :2007/03/04(日) 18:55:48 ID:???
841 :
834 :2007/03/04(日) 19:01:21 ID:???
3秒でわかったけど確認してないから晒しはやめとくううう ってか、EUCからSJISニ変換したところで無駄に重くなるだけだからやめとけ
843 :
nobodyさん :2007/03/04(日) 19:02:43 ID:KchkAUoC
質問させてください。 サーバーOS:Windows XP SP1 PHPver:5.1 build 2600 GDのバージョンは2です。 本文: 以下のようなソースを書きました。 $image = imagecreatefrompng('./images/3.png'); imagepng($image); imagedestroy($image); $image = imagecreatefrompng('./images/2.png'); imagepng($image); imagedestroy($image); 望みとしては、3の次に2が横並びで表示するようにしたいのですが、位置の指定方法がまったくわかりません。 それぞれのpngファイルの名前は数の番号を表しています。 この例だと 32 と表示してほしいのですが、 3 としか表示されません。 ファイルじたいをpngファイルとして認識させたいのですが、他に方法があるのならそれでもかまいません。 どうかよろしくお願いします。 なおサーバーのファイルは自分で設定できる立場にあります。他のDLLを導入するなどは可能です。
echo '32'; というのは下らない冗談で、 とりあえずマニュアルでそれぞれの関数のページ見れば解決すると思うよ
わかりました 関係の関数含めて見直します。
846 :
843 :2007/03/04(日) 20:07:00 ID:KchkAUoC
すいません
すごく間違えました。
>>845 は私です・・・
>>833 そうそう、無理に英語にしたり、数字つけただけの変数よりも
ローマ字のほうが分かりやすいことも多々あるからさ。
俺は英語+日本語ってのもよく使うよ。
たとえば、$text_hozon とかねw
以下のテキストからsubjectの中身だけを取り出すにはどうしたらいいでしょうか?
$str = 'To: <
[email protected] >
Subject: =?ISO-2022-JP?B?WxskQiUkJXMlVyVsJTklOCVjJVElcxsoQiAbJEIlQCUkJTglJyU5GyhC?=
=?ISO-2022-JP?B?GyRCJUgbKEJdGyRCPzc0KSVpJUMlNyVlISobKEIgGyRCIVgbKEJQRU5UQVggSzEw?=
=?ISO-2022-JP?B?RBskQiE/GyhCSzEwMEQbJEI0MEE0JSwlJCVJIVkkWyQrGyhCVmlzdGEbJEJCUBsoQg==?=
=?ISO-2022-JP?B?GyRCMX4kRyQtJGtCZzt2RTUhIhsoQm1peGkbJEI1IUc9M2hNUSVQGyhC?=
=?ISO-2022-JP?B?GyRCJSQlViVrIUQbKEIgbW9yZSBhbmQgbW9yZRskQiEqGyhC?=
Date: Fri, 2 Mar 2007 12:20:19 +0900';
↓以下のような正規表現だとSubjectの2行目の分までは取得できましたが、3行目(n行目)以降をどうやってマッチさせましょう・・・
preg_match("/^Subject:\s*(.*)\s*(\s*.*)\s*/mi", $str, $res);
$subject = mb_decode_mimeheader(join('', $res));
849 :
848 :2007/03/04(日) 20:54:54 ID:???
あっ、書き込んだらタブが削除されちゃいましたが、 実際にはSubject:の2行目以降の行頭にはそれぞれタブが一つずつ入っています。 改行コードは\nです。 要するに一般的なメールのヘッダです。
>>830 任意の行の内容を改行で上書きすればいいんでないの
指定行を削除する関数でも作っといた方が後々便利かもね
CかC++ならリスト使ってポインタ繋ぎ変えてセルを消せばいんだけどね
>>832 bのコンストラクタで参照渡しかグローバル変数
>>848 なんだか面倒くせぇことやろうとしてるな。2行目以降は無視しちゃえば?w
>>850 難易度的に、マニュアル見て解決できるレベルじゃないだろww
>>853 メールのヘッダって、subject以外にもTABが入りうる箇所ってたくさんあるから、
「TABでsplit」だけではダメな気が。
まず最初にsubjectに関係するn行だけを取り出せれば、その後TABでsplitもアリだけどね。
preg_match_allは?
>>848 つまりアレか、subjectの行数がn行ある(何行になるのか決まってない)のが問題…ってことでいいのか??
行数が決まってれば簡単なんだろうけど、ややこしいな。
あのぉ、「PHP」って何の略ですか?
>>848 PEARのMail_mimeDecode使った方がいいかと
require_once 'Mail/mimeDecode.php';
$str =
"To: <
[email protected] >
Subject: =?ISO-2022-JP?B?WxskQiUkJXMlVyVsJTklOCVjJVElcxsoQiAbJEIlQCUkJTglJyU5GyhC?=
\t=?ISO-2022-JP?B?GyRCJUgbKEJdGyRCPzc0KSVpJUMlNyVlISobKEIgGyRCIVgbKEJQRU5UQVggSzEw?=
\t=?ISO-2022-JP?B?RBskQiE/GyhCSzEwMEQbJEI0MEE0JSwlJCVJIVkkWyQrGyhCVmlzdGEbJEJCUBsoQg==?=
\t=?ISO-2022-JP?B?GyRCMX4kRyQtJGtCZzt2RTUhIhsoQm1peGkbJEI1IUc9M2hNUSVQGyhC?=
\t=?ISO-2022-JP?B?GyRCJSQlViVrIUQbKEIgbW9yZSBhbmQgbW9yZRskQiEqGyhC?=
Date: Fri, 2 Mar 2007 12:20:19 +0900\n\n";
$mime = new Mail_mimeDecode($str, "\n");
$result = $mime->decode();
$subject = $result->headers['subject'];
mb_internal_encoding('ISO-2022-JP');
$decoded = mb_decode_mimeheader($subject);
var_dump(mb_convert_encoding($decoded, 'UTF-8', 'ISO-2022-JP'));
[インプレスジャパン ダイジェスト]新刊ラッシュ! 『PENTAX K10D/K100D完全ガイ ド』
ほかVista対応できる大事典、mixi機能活用バイブル… more and more!
>>857 1."PHP:Hypertext Preprocessor"
2."Personal Home Page Tools"
3."Peaceand Happiness through Prosperity"
好きなの選べ
862 :
nobodyさん :2007/03/04(日) 23:00:32 ID:MKGA7vNq
フォーム入力の確認画面の出力なのですが。 ・いたずらや悪意のある入力を防ぐ ・マジッククオートで2バイト文字が変にエスケープされて文字壊れしない渡し方は <input type="hidden" name="company" value="<? echo urlencode( $company ); ?>"> <? echo htmlspecialchars( $company ENT_QUOTES, なになに); ?></td> で完成なのでしょうか? htmlentitiesは、どういうときに使うものなのでしょう…
>>862 valueの中もhtmlspecialcharsだよ。urlencodeは<A>タグリンク中の文字列に使う。
>>862 なんでhiddenのvalueにurlencode?
両方ともhtmlspecialcharsでいい
マジッククォートでおかしな動作してほしくなかったらOFFにすればいい
htmlentitiesは全て実体参照に変換したい時に使う
865 :
nobodyさん :2007/03/04(日) 23:27:26 ID:gHI9abtc
>>795 SQLの再起動はしました
バージョンはXAMPPで
Apache 2.2.4
MySQL 5.0.33
PHP 5.2.1 & PHP 4.4.5
phpMyAdmin 2.9.2
で PHP5です
866 :
nobodyさん :2007/03/04(日) 23:47:20 ID:MKGA7vNq
>>863 864
レスありがとうございます。
valueの中身もhtmlspecialcharsだと
文字コードに変わったまま渡され
メール送信したり、比較一致処理ができなかったりしないでしょうか?
>>860 PEARのMail_mimeDecodeだと、マルチバイト処理にやや不安あり、って噂を聞くけどね。
あと添付ファイルがあるときも面倒になる可能性があるとか無いとか。
>>866 HTMLのエスケープは送信時に自動的にアンエスケープされて元通り。
その上でURLエンコードがブラウザによって自動的になされる。
>>868 メール送信やprintしてみましたが、元に戻っているのですね
.htaccessが禁止されていて
マジッククオートが有効固定で文字がおかしくなる時はどうすればいいでしょう?
今まではがんばってエンコードでして英数字で渡していました。
>>866 エンコードは送信データの受け側でどうとでもすればいいのでは?
>>869 get_magic_quotes_gpc()を判別してマジッククォートONのときは
stripslashes_array()等を使ってGET、POSTデータからクォートを除去。
requireする文字コードEUC-JPのhtmlファイルをまとめて SJISに文字コード変換したいのですが、どのようにすればいいでしょうか?
>>872 事前に変換して保存しとくんじゃダメなのか?
>>865 skip-character-set-client-handshakeあたりで検索して
コーヒーでも飲みながらゆっくりと落ち着いて色々試してみれ
それでも解決しないなら何をしてどうなったかの詳細を書いてみるが良いよ。
>>865 ちなみにDBにはどんな文字コードで格納してて
PHPシースはどんな文字コードで書いてて
HTMLはどんな文字コードで出力してて
ブラウザのエンコードはどの文字コードが選択されてるんだ?
シース
877 :
nobodyさん :2007/03/05(月) 12:45:40 ID:VUeVfNbT
PHPで簡易アクセス解析作ろうと思っているんだがアクセスしてきた人の 国を判別する方法ってあるとおもう?よくアクセス解析で都道府県別統計 を取ってくれる物があるけどあんな感じで国別統計というのもとってみたい なと思ったわけ。
878 :
834 :2007/03/05(月) 12:51:21 ID:???
都道府県てとれるの?そうだとしたら4−6桁目?
>>832 別に共有変数をもつため専用のクラスを作るとか
>>877 Whoisサーバでググればでるよ
>>878 無料で公開されてるかどうかは俺もしらないがある。
883 :
nobodyさん :2007/03/05(月) 13:20:25 ID:VUeVfNbT
>>880 >>881 .jpとかだったら日本って分かるんだろうけど.comだったらどこの国かはわからないんじゃない?
PCと携帯で見れる日記を作っているのですが 2chやBBSなんかでPC用ページを直リンクされた場合とか考えると、 携帯用の実行ファイルを用意するよりも、 どのPC用ページにアクセスしても、そこから振り分けて携帯用ページが表示させるようにした方がいいのかな。 意見聞かせてください。
885 :
nobodyさん :2007/03/05(月) 13:33:47 ID:aOtmvd4t
AぺーじからBページが呼び出されたら、 AページのURLはHTTP_REFERERで取得できますが、 Bページ(現在表示されているページ)のURLを取得する方法はありますか?
>>883 whoisのDBを使うんだよ。
>>884 携帯用と分ける方がソースの可読性は下がるけど効率的ではある。
どうせPCと携帯の違いはhtmlコード部分、クッキー部分くらいだと思うし。
882ってさDrupa著作表示消して使ってるってことは 過去に作ったとか自慢げに書いてあるキーロガーとか諸々の糞アプリはフリーのコード盗用から微妙に拡張って感じだろうな 酷いけどまだガキだから仕方ないか
>>884 やっぱりドメインもスクリプトも分けたほうがいいと思う。
たとえばwww.hoge.com(PC用)とm.hoge.com(携帯用)で、それぞれスクリプト用意ね。
なぜなら、最近は携帯でもフルブラウザとかでPC用ページを見たい人もいるだろうから、
「携帯でPCサイトにアクセス→勝手に携帯サイトに飛ばす」ってのは、
ありがた迷惑に感じる人もいるんじゃないのかな。
フルブラウザを搭載してない携帯ならむしろその方がいいんだろうけど。
XREAで s900.xrea.comのDBに s901.xrea.comからPHPで接続したいのですが可能でしょうか? 可能な場合、 mysql_connect('localhost', 'mysql_user', 'mysql_password'); このlocalhostの部分はどのような書き方になるでしょうか?
>>886 >>888 意見有難う。
なるほど、フルブラウザってものがあったね。定額になったし普及するのだろうか。
実行ファイルから分ける方向でやってみます。
ちなみに、後者の携帯ページを表示というのは、リダイレクトするのではなく
スクリプト内で携帯とPCの表示方法なんかを振り分けて、同じURLでどちらでも見られると言うのを考えていました。
>>888 フルブラウザかどうかはUAで判別出来るんじゃ無いかな・・。
>>889 XREAではlocalhost以外の接続は出来なかったと思う
つまり接続は不可能
可能な場合は普通にホスト名を書けばいい
mysql_connect('s900.xrea.com', 'mysql_user', 'mysql_password');
>>882 whoisったらドメインはVDの名義になってるね
レン鯖板で祭ってやれば?w
>>891 >リダイレクトするのではなくスクリプト内で携帯とPCの表示方法なんかを振り分けて
何にせよ、ユーザーが任意に好きなほう(PCサイトか携帯サイトか)を選べたほうが便利かと。
>>892 今すでに発売されてる機種だけを考えるならそれでもいいけど、
今後の新機種まで考えると、その都度いちいちUA判定の処理を追加・訂正しなきゃならんから、俺はUAは一切見ない。
っていうか現状でも見てない。複雑すぎて面倒くさいから。
あくまでもIPで携帯かどうか判定してる。
>>893 さん
ご丁寧にありがとうございますm(_ _)m
接続できるかはXREAに直接聞いて見ます。
結果はここに書いたほうがいいでしょうか?
接続できないよ。 俺も聞いたけど、セキュリティのほにゃほにゃでだめだって。
898 :
872 :2007/03/05(月) 16:43:21 ID:???
>>873 内部的にはEUC-JP、表示だけSJISにしたいのです。(携帯端末のため&内部SJISは危険ぽいので)
そこでEUCのhtmlファイルをSJISに変換して表示させる方法をお教えください。
今考え付くのは、
1.htmlファイルをfile_get_contensで$strにいれてmb_convert
2.eval?(使い方不明…)
DBを外からアクセス出来るようにしたら、一般公開化する奴が絶対出てくるだろうし・・
>>898 そもそもrequireするhtmlって意味分からない。
PHPにすればいいんじゃなくて?
>>898 あと一週間くらい、もっと良い解決法を考えてみろ。
ヒント:どの時点でSJISに変換するのがベストか?
>>897 さん
ありがとうございます。
やっぱりだめですか(>дμ)…
>>899 さん
他の方に迷惑になりますもんね…
DB内の広告を共有したいと思ったのですが残念(;Ω;)
>>895 IPの方が面倒じゃない?
公式コンテンツとかならIP追加とかで告知は来るけど、勝手サイトには来ないし、
そもそも情報が非常に遅い。
それに、携帯なら基本仕様があるから、SoftBank みたいに社名でも変わらん限り、
UA は原則変わらんよ。
今は基本6種だったかな?
IPの追加と、UAの基本仕様変更だと、圧倒的にIPの追加の方が多いから、
俺はUAにしてる。
セキュリティとかで考えるなら両方かな。
>>903 >圧倒的にIPの追加の方が多いから
そうかな?? どれくらいの頻度か知ってる??
あと、IPなら公式サイトのIPリストから自動で取ってくるスクリプト書けばいいし・・・
905 :
872 :2007/03/05(月) 17:44:42 ID:???
>>901 もう生え際がハゲるくらい考え、悩んでるんですが…
906 :
nobodyさん :2007/03/05(月) 17:50:52 ID:JwWe6FJR
$array=array("2000","2000","2001","2001","2001","2002",2002"); という配列のデータがあったとして、出力時に重複値を消して 2000,2001,2002 のみ表示するにはどうしたらいいのでしょうか?
>>902 >>DB内の広告を共有したいと思ったのですが残念(;Ω;)
XMLとかで共有すればいいじゃね。
別にテキストだろうが、CSVだろうが何でもいいとは思うけど。
目的をハッキリ理解してないので的外れかもしれないが。
909 :
906 :2007/03/05(月) 18:04:58 ID:???
>>905 俺なんか特に悩みも無いのにハゲが進行してきてるんだが・・・orz
>>907 さん
>XMLとか
XML (μдμ○)…わかなにゃ…
勉強してみますね
googleアドみたいに分類してるのでDBじゃないと難しいなぁって思って(>д<;)
>>911 規模が大きいならDBからXMLで吐き出すのが多い
小規模ならXMLだけで十分
あ・あとPHP限定なら serialize 関数でもいいかもね。
>>882 キーロガーなんて公開してる辺り、危ねぇガキだなww
学校はどこかな?ww
自演うぜえ 消えろカス
まだ卒業してねぇだろ。 どんな祭になるのか楽しみだなw
顔文字からしてリア厨くさいのがいる
>>919 2ちゃんで学歴を聞いてくるやつは
低学歴なんだよな
自演うぜえ 消えろカス
自演うぜえ 消えろカス
実務経験の無い引きこもりは使えない。
だな、この世界では学歴よりも実務経験の方が物を言う。
でも、算数・数学の出来ないプログラマは使えない。マジで。
引きこもりのプログラマはカスだからな。
ヒューマンスキルがないプログラマは使えない
あと嘘つきはダメだね。 ばれなきゃ何をやってもいいって考えの馬鹿は使えない。 仕事上で必ず問題を生む。
文字が、マルチバイト文字列かどうか 調べる方法はありませんか?
自演うぜえ 消えろカス
あるある。ajaxかせめてjsはわかるよね? って聞いたら「分かります」っていうから じゃあここの表をポップアップウィンドウででるようにしといて っていったらそれはやったことありませんとか抜かしやがった 分からないなら分からないでそう言えばいいし それくらいネット探せばすぐみつかるだろってオモタ。 数学は中学程度で十分だし大卒の奴に限ってこんなんが多いよ(サンプル1人だがな)
日本語でおk
右からやってきたものを左へ受け流すぜ!
from right to left
>>932 を縦読みすると、
「あっじっ分そ数」
何か意味のある言葉かと一瞬オモテシマタ・・・
939 :
nobodyさん :2007/03/05(月) 23:57:09 ID:peb4Wfoi
くだすれPHP(超初心者用)2にも書き込ませて頂いたのですが、 こちらでも質問させて頂きます。 postfix => php PEARで解析 => 送信者に自動返信を出す までは出来ているのですが、 postfix => php PEARで解析 => 外部ファイルもしくはMySQLに送信者アドレスを記録 => 送信者に自動返信を出す としたいのです。 ですが、外部ファイルをオープンもしくはMySQLに接続した時点で止まってしまうようです。 環境は phpinfo()のコピーですが OS MacOSX 10.4.8 Apache/1.3.33 (Darwin) PHP/5.1.6 MySQL Client API version 5.0.24a でターミナルでphp -v を実行すると PHP4.4.4(Cli) と出ます。 マルチで申し訳ありません。 ご教授宜しくお願い致します。
申し訳ありませんって… 分かっててやるなよボケが
941 :
nobodyさん :2007/03/06(火) 00:16:00 ID:Crrd1LQs
くだすれPHP(超初心者用)2で誘導を頂いたので書き込ませて頂きました。 こちらの方が人が多いということですので。 申し訳ないです。
原因は設計ではなくソースにあり。 ソースも見せないエスパーな質問じゃ答えがかえってくるわけなかろう。
>>939 >>ですが、外部ファイルをオープンもしくはMySQLに接続した時点で止まってしまうようです。
って時点で何らかのバグのような気がするんだけど・・
944 :
nobodyさん :2007/03/06(火) 00:54:28 ID:Crrd1LQs
require_once("Mail/mimeDecode.php");
$source = file_get_contents("php://stdin");
/*ブラウザで確認の時はコメントアウト
if(!$source) {
exit();
}*/
$MySQL['HOST'] = 'localhost';
$MySQL['USER'] = 'user';
$MySQL['PASSWORD'] = 'password';
$MySQL['DATABASE'] = 'database';
$mylink = @mysql_connect($MySQL['HOST'],$MySQL['USER'],$MySQL['PASSWORD']) or exit('ERROR');
$sql = "SET NAMES sjis";
mysql_query($sql);
mysql_select_db ($MySQL['DATABASE']) or exit('ERROR');
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode($params);
$from = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), mb_internal_encoding(), "auto");
/*メール送信で確認の時はコメントアウト
$from = '
[email protected] ';*/
$query = "INSERT INTO testtable VALUES(NULL,'$from')";
mysql_query($query,$mylink);
$to = $from;
$title = "test title";
$body = "test body";
$from = "From:
[email protected] ";
mb_internal_encoding("SJIS");
mb_language("japanese");
mb_send_mail($to, $title, $body, $from);
945 :
nobodyさん :2007/03/06(火) 00:57:01 ID:Crrd1LQs
すいません、改行規制でひっかかってました。
>>942 ありがとうございます。
上記ソースです。
ブラウザでアクセスするとMySQLにちゃんと書き込まれ、
[email protected] にメールもきます。
MySQL部分を消して空メールすると、ちゃんと返信メールは返ってきます。
ですが、MySQL部分を使用するとMySQLにも書き込まれず、メールも返ってきません。
ご教授宜しくお願いします。
>>944 exit の上の行に
print "exit!";
って単体で実行するとどうなる?
947 :
nobodyさん :2007/03/06(火) 01:12:37 ID:Crrd1LQs
>>946 ありがとうございます。
/*ブラウザで確認の時はコメントアウト
if(!$source) {
print "exit!";
exit();
}*/
コメントしたままでブラウザ実行
exit!表示されず。
MySQL書込み○
[email protected] にメール○
コメント外してブラウザ実行
exit!表示されました。
MySQL書込み×
[email protected] にメール×
というわけで問題箇所は分かったわけだな
>>945 なんでブラウザで確認する?
しかも違うバージョンのPHPで。
テスト用のメールメッセージ(test.eml)を用意して、
cat test.eml | php nantoka.php
とかしてエラーメッセージの有無を確認してみたら?
950 :
nobodyさん :2007/03/06(火) 01:27:42 ID:Crrd1LQs
>>948 ブラウザで実行した場合は$sourceが空になると思うのでコメントアウトしてたのですが、
その部分が問題なのでしょうか。
exit部分をコメントアウトしたままメール送信してみましたが、やはり書込みされません。
どこが問題なのでしょうか?
どこまで実行してるのか確認すりゃいいじゃん
>>950 いままではexitで終了してて
コメントアウト後は $source が取得できなくて駄目ってわけじゃなくて?
953 :
nobodyさん :2007/03/06(火) 01:53:51 ID:Crrd1LQs
>>949 ありがとうございます。
エラー出ました。
「ERROR」としか出なかったんですが、原因追求の方法とかありますでしょうか?
>>951 ありがとうございます。
>>952 どうも違うようです。すいません。
>>953 は?んでどこが問題だったんだ?
mysql_connectの部分か?だったらエラー出力制御外せばいいだろ
>>953 @mysql_connect
の@を消すと?
それの意味分かってないなら使わないほうがいいよ
957 :
nobodyさん :2007/03/06(火) 02:10:21 ID:Crrd1LQs
>>954 すいません、ボケてました。
mysql_connect()の部分で接続できていないようです。
can't connect MySQL Server through socket
>>955 @消してみましたが、同じエラーが出ます。
958 :
nobodyさん :2007/03/06(火) 02:15:08 ID:Crrd1LQs
ちょっとソケット確認してきます。ありがとうございました。
なんでPHP5のほうのcli使わないんだろう・・・
WEBがphp4でphp5のCLIって出来るの?