Kattintás korlátozása
Helló
Az a kérdésem hogy hogyan lehet megcsinálni, hogy van egy gomb ami a felhasználóhoz tartozó sql mondjuk kattintas mezőbe minden kattintással feltölt +1-et.
Ezt hogyan lehet korlátozni hogy naponta csak pl.:25 -ször kattinthasson rá.
van a katt.phpaminek elküldi a processes.phpSegítsetek pls
■ Az a kérdésem hogy hogyan lehet megcsinálni, hogy van egy gomb ami a felhasználóhoz tartozó sql mondjuk kattintas mezőbe minden kattintással feltölt +1-et.
Ezt hogyan lehet korlátozni hogy naponta csak pl.:25 -ször kattinthasson rá.
van a katt.php
<?
$username = $_SESSION['username'];
include 'constants.php';
$mysql = mysql_connect(DBHOST,DBUSER,DBPASS);
mysql_select_db(DBNAME,$mysql);
$connection = mysql_pconnect(DBHOST,DBUSER,DBPASS)
or die ("Couldn't connect to server.");
$db = mysql_connect(DBHOST,DBUSER,DBPASS);
mysql_select_db(DBNAME,$db);
$sql = mysql_query("SELECT * FROM ".DBTBLE." WHERE username='$username'");
$row=mysql_fetch_assoc($sql);
<form action="processes.php" method="post" name="form1" id="form1">
<input name="katt" type="hidden" class="textfield" id="katt" value="<? echo $row['katt']+1; ?>" size="50" />
<input name="userid" type="hidden" class="textfield" id="userid" value="<? echo $row['userid']; ?>" size="50" />
<input name="function" type="hidden" id="function" value="katt">
<input name="Submit" type="submit" class="textfield" value="Kattintok!" now!="Now!" />
</form>
?>
<?
$userid = $_POST['userid'];
$katt = $_POST['katt'];
include 'constants.php';
$mysql = mysql_connect(DBHOST,DBUSER,DBPASS);
mysql_select_db(DBNAME,$mysql);
$connection = mysql_pconnect(DBHOST,DBUSER,DBPASS)
or die ("Couldn't connect to server.");
$db = mysql_connect(DBHOST,DBUSER,DBPASS);
mysql_select_db(DBNAME,$db);
$query = "UPDATE ".DBTBLE." SET katt = '$katt' WHERE userid = '$userid'";
mysql_query($query) or die('Error, Check MySql');
header("Location: ../katt.php");
?>
Elégtelen, leülhetsz
Miért?
Én annyira értek hozzá hogy így megtudom csinálni és minden működik is, de ha valamiben segítséget kérek akkor légyszíves ne kritizáld amit írok, hanem ha tudod akkor segíts vagy ha nem akkor ne írj.
Üdvözlettel: Darkride
Tényleg kell 3 adatbázis kapcsolat?
Másrészt:
Szerencsére szólásszabadság van, vagy mi, így nyugodtan lehet kritizálni egymást. Tény, hogy jobb az építő jellegű kritika, mint a pőre flame :)
Éjfélkor nullázod mindenki kattintás számát
1) A usernevet és kattintás számot bárki módosíthatja a formban, így tetszőleges számra állíthatja bármelyik user kattintás-számát.
2) A "katt.php" címet ismerve bárki bármikor behívhatja (beírja a címsorba) anélkül, hogy a formon keresztül menne.
injection
magic_quotes
Tervezd meg logikailag.
Ha már eltudod mondani, hogy amit akarsz, hogyan fog működni, akkor mehet a kódolás (mellesleg sztem. Wabbitseason is ezt akarta mondani, csak ...)!
Tehát:
Az a feladat, hogy ugyan az a felhasználó egy nap, csak 25x küldhessen be egy bizonyos űrlapot. Ehhez kell, hogy az nap már hányszor küldte be.
Csinálj egy [click_per_day] táblát [id, userid, date, clicks] mezőkkel. Ha user kattint a következőt teszed:
1. Leellenőrzöd hogy aznapra be van-e már jegyezve user.
2. Ha nincs, az lesz az első click, bejegyzed, ha van, megnézed a clicks mező értékét. Amennyiben kisebb mint 25, akkor növeled egyel és UPDATE, ha 25 akkor mondod neki hogy NO NO!
Valahogy így képzelem el!
s_volenszki
szerk.:
Persze ha user már benne van, de nem aznapra, nem kell bejegyezned újra, csak a dátumot írod át és a clicks = 1.
UPDATE máshogy
Pl. mire való ez:
$query = "UPDATE " . DBTBLE . " SET katt = (katt + 1) WHERE (userid = '$userid')";
(A zárójelek nem szükségesek, csak szeretem csoportosítani a kódot.)
Ennek a megoldásnak az alkalmazásával nem kell ez sem:
<input name="katt" type="hidden" class="textfield" id="katt" value="<? echo $row['katt']+1; ?>" size="50" />
(Ennek az elemnek miért adtál class-t?)
És még valami fontos: bármin, amit egy adatbázisba beírsz, vagy csak szerepel a parancsban (pl: WHERE userid = '$userid') le kell futtatni egy
(Ahol nem használtam a kódszinezőt, az azért van, mert nem működött jól.)
Nos tehát akkor még egyszer
Van egy oldal (egy játék ahol autókat lehet tuningolni), itt van egy olyan funkció hogy versenyzés.
Itt a versenyzésnél lehet random alapján versenyezni ami a username tömbből veszi a neveket, és lehet úgy is hogy beírod a felhasználónevet.
Itt akarom azt megcsinálni hogy naponta csak 25x lehessen versenyezni.
Mindent meg tudok csinálni csak azt nem hogy minden nap 00:00-kor lenullázódjon ez az érték függetlenül attól hogy az mennyi.
Ui.:remélem érthetően fogalmaztam.
Szerk.: azt mond el légyszíves hogy hogyan tudnak hozzáférni az adatbázis értékeihez?
SQL injection
peldaul ugy hogy a $_POST['katt'] -ba nem egy szamot kuldenek hanem a kovetkezo stringet:
$query = "UPDATE ".DBTBLE." SET katt = '$katt' WHERE userid = '$userid'";
ekkor a queryd a kovetkezo lenne:
Ezzel szepn felulir minden katt mezot a tabladban mivel ugye az 1 mindig = 1-el. Es utana lefuttat megegy utasitast mi dobja a user tablat(ha van olyan, es van ra a usernek joga), de ide barmilyen utasitast betehet, a legvegen a --vel commentet indit hogy ne szalljon a query.
Remelem ertheto volt amit irtam. De nyugodtan keress ra neten hogy PHP security, vannak nagyon jo doksik.
A lenyeg soha ne bizz meg semmilyen adatban ami a usertol jon, mindezt eltarolaskor es kiirataskor.
Az elobbi SQL injectiont eredmenyezhet az utobbi pedig XSS-t(azaz Cross Site Scripting-et).
Adatbázis...
Remélem valami ilyesmire gondoltál.