Linkspellen

Status
Niet open voor verdere reacties.

klikjessparen

Gebruiker
Lid geworden
15 okt 2012
Berichten
18
Hallo,

Ik heb sinds kort een eigen spaarprogramma genaamd *knip* .
Nu kunnen leden hier zich aanmelden, en vervolgens punten verdienen door zogehete linkspellen.
Ik heb dit script volledig overgekocht, maar ben zelf niet heel erg gedrefen in de mysql.
Nu heb ik dus een vraag.
Ik heb 1 linkspel nu, en wil graag een 2de linkspel erbij.
De linkspel link van een lid kan 1 x per 24 uur per ip geklikt worden (voorbeeld link: *knip*/koop.php?id=31 ).
U zit al dat dit linkspel onder koop.php valt.
Nu wil ik nog een linkspel erbij die per uur per ip te klikken is. (tuurlijk tegen een anderen vergoeding voor het lid.
Ik heb geen idee hoe ik dit voor elkaar krijg maar zou super dankbaar zijn als iemand iets voor mij zou kunnen doen!

Ik plaats hieronder even koop.php, neem aan dat jullie dit nodig hebben mij verder te kunnen helpen!

Alvast SUPER bedankt!

Mvg,
Tim


Koop.php:

PHP:
<?php
include("config.php");

  $sql = "SELECT * FROM gebruikers WHERE id='".$_GET['id']."'";
  $query = mysql_query($sql);
  $rij = mysql_fetch_object($query);
?>

<head><STYLE TYPE="text/css">
A: Link {font-family:Verdana;color:#FFFFFF;font-size:9pt;font-weight:normal;font-style:normal;background:#000000;text-decoration:none;}
A: Active {font-family:Verdana;color:#FFFFFF;font-size:9pt;font-weight:normal;font-style:normal;background:#000000;text-decoration:none;}
A: Hover {font-family:Verdana;color:#FFFFFF;font-size:9pt;font-weight:normal;font-style:normal;background:#000000;text-decoration:none;}
A: Visited {font-family:Verdana;color:#FFFFFF;font-size:9pt;font-weight:normal;font-style:normal;background:#000000;text-decoration:none;}
</STYLE>
<style>
			* {padding: 0; margin: 0; }
 
			body {
				background-image:url(images/koopback.png);
				background-repeat:repeat-x;
				font-family:Verdana, Arial, Helvetica, sans-serif;
				font-size:11px;
				color:#848484;
				line-height:14px;
			}
 
			a:link,a:visited {
				color:#ff6600;
				text-decoration:none;
			}
 
			a:hover {
				text-decoration:underline;
			}	
 
			#wrapper {
				margin:0 auto;
				width:100%;
 
			}
		</style>
</head>



<table width="100%" height="100"><td align="right"><font color="#FFFFFF"><b>
<?


mysql_query("delete FROM kopers WHERE FROM_UNIXTIME(time,'%d') != FROM_UNIXTIME(unix_timestamp(),'%d')");



$result = mysql_query("select * from kopers where ip='$_SERVER[REMOTE_ADDR]' AND verkoperid='$_GET[id]'") or die(mysql_error());
if ($row=mysql_fetch_array($result)) {
echo "Je hebt van ID: id=$_GET[id] al $verkoopje gekocht!";
} else {
	$result = mysql_query("select * from gebruikers where id=$_GET[id]");
	if ($row = mysql_fetch_array($result)) {

	mysql_query("UPDATE gebruikers SET saldo=saldo+$klikje WHERE id=$_GET[id]") or die(mysql_error());
	mysql_query("UPDATE gebruikers SET verkocht=verkocht+1 WHERE id=$_GET[id]") or die(mysql_error());
	mysql_query("UPDATE stats SET kliks=kliks+1") or die(mysql_error());
	mysql_query("UPDATE stats SET punten=punten+$klikje") or die(mysql_error());
	mysql_query("UPDATE `stats` SET punten=punten+'$klikje'");
	mysql_query("INSERT INTO kopers (ip, time, verkoperid, url) VALUES ('$_SERVER[REMOTE_ADDR]', UNIX_TIMESTAMP(), $_GET[id], '$HTTP_REFERER')");
	echo "Je hebt zojuist $verkoopje van ID: $_GET[id] gekocht";
	} else {
	echo "$verkoopje kon niet verkocht worden";
	}
} ?>
</b><br>Wil je ook punten verdienen? <a href="aanmelden?id=<?php $_GET['id'] ?>">meld je dan hier aan</a></td></font></table><div id="wrapper">
<?php
echo "<iframe frameborder=\"1\" height=\"100%\" name=\"frame1\" src=\"http://*knip*/allinone/?user=721\" width=\"100%\"></iframe>";
?>

</div>
 
Laatst bewerkt door een moderator:
Eerst even opmerkingen:

De opzet van je bestand dat je nu hebt zorgt ervoor dat je code moet gaan kopiëren waardoor je 90% overbodige code gaat creëren. Dit kan je oplossen door een functie of functie. Aangezien de functie opzich zelf steeds het zelfde moet zijn wat er gebeurd allen is er een verschil tussen de pagina's

Hieronder even snel een voorbeeld hoe te werken met een functie. letop deze code is niet getest.

nieuwe versie van koop.php je zal hier nog wel de html erom heen moeten zetten

PHP:
<?php
//aanroepen van functie bestand
include('addpoints.php')

//aanroepen van de functie
$getMessage = addPoints($_GET['id'], __FILE__);

echo $getMessage
?>


functie bestand: (als bestands naam heb ik even addpoints.php ervan gemaakt)
PHP:
<?php 
// hierin worden variable id en page gevuld met de waarde van koop.php

function addPoints($id, $page) {
// Hier komt je functie te staan

// doe een return of het toevoegen wel of niet kon.

return $message;
}
//hier hoeft geen endtag van php te staan aangezien je het bestand gaat aanroepen in een ander bestand.

Daarnaast zie ik dat php nog op een veroudere manier wordt gestart namelijk <? maar het is <?php Deze zou je al sowieso kunnen veranderen. Ook is het zo dat dat de benaming van get tussen enkele quotes moet. dus in plaats van:
PHP:
$_GET[id]
wordt het:
PHP:
$_GET['id']

Ook wordt er niet gecontroleerd of $_GET['id'] werkelijk een getal is. Je zou hiermee een sql injectie kunnen veroorzaken. Je zal de GET altijd moeten controleren.

aangezien het om een getal moet zijn zou je bijvoorbeeld dit kunnen doen:

PHP:
(int) $_GET['id']
Dit zorgt ervoor dat er altijd een getal van wordt gemaakt indien mogelijk dus als een gebruiker er bijvoorbeeld 4A van maakt dan wordt de GET 4 maakt de gebruiker er A4 van dan wordt het de GET 0 aangezien er geen getal van kan worden gemaakt.


Dus even wat te doen voor je verder met een nieuw spel denk ik zo:
  • van <? naar <?php
  • zorgen dat de GET altijd een getal is door (int) voor de get te zetten
  • Code in een functie zetten zodat je niet code gaat kopieren.

Nu pas eigenlijk je antwoord op je vraag. Wat er gebeurd is dat je alle record verwijderd van alle kliks die van een andere dag zijn. Mij lijkt het handig als je dat niet zou doen maar zou bewaren, maar dat is persoonlijk. Er wordt nu namelijk naar de dag gekeken, je wilt dus naar per uur. Ik zou het volgende doen:

Sla bij de eerste klik de datum en tijd op in de database. Op het moment dat er wordt geklikt doe je ongeveer deze query:
[SQL]SELECT id FROM kopers WHERE time => NOW()-INTERVAL 1 HOUR[/SQL] hierna zet je nog al je andere voorwaarden.

controleren in php

PHP:
$sql = "SELECT id FROM kopers WHERE time => NOW()-INTERVAL 1 HOUR";
$result = mysql_query($sql);

if($result) {
//er is resultaat dus fout.
echo 'U kunt maar 1 keer in één uur klikken';
//als je de functie manier gebruikt wordt het zo:
//$message = 'U kunt maar 1 keer in ééń uur klikken';

} else {
// de rest van je code
}

ik hoop dat ik je voor nu even voldoende informatie heb gegeven. Als je nog vragen hebt stel ze gerust.
P.S. het zou kunnen dat er een aantal fouten in de code staat
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan