Na raten niet meer kunnen raten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Pagina: 1 2 volgende »

Tim van Sloten

Tim van Sloten

21/06/2011 16:10:37
Quote Anchor link
Hoi,

Ik heb pagina waar je kan raten. Het is een thumbs up/thumbs down rate systeem net als youtube. Als je op één van de twee geklikt hebt ga je naar rate.php. Die ziet of je op de thumbs up en thumbs down hebt geklikt. Nu kan je dus heel makkelijk op vorige drukken in je browser om zo weer te raten. Nu wil ik graag een tijdslimiet instellen zodra je op één van de twee geklikt hebt, zodat je daarna een uur lang niet meer kan stemmen.

Het raten gaat trouwens over zinnen. Dus elke zin heeft een unieke ID. Het verwijzen naar rate.php gaat via form action.

Groeten, Tim
 
PHP hulp

PHP hulp

29/04/2024 08:14:53
 
Bas Matthee

Bas Matthee

21/06/2011 16:17:39
Quote Anchor link
Hoi Tim,

Dit kan je op meerdere manieren oplossen.

Je zou bijvoorbeeld in rate.php een cookie aan kunnen maken die een uur geldig is, met daarin de unieke id van de zin. Op de pagina met de duimpjes check je vervolgens of isset($_COOKIE['unieke_id']). Zo ja, dan kan er niet gestemd worden op deze zin.

Ook zou je de ID in combinatie met een IP adres op kunnen slaan in een tabel in een database, met daarbij de huidige tijd "time();". Ook dit doe je in rate.php. Nu kan je aan de voorkant weer afvangen of er een rij bestaat in de database met die id, ip en een tijd die groter is dan een uur geleden. In rate.php kan je tijdens het stemmen gelijk alle rijen die ouder zijn dan een uur kunnen verwijderen.
Gewijzigd op 21/06/2011 16:18:18 door Bas Matthee
 
- Mark -

- Mark -

21/06/2011 16:18:06
Quote Anchor link
Zijn de personen die mogen raten geregistreerde gebruikers of gewoon personen die je website bezoeken?

Toevoeging op 21/06/2011 16:19:53:

@Bas Op IP controleren is nutteloos. Er kunnen meerdere personen achter 1 IP adres zitten.
 
Tim van Sloten

Tim van Sloten

21/06/2011 16:25:34
Quote Anchor link
@Mark
De personen die kunnen raten zijn gewoon personen die de website kunnen bezoeken. Ik heb ook een pagina waar ze kunnen inzenden. Daarvoor moeten gebruikers wel registreren en kunnen ze pas een zin insturen zodra ze ingelogd zijn
 
- Mark -

- Mark -

21/06/2011 16:31:52
Quote Anchor link
100% waterdicht is het zowiezo niet te krijgen.

Cookies zijn een mogelijkheid maar die kun je aanpassen / verwijderen.

Sessions kun je niet aanpassen maar verlopen zodra je de browser sluit.

Via IP controleren is ook nutteloos zoals ik al zei. En het kan ook nog eens omzeilt worden.
 
Tim van Sloten

Tim van Sloten

21/06/2011 16:38:45
Quote Anchor link
Dan moet het maar met cookies.

Hoe stel ik dat in?

setcookie("rateCookie",$zinID, time()+3600); zoiets?
 
Vincent Huisman

Vincent Huisman

21/06/2011 16:39:18
Quote Anchor link
registreren is de beste manier om het te doen, anders zou ik voor ip gaan
 
- Mark -

- Mark -

21/06/2011 16:40:00
Quote Anchor link
Ik zou voor $_SESSION gaan inplaats van cookies. Maar je hebt met beide zo te zien geen ervaring?
Gewijzigd op 21/06/2011 16:40:22 door - Mark -
 
Bas Matthee

Bas Matthee

21/06/2011 16:40:53
Quote Anchor link
Zoiets ja

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

setcookie("rateCookie",$zinID, time()+3600,'/','.domeinnaam.nl');

?>
 
Tim van Sloten

Tim van Sloten

21/06/2011 16:49:00
Quote Anchor link
Inloggen voordat je een zin kan zien en raten zou inderdaad makkelijker geweest zijn. Helaas heb ik daar geen tijd meer voor. Het is een schoolproject en ik werk ook nog met andere mensen.

Ik ben inderdaad beginnend PHP'er.
@Mark je zegt ja net dat SESSIONS verlopen zodra je de browser sluit. Dus dan kunnen bezoekers weer raten zodra ze weer opnieuw op de website komen?
 
- Mark -

- Mark -

21/06/2011 16:53:55
Quote Anchor link
Klopt, maar dit is ook het geval met cookies "Soms niet ligt aan de instellingen van de browser".

session gegevens staan op je server, cookies staan op de computer van de gebruiker.
 
Maikel  B

Maikel B

21/06/2011 17:21:02
Quote Anchor link
@Tim stel dat je met cookies gaat werken en ik doe een thumbs up. En daarna ga ik naar mijn browserinstellingen en ik verwijder de cookies dan kan ik daarna weer gelijk stemmen.
 
Bas Matthee

Bas Matthee

21/06/2011 17:22:22
Quote Anchor link
@Maikel B

Same voor sessions, same voor IP. Allen te omzeilen.
 
Jeroen van Welzen

