테스트 사이트 - 개발 중인 베타 버전입니다

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

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

<?
$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");
}
?>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

<?
$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 코딩으로 처리하시면 됩니다.

게시글 목록

번호 제목
284508
284499
284492
284490
284484
284481
284478
284476
284474
284472
284470
284458
284457
284454
284453
284447
284446
284444
284441
284440