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

【PHP】下らねぇ質問はここに書き込みやがれ 40

■ このスレッドは過去ログ倉庫に格納されています
00011様2007/02/22(木) 22:37:41ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 39
http://pc10.2ch.net/test/read.cgi/php/1171280039/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc10.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc10.2ch.net/db/subback.html
0232nobodyさん2007/02/25(日) 21:08:21ID:???
>>231
マジッククォートはoffだし、onでもフォーム内にバックスラッシュが表示されるだけでしたが。
そうではなくて、例えばユーザーがフォーム内に「Arcator"bar"Baalouse」と入力したら、まったく
同じものが修正要求のメッセージと共に表示されないと困るのです。
0233nobodyさん2007/02/25(日) 21:10:16ID:???
htmlspecialcharsの引数をもうちょっとよく調べれば解決するんじゃね
0234nobodyさん2007/02/25(日) 21:11:51ID:???
フォーム内で"表示したら普通に”になるんでないの?
0235nobodyさん2007/02/25(日) 21:13:59ID:???
症状をもっと最初に丁寧に書け
何をどうしたくて現状どうなってるのかサッパリわかんねえ
0236nobodyさん2007/02/25(日) 21:20:20ID:IYDfC2eT
つまり
$val = "&quote;";
<input type="text" name="test" value="{$val}">
↑これでは変換前の実体参照がそのまま表示されるだけですね
$val = '"';
<input type="text" name="test" value="{$val}">
↑これでもフォームが途中で途切れてしまいますね

フォームのデフォルトバリュー内に " や ' が混在するとき、どうすれば正常な
表示が可能なのか、というのが質問の趣旨です。マジッククォートやhtmlspecialchars
では、この問題を解決できないと思うのですが。
0237nobodyさん2007/02/25(日) 21:26:20ID:???
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
0238nobodyさん2007/02/25(日) 21:29:18ID:???
>>236
> ↑これでは変換前の実体参照がそのまま表示されるだけですね
されない。

以上。
0239nobodyさん2007/02/25(日) 21:30:57ID:???
>>238
         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
0240nobodyさん2007/02/25(日) 21:33:14ID:???
quoteじゃなくて
quotって事か?
何言ってるのか本当に意味わからん
0241nobodyさん2007/02/25(日) 21:39:37ID:CDvbRnfg
関数の説明で 戻り値 の説明(@param string ... のように)をしたいのですが
戻り値がオブジェクト(http://jp2.php.net/manual/ja/language.types.object.php)の
型名はどうなるのでしょうか?

それから、PHPの標準関数はどこに定義されているのでしょうか?
見てみたいのですが、見られますか?
0242nobodyさん2007/02/25(日) 21:44:55ID:???
@param
じゃ引数じゃないか?

@return foo
だと思うが
0243nobodyさん2007/02/25(日) 21:47:23ID:???
@return objectでいいんでないの?
PEARの書式でもながめてみたら?

関数はPHPのソースにあるでひょ
Cで書かれてるはずだけど
0244nobodyさん2007/02/25(日) 21:56:00ID:???
>>241
http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.return.pkg.html
02452412007/02/25(日) 21:57:24ID:???
Ooooooooooops!!
@returnでした。

>>243
なるほど。素直に'object'ですね。
参考にPEARを覗いてみます。

>関数はPHPのソースにあるでひょ
>Cで書かれてるはずだけど
grepで検索して覗いてみます。
ありがとうございました。
0246nobodyさん2007/02/26(月) 01:29:31ID: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部分に表示させ、
そのフォーム部分の名前を変えて送信すれば、データベースのレコードも変わる、という感じです。

各個人を一人ずつ変える事なら出来たのですが、
一括変更がなかなか出来ません・・・。
どなたかお知恵をお貸し下さい。
宜しくお願いします。

次に現在の内容を晒します。
02472462007/02/26(月) 01:30:02ID: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>

如何でしょうか?
宜しくお願いします。
0248nobodyさん2007/02/26(月) 01:37:37ID:???
複数行のデータが送られてくるのにUPDATEを1回しか発行してないぞ
0249nobodyさん2007/02/26(月) 01:51:29ID:???
>>247
var_dump($_POST['name'])
0250nobodyさん2007/02/26(月) 03:32:17ID:???
初めて知ったけど、includeやrequireに括弧は付けないんだね。
include "hogehoge.php"; ってことか。
0251nobodyさん2007/02/26(月) 03:33:57ID:???
このすれれべるひきいwwwwwwwww
0252nobodyさん2007/02/26(月) 04:15:30ID:???
>>251
こういうのが沸いてくるからな
0253nobodyさん2007/02/26(月) 04:15:31ID:???
メールのヘッダ情報において、「詐称できないもの」って、
Received:の経路情報だけ?

他にも詐称が不可能なヘッダ情報ってある??
0254nobodyさん2007/02/26(月) 04:58:19ID:7mBYKw3T
正規表現の中に変数を含めることって出来ますでしょうか?

たとえば、
$var = "abc";
preg_match('/^aaa{$var}zzz/', $str, $result);
のように、$varを正規表現の中に入れて中身を展開させたいのですが・・・
0255nobodyさん2007/02/26(月) 05:02:33ID:???
自分で試せ
0256nobodyさん2007/02/26(月) 05:02:35ID:???
なんでまずやってみないの?
アホだろ
0257nobodyさん2007/02/26(月) 05:42:18ID:???
>>254
何故、変数展開させたい文字列をシングルクォートで括るか。
0258nobodyさん2007/02/26(月) 05:49:25ID:???
ヴァカしかいねーのな
0259nobodyさん2007/02/26(月) 05:58:24ID:???
質問者の10割と回答者の9割がアホ
それがここの仕様
02602542007/02/26(月) 05:59:13ID:7mBYKw3T
>>255-256
254で記載したコードで試したうえで出来ないので質問いたしました。

>>257
あっ、すいません、ここには手打ちで書いたのでうっかりシングルにしちゃいましたが、
実際のソースのほうではダブルで括ってます。

でも正規表現では{}は意味を持つので、変数を囲うのに使えないし・・・
0261nobodyさん2007/02/26(月) 06:04:57ID:???
>>260
使えるって。先に変数展開されてから関数に渡されるんだから。
試してもいないで言ってるだろう、お前。
つか、正規表現の「{}」って何?
02622612007/02/26(月) 06:12:37ID:???
あ、前の表現の回数指定か。忘れてた >「{}」
でも問題ないよ。たとえば
$s = "aaaabbbcccddd";
$x = "bbb";
print preg_replace("/a{3}{$x}c{2}/", "ZZZ", $s);
というコードで結果は
aZZZcddd
ってなるから。
0263nobodyさん2007/02/26(月) 06:43:34ID: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です。
問題なしでしょうか?
02642632007/02/26(月) 06:46:01ID:xTDxI0kc
>MySQLのテーブルtableのレコードnameには a&#39b が入ってます
↑半角&#39bです。
0265nobodyさん2007/02/26(月) 07:09:31ID:???
a'bなんてname入れんな
0266nobodyさん2007/02/26(月) 07:27:19ID:???
>>263
問題あります1スレに10回は出る質問なので
上を探せばでてきます
0267nobodyさん2007/02/26(月) 07:31:17ID:???
>>265
は?
0268nobodyさん2007/02/26(月) 07:33:25ID:???
>>263
> PHPでこれを実行するとちゃんとname = a'bが取得できます。
どう実行したのか具体的に書いてよ。
単にライブラリの方で自動エスケープしてくれただけじゃないの?
0269nobodyさん2007/02/26(月) 07:38:00ID:???
>>263が何らかのwebサービスを開始したら、ぜひ教えてほしい。
そしたら、速攻でSQLインジェクションやってあげるから。
0270nobodyさん2007/02/26(月) 07:40:24ID:???
>>263
> select * from table where name = 'a'b';なわけで、危険なのでは?と思い質問しました。
危ない以前にSQLシンタックスエラーで実行できない。
02712632007/02/26(月) 07:47:26ID:xTDxI0kc
ちょっと略しました。申し訳ないです。
正確には
$name = "a'b"; ではなく
$nameはPOSTまたはGETで送られたa'bです
02722632007/02/26(月) 07:52:29ID:xTDxI0kc
>$nameはGETで送られたa'bです
↑GET
02732632007/02/26(月) 07:59:42ID:xTDxI0kc
あ、違いますね。
間違いです。勘違いしてました。
忘れてください。
0274nobodyさん2007/02/26(月) 08:00:52ID:???
>>272
>>266
0275nobodyさん2007/02/26(月) 08:55:20ID:???
>>190
htmlspecialchars($変数, ENT_COMPAT, EUC-JP);
第二引数をつけないと脆弱性がある。 190が悩んでるような"や'を入力された場合のことね。
http://au.php.net/manual/ja/function.htmlspecialchars.php
0276nobodyさん2007/02/26(月) 09:01:08ID:???
>>275
オーストラリア在住ですか?
0277nobodyさん2007/02/26(月) 09:11:49ID:???
>>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とか埋め込めるけどね。
02782752007/02/26(月) 09:13:50ID:???
orz
ENT_QUOTESだ。
0279nobodyさん2007/02/26(月) 10:53:00ID:???
>>271
普通に考えたらGETだろうとPOSTだろうと「a'b」は「a'b」のままなんだが、
ひょっとしてテーブルに格納されてるのも検索で使った入力値も
「a'b」じゃなく「a&#39b」だって話か?
画面で見ると where name='a'b' に「見える」というだけで実は where name='a&#39b' ?

じゃあ一体何の問題が言うんだね、君は。
0280nobodyさん2007/02/26(月) 11:11:07ID:???
文字コードやら文字エスケープ程度でつまずく奴は何やっても駄目
0281nobodyさん2007/02/26(月) 11:59:30ID:???
どこかで自分のソースをチェックしてくれるサイト・もしくはサービスって無いかな?
HTMLの書き方についてはネットでも自動チェックできるところがあるけど、
PHPについては、どういう書き方が正しいのか?処理がスムーズに行われるのか?
について、いつも悩む。書き方によってパフォーマンスも違うだろうし。
0282nobodyさん2007/02/26(月) 12:18:42ID:???
>>281
プログラムとHTMLは違う。
PHPは構文エラーがあれば教えてくれるんだし。

コーディングなら、他人が書いたソースでも読んでみて
参考になるところがあれば、どんどん真似をして自分のものにしなさい。
コーディング規約を読んでみるのもよし。
0283nobodyさん2007/02/26(月) 12:19:04ID:???
>>281
HTMLだって文法チェックはしてもデザインの良し悪しなんてチェックはしてくれないのだよ。
0284nobodyさん2007/02/26(月) 12:19:19ID:???
Perlなら↓とかあるのはあるんだが
ttp://www.e777.co.jp/perlcw/perlcw.html

まあIDE使ったほうが良さげ
02852842007/02/26(月) 12:20:51ID:???
な、なんだお前ら!
昼休み暇だからって被りすぎだろ コラー!
0286nobodyさん2007/02/26(月) 12:21:45ID:???
>>284
文法チェックだけなら
php -l ソースファイル
でいいじゃん。
0287nobodyさん2007/02/26(月) 12:44:43ID:eLbz34G2
皆さんphp4で開発する時、クラスを多用します?
0288nobodyさん2007/02/26(月) 12:59:51ID:???
サッカーやる時、ボールよく蹴ります?って聞いてるようなもんだよそれは
0289nobodyさん2007/02/26(月) 13:04:35ID:???
http://localhost/test.php?keyword=?
これをそのまま?と表示させたいときどうしたらいいでしょうか?
0290nobodyさん2007/02/26(月) 13:06:58ID:???
そうなのね。
関数でべた書きしてました・・
出直してきます。
02912892007/02/26(月) 13:07:28ID:???
http://localhost/test.php?keyword=&hearts;
これをそのまま♥と表示させるにはどうしたらいいですか?
0292nobodyさん2007/02/26(月) 13:08:29ID:???
>>289
愛が必要です
0293nobodyさん2007/02/26(月) 13:15:59ID:blVK8UOL
1つのファイル上で「入力」→「確認」→「完了」を行い、
それぞれの用途に合わせたテンプレートを読み込む仕様にしたいと思っています。

例えば、最初にアクセスした時にform.phpというテンプレートを読み込むとします。
必須項目をすべて入力したら、次のconfirm.phpを読み込む。
入力してなかったら、form.phpを再度読み込んでエラーをフォームの上に表示する。

ここまではよくあるパターンだと思うのですが、入力エラーの場合
最初に入力した内容もリセットされます。
form.php内のフォームを
<input name="test" type="text" value="<?=$_POST["test"]?>">
とすれば元の入力値も表示されますが、ラジオボタンやチェックボックスの場合は
このような方法は使えません。

そこで質問ですが、確認を入力フォーム上で行う場合、どのような
構築の仕方・ソースの書き方をすればいいのでしょうか?
02942892007/02/26(月) 13:16:10ID:???
>>292
おもしろいけど・・・
02952892007/02/26(月) 13:23:26ID:???
>>293
sessionでもよいかと
0296nobodyさん2007/02/26(月) 13:24:31ID:???
>>293
フォーム内容をポストの際にセッションに入れてから
判定処理
02972892007/02/26(月) 13:27:51ID:???
http://localhost/test.php?keyword=&hearts;
これをそのまま♥と表示させるにはどうしたらいいですか?
<?php
$keyword = $_GET['keyword'];
echo $keyword;
?>
これだとうまくいきませんでした
0298nobodyさん2007/02/26(月) 13:29:24ID:???
XAMPP使っている人いますか?
0299nobodyさん2007/02/26(月) 13:29:55ID:???
使ってるよ
03002932007/02/26(月) 13:33:31ID:???
>>295-296
テキストボックスやテキストエリアの場合、それでもいいのですが、
チェックボックスやラジオボタンの場合は、どうするのでしょうか?

if ($_POST["items"]=="あああ") {
echo <input name="items" type="radio" value="あああ" checked="checked" />
} else {
echo <input name="items" type="radio" value="あああ" />
}

みたいなのを数だけ用意するのでしょうか?
でも、それだとソースが増えすぎる気が。。
03012892007/02/26(月) 13:42:03ID:???
checkedだけ変数に入れてもよいかと

if ($_POST["items"]=="あああ") {
$aaa = "checked";
}
echo <input name="items" type="radio" value="あああ" $aaa />
03022932007/02/26(月) 13:53:37ID:???
>>301
じゃ、テキストボックスが10個あったら

if ($_POST["items"]=="あああ") {
$aaa = "checked";
}

を数だけ用意する事になりますよね?それだとソースが増えすぎる気が・・。
(それが普通の書き方なら、分かるのですが・・・
03032932007/02/26(月) 13:54:11ID:???
じゃ、テキストボックスが10個あったら
↓
じゃ、チェックボックスが10個あったら

すみません、書き間違いです。
03042892007/02/26(月) 14:06:39ID:???
switch($items){
case "あああ" : $aaa = " checked"; break;
case "いいい" : $iii = " checked"; break;
case "ううう" : $uuu = " checked"; break;
・
・
・
}
増えすぎますね でもこれしかわかりません ごめん
詳しい人いたらよろしくです
>>297の質問もよろしくです
0305nobodyさん2007/02/26(月) 14:17:13ID:???
おいらはフォーム関連はHTML_quickformで処理してる。
投稿された、及びセッションからの値を 
デフォルト設定arrayに流してるなあ
0306nobodyさん2007/02/26(月) 14:28:15ID:???
チェックボックスの値の保持&再現か・・・うーん。
そのHTML自体をPHPで生成して、checkedにしたい項目だけ置換して使うとか?
03072932007/02/26(月) 14:35:58ID:???
>>305-306
ありがとうございます。
自分でも色々考えたりググったりしているのですが、
どうしても問題が解決しません。

今回のケースでは「登録時」ですが、「編集時」はどうなるのか?
とか考えると、SESSIONで保持する方法は合わないと思うんです。

フルコントローラぽっく、ひとつのファイル上でテンプレートを読み込む
形を考えてるのですが、現状では難しそうなので、個々のファイルに
アクセスする方法に変えた方がいいかもしれませんね。
0308nobodyさん2007/02/26(月) 14:40:54ID:???
>>297
rawurlencode( "♥" );
03092892007/02/26(月) 14:58:22ID:???
<?php
$keyword = $_GET['keyword'];
$keyword = rawurlencode( "$keyword" );
echo $keyword;
?>

>>308
ありがとうございます だめでした・・・
0310nobodyさん2007/02/26(月) 15:03:13ID:???
>>309
ちがうよ。元のURLをエンコードしないと。
http://localhost/test.php?keyword=%26hearts%3b
0311nobodyさん2007/02/26(月) 15:06:40ID:???
>>293
多次元配列にしてループで回せばいいじゃん
配列の配列で$valueと$checkedの値もってさ
0312nobodyさん2007/02/26(月) 15:22:45ID:???
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=
(略
こんな感じじゃないのかねえ
なんとでもできそうな・・

<文法適当です
03132892007/02/26(月) 15:24:13ID:???
>>310
違います 説明が下手でごめんなさい 元のURLは
http://localhost/test.php?keyword=&hearts;
で ♥と表示させたい です
0314nobodyさん2007/02/26(月) 15:28:06ID:???
>>313
無理だよそんなの。URLのパラメータの仕組みを理解してください
0315nobodyさん2007/02/26(月) 15:30:18ID:???
>>293
結局の所
チェックボックスの再現問題のみ?
03162892007/02/26(月) 15:53:41ID:???
>>314
無理ではありません
一応正規表現で置換するとできます
特殊文字全部置換しろってことでしょうか?
0317nobodyさん2007/02/26(月) 16:00:25ID:???
>>316
RFC1738を参照: http://www.faqs.org/rfcs/rfc1738

URIに含むことが許されていない文字は、全てRFC1738に基づいて
URLエンコードしなければならない。

もちろん「?」もそのままではURIに含むことができないので、URLエンコード
する必要がある。rawurlencode("?") の結果をパラメータに指定するだけ。
03183172007/02/26(月) 16:01:37ID:???
&harts; が 「?」に化けた。
脳内変換しておいてくれ。
0319nobodyさん2007/02/26(月) 16:05:19ID:???
>>304
>>293=>>297かよ
checkboxの話はどうなったんだ
ったく手当たり次第に思いつくまま質問しやがって
03202932007/02/26(月) 16:08:21ID:???
>>311-312
ありがとうございます。セッションに関してですが、
if (isset($_POST["name"])) {
$_SESSION["name"]=$_POST["name"]; //フォームの数だけ用意
}
みたいな感じになるのでしょうか?
それとも一括でポストをセッションに格納するのでしょうか?
>>315
自分で検討してみたところ、チェックボックスやラジオボタンについては

if (isset($_POST["name"]) {
$checked = "checked=checked";
}else{
$checked="";
}

みたいなのでいけました。(チェックボックスなら配列に入れてarray_search)
ただ、あまりスマートじゃありませんね。求める方法としては
312さんが書かれているような方法が最適だと思っています。
}
03212932007/02/26(月) 16:09:32ID:blVK8UOL
>>319
いえ。自分はひとつの事しか質問してません。
それにパラメーターにハートは無理だと思いますし・・。
0322nobodyさん2007/02/26(月) 16:10:05ID:Sd3D9dFc
クラス内で定義された関数をコールするには $this->関数名(...) でできる
と思ったのですが、「Fatal error: Call to undefined function」が返ってきます。
どうすればできるのでしょうか? PHPのバージョンは PHP 4.4.4 です。

class MyClass
{
    function foo()
    {
        return "にゅるぽ";
    }

    function bar()
    {
        echo $this->foo()
    }
}
0323nobodyさん2007/02/26(月) 16:11:52ID:???
>>316
そりゃ、QueryStringから抽出すればできるけど
そういう質問じゃないだろ。だったらURLエンコードするべき。
そんなURLが来るようなら元のURLを作ってる部分のバグ。
ためしに&heartsでググったらURLがどうなるかやってみろ。
03242912007/02/26(月) 16:22:03ID:???
>そりゃ、QueryStringから抽出すればできるけど
>そういう質問じゃないだろ。

最初からそういう質問ですけど・・・
URLはエンコードされてることくらいわかってるつもりですごめんなさい
0325nobodyさん2007/02/26(月) 16:27:21ID:???
>>324
>最初からそういう質問ですけど・・・

自分で書いた>>297のソース見てみろよ。
普通にGETパラメータから取得しようとしてるじゃんか。
あれでやるならURLエンコードするしかないし
QueryStringから抽出するなら正規表現なり、substrなりご自由に。

>URLはエンコードされてることくらいわかってるつもりですごめんなさい

わかってるやつが書く文章とは思えない。「されてる」んじゃなくて「する」んだから。
0326nobodyさん2007/02/26(月) 16:37:08ID:???
盛り上がってきました
03272912007/02/26(月) 16:42:02ID:???
>>325
QueryStringで取得してもGETで取得してもrawurlencodeするでしょ

>ためしに&heartsでググったらURLがどうなるかやってみろ。
URLはエンコードされてることくらいわかってるつもりですごめんなさい

googleに「されてる」と言う意味です
0328nobodyさん2007/02/26(月) 16:48:37ID:???
>>327
何度も言うけど、URIに含まれてはいけない文字は、URLエンコード
する必要があるんだってば。

パラメータで指定する際に、
http: //localhost/test.php?keyword=%3F (Shift-JISの場合)
03292912007/02/26(月) 16:53:57ID:???
>>328
わかってます 何度も言うけどそれはわかってます
しかしもし特殊文字を入れられたときそれをちゃんと表示させたいのです
完璧を求めちゃいけませんか?
0330nobodyさん2007/02/26(月) 16:54:01ID:???
>>327
>QueryStringで取得してもGETで取得してもrawurlencodeするでしょ

この文章も意味がわからないし・・・

1.$_GET["target"]で取得する

 元のテキストをrawurlencodeしてください

2.QueryStringから取得する

 $_SERVER["QUERY_STRING"]を使って
 正規表現、strpos、substrなどで抽出してください。

これのどちらかです。好きなほうを選んでください。
個人的にはrawurlencodeするのをそこまで渋る理由がわからない。
03312912007/02/26(月) 17:06:08ID:???
>>330
違います URLに特殊文字を直接入力されたとき
置換するとそのまま表示できるので
特殊文字全部を置換しなければいけないのでしょうか?

特殊文字全部を置換するとできますが、他に簡単な方法はないのでしょうあk?
■ このスレッドは過去ログ倉庫に格納されています