2010-06-30 2 views
0

Le code ci-dessous fonctionne bien. Il soumet certaines variables dans une base de données MySQL. Comment puis-je bloquer la soumission et rediriger l'utilisateur vers domain.com/index.php si les conditions ci-dessous sont remplies?Blocage d'une soumission à MySQL si les conditions sont remplies

Conditions:

  • $uid a été utilisé plus de 11 fois ou plus dans une journée civile.
  • $cleanurl a déjà été utilisé auparavant.

Merci à l'avance,

John

code:

if(isURL($site1)==true) 
    mysql_query("INSERT INTO submission VALUES (NULL, '$uid', '$title', '$slug', '$cleanurl', '$displayurl', NULL)"); 
    else 
    echo "<p class=\"topicu\">Not a valid URL.</p>\n"; 
+2

Vous devez utiliser des requêtes SQL paramétrées et pas d'interpolation de chaîne. Votre code autorise les attaques par injection SQL. – Daenyth

+0

Ceci est une bonne introduction à l'utilisation de l'extension PDO de PHP pour travailler avec une base de données en utilisant des requêtes préparées/paramétrées: http://www.kitebird.com/articles/php-pdo.html – JAL

Répondre

-1

Vous simplement besoin d'exécuter des requêtes d'appliquer ces contrôles avant votre INSERT et si les critères sont pas rencontré, transmettez-les comme vous l'avez mentionné.

[removed STUPIDE COMMENTAIRE]

mysql_real_escape_string() est certainement la route à prendre

+2

Non, non, diable non. Vous devez utiliser des requêtes préparées ou une fonction comme mysql_real_escape_string() pour citer des caractères dangereux. Vous ne devriez pas changer de styles de citation pour tenter de combattre l'injection SQL ... ** Edit: ** Je suis d'accord avec la première ligne de votre réponse. C'est une solution typique à ce genre de "problème" ... – ircmaxell

+0

Ou encore mieux, utilisez des instructions préparées avec mysqli ou similaire. –

1

$ uid a été utilisé plus de 11 fois ou plus dans un jour civil:

select uid from submissions where date > '$todaysDate 00:00' and date < '$todaysDate 23:59' group by uid having count() > 11

$ cleanurl a déjà été utilisé auparavant.

SELECT count(*) from ... where cleanurl='$cleanurl'

si les deux conditions sont réunies, alors

Header("Location: http://domain.com/index.php");

+0

Merci ... comment puis-je faire la variable pour $ todayDate? – John

+0

date ('Y-m-d'). vérifiez le manuel de php pour la date. –

Questions connexes