2010-10-22 5 views
0

ModifierPHP Sessions & Forms

Comment puis-je réécrire ce code PHP POST [ 'phrase'] == session [ 'expression']?

psuedo-code 

//process_form.php 

PHP 
session_start() 

IF POST SUBMIT 
    IF empty text1 && empty text2 
     echo error msg, include HTML FORM 

    ELSE IF empty radiobtn 
     echo error msg, include HTML FORM 

    ELSE IF 
     isset POST[phrase] isstring POST[phrase] isset SESSION[phrase] 
     strlen POST[phrase] > 0 strlen SESSION[phrase] > 0 
     POST[phrase] == SESSION[phrase] 

     SQL INSERT 

    ELSE 
     echo POST[phrase] 
     echo SESSION[phrase] 

ELSE 
    include HTML FORM 
/PHP 

 

FORMULAIRE

PHP 
PEAR CAPTCHA Settings ... 
require_once 'Text/captcha.php' 
/PHP 

HTML 
FORM METHOD POST process_form.php 
    text1 
    text2 
    radio 
    PHP echo [ img src= sha1(session_id()) . '.png?' . time() ] /PHP 
    submit 
/HTML 
+0

Vous pouvez utiliser recaptcha: http://www.google.com/recaptcha – lam3r4370

+0

ne comprennent jamais une page dans « la conception ». Mais au contraire, incluez le modèle HTML dans la page PHP. Avoir une telle page avec des inclus n'a aucun sens. Accéder directement aux pages Et faites-leur utiliser des modèles. Voir http://stackoverflow.com/questions/3988627/using-template-on-php/3989380#3989380 Vous n'aurez pas un seul problème avec les en-têtes, sessions, captchas, peu importe –

Répondre

1

Vous pouvez l'utiliser pour votre captcha http://www.desarrolloweb.com/articulos/poner-captcha-en-3-pasos.html

Essayez d'utiliser mis en œuvre captcha au lieu de faire le vôtre, car il est beaucoup plus probablement que ces captchas sont testés dur n ow

Je ne suis pas sûr si vous mettez session_start() après que le code html soit correct. Depuis que je me souviens, vous recevez une erreur comme "En-têtes déjà envoyés". Vérifiez que juste pour être sûr

Cheers.

+0

RDAM a raison. Si vous utilisez des sessions basées sur des cookies (par opposition aux sessions basées sur des URL), vous devez appeler session_start() [avant toute sortie HTML] (http://us.php.net/manual/fr/function.session -start.php). –

+0

J'ai reformulé ce que je voulais dire. – rrrfusco

0

Si vous êtes prêt à plonger un peu dans Zend Form (ça vaut le coup), regardez dans cette réponse Default_Form_ReCaptcha. Voici comment vous pouvez l'utiliser sans la pile ZF:

$form = new Default_Form_ReCaptcha(); 
if (! empty($_POST)) { 
    if ($form->isValid($_POST)) { 
     // valid captcha was entered! 
     $values = $form->getValues(); // all form values 
    } 
} 
$formHtml = (string)$form; 
+0

J'ai essayé d'être plus précis avec ma question. – rrrfusco