0

クーポンは、そのタイプをまだ表示していないIPに対してのみ表示されます。含まれている場合は、エラーページをエコーする必要があります。これは、ユーザーがページを1回だけ表示できるようにするためのものです。

IPはデータベースに到達していますが、そのタイプのデータベースでIPが見つかった場合、PHPはエラーページを表示するように正しく機能していません。

URL: http: //muhs.trinix.co/coupon?type=czo0OiJNZW93Ijs=

<?PHP
if(empty($_GET['type'])){die();}
mysql_connect("localhost", "muhs_cp", "********************");
mysql_select_db("muhs_cp");
$type = mysql_real_escape_string(unserialize(base64_decode($_GET['type'])));
$randid = rand(1, 9999999999);
$ip = $_SERVER['REMOTE_ADDR'];

$resultz = mysql_query("SELECT ip FROM coupons WHERE type = '$type' AND ip = '$ip'        LIMIT 1");

if(mysql_fetch_array($resultz) !== false){
mysql_query("INSERT INTO `coupons` (`id`, `type`, `ip`) VALUES ('$randid', '$type', '$ip')");

$result = mysql_query("SELECT * FROM coupons WHERE type = '".mysql_real_escape_string($type)."'") or die(mysql_error());
$row = mysql_fetch_array( $result );
$expired = $row['expired'];
$notes = $row['notes'];
$cookie = $row['cookie'];
mysql_query("UPDATE `totals` SET `number` = `number` + 1 WHERE `type` = '".mysql_real_escape_string($type)."'");
}
else{
echo "
<html>
<head>
<title>Your Coupon</title>
<link href='css/screen.css' rel='stylesheet' type='text/css' />
</head>
<body id='wrapper'>
<div id='login'>
<h1>Whoops! Looks like this coupon has already been used.</h1>
<br />
<img src='../images/logo.png' />
<br />
<p>You are unable to make a coupon more than once.</p>
</div>
</body>
</html>"; die();};
?>

更新:私は余分なものを持っていました!ifステートメントで。また、ユーザーがページを1回だけ表示できるようにコードを変更することができました。

4

2 に答える 2

0

それはこの行にあります:

if(mysql_fetch_array($resultz) !== false){ ...

何かを返すことになっていない場合は、!=NULLと言う必要があります。あなたがそれを持っている方法は常に!== falseであるため、elseステートメントの一部であるページは表示されません。

例えば、

Bが状態Cにあり、データベースにIPがない場合にのみAを実行する場合。

于 2013-02-10T19:47:07.557 に答える
0

その部分を次のように書き直します。

$ip = $_SERVER['REMOTE_ADDR'];

//if you don't want every type to be usable just once, add ip here
$resultz = mysql_query("SELECT ip FROM coupons WHERE type = '$type' AND ip = '$ip' LIMIT 1");

//better to work with num_rows here
if(mysql_num_rows($resultz)>0){
mysql_query("INSERT INTO `coupons` (`id`, `type`, `ip`) VALUES ('$randid', '$type', '$ip')");
于 2013-02-10T19:53:25.040 に答える