Avatar billede dumazz Nybegynder
26. februar 2003 - 09:12 Der er 37 kommentarer og
2 løsninger

Kun 1 add pr dag....

Et script der sørger for at den samme computer kun kan tilføje noget til MySQL 1 gang dagligt...

Skal bruges til et system hvor en bruger sender en mail ud med et link f.eks. www.domæne.dk/ref=$bruger
Når modtageren så klikker på linket skal der lægges 1 point oveni $bruger's hits i MySQL
Avatar billede exp Juniormester
26. februar 2003 - 09:20 #1
Sæt en cookie der har en levetid på et døgn(= 60*60*24)

Husk at checke for cookies inden du kører funktionen
Avatar billede dmdisco Nybegynder
26. februar 2003 - 09:20 #2
kan du ikke bare gemme ip og dato
og blokere brugeren hvis dato og ip passer med idag
Avatar billede dumazz Nybegynder
26. februar 2003 - 09:39 #3
begge> lav et script der gør dette...
Avatar billede dmdisco Nybegynder
26. februar 2003 - 09:48 #4
hehe lav et selv det er da ikke så svært
Avatar billede dmdisco Nybegynder
26. februar 2003 - 09:51 #5
du kan kigge lidt på denne stump jeg fandt

<?php
require("config.php");
if (isset($boks)) {
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
    $connection = mysql_connect ($mysql_host, $mysql_user, $mysql_pw) or die (mysql_error());
    mysql_select_db ($mysql_db, $connection) or die (mysql_error());
    if ($block == ja) {
    $result_ip = mysql_query ("SELECT * FROM block_ip WHERE ip = '$boks $ip'") or die (mysql_error());
    $num_ip = mysql_num_rows ($result_ip);
      if ($num_ip < 1) {
      include("stemmeboks.php");
      } else {
      include("resultat.php");
      }
    } else {
    include("stemmeboks.php");
    }
  } else {
  echo "Denne side kræver en variabel";
  }
?>
Avatar billede exp Juniormester
26. februar 2003 - 10:36 #6
<?php
  if ($_COO
  set cookie("add", time()+ 86400);


<?php
  if (!$_COOKIE['add']) {
    //funktion hvis cookie IKKE er sat
  } else {
    //funktion hvis cookie er sat
  }
?>

$value = 'add';

setcookie ("add", $value,time()+86400);
?>
Avatar billede cpfrande Nybegynder
26. februar 2003 - 10:39 #7
Hej dumazz !

Her er koden du bad om:

<?php
$tid = date("ymd", time());

if  ($cookie == $tid) {
echo"Du kan ikke gøre _DETTE_ mere i dag";
} else {
setcookie ("cookie", $tid,time()+ 60 * 60 * 24);
echo"Du kan godt gøre _DETTE_ i dag";
}
?>


Men til det system, som du skal bruge sikringen til, vil jeg anbefale at sikre at selve det brugernavn kun kan gøre det en gang pr. dag. Dette kan opsættes i ved at lave en row mere i din mysql (hvis det er denne form for database du bruger) og deri tjekke den nuværende dato med den dato som står i databasen. På den måde sikre du dig at brugernavnet kun får pointet en gang pr. dag... og ikke igennem flere IPs eller PCer.

Til hjælp af det kan du lave en sammensætning af min kodning og den kodning dmdisco har skrevet.

Held og lykke med det ;)

| frande
Avatar billede cpfrande Nybegynder
26. februar 2003 - 10:47 #8
Glemte at skrive til min overnævnte kode at den ikke tjekker om det er 24 timer siden brugeren sidst har gjort det.
Istedet tjekker den om datoen er anderledes end sidst brugeren trykkede på denne PC.
Dvs. den tjekker pr. dato.
Fx.
Datoen i går var, efter min kodning 030225 (den som ligger i cookie)
I dag er datoen 030226.

Hvis datoen i min cookie var identisk med den i dag ville den skrive at man ikke kunne gøre noget. Ellers ville den lade brugeren udføre resten af kodningen.

Dette mener jeg er den bedste og mest stabile løsning.
Men overvej at tjekke _KUN_ på brugernavn og ikke IP eller cookie !
Meget mere sikkert !

| frande
Avatar billede dumazz Nybegynder
26. februar 2003 - 10:54 #9
Det med at låse en bruger duer ikke....

Det er et spil jeg skal have lavet hvor man tjener point på jo flere kliks man skaffer til siden.... (De er jo ikke brugere når de klikker)

Cookie kan disables og så kan de vel blive ved med at klikke i en evighed...
Avatar billede dumazz Nybegynder
26. februar 2003 - 10:57 #10
så scriptet skal sikre sig at cookien findes og at datoen ikke en den samme som pågældende dag...

sådan:

