こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Checkboxでの注意事項認証

始めまして。
困ってます・・分かる方ヒントでも頂けたら幸いです。

現在「CGI's」というフリーのショッピングカートを使って作成しています。お客様情報のテーブル内に、よくHP上であるようなcheckbox「注意事項に同意する」の項目を追加しようと思っているのですが、うまくいきません。初心者なもので、どこがおかしいかも検討がつきません。ご教授お願い致します。
下記のように書いています。

// 入力フォーム
function UserForm() {
global $CONF_BASIC;

// Cookie取得
if($CONF_BASIC['cookie'] == 1) {
$_COOKIE = CookieRead();
$_SHOW = showEscap($_COOKIE);
}
  ・
  ・
$html .= '<tr>'."\n";
$html .= '<th>注意事項<span class="need_mark">※</span></th>'."\n";
$html .= '<td>'."\n";
$html .= '<input type="checkbox" name="u_check" value="'.$_SHOW['u_check'].'" >「注意事項」に同意する。<br />'."\n";
$html .= '<span class="small"><a href="../notice/index.html" target="_blank" class="pink">注意事項</a>をよく読み、同意された方はチェックを入れてください。</span>'."\n";
$html .= '</td>'."\n";
$html .= '</tr>'."\n";

/********** 入力情報チェック **********/
function ValueCheck() {
$err_u = '';
$err_d = '';
  ・
  ・
// 注意事項
if($_POST['u_check'] == '') {
$err_u .= '[注意事項]「注意事項」に同意する。にチェックが入っていません。<br />';
}

// その他項目
function OtherForm() {
global $CONF_BASIC;
  ・
  ・
elseif($CONF_BASIC['other_type'] == 'checkbox') {
if($choose) {
for($i = 0; $i < count($choose); $i++) {
$other['form'] .= '<input type="checkbox" name="other" value="'.$choose[$i].'" /> '.$choose[$i]."\n";
}
}
}

/********** Cookie **********/

function CookieSet() {
$limit = time() + (60*60*24*30); // 30日
  ・
  ・
$cookie .= '"'.$_POST['u_check'].'",';
if(!setcookie(webcart,$cookie,$limit)) {
putHTML(ErrorShow('Cookie Error'));
exit;
}
}

function CookieRead() {
if(get_magic_quotes_gpc()) {
$ptn1 = '/^\\\"/';
$ptn2 = '/\\\"$/';
}
else {
$ptn1 = '/^\"/';
$ptn2 = '/\"$/';
}
list($c['u_check']) = explode(',',trim($_COOKIE['webcart'],','));

チェックを入れてもエラーになります。どこをどうしたらいいのでしょうか・・
よろしくお願いいたします。

投稿日時 - 2011-03-14 11:14:28

QNo.6591933

すぐに回答ほしいです

質問者が選んだベストアンサー

「web_cart2.42.zip」をDLして試してみました。

cart.phpの666行目の位置に

// 注意事項
if(!isset($_POST['u_check'])) {
$err_u .= '[注意事項]「注意事項」に同意する。にチェックが入っていません。<br />';
}

963行目の位置に
※上のをコピペするとずれるので要確認

$html .= '<tr>'."\n";
$html .= '<th>注意事項</th>'."\n";
$html .= '<td>'."\n";
$html .= '<input type="checkbox" name="u_check" value="'.$_SHOW['u_check'].'" >「注意事項」に同意する。<br />'."\n";
$html .= ''."\n";
$html .= '</td>'."\n";
$html .= '</tr>'."\n";

をそれぞれ挿入することで確認画面でのエラーチェックが行えるようになりました。
前回と返答は変わってないので正しい位置に記述されているか確認してみてください。
例)「送付先に入力がある場合のチェック」のif文の中に追加のチェック処理が入っていないか、等

投稿日時 - 2011-03-15 10:38:03

お礼

出来ました!!
こんなド素人にわかりやすくわざわざDLまでしてご指導して頂き、
本当にありがとうございました!

テキストで「同意する」って書いてもらおうかとしてました・・

duronさん本当にありがとうございました!!

投稿日時 - 2011-03-15 11:59:22

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

checkboxはチェックされていない場合には値がPOSTされません。
ですので以下のようにすればいいのではないかとおもいます。

// 注意事項
if(!isset($_POST['u_check'])) {
$err_u .= '[注意事項]「注意事項」に同意する。にチェックが入っていません。<br />';
}

POSTされてきた値が$_SHOW['u_check']と一致するか?という条件も追加すると
さらによいかもしれません。

投稿日時 - 2011-03-14 15:21:14

お礼

ならないみたいです・・
もおちょっと勉強なおします!!

わざわざご回答いただき、ありがとうございました。

投稿日時 - 2011-03-14 17:49:48

あなたにオススメの質問