Avatar billede henrik_nielsen Nybegynder
05. juni 2005 - 18:56 Der er 7 kommentarer og
3 løsninger

Kun 1 gang om dagen?

Hej Eksperter.

Jeg har lavet en gæstebog.
Men jeg ville gerne have lavet sådan at folk kun kan skrive 1 gang om dagen. Altså hvis en skriver i min gæstebog, så kan han ikke skrive igen før imorgen. Hvordan skal man lave det?

- Henrik.
Avatar billede plazm Nybegynder
05. juni 2005 - 19:00 #1
Du kunne oprette en cookie, og sætte dato ind i den og så tjekke når siden loades. Eller sætte hans ip i en database, men sidste løsning vil udelukke skoler og andre steder med mange brugere.
Avatar billede henrik_nielsen Nybegynder
05. juni 2005 - 19:03 #2
forstår ikke. Kan finde ud af at smide ipen ind i databasen
Avatar billede henrik_nielsen Nybegynder
05. juni 2005 - 19:09 #3
kan du hjælpe / give nogen koder til det med at smide ipen ind i databasen?
Avatar billede henrik_nielsen Nybegynder
05. juni 2005 - 19:39 #4
Hvordan sætter man så en cookies sådan :S?
Avatar billede plazm Nybegynder
05. juni 2005 - 20:56 #5
Avatar billede lauer Nybegynder
05. juni 2005 - 20:59 #6
Du kan læse mere om cookies på http://dk.php.net/manual/en/function.setcookie.php

Kort fortalt kan du sætte en cookie sådan:
setcookie('harskevet', true, mktime(0,0,0,date('m'), date('d')+1, date('y'));

og du kan så læse den ved f.eks.
if ($_COOKIE['harskrevet']) {
  // Du må ikke skrive før i morgen
} else {
  // Her kan du skrive dit indlæg
}

... det er dog ikke testet - men du forstår vel princippet
Avatar billede henrik_nielsen Nybegynder
05. juni 2005 - 21:19 #7
undskyld, men jeg har fundet en anden løsning, men der er jeg osse støt på et problem. Den siger:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/dounie/dounie.dk/arto/tavle/index.php on line 35

Og mit script ser således ud:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Tavle system</title>

</head>

<body>

<form action="index.php?mode=insert" method="POST">

<b>Brugernavn på arto:</b><br>
<input type="text" name="navn" size="20"><br>
<select name="kon" size="1">

<option value="D">Dreng</option>
<option value="P">Pige</option>

</select>

<br>
<b>Alder:</b><br>
<input type="text" name="alder" size="20"><br>
<br>
<input type="submit" name="submit" value="Ok">
</form>

<?
if($_GET[mode] == "insert") {

if($_POST[navn] == "") {
echo("Du skal skrive et navn!");

} else {

if($_POST[alder] == "") {
echo("Du skal skrive din alder!");

} else {

if(!is_numeric($_POST[alder])) {
echo("Der findes kun tal i en alder!");

} else {

if(strlen($_POST[alder]) > "99") {
echo("Du er ikke over 99 år :S?");

} else {

include("mysql/mysql.php");

$hent_g = mysql_query("SELECT * FROM tavle WHERE ip='$_SERVER['REMOTE_ADDR']'") or die(mysql_error());
while($vis = mysql_fetch_array($hent_g)) {
$dates[] = date("d-m-Y", $vis[timestamp]);
}

if(in_array($date, $dates))
echo("Du må kun skrive 1 gang om dagen!");
else {

$dato = date("d/m/Y");
$timestamp = time();
$ip = $_SERVER[REMOTE_ADDR];
$navn = $_POST[navn];
$kon = $_POST[kon];
$alder = $_POST[alder];

mysql_query("INSERT INTO tavle (dato, timestamp, ip, navn, kon, alder) VALUES ('$dato', '$timestamp', '$ip', '$navn', '$kon', '$alder')") or die(mysql_error());
}
}
}
}
}
}

include("mysql/mysql.php");
$hent = mysql_query("SELECT * FROM tavle ORDER BY id DESC") or die(mysql_error());
if(mysql_num_rows($hent)) {
while($vis = mysql_fetch_array($hent)) {
?>
<a href="http://www.arto.dk/brugere/brugerinfo.asp?brugernavn=<? echo $vis[navn]; ?>"><? echo $vis[navn]; ?></a>
<?
if($vis[kon] == "Dreng") {
echo("D");
} else {
echo("P");
}
?>
<? echo $vis[alder]; ?>

<?
}
} else {
echo("Ingen har tilføjet dig endnu.");
}
?>
</body>

</html>
Avatar billede lauer Nybegynder
06. juni 2005 - 08:58 #8
Tja,
den første ting jeg faldt over er
if(strlen($_POST[alder]) > "99") { - strlen() giver antal tegn i variablen, derfor vil der nok ikke være ret mange som falder for den fejl. Fjern strlen() og så burde det virke.
Jeg tror at fejlen ligger i denne linje - men har ikke lige talt mig frem

$hent_g = mysql_query("SELECT * FROM tavle WHERE ip='$_SERVER['REMOTE_ADDR']'") or die(mysql_error());
skal være
$hent_g = mysql_query("SELECT * FROM tavle WHERE ip='".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());

Problemet med den løsning du benytter, frem for den jeg fortalte (med cookies)
Er at f.eks. på skoler, vil kun en bruger kunne skrive i gæstebogen om dagen, da hele skolen har samme IP.
Avatar billede henrik_nielsen Nybegynder
06. juni 2005 - 15:55 #9
Det virker nu :D Men når man tilføjer kommer den med følgende:

Warning: in_array(): Wrong datatype for second argument in /hsphere/local/home/dounie/dounie.dk/arto/tavle/index.php on line 57
Avatar billede lauer Nybegynder
07. juni 2005 - 19:18 #10
indsæt
$dates = array();
før din $hent_g og while.
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