Hvis cookie ikke findes: opret cookie
Læs cookie; hvis dag = idag:
"Du har allerede gjort dette idag..."
Ellers (hvis cookie findes):
Add 1 hit til MySQL
Avatar billede exp Juniormester
26. februar 2003 - 10:59 #11
dumazz >>
Jf min kommentar 26/02-2003 09:20:22:
"Husk at checke for cookies inden du kører funktionen"

I starten af dokumentet sætter du en cookie setcookie('testcookie')
Lige bagefter checker du om den er sat.
Hvis den er, er cookies slået til: "Cookies virker, fortsæt"
Hvis den IKKE er, er cookies IKKE slået til: "Du bedes venligst tillade cookies"
Avatar billede dumazz Nybegynder
26. februar 2003 - 11:00 #12
Og det skal være sikkert... der er en konkurrence med præmier.... og folk vil MED GARANTI prøve at komme udenom på alle tænkelige måder....
Avatar billede dumazz Nybegynder
26. februar 2003 - 11:07 #13
altså : ??

<?php
set cookie("tester", test);
if ($_COOKIE['tester']) {

Hvad skal jeg skrive her ?

$tid = date("ymd", time());
set cookie("add", $tid);
} else {echo"Du skal tillade cookies";}
?>
Avatar billede exp Juniormester
26. februar 2003 - 11:38 #14
<?php
set cookie("tester", test);
if ($_COOKIE['tester']) {

// sql der indsætter 1 hit i databasen hos den konkrete bruger

$tid = date("ymd", time());
set cookie("add", $tid);
} else {echo"Du skal tillade cookies";}
?>
Avatar billede dumazz Nybegynder
26. februar 2003 - 12:02 #15
exp> Nej den har da ikke tjekket om det er samme dag...
Avatar billede cpfrande Nybegynder
26. februar 2003 - 15:31 #16
Hej igen !

dumazz, det fremgår jo ikke af dine tidligere kommentar, hvilket det skulle bruges til.

Men eftersom det er et spil vil jeg tjekke på IP og ikke cookies !
IP er mere sikkert end cookies når det angår dette...

IPer kan du gemme i en database hvor brugerens ID samtidig er gemt. Derved kan du se om det pågældende IP har givet et klik før på denne dag! :)

Håber du forstår !

| frande
Avatar billede cpfrande Nybegynder
26. februar 2003 - 15:34 #17
... men en anden ting dumazz...
Hvis du ønsker at lave sådan et "spil" som alle ved vil blive spammet rundt på nettet burde du måske vide mere om kodning når du ønsker så meget sikkerhed.

Sikkerhed er ikke svært at lave - faktisk noget af det mest enkelte i PHP, gælder bare om at bruge din sunde fornuft !
Avatar billede cpfrande Nybegynder
26. februar 2003 - 15:37 #18
... forresten, hvorfor er det i fortsætter med at debattere???
Der er kommet flere forslag til at "sikre snyden" ved hjælp af cookies.

Forskellen på dem er bare om der går 24 timer fra sidste hit indtil de må "hitte" igen. eller om den kigger efter dato.
Så vidt jeg kan se er min den eneste der kigger efter dato og ikke de 24 timer.

| frande
Avatar billede exp Juniormester
26. februar 2003 - 15:40 #19
cpfrande >>
Det er dig der fortsætter med at debattere :o)
Avatar billede cpfrande Nybegynder
26. februar 2003 - 15:43 #20
såvidt jeg kan se har han fået en kode 3 gange, alle kan bruges, men fortsætter.

Jeg kom skam bare med et videre indlæg til mit forrige svar ;)
Men håber han vælger at kører det over IP - ellers vil han lave systemet MEGET usikkert hvad angår "snyd".

| frande
Avatar billede dumazz Nybegynder
26. februar 2003 - 17:58 #21
Oki så vil jeg gerne se et script der bruger IP....
Avatar billede dumazz Nybegynder
26. februar 2003 - 18:01 #22
Jeg har også lavet et udemærket sikkerhedssystem i PHP.... men nu er jeg gået igang med MySQL.... og det er jeg ikke så klog på...
Avatar billede cpfrande Nybegynder
26. februar 2003 - 19:15 #23
Hej igen !

Her er et forslag til sådan en kodning:

<?php

//Henter bruger-informationer
$hent_bruger = mysql_query("SELECT id,hits FROM brugere WHERE bruger='$bruger'");
$skriv_bruger = mysql_fetch_array($hent_bruger);

//Finder IP på den besøgende
$ip = $GLOBALS['REMOTE_ADDR'];
$fip = $GLOBALS['HTTP_X_FORWARDED_FOR'];
if (($fip != "") && ($fip != "unknown")) $ip = $fip;
$ip = explode(",", $ip);
$ip = $ip[0];

//Laver en mysql-query til at hente alle informationer som passer med IP OG brugerid
$tjek_ip = mysql_query("SELECT ip FROM ip WHERE ip='$ip' && brugerid='$skriv_bruger[id]'");

//Tjekker om den ovenstående query har nogle resultater
//Hvis ikke skal den skrive det. Eller skal den ikke skrive det.

