#4
http://php.net/manual/en/reserved.variables.server.phpBrugerens IP-adresse er givet ved $_SERVER['REMOTE_ADDR'].
#5
Ja, noget i den stil... Her er et hurtigt eksempel:
== index.php ==
<?php
//Har vi specificeret et produkt?
if (isset($_GET["p"]) && $_GET["p"]!="") {
    //I dette tilfælde henter vi et unikt ID for produktet via GET-variablen "p"
    $product = $_GET["p"];
    //Har vi tidligere sat en cookie, der indikerer, at vi har rated produktet?
    $cookie = "product_".$product;
    if (isset($_COOKIE[$cookie]) && $_COOKIE["$cookie"]) {//Findes cookie && er cookie sand
        //I så fald må vi ikke rate igen
        $form = "Du har allerede rated produktet ".$product;
    } else {
        //Ellers må vi gerne rate
        $form = "<form action=\"rate.php\" method=\"post\"><label>Rating til ".$product.":</label><input name=\"p\" value=\"".$product."\" type=\"hidden\"><input name=\"r\" type=\"text\"><input type=\"Submit\" value=\"Send rating\"></form>";
    }
} else {
    $form = "<form action=\"index.php\" method=\"get\"><label>Produkt:</label><input name=\"p\" type=\"text\"><input type=\"Submit\" value=\"Find produkt\"></form>";
}
?><!DOCTYPE html>
<html>
    <head>
        <title>Rate produkt</title>
    </head>
    <body>
        <p><?php echo $form; ?></p>
    </body>
</html>
== rate.php ==
<?php
if (isset($_POST["p"]) && isset($_POST["r"])) {
    $product = $_POST["p"];
    $rating = $_POST["r"];
    //Gøt noget med rating her - f.eks. tilføj til database
    //I dette tilfælde vil $rating bruges, men det er selvf. vilkårligt
    $cookie = "product_".$product;
    setcookie($cookie, true, time()+365*24*60*60);
}
header("Location: index.php");//Send os tilbage til index
?>