Jeroen van Welzen

21/06/2011 17:32:36
Quote Anchor link
? is het niet mogelijk om bijv een id van een hardeschijf uit te lezen of zoiets

ik heb in het verleden een soort e-book gehad die gebruikte ook zo'n soort methode om de boel te beveiligen

? vraagje hoor
 
Tim van Sloten

Tim van Sloten

21/06/2011 17:34:00
Quote Anchor link
Ik begrijp dat ik alleen als gebruikers zijn ingelogd dat ze daarna pas kunnen raten, de beste manier is.
Helaas is dit even niet anders.

@Bas
Er moet gecontroleerd worden zodra er op de duimpjes worden geklikt.
Moet het dan niet zijn if (isset($_POST["rate"])) if $_COOKIE[zinID] <waarschuwing>
 
Bas Matthee

Bas Matthee

21/06/2011 18:07:32
Quote Anchor link
@Tim
In mijn voorbeeld controleer ik dit al voordat je de duimpjes toont. Je zou hier dan een grijs thumbje kunnen tonen dat niet aanklikbaar is. Dat scheelt je ook weer het proffen van een melding. Dus if(isset($_COOKiE[$zinID])) { grijs thumbje tonen } else { aanklikbaar gekleurd thumbje tonen }

Wil je het in rate.PHP doen, zul je inderdaad moeten controleren of het formulier gepost is, en vervolgens dezelfde check uitvoeren. Echter vul je dan een sessie-waarde oid met de melding of een boolean.

Excuus voor niet gebruiken van code tags en onjuist hoofdlettergebruik. Zit op m'n telefoon.
 
Tim van Sloten

Tim van Sloten

21/06/2011 19:10:28
Quote Anchor link
@Bas
het lukt nog niet echt. Ik heb nu de volgende code:

if (isset($_POST["rate"])){

setcookie("rateCookie", "$zinNummer", time()+3600,'/','.what2say.nl');
if ($_COOKIE["rateCookie"])
{

if ($rate == "like")
{
$sqlLike;
mysql_query($sqlLike);

}

if ($rate == "dislike")
{
$sqlDislike;
mysql_query($sqlDislike);
}

else{
echo "Je hebt al eerder gestemt op deze zin";
}
}


}
 
Bas Matthee

Bas Matthee

21/06/2011 19:21:29
Quote Anchor link
@Tim

Ik neem aan dat dit niet het volledige script is, maar kijk eens of je hier iets aan hebt? (Probeer de boel even goed te lezen en te kijken wat nou eigenlijk wat doet en waarom ik voor deze structuur heb gekozen.)

Even een klein puntje. In mijn eerdere voorbeeld (en hier ook) heb ik bij het setten van de cookie een punt voor het domein gezet. Hiermee is het cookie ook geldig voor alle subdomeinen van dat domein. In dit geval dus eigenlijk overbodig.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php

// Ik neem aan dat onderstaande variabelen wel bestaan?
// $zinNummer
// $sqlLike
// $sqlDislike



if (!isset($_COOKIE['W2S_'.$zinNummer])) {
    
    setcookie("W2S_".$zinNummer, true, time()+3600,'/','.what2say.nl');
    
    if (isset($_POST["rate"])){
    
        if ($rate == "like") {
            
            $sqlLike;
            mysql_query($sqlLike);

        }

        
        if ($rate == "dislike") {
            
            $sqlDislike;
            mysql_query($sqlDislike);
            
        }
            
    }

}
else {
    
    echo "Je hebt al eerder gestemt op deze zin";
    
}


?>
Gewijzigd op 21/06/2011 19:22:13 door Bas Matthee
 
Tim van Sloten

Tim van Sloten

21/06/2011 20:02:52
Quote Anchor link
Dat klopt,
Die variabelen bestonden ja.
Maar het werkt nu!
Dus hartstikke bedankt.
Kunnen we eindelijk naar huis
 
Bas Matthee

Bas Matthee

21/06/2011 20:22:07
Quote Anchor link
;)
 
Tim van Sloten

Tim van Sloten

22/06/2011 15:22:44
Quote Anchor link
Hmm 1 klein ander probleem. Wij proberen het in alle browsers (lees, de bekende browsers ;) ) werkend te krijgen. In Chrome en Safari werkt het. In Internet Explorer en Firefox wordt de value van het rate niet meegenomen (like en dislike) zie de code:

<div class="ratebalk">
<form action="rate.php" method="post" >
<div id="like">
<input type="image" name="rate" src="images/likeButtonDuim.png" width="54" height="54" value="like" />
<input type="hidden" name="zinID" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $zinNummer; ?>
" />
</div>

<div id="dislike">

<input type="image" name="rate" src="images/dislikeButton.png" width="54" height="54" value="dislike" />
<input type="hidden" name="zinID" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $zinNummer; ?>
" />

</div>
</form>
</div>


In rate.php staat het volgende om de code op te halen.

$rate = $_POST["rate"];
$zinNummer = $_POST["zinID"];


echo $rate;
echo $zinNummer;

Die echo stond om te kijken of het werkte. In Chrome en Safari zagen we inderdaad dat er een zinnummer kwam te staan en een like of dislike.
Maar IE en FF geven geen echo $rate weer. Het is een simpel stukje code maar IE en FF pakken het niet op.. Iemand een idee?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.