if (mysql_num_rows($tjek_ip) == 0) {
print"Ingen resultater fundet.";
} else {
print"Resultater fundet.";
}
?>

Kan den bruges i dit system?

| frande
Avatar billede dumazz Nybegynder
27. februar 2003 - 14:42 #24
den samme ip må kun give point til 1 bruger... (et hit pr dag pr ip)
Avatar billede dumazz Nybegynder
27. februar 2003 - 14:43 #25
...og den gemmer heller ikke nogen ip i MySQL'en.....
Avatar billede dumazz Nybegynder
02. marts 2003 - 15:24 #26
Hvis du får det til at virke skal du nok få flere point...
Avatar billede cpfrande Nybegynder
02. marts 2003 - 21:01 #27
Hey igen !

Dumazz:
Jeg regnede med at du kunne lidt PHP, nu når du ønsker at lave et sådan system.
Hvis du kigger min kode igennem kan du nemt se hvor du skal indsætte den kode, som smider brugerens IP ind i databasen.

Så vidt jeg kan se, ønsker du jo nærmest at få 100% kode fra os.
Eksperten.dk bruges ikke til at give koder ud, men til at få hjælp til hvordan man koder det. Det syntes jeg, at du har fået. Du har fået en del forslag til hvordan du kan tjekke det. Nu må du bare bruge det PHP og MySQL som du kan for at lave dit script sådan det tilpasses dig!

| frande
Avatar billede dumazz Nybegynder
02. marts 2003 - 22:05 #28
det her henter ip... men hvorfor alle de linier ??? er den første ik nok ?

$ip = $GLOBALS['REMOTE_ADDR'];
$fip = $GLOBALS['HTTP_X_FORWARDED_FOR'];
if (($fip != "") && ($fip != "unknown")) $ip = $fip;
$ip = explode(",", $ip);
$ip = $ip[0];
Avatar billede cpfrande Nybegynder
02. marts 2003 - 23:42 #29
dumazz:
Jo, den første linie er nok.
Men tager du de sidste linier med, er du sikker på at få IPet.
Disse linier tjekker nemlig at IPet ikke gemmes bag en adresse (ka ikke helt huske hvad det hedder!).

Øget sikkerhed ? :)
Avatar billede dumazz Nybegynder
02. marts 2003 - 23:46 #30
oki det er jo lige noget for mig.... :o)
Avatar billede schaefner Juniormester
02. marts 2003 - 23:46 #31
Har ikke læst alle kommentarer, så det kan godt ske det er blevet nævnt:
Gem dagsdato i et ekstra felt ved hver bruger.
Avatar billede cpfrande Nybegynder
02. marts 2003 - 23:50 #32
schaefner, dette har vi nævnt i en af de tidligere kommentar.
Spørgsmålet er egentlig besvaret en 3 - 4 gange og kan ikke se hvorfor dumazz udvider spørgsmålet hele tiden.

En kombination af de koder vi lavede omhandlende cookies og så den stump php/mysql kode jeg gav dig, dumazz, så burde du nemt kunne fastlægge en kode at få dit system til at kører med for at få en optimal sikkerhed.

| frande
Avatar billede dumazz Nybegynder
02. marts 2003 - 23:50 #33
det har jeg gjort.... men hvordan får jeg alle der er fra dagen før slettet ??? sådan at de igen har adgang 1 gang dagligt
Avatar billede dumazz Nybegynder
02. marts 2003 - 23:52 #34
jeg er nået til at kun at kunne adde noget 1 gang... men det skal være "1 gang dagligt (hvilket også står i overskriften, hvis ikke andetsteds)"
Avatar billede cpfrande Nybegynder
03. marts 2003 - 07:22 #35
dumazz:
Dette problem gør nu nemt ved at lave et dato-felt sammen med hver IP.
Så henter du datoen ud, og tjekker den, ligesom vi gjorde ved det cookie-script jeg vedlagde længere oppe!

| frande
Avatar billede dumazz Nybegynder
03. marts 2003 - 11:33 #36
jeg kan ikke se noget kode der hentyder til at sammenligne to datoer...
Avatar billede cpfrande Nybegynder
03. marts 2003 - 16:20 #37
Så har du åbenbart ikke læst mit svar dateret 26/02-2003 10:39:41.

Du kan ikke bruge alle koder, men nogle stumper samt idéen i koden...!

Som der siges... PHP er bare sund fornuft ;)

| frande
Avatar billede dumazz Nybegynder
14. marts 2003 - 09:30 #38
I må undskylde jeg først svarer nu... men jeg kan ikke se hvilke spm jeg har stillet, og skal bruge søge boxen for at finde dem...
Avatar billede dumazz Nybegynder
14. marts 2003 - 09:31 #39
I må undskylde jeg først svarer nu... men jeg kan ikke se hvilke spm jeg har stillet, og skal bruge søge boxen for at finde dem...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester