php+postgreSQLで,次に示すような「掲示板」のようなものを作りました。
1.フォームに入力
2.入力内容の確認画面を提示する
3.OKで,入力完了

このシステムで”(ダブルクォーテーション)もフォーム内容に入力できるようにしたいのですが,できません。

というのも,上記2の確認画面を出すソース上で,次に示すように,ダブルクォーテーションがダブってしまうからです。($commentはフォームの内容であり,そこにダブルクォーテーションが含まれている)。
<input type="hidden" name="comment" value="<?echo $comment;?>">

解決策ございましたら,御教示を受け賜りたく。よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

補足読みました。


参考URLを見ていただければ比較的簡単にわかると
思います。
#このセッションはクッキーを使わないので、携帯
#電話などでも有効です。

ちなみにこの参考URLは日本PHPユーザ会という
サイトのマニュアル(実際には本体サーバと連携)
なので、トップページを「お気に入り」や
「Bookmark」に入れておいた方がいいかと思います。

ちなみに日本PHPユーザ会のURLは
http://www.php.gr.jp/
です。こちらにはメーリングリストなどがあるので
それも便利かな?

参考URL:http://www.php.net/manual/ja/ref.session.php
    • good
    • 0

別にCookieもセッションも使う必要はありません。



<input type="hidden" name="comment" value="<?echo htmlspecialchars($comment);?>">

としてやってダブルクォートやアングルブラケットなどのHTMLの要素として使われるキャラクタをエスケーブしてやれば良いだけです。

参考URL:http://www.php.net/manual/ja/function.htmlspecia …
    • good
    • 0

わざわざHIDDEN属性でページに書き出さないで、


PHPならばセッション情報として格納して、最後に
取り出せばいいのではないでしょうか?
#それじゃダメなんですか?

ではでは☆

この回答への補足

ご回答,ありがとうございます。
分からない点が一つあります。

【どのようにセッション情報を格納するのでしょうか】
確認画面にて,submitボタンを押して,$comment(フォームの記述内容)を
渡すには,hiddenを使うことしか思い浮かびません。

解決策に取り組んだばかりなので,分かり次第,この場で報告いたします。

補足日時:2001/09/24 10:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q$test = array(80,60,22,50,75);を(22,60,80,50,75);変更

https://oshiete.goo.ne.jp/qa/9231613.html から
 $test = array(0=>80,1=>60,2=>22,3=>50,4=>75); のご回答をもとに
$test = array(80,60,22,50,75);を$test = array(22,60,80,50,75);に変更しました。
 結果が”最高得点22です。”と予想しておりました・・しかし、変わらずに
 ”最高得点は80です。”のままでした!?この場合ですが、考え方はとしまして、
 $test = array(2=>22,1=>60,0=>80,3=>50,4=>75);となったので、以上の結果となっ
との考えで間違いないでしょうか?
 よろしくお願いいたします。

Aベストアンサー

表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜

ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。

<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);

$max = 0;

foreach($test as $id => $value){
if($max < $value) $max = $value;
}

print "<p>最高得点{$max}です。</p>";
?>

また$id => $valueも関係性を示しているだけなので、
foreach文は以下のようにも記述できます(紛らわしいのでこんな書き方しませんが)。

foreach($test as $aaa => $bbb){
if($max < $bbb) $max = $bbb;
}

///////////////////////////////////////////

過去の質問
https://oshiete.goo.ne.jp/qa/9200257.html
でも答えましたが、

例えば配列
array("22","80", "75","60","50")
はキーを何も指定しない場合以下と同じになります。
array('0' =>"22",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"50");

array("50","80", "75","60","22")
と並び変えても
array('0' =>"50",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"22");
のままです。

表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜

ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。

<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);

$max = 0;

foreach($test as $id => $value){
if($max < $value) $max = $value;
}

print "<p>最高得点{$max}です。</p>";
?>

また$id => $value...続きを読む

Q【超初歩】$_POST["Var"]とかダブルクォーテーションの書き方が間違ってますか?

$sql = "UPDATE Enquete SET MyName = \"$_POST['MyName']\"";

という書き方が,
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE,
expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\temp\temp.php on line 10
みたいな扱いを受けてしまうのはなぜでしょうか.

$Name = $_POST["MyName"];
$sql = "UPDATE Enquete SET MyName = \"$Name\"";

とすればエラーにならないですが.

Aベストアンサー

$sql = "UPDATE Enquete SET MyName = \"" . $_POST['MyName'] . "\"";

とすれば、エラーにならないと思います。
文字列中の一部を変数を使って文字列を生成する場合には、
明示的に変数部分を「.」で区別して書くようにしたほうがいいと思います。
単純な変数の場合は、通ることもあるみたいですが、
ちょっと複雑になるとエラーになってしまいます。

Q$1$2$3 $2が空だったら$1と$3割る。

タイトルどおりです。

$1=100
$2=200
$3=300

これが

$1=100
$2=''
$3=300
と空だったら
($1+$3)/2
と、するにはどうしたら良いですか??

更に

$1=100
$2=''
$3=''
$4=400

と、空が二つ入った場合

$1=100
$2=200
$3=300
$4=400

と、折れ線グラフで表したら綺麗に直線にしたいんですが、どういう計算式、プログラムで出来ますか??

Aベストアンサー

まじめに答えれば「$1」なんて文法的に使えない例をあげられても
答えようがない

たとえば$aと$cだとして、変数名だけ見て$bが省略されているなんて
判断できない。

Qpreg_match( '/^(\D+)(\d*)$/' , $変数 , $regs )

if( ! preg_match( '/^(\D+)(\d*)$/' , $変数1 , $regs ) )
{echo ( 'invalid dirname: ' . htmlspecialchars( $変数1 ) );}
$変数2 = $regs[2] === '' ? '' : intval( $regs[2] ) ;

正規表現だと思うのですが、どういう意味か教えてください。

□分からないなりに考えてみました…
▽1行目
$変数の内容が、'/^(\D+)(\d*)$/'にマッチしなければ、$regs へ代入。
▽2行目
マッチしていた場合は、htmlspecialchars関数を実行した後、'invalid dirname: '+その結果を表示する。
▽3行目
$regs配列変数の1番目を、何かして、$変数2 へ代入する。

……誰か教えてください…。

Aベストアンサー

>どこら辺に問題ありそうでしょうか?

まずpreg_matchで$regsを生成していますが、マッチしないケース
すなわち「数字からはじまる文字列」の場合、$regsが未設定になります。
したがって$regs[2] === ''で評価すると$regsが未設定エラーになります。
またエラーレベルを下げた場合でも、$regs[2] === ''はfalseなので
数字ではない文字列をintvalで評価するため$変数2には0が代入されます。

やはりif分岐である程度場合分けをしっかりしてやらないといけないでしょう。
総じて$変数1に代入される文字列の想定を広げて、チェックしてやる必要があります。

また、仮にデータがきちんと通ったとして、$変数2は空文字か数字という
データ型が確定しないフローになっています
たしかにPHPは変数定義がいい加減ではありますが、あまりなんでも
かんでも入れればいいというものではありませんので、ある程度
変数の型が一律になるような工夫が必要だとおもいます。

Qphpで$a,$b,を%指定して表示させたい

php で $a, $b, $c... をそれぞれして指定したパーセントの割合で表示させるプログラムを教えて下さい

$a = 'hoge';
$b = 'huga';
$c = 'piyo';

$a は 10%, $b は 30%, $c は 60% といった具合に指定できつつ
$d, $e... と続いても パーセント指定していけるような関数を作りたいです

ご回答よろしくお願いしますm(__)m

Aベストアンサー

$a = 'hoge';
$b = 'huga';
$c = 'piyo';

としたのであれば、

$data = array($a, $b, $c);
$perc = array(10, 30, 60);

と定義して($percは「割合」の数値=合計が100にならなくても可)。

$arr = array();
foreach ($data as $key=>$val) {
$arr = array_merge($arr, array_fill(0, $perc[$key], $val));
}
shuffle($arr);

とすればいいのでは?


人気Q&Aランキング

おすすめ情報