Autor Zpráva
Jim
Profil *
Ahoj, prosím o radu. Mám soubor ve kterém mi lidé hlasují od jedné do 5 a hodnota se přičítá k předchozí. To mám vyřešené, ale potřeboval bych k tomu ověřování jestli už nehlasoval.. Děkuji. Přikládám soubor. Nyní je ověření na základě cookies :


<?


if ($go == "Hodnotit") {

$hlasoval = $HTTP_COOKIE_VARS['anketa'];

if($hlasoval != "1")
{
$cas1=getdate();
$cas=$cas1[0];
$doba_platnosti=86400; //24hodin v sekundách
setcookie("anketa","1",($cas+$doba_platnosti));

$fp = FOpen ("pavlab", "r");
$data = FRead ($fp, FileSize("pavlab"));
FClose($fp);

$write = $data + $hodnoceni;

$fp = FOpen ("pavlab", "w");
FWrite ($fp, $write);
FClose ($fp);

}
else {

echo "<b>Už jste hlasoval/a!</b>";

}
}
?>

<form>

<input type="radio" name=hodnoceni value="1">1
<input type="radio" name=hodnoceni value="2">2
<input type="radio" name=hodnoceni value="3">3
<input type="radio" name=hodnoceni value="4">4
<input type="radio" name=hodnoceni value="5">5
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type=submit name="go" value="Hodnotit">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

Hodnocení:&nbsp;
<b><font style=color:red;font-size:"18px"></b>
<?
readfile(pavlab);
?> bodů
</font>




</form>
Charlie
Profil
Vždyť tam to ověření máte, v čem je tedy problém?
Jim
Profil *
Je na základě cookies, takže je za 1. stačí vymazat a za druhé jsem zjistil že to nestačí protože to nefunguje v red. systému kam to chci vkládat.
Možná by to šlo i kdyby se ty cookies vytvořily JS, ale nevím. Nejlepší by bylo použít ověření na základě IP adresy, ale to bych potřeboval pomoci..
Dík
Charlie
Profil
Ano, vím, že se to dá snadno obejít.

V ověřování IP adresy akorát zjistíte IP, zapíšete nejlépe do databáze a pak ověříte, jestli ip existuje.
fimmos
Profil
a co proxy? nikdy se to nedá 100% -ně
Jim
Profil *
To je právě problém. Byl by problém napsat ten kód? Dík.
Charlie
Profil
Kód na co? na IP? To je velmi jednoduché. Máte k dispozici databázi (MySQL)?
Jim
Profil *
Mohu.
Jim
Profil *
Nazev databaze: serverbaby
IP adresa SQL serveru: 62.168.63.241
Prihlasovaci jmeno: serverbaby
Heslo: secret
Charlie
Profil
Takže, nejdříve si vytvořte tabulku "overeni", se sloupci "ip varchar(15)" a "time bigint". Do sloupce ip se bude ukládat ip hlasujícího a do time se bude ukládat čas hlasování v unixovém formátu (vteřiny od roku 1970).

Kód bude vypadat zhruba takhle:
$ip = $_SERVER['REMOTE_ADDR'];

$time = time();
$doba_platnosti = 86400;
$minimalni_cas = $time - $doba_platnosti;
$query = "select * from overeni where ip = '$ip' and time >= $minimalni_cas";
if (mysql_num_rows(mysql_query($query)) > 0) { //už hlasoval
echo "<strong>Už jste hlasoval/a!</strong>";
} else {
/*
* Úprava anketního souboru, to se mi sem nechce přepisovat
*/
mysql_query("insert into overeni (ip,time) values ('$ip',$time)");
}

// Pokračování formuláře...
Charlie
Profil
Jime, heslo a přihlašovací jméno sem nepiš, teď se ti tam může každý přihlásit.
Charlie
Profil
Mimochodem, k SQL serveru se připojíš takhle:
mysql_connect("62.168.63.241","serverbaby","tajné heslo, které sem už nepiš");

mysql_select_db("serverbaby");
Jim
Profil *
Heslo je mi jedno, potom ho samozrejme zmenim...
Dík moc ale mam ještě nějaké dotazy.
Mám tu SQL od Czechie, to musim tabulku asi vytvořit ve web. rozhrani?
Ten kod Jak to ze v tom kodu co jsi poslal neni zaahrnute to heslo a jmeno co jsem posilal?
Jim
Profil *
Staci mi neuplny popis, s databazi si nerozumim. :o) Dekuji za trpelivost.
Jim
Profil *
Nemohl by mi prosím někdo poradit co s tím ověřením? Potřeboval bych to..
Leo
Profil
Zadne spolehlive reseni neexistuje. Teda pokud nedate kazdemu uzivateli soukromy a verejny klic a nebudete pro hlasovani pouzivat overovani totoznosti jako kdyz chodite pres net do sve banky. Leo
Jim
Profil *
DObře, smířil jsem se s tím vytvořením databáze, ale potřeboval bych podrobnější popis jak jí udělat na Czechii, mají tam na to systém a ten požeduje údaje které mi nic neříkají.. Nemá s tím někdo zkušenosti?? Moc děkuji.
Anonymní
Profil *
tenhle link by leckomu mohl pomoci:
http://www.builder.cz/art/php/php_kontrola_pristupu.html
blast3r
Profil
Alebo to spravit cez session + ip a to zapisat do db
Toto téma je uzamčeno. Odpověď nelze zaslat.

0