익스플로러에서는 잘되는데 사파리 파폭에서는 상품코드가 없다고 안됩니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

익스플로러에서는 잘되는데 사파리 파폭에서는 상품코드가 없다고 안됩니다. 정보

익스플로러에서는 잘되는데 사파리 파폭에서는 상품코드가 없다고 안됩니다.

본문

아무리해도 안되네요,,
익스플로러에서는 장바구니 클릭 및 신청시 잘넘어가는데 파폭이나 사파리에서는 상품코드가 없습니다. 라고 출력됩니다. 뭐가 잘못되었나 좀 봐주세요.
혹시나 해서 대략적인 소스 올립니다.
그리고 자바알림창으로 파폭에서는 한글 잘나오는데 사파리는 '상품코드가 없습니다.'알림글자가 깨져서 나오네요.
이유가 뭔가요?
컴퓨할수록 어렵네요~

<?
$sub_code = '2';
include("./_common.php");
if(!$GCODE || $GCODE=="")
{
echo("<script>alert('상품코드가 없습니다.');history.back(-1);</script>");
}
else
{
include("$g4[path]/_head.php");

$shop = get_shop();
put_hit($GCODE);

$goods = get_goods($GCODE);

$category_info = get_category($goods[c_code]);
  $goods_dir = $g4[path]."/data/goods/"; //이미지출력시 주소부분
?>

<link rel="stylesheet" href="<?=$g4['path']?>/shop/style.css" type="text/css">
<script language="javascript" src="<?=$g4['path']?>/shop/shop.js"></script>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<form name="goods">
<input type="hidden" name="gcode" value="<?=$goods[g_code]?>">
<?if(!$goods[g_option]){?>  <input type="hidden" name="g_option" value="" />
<?}else{?>
<?}?>


<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td width="500" valign="top"><img src="<?=$goods_dir.$goods[g_img3]?>" style="border:solid 1px #D7D7D7" width="500" height="500"></td>
<td width="20"></td>
<td valign="top">
<!--제품정보시작-->
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="border:solid 1px #D7D7D7">
<tr>
<td width="80" height="35" class="blog_index">상품명</td>
<td>&nbsp;&nbsp;<b><?=$goods[g_name]?></b></td></tr>
<tr><td colspan="2" height="1" bgcolor="#D7D7D7"></td></tr>
<?if(trim($goods[g_option])!=""){?>
<tr>
<td height="35" class="blog_index">상품옵션</td>
<td>&nbsp;&nbsp;<select name="g_option">
<option value="">옵션을 선택하세요.</option>
<?
$tmp_option = explode("[RECORD]",$goods[g_option]);
for($i=1;$i<=count($tmp_option);$i++)
{
$tmpOptVal = explode("[FIELD]",$tmp_option[($i-1)]);
?>
<option value="<?=$i?>"><?=$tmpOptVal[0]?>(+<?=number_format($tmpOptVal[1])?>kg)</option>
<?}?>
</select>
</td>
</tr>
</table>
<br>
<!--제품정보끝-->
</td>
</tr>
</table>

<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td height="60" align="center">
<button class="back_btn" style="margin-right:3px" onclick="buyCheck('direct')">신청</button>
<button class="back_btn" style="margin-right:3px" onclick="buyCheck('addcart')">장바구니</button>
<button class="back_btn1" onclick="javascript:history.back()">←</button>
</td>
</tr>
</table>

</td>
</tr>

<tr>
<td style="padding:10 0 0 0"><?=stripslashes($shop[tranc_info]);?></td>
</tr>
</form>
</table>
<script>
function buyCheck(TYPE)
{
var frm = document.goods;
var MOD = "add";
var GCODE = frm.gcode.value;
var CNT = "";
var GOPTION = frm.g_option.value;
if(GCODE == "")
{
alert("제품이 삭제되었거나 잘못된 상품입니다.");
history.back(-1);
}
<?if(trim($goods[g_option])!=""){?>
else if(frm.g_option.value == "")
{
alert("상품옵션을 선택하세요.");
frm.g_option.focus();
}
<?}?>
else
{
if(TYPE == "direct")
{
new ajax("cart_update.php?MOD="+MOD+"&GCODE="+GCODE+"&CNT="+CNT+"&GOPTION="+GOPTION,DirectBuyResult);
}
else
{
new ajax("cart_update.php?MOD="+MOD+"&GCODE="+GCODE+"&CNT="+CNT+"&GOPTION="+GOPTION,CartResult);
}
}
}
</script>
<?
include("$g4[path]/_tail.php");
}
?>

댓글 전체

<?
$sub_code = '2';
include("./_common.php");
if(!$GCODE || $GCODE=="")
{
echo("<script>alert('상품코드가 없습니다.');history.back(-1);</script>");
}
else
{
include("$g4[path]/_head.php");

$shop = get_shop();
put_hit($GCODE);

$goods = get_goods($GCODE);

$category_info = get_category($goods[c_code]);
  $goods_dir = $g4[path]."/data/goods/"; //이미지출력시 주소부분
?>

혹시 상단부분소스에서  put_hit($GCODE);  이게 잘못된게 아닌가 싶습니다.
put_hit????가 뭔지 모르겠습니다.
아래 참고하십시오.

# ie를 제외한(ie로 아마 9,10에서부터는 DOM 을 완벽히 지원하는 것으로 공표했으니 포함) 다른 브라우저들은 대부분 HTML 코딩을 엄격하게 구분합니다.(크롬/FF 등은 약간? 유연합니다만..)

문제)
1. <form></form> 태그는 반드시 <table> </table> 밖에 위치해야 합니다. 한국에서는 일반적으로 코딩하는 분들이 폼태그를 테이블태그안에 두고 코딩을 하시던데 이런 규격은 없습니다. 밖으로 위치하십시오.

2. 자바스크립트 선언(참고적인 사항 - style 도 동일한 방식으로 선언)
echo("<script>alert('상품코드가 없습니다.');history.back(-1);</script>");
이런 코드는 jquery 나 특정한 프로토타입을 사용할때만 사용하고,
그외의 모든 자바스크립트 선언은
<script type="text/javascript"></script>
와 같이 되어야하고, alert() 메시지 사용시는 사파리/오페라등을 고려하여 반드시 쌍따옴표를 감싸야 합니다.. alert("오류"); 와 같이 되어야 하고, php 파싱문내에서는 alert(\"오류\"); 와 같이 처리해야 합니다.

3. 사파리/오페라에서 문자 깨지는 문제
사이트의 문자셋이 utf-8이건 아니건간에 모든 alert() 에서는 메타태그를 사용해서 문자셋을 지시해야 합니다.
echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=euc-kr\">";
과 같이하거나 php파싱문외에서는 일반 html 코딩으로 처리하시면 됩니다.
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT