Forum » Server-Side scripting » Bel service
Berichten: 40
avatar
Offline Stuur privebericht
Beste,

Ik heb een probleem met mijn bel service script.
Mensen kunnen nu meerdere malen op de link klikken bij targetpay en dan word er ook per keer dat ze klikken 100 credits bij geschreven. Ze klikken dan bijv. 20x terwijl ze maar 1x betaald hebben.

Nu wil ik dat dit beter beveiligd word dat er bijv. in een tabel bij word geschreven geklikt/ gekocht om die tijd en dat zodra ze nogmaals klikken er dan staat; Sorry je hebt al geklikt en betaald.
En dat er dan ook geen belcredits bijgeschreven worden.
Is het mogelijk en zoja hoe dat mensen 1x per 5 minuten of een andere tijd kunnen bellen/ klikken?

Dit is het script nu:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php /* ------------------------- */

  
include("gegevens.php");
/* ------------------------- */ ?>

<html>
<head>
<script src="https://www.targetpay.com/send/include.js"> </script>
<meta http-equiv="refresh" content="0; URL=http://www.WEBSITE/afgerond.php">
</head>
</html>

<link rel="stylesheet" type="text/css" href="<?php echo ($_COOKIE['v'] == 2) ? "../layout/css/css.css" "../css/css.css"?>">
<?php   
function access()   
    {   
      
$accesscode $_GET["accesscode"]; // toegangscode berekend op targetpay.com  
      
$time = (int)$_GET["time"];        // epoch time op targetpay.com  
      
$ip $_GET["ip"];                 // Cliënt ip adres op targetpay.com 
        
      // Tijd moet groter zijn dan de targetpay tijd  
      
if( time() < $time )  
          {  
          die(
"Lokale tijd is ". (time()-$time) ."sec. vroeger dan op Targetpay.com");  
          }  

      
// Remote address moet gelijk zijn als in het betaalscherm  
      // Note: Sommige Proxy servers veranderen het IP adres.  
      // Mocht u hier problemen mee ondervinden, schakel dan het die() statement uit.  
      
if( $ip <> $_SERVER["REMOTE_ADDR"] )  
          {  
          die(
"Client IP ".$_SERVER["REMOTE_ADDR"]." ongelijk aan ".$ip." op TargetPay.");  
          }  
         
      
// Betalings URL is c*10 minuten geldig 
      
for ($c=0;$c<=1;$c++)   
        {   
        
$t substr(strftime("%Y%m%d%H%M"time()-($c*1200)),0,11);   
        
$hash md5($ip"7fd1097ddc"$t);   
        if( 
$hash == $accesscode ) return true;  
        }  
      
    return 
false;  
    }  

if (!
access())      
    {   
      die (
"U heeft niet betaald of de betaling is verlopen.");   
    }   


Echo 
"Toegang succesvol.";  
?>    


<?php
echo "Betaling Voltooid!<br>Je hebt nu 100 belcredits erbij!!<br>U kunt nu dit venster sluiten<br>Succes nog met spelen!!<br><br><br>PS. Misbruik hier van maken zal leiden tot een boete!<br>Je word automatisch door gestuurt naar je hoofdkwartier";
  
mysql_query("INSERT INTO `[messages]`(`time`,`IP`,`from`,`to`,`subject`,`message`) values(NOW(),'{$_SERVER['REMOTE_ADDR']}','Betaalservice','{$data->login}','Betaling Voltooid','U heeft zojuist 100 belcredits gekocht in de betaalservice!
Bedankt voor het betalen')"
); 
  
mysql_query("UPDATE `[users]` SET `belcredits`=`belcredits`+'100' WHERE `login`='$data->login'"); 
  
mysql_query("INSERT INTO `bl`(`login`,`time`,`ip`,`wat`) values('{$data->login}',NOW(),'{$data->IP}','Credits gekocht')");   
  exit;
  
?>

15-11-2011 13:22
Dit topic is 94 keer bekeken door 30 verschillende leden
Reacties op: "Bel service"
1
Webdesigner
Berichten: 160
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
// Betalings URL is c*10 minuten geldig  
      
for ($c=0;$c<=1;$c++)    
        {    
        
$t substr(strftime("%Y%m%d%H%M"time()-($c*1200)),0,11);    
        
$hash md5($ip"7fd1097ddc"$t);    
        if( 
$hash == $accesscode ) return true;   
        }


Kun je in dit stukje niet aanzoeken wat er verkeerd gaat of wat er aangepast kan worden? De link is 10 minuten geldig, probeer daar eens wat mee.

Meestal leer je het meest als je het zelf uitzoekt.
15-11-2011 13:25
Berichten: 40
avatar
Offline Stuur privébericht
@ILuvBikinies,

De minimale beveiligings tijd op Targetpay is 10 minuten.
En dit is niet echt het gene wat ik bedoel, ik bedoelde meer iets van dat er uit mijn tabel gelezen wordt van er is om ..:..:..:.. betaald. En dat in het script staat; als de tijd/datum minder verschil heeft dan 5 minuten dan worden er geen credits bijgeschreven.

Toch bedankt
15-11-2011 13:35
Reageer op: "Bel service"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden