【PHP】下らねぇ質問はここに書き込みやがれ 26
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/08/07(月) 13:11:50ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0102nobodyさん
2006/08/09(水) 00:59:19ID:???これの0-9の文字って取得できるの?
0104nobodyさん
2006/08/09(水) 01:08:04ID:???ごめ、すっかり忘れてた
preg_replace("/>>(\d{1|2|3|4})+/","<a href=\"#log\\1\">>>\\1</a>"$str);
こうできたのは良いが、\\1に数値が1文字しか入らないのはなぜだろ・・・
0105nobodyさん
2006/08/09(水) 01:08:28ID:???~ と $ の意図が分からんが、それを除外しても駄目。
なぜなら「blank」の部分が a-z にマッチするから。
だから、最短一致をさせないといけない。
0106nobodyさん
2006/08/09(水) 01:08:37ID:???preg_replace("/>>(\d{1|2|3|4})+/","<a href=\"#log\\1\">>>\\1</a>",$str); ね
0108nobodyさん
2006/08/09(水) 01:17:24ID:???{1|2|3|4}って意味わからんぞ。何をしようとしている?
で、(\d+)と、+の部分もカッコに含めないと数字全桁は取れないだろ。
0109nobodyさん
2006/08/09(水) 01:36:59ID:XkNwEDtZの
<?php
$image = imagecreate(200, 200);
$black = imagecolorallocate($image, 0, 0, 0);
imagepng($image);
imagedestroy($image);
?>
で画像表示が出来ません。文字化けみたいになってる。
4.3.11でGDできることは確認。。
誰か助けてください。
0111nobodyさん
2006/08/09(水) 01:42:39ID:???ブラウザで文字化けしてるってことか?
どんなレスポンス返してるのか全部見てみなよ
content-typeがtext/htmlになってるだけじゃないの?
0112nobodyさん
2006/08/09(水) 01:44:13ID:???ここのサイトってどういう設定にしてるんだ??
<?php
の次の行に
header("Content-type: image/png");
って足せば動かない?
0113112
2006/08/09(水) 01:45:14ID:???ttp://masago.kir.jp/phpsc.php?s=php2004010301.php
0114nobodyさん
2006/08/09(水) 01:52:00ID:???http://example/のときはリンクを貼る
http://example/img.jpgのときは画像を表示させる
こういうのってできないんだよな
0115nobodyさん
2006/08/09(水) 02:01:15ID:???0116nobodyさん
2006/08/09(水) 02:04:17ID:???register globalがonだから、XSSがおきるよ
ttp://masago.kir.jp/php20030111s.php?msg=%3Cscript%3Ealert%28document.cookie%29%3B%3C/script%3E
0118nobodyさん
2006/08/09(水) 02:09:08ID:???すんません、教えてください。
http://example/だけのときは
<A href="http://example/">http://example/</A>とリンクを貼り、
http://example/img.jpg(何らかの画像)のときは
<IMG src="http://example/">と画像を貼りたいんです
0120nobodyさん
2006/08/09(水) 02:22:09ID:???0122nobodyさん
2006/08/09(水) 03:21:02ID:???$_GET['hogehoge']にtestを格納して
<a name="5"></a>に飛ぶ予定だったんですが、
$_GET['hogehoge']にtest#5が入ってしまいます。
どのようにすれば
$_GET['hogehoge']にtestを格納し、
<a name="5"></a>に飛ぶことができるのでしょうか
0123nobodyさん
2006/08/09(水) 03:37:24ID:???0124nobodyさん
2006/08/09(水) 03:41:15ID:???手元の PHP 4.4.2 では $_GET['hogehoge'] に # 以降は含まれていなかったが。
0125nobodyさん
2006/08/09(水) 04:54:12ID:???文字列の末尾が .jpg .jpeg .png .gif のときはIMGタグに、それ以外のときはAタグに変換、がお手軽。
厳密にやるならそれぞれソケットでHEADアクセスして、返ってきたレスポンスのContent-Typeを判定。
0127nobodyさん
2006/08/09(水) 08:28:07ID:jiSDaPkk$name = isset ($_POST['name']) || $_POST['name'] !== '' ? $_POST['name'] : $name;
terniary条件文でこのように書くのはダメなのでしょうか?
論理演算子でどちらかがTRUEなら、最初の式がTRUEになるはずなのですが…
$_POST の値が空 ('') だと$nameが$nameに代入されません...
0128nobodyさん
2006/08/09(水) 08:30:54ID:jiSDaPkk正: $_POST['name'] の値が空 ('') だと$nameの値(名無しさん)が$nameに代入されません...
誤: $_POST の値が空 ('') だと$nameが$nameに代入されません...
0129nobodyさん
2006/08/09(水) 09:19:05ID:jiSDaPkk論理演算子の '||' は、どちらかの式がTRUEの場合TRUEなのですから、これでは
isset ($_POST['name'])がTRUEの場合、$_POST['name']が空でも$_POST['name']を$nameに代入してしまう…orz
つまり、これは:
$name = '名無しさん';
$name = isset ($_POST['name']) && $_POST['name'] !== '' ? $_POST['name'] : $name;
でしたね。本当にスマソ
0130nobodyさん
2006/08/09(水) 09:31:58ID:???0131nobodyさん
2006/08/09(水) 09:38:57ID:???もしないようなら同じようなことをするには
defineを使うしかないのでしょうか?
0133軟式PHP
2006/08/09(水) 09:59:22ID:???俺も欲しいなぁとは思ってるんだけどないなぁ。
オブジェクト定数ってのならあるんだけど、多分想像してるのとは違うと思われ。
0134nobodyさん
2006/08/09(水) 10:02:20ID:???if($kakiko=="" || ereg("^([a-z])+$",$kakiko)) error("不正な文字列です");
これじゃだめなんですか?
テストしてみましたがこの処理をスルーしてしまいます・・・。
0136軟式PHP
2006/08/09(水) 10:05:10ID:???大文字・数字の判定がない。あとeregよりpregのほうがいいよ。
if( $kakiko == "" || preg_match('/^[0-9a-zA-Z]+$/',$kakiko) )
0137nobodyさん
2006/08/09(水) 10:20:01ID:???ありがとうございます
自分で英数字と言っておいて入れ忘れたのはなんともお恥ずかしい限りです。
で、試しにやってみたんですが・・・書き込み成功してしまいました・・・orz
何もおかしいところはないと思うのですが・・・なぜでしょうか・・・
0138軟式PHP
2006/08/09(水) 10:35:21ID:???kakikoという変数から察するに掲示板の書き込みの内容?
スペース・改行・タブ等が入っていたら上のじゃスルーされるよ。
タブ、改行、スペース対応版。記号入ってたら駄目だけど('A')あとは改造してくれ。
if( $kakiko == "" || preg_match('/^[0-9a-zA-Z\r\n\s\t]+$/',$kakiko) )
0139nobodyさん
2006/08/09(水) 10:43:36ID:???0140nobodyさん
2006/08/09(水) 11:09:37ID:???echo("{$foo}");
とやったらフォーが出力されますよね?
では、
define("FOO","フォー");を
echo("")という形を使ってフォーと出すにはどうしたらよいのでしょうか?
echo FOO;でもちろんできますが、どうしても("")の中に入れたいんです。
変数と同じ要領で("{FOO}")をやってみたけどだめでした。
よろしくおねがいします。
0141軟式PHP
2006/08/09(水) 11:15:03ID:???とかじゃだめなん?
0142nobodyさん
2006/08/09(水) 11:16:14ID:???そうです掲示板です。
こういう場合空白とか改行についても入れないと駄目なんですね・・・。
勉強になりました。
しかしまたもスルーされてしまいました・・・orz
検索したりと色々試行錯誤していましたら
if(!preg_match("/[\x80-\xA0]/",$com)) { error("不正な文字列です"); }
これで自分の思い通りの結果になりました。
色々とご教示いただきありがとうございました。
0144nobodyさん
2006/08/09(水) 11:31:37ID:GlwbD+0Ypg_connect("host=%s", HOST);
もしくは
$host = HOST;
pg_connect("host=${host}");
でいいと思うけど
0145140
2006/08/09(水) 11:37:46ID:???どうもありがとうございます。
MySQLからの乗換えで、ずっと定数を使っていたので、
そのまま使えないかなーと思いまして。
上の方法で早速試してみたいと思います。
0147nobodyさん
2006/08/09(水) 12:09:56ID:OFf4cMrjpreg_replace(array("\r\n", "\r"), "\n". $str)
Warning: preg_replace(): Empty regular expression
「正規表現が空」とはどういうことでしょうか?
マニュアルを見るとパターンは配列もアリと書いてあるのですが。
よろしくおねがいします。
0148nobodyさん
2006/08/09(水) 12:16:22ID:???0149nobodyさん
2006/08/09(水) 12:16:24ID:???0150nobodyさん
2006/08/09(水) 12:24:04ID:???文字列クオートの中でのdefine展開はできない。
echo("〜" . FOO . "〜");
みたいに前後で連結するしかない。
0152nobodyさん
2006/08/09(水) 12:33:50ID:OFf4cMrjpreg_replace ("(\r\n|\r)", "\n", $str)
これでよろしいのでしょうか?
>>151
すみません、詳しく。
0154nobodyさん
2006/08/09(水) 12:41:37ID:???いきなり複雑な処理を書かず、公式のマニュアルをまずそのまま書いて
動作確認をしてから書けば、同じような問題で悩むことはないよ
http://jp.php.net/manual/ja/function.preg-match.php
0155nobodyさん
2006/08/09(水) 13:53:50ID:???■mySmarty.class.php
include_once('Smarty/Smarty.class.php');
class mySmarty extends Smarty
{
function mySmarty()
{
$this->Smarty();
$this->template_dir = "./templates/";
$this->compile_dir = "./template_c/";
}
}
■index.php
include_once('mySmarty.class.php');
$smarty = new mySmarty();
$smarty->display( "index.tpl" )
で、index.phpにアクセスすると
Parse error: parse error, unexpected '{', expecting '(' in 〜〜〜sample\mySmarty.class.php on line 8
と言ったエラーがでます。
何処がおかしいのでしょうか。
下らない質問だとは思うのですがよろしくお願い致します。。
あと、環境はwindowsXP PHP5.1.4 Smartyは2.6.14 です。
0156nobodyさん
2006/08/09(水) 14:16:58ID:???そのソース上には問題はない
しいて言うなら、
$smarty->dispya("index.tpl")
の文末に ; がないくらいだけど、エラーメッセージの内容からして
コピペミスだろうと思うから関係ないだろう
本当に、このソースでそのエラーが出ているのか
0157nobodyさん
2006/08/09(水) 14:35:26ID:???レスありがとうございます。。
原因解りました。
何ていうのか、もう完全に初歩的なミスでして、説明しづらいんですが、本来読むべきmySmarty.class.phpとスペルミスのmySmaty.class.phpと言うファイルが何故か2つありまして、
で、スペルミスの方は上記の通りソースは良いんですが、スペルミスしてない方(index.phpから読み込んでる方)は()が有りませんでした。
もうホントにお恥ずかしい話です。。
すみません。
お騒がせ致しました。。
0159nobodyさん
2006/08/09(水) 17:21:32ID:OFf4cMrjごめん、最初から str_replace() でやるつもりだったんだけど
ミスって str が preg になってしまった…。
でもミスに気付けて良かったよ。ありがとう。
0160nobodyさん
2006/08/09(水) 18:34:28ID:???どう書いたらよいのでしょうか?
たとえば、HOGEもhogeもHoGeもhoGEも同じHOGEとしてチェックする感じです。
0161(^ω^)
2006/08/09(水) 18:44:48ID:???0162(^ω^)
2006/08/09(水) 18:46:30ID:???strtoupperで比較
またはstricmp
0164nobodyさん
2006/08/09(水) 19:55:05ID:???simplexml_load_fileで読み込んだオブジェクトを
functionの引数として指定したいんですが、上手くいきません。
試しに下記のように書いてみたのですが、どうも引数を渡せていないようです。
こういう時はどのようにして渡したらよいのでしょうか。
どなたかアドバイスなどよろしくお願いします。
$xml = simplexml_load_file("hoge.xml");
$item=$xml->item;
item_construct($item);
funciton item_construct($item){
$sword=$item->sword;
(略)
}
0165nobodyさん
2006/08/09(水) 21:36:27ID:???よくわからんがその関数で読みこんだオブジェクトは$xmlであって引数にしてる$itemではないのではないか?
0166109
2006/08/09(水) 21:52:49ID:XkNwEDtZありがとうございます。。
>>110
>>112
header("Content-type: image/png"); を書き足してみましたが
前と変わらず表示されませんでしたorz
<?php
header("Content-type: image/png");
$image = imagecreate(200, 200);
$bcolor = imagecolorallocate($image, 0, 0, 0);
imagepng($image);
imagecolordeallocate ($image,$bcolor);
imagedestroy($image);
?>
とやってみましたのですがorz
>>111
はいブラウザでサイト上で文字化けしてます。。
0167nobodyさん
2006/08/09(水) 21:58:01ID:???imagepngでファイルに出力してみて、正しい画像ならブラウザの問題
0168109
2006/08/09(水) 22:01:31ID:???0169nobodyさん
2006/08/09(水) 22:09:15ID:???PHP5.1.4
0172nobodyさん
2006/08/09(水) 22:44:50ID:???それ動かしてるサーバーってレンタルスペース?
ひょっとして広告とか入ってるとこで、PHPでいくらheader出力しようと思っても無駄なとこだったりしない?
0174109
2006/08/09(水) 23:12:13ID:XkNwEDtZはい余計なものは出力していないです。。
>>172
はいレンタルスペースです。下部にテキスト広告が入っています。。
header出力に関しての記載はないので管理者に聞いてみようと思います。
ちょっと他の所でも試してみます。。
何度もすみませんでした。
0175nobodyさん
2006/08/09(水) 23:20:44ID:???広告入ってるサーバーの多くではプログラムで画像出力とかできないよ。
その自動で動く広告挿入のプログラムが、出力内容をHTMLとして扱っちゃうので。
一部のサーバーでは自動的に広告OFFにするための仕組みを用意してるので(ディレクトリや拡張子の変更など)
それがあるなら使ってみることだ。
0176nobodyさん
2006/08/09(水) 23:27:13ID:???もう一度こちらに書き込みさせていただきます。(マルチになって申し訳ありません)
399 名前:デフォルトの名無しさん[sage] 投稿日:2006/08/09(水) 23:17:17
こんなことを質問できる場がここしかないので、どうかご教授願いたいです。
実験でHTMLのテキストフィールドから直接SQL文を入力させてDB(MySQL)を操作したいんですが、、
例えばHTMLの入力フォームから
select * from [テーブル名] where ID='06A00012'
などと入力すると、phpで受け取った値は
select * from [テーブル名] where ID=\'06A00012\'
となってしまい、SQL文に余計なものがついてSQLの構文エラーとなってしまいます。
phpのstrtr関数で文字を置き換えようとしても上手くいきません。
(\をなんとか消しても、今度は "(ダブルコーテーション)に置き換わってしまいます。)
どなたか、¥の消し方をご存知の方がいましたら、お願いします。。。
0178176
2006/08/09(水) 23:41:17ID:???0179109
2006/08/09(水) 23:53:52ID:XkNwEDtZなるほど。。
ありがとうございます。
0180176
2006/08/10(木) 00:18:11ID:???if($inpo==1){
$okki = stripslashes ($inpo);
}
print $okki. "マンセー";
↓こんなスマートなやりかたもありました。
if (get_magic_quotes_gps()){
$comment = stripslashes ($comment);
}
本当にありがとうございました。
0181nobodyさん
2006/08/10(木) 00:20:57ID:???gpc()←訂正
まだまだ、先は長そうだ。
0182nobodyさん
2006/08/10(木) 00:32:47ID:9+xl79/rブラウザで表示したいんですけど、それが載っているサイトや
書籍ってありますか?例えば、ffftpの左半面のようなものを
イメージしています。用途が幅広いので、どこかに公開されている
と思うのですが・・・。どなたか、お教え下さい。
0184nobodyさん
2006/08/10(木) 01:18:40ID:???いや、出来るんじゃないか?
まぁ、その表示したものを消したりとかってなると無理な部分があまりにも多い
だろうけど。
見るだけならある程度できそう
0187nobodyさん
2006/08/10(木) 01:29:43ID:???できるんじゃないか?
0188nobodyさん
2006/08/10(木) 01:34:04ID:???Client側のファイル一覧どうやって取るんだってことだよ。
0189nobodyさん
2006/08/10(木) 01:35:13ID:???0191nobodyさん
2006/08/10(木) 01:48:26ID:DcRBPcvMサーバ側から、クライアント側のディレクトリ構造を・・・という話です。
phpで、サーバにクライアントのファイルをアップロードするシステムが
あるくらいだから、何とかできないものかと思ったのですが・・・。
0193nobodyさん
2006/08/10(木) 02:04:48ID:???そうなっちゃうとPHPだけじゃ無理だな〜
でも、その着眼点は良いんじゃない?今PHPでは実現不可能って分かったんだから
じゃあ、ほかの言語で代用しちゃえってなもんだ。
今ならpythonが熱いぞ!PHPみたいなスクリプト言語だがデスクトップアプリも作れる。
下手したらVBよりも簡単だしな
0194nobodyさん
2006/08/10(木) 02:07:12ID:???ファイルのアップロードはブラウザの機能。
しかもHTMLレベルじゃセキュリティ上アップロードはかなり制限されてる。
クライアントサイドでActiveX走らすとかそういった手しか無いだろうね。一言で言うと>>183
0195nobodyさん
2006/08/10(木) 02:08:31ID:???クライアントがサーバなら出来るなw
お前のサーバからクライアント(サーバ)にリクエスト投げて、クライアントが
PHPとかでデータを取得してXMLなりなんなりでお前のサーバに結果を返す。
で、お前側サーバでそれをCSSで綺麗に整えれ幸せになれます。
0196nobodyさん
2006/08/10(木) 02:11:46ID:???無い。
アップロードはブラウザにファイルから送信データを生成させる仕組みが規定されてるが、
セキュリティ的に危険なためそれ以上のクライアントファイル操作は全て禁止が原則。
クライアント上で動くJavaScriptでも基本的にはクライアントのファイルには触れない。
回避手段があるとすればActiveXを使う手だろうね。パソコン側に半自動でプログラムを
ダウンロード・インストールさせ、それを実行するような仕組みが必要。PHPだけではどうしようもない。
ActiveXならがんばりゃオンラインウイルススキャンなんて仕組みも作れるのでかなり色々できる。
ただし、WEBの標準的な機能ではなくWindowsの機能を利用する形になるため、
使えるOSとブラウザが著しく制限される。
また、セキュリティ的に非常に危険な仕組みなので、クライアントの設定によっては拒否される。
0197nobodyさん
2006/08/10(木) 09:00:08ID:???smartyというものは使った方がいいんでしょうか?
PHPやってるならsmartyくらいは使えないとって感じなら勉強するつもりなんですが
そうでもないなら回避しようかなと思ってるんですが
0199nobodyさん
2006/08/10(木) 09:38:53ID:???Smartyみたいな汎用志向のテンプレート機能は
デザイナーとプログラマーが分業してる場合など
多人数で開発する際に大きな効果を発揮する。
逆に言うと、個人でやってる分には意義を見出しにくいものでもある。
(規模が大きくなってきたり、同じプログラムでデザインの差し替えを
多用するようになったりすると便利さを感じる場面も出てくると思うけど)
ってことで、とりあえずは無くてもいいものだと思う。
今後、プロになりたいと思ってるならスキルの1つとして覚えといてもいいけど。
0200nobodyさん
2006/08/10(木) 10:18:56ID:???PerlのHTML::Templateのような、単純なテンプレートを知りませんか?
Smartyほどの機能は不要なのですが。
0201nobodyさん
2006/08/10(木) 10:33:24ID:???簡単なテンプレなら自作が一番。
デザイン済みのHTMLソースに変数をはめこんで、
それをヒアドキュメントにして拡張子.phpにしてincludeすればいい。
■ このスレッドは過去ログ倉庫に格納されています