formularz kontaktowy + captcha + zapis w sesji

0

Mam formularz kontaktowy, który działa prawidłowo, ale jak zamieszczam captchę z tej strony: http://www.leniwce.com/article,0,1,35,Generowanie_kod%C3%B3w_CAPTCHA_w_PHP.html (nie pytajcie dlaczego nie wziąłem reCaptcha, to nie dla mnie, po prostu miało być 'czytelne'...), dodaję if tak jak w kodzie formularza, lecz dalej wysyła nawet bez przepisania kodu, próbowałem już różnymi metodami i w końcu się poddałem bo skończyły mi się pomysły jak to wstawić.
Próbowałem też zapisać całość do sesji (do formularza jest też licznik), po wysłaniu maila przez formularze i każdorazowym ponownym odświeżeniu do licznika znów dodawana jest kolejna liczba, z tą sesją też spartoliłem...
mógłby ktoś rzucić okiem i trochę to edytować?

contact.php

<?php
session_start();
include('mysql.php');
include "Captcha.php";
$c = new Captcha("tmp/");
$code = $c->makeCheckImage();
$twojemail = '[email protected]'; // twój adres e-mail

if ($_POST['wyslane']) {

            // filtrowanie treści wprowadzonych przez użytkownika
            $imie = htmlspecialchars(stripslashes(strip_tags(trim($_POST["imie"]))), ENT_QUOTES);
            $nazwisko = htmlspecialchars(stripslashes(strip_tags(trim($_POST["nazwisko"]))), ENT_QUOTES);
			$miasto = htmlspecialchars(stripslashes(strip_tags(trim($_POST["miasto"]))), ENT_QUOTES);
            $wiek = htmlspecialchars(stripslashes(strip_tags(trim($_POST["wiek"]))), ENT_QUOTES);
            $email = htmlspecialchars(stripslashes(strip_tags(trim($_POST["email"]))), ENT_QUOTES);
			$regulamin = htmlspecialchars(stripslashes(strip_tags(trim($_POST["regulamin"]))), ENT_QUOTES);
             

            // system sprawdza czy wszystkie pola zostały wypełnione
            if (!$imie) {
                $blad++;
                echo '<p class="blad">Proszę wpisać swoje Imię.</p>';
            }
            if (!$nazwisko) {
                $blad++;
                echo '<p class="blad">Proszę wpisać swoje Nazwisko.</p>';
            }
			if (!$miasto) {
                $blad++;
                echo '<p class="blad">Proszę wpisać miasto.</p>';
            }
            if (!$wiek) {
                $blad++;
                echo '<p class="blad">Proszę wpisać wiek.</p>';
            }
            if (!eregi("^[0-9a-z_.-]+@([0-9a-z-]+\.)+[a-z]{2,4}$", $email)) {
                $blad++;
                echo '<p class="blad">Proszę wprowadzić poprawnie adres email.</p>';
            }
			if (!$regulamin) {
                $blad++;
                echo '<p class="blad">Regulamin nie został zaakceptowany.</p>';
            }
           
			
			// jeżeli nie ma błędu, to wiadomość e-mail zostaje wysłana
            if ($blad == 0) {

                // niezbędne nagłówki do wyświetlania wiadomości HTML
                $naglowki = "MIME-Version: 1.0" . "\r\n";
                $naglowki .= "Content-type:text/html;charset=utf-8" . "\r\n";
				
				// opcjonalne nagłówki
                $naglowki .= 'From: <'.$email.'>' . "\r\n";
                $naglowki .= 'Cc: <'.$twojemail.'>' . "\r\n";

                // tytuł wiadomości
                $tytul = 'Formularz kontaktowy';

                // całkowita treść wiadomości
				$tresc = nl2br($tresc);
                $wiadomosc = <<< KONIEC
                <html>
                    <p><strong>Imię:</strong> $imie</p>
                    <p><strong>Nazwisko:</strong> $nazwisko</p>
                    <p><strong>Miasto:</strong> $miasto</p>
                    <p><strong>Wiek:</strong><br />$wiek</p>
                </html> 
KONIEC;

				// wysyłanie wiadomości e-mail
                $wynik = mail('<'.$email.'>', $tytul, $wiadomosc, $naglowki);

                // komunikat potwierdzający wysłanie wiadomości bądź nie
				if (isset($_GET["action"])) //sprawdzanie kodu z obrazka
				{
                if ($wynik) {
				if ($c->checkCode($_POST["wpisanyKod"],$_POST["weryfikacja"])) 
                    echo '<p class="powodzenie">Wysłano poprawnie</p>';
                } else 
                    echo '<p class="blad">Wiadomość nie została wysłana</p>';
                }
            }

        }
		
	
	
echo "<h2>Wpisz kod z obrazka</h2>";
// tworzenie formularza HTML
echo "<form class='form' action='?action=wyślij' method='post'>
<input type='hidden' name='wyslane' value='TRUE' />
<img src='tmp/".$code.".jpg' style='margin-right: 10px;vertical-align:middle;'>
<input type='text' name='wpisanyKod'/><br/>
<input type='hidden' value='$code' name='weryfikacja'/><br/>";
        echo <<< KONIEC
    
	


	<p>
		<div class="clr fblock">
		<input class="type1" value="Imię" name="imie" onblur="if(this.value=='')this.value='Imię'" onfocus="if(this.value=='Imię')this.value=''" type="text">
		</div>	
	</p>
	<p>
		<div class="clr fblock">
		<input class="type1" value="Nazwisko" name="nazwisko" onblur="if(this.value=='')this.value='Nazwisko'" onfocus="if(this.value=='Nazwisko')this.value=''" type="text">
		</div>	
	</p>
	<p>
		<div class="clr fblock">
		<input class="type2" value="Miasto" name="miasto" onblur="if(this.value=='')this.value='Miasto'" onfocus="if(this.value=='Miasto')this.value=''"" type="text">
		<input class="type2" value="Wiek" name="wiek" style="margin-left: 33px;" onblur="if(this.value=='')this.value='Wiek'" onfocus="if(this.value=='Wiek')this.value=''" type="text">
		</div>	
	</p>
	<p>
		<div class="clr fblock">
		<input class="type1" value="Email" name="email" onblur="if(this.value=='')this.value='Email'" onfocus="if(this.value=='Email')this.value=''" type="text">
		</div>
	</p><br>
    <p class="ml30 mt-20">
		<input class="checkbox" type="checkbox" name="regulamin" value="1" /> Akceptuję regulamin (...)
	</p>
KONIEC;
		
		
        echo <<< KONIEC
    <div class="clr fblock tcenter">
	<input name='odp' value='Wyślij' class='br4' type='submit'>
	</div>
	</form>
    
KONIEC;
if($_POST['odp'] != $_SESSION['odp'])
{
$send = "no";
}


if(!empty($_POST["odp"])) {

$sql=mysql_query("UPDATE wyniki SET odp1=odp1+1");
echo "<p>Dodano głos!</p>";
}
else {
echo 'blad';
}

mysql_close();
?>

dodaję też plik index.php jeśli będzie potrzebny:

<?php

include('mysql.php');

$rezultat=mysql_query("select * from wyniki");
$glosy=mysql_fetch_array($rezultat);
$suma_glosow=0;
$max=50000;
$odp++;
$suma_glosow=$suma_glosow+$glosy["odp".$odp];
$procent[$odp]=round(($glosy["odp".$odp]/$max)*100);
$tekst_odp[1]="wyslij";
$glosy["odp".$odp] = number_format($glosy["odp".$odp], 0, ',', ' ');
echo '<div class="line"><br>';
echo '</div>';
echo "<div class='lo'><table border=0><td><img src=/progress_bar.gif height=45 width=".($procent[$odp]*9.5)."></td>";
echo "</table></div>";
echo "<table border=0>";
echo "<tr><td></td><td><p class='fbold'><font size=5> ".$glosy["odp".$odp]."</p></td></tr></table></font>";
mysql_close();
include('contact.php');
?>
0

no chyba logiczne

 if ($c->checkCode($_POST["wpisanyKod"],$_POST["weryfikacja"])) {
// TU DOPIERO WPISUJESZ WSZYSTKO CO MA SIĘ DZIAĆ PO PRAWIDŁOWYM WPISANIU KODU
}
0

to wiem, ale jak cały warunek

if($wynik)

wstawiałem w tym to i tak było bez zmian

edit: dobra zorganizowałem to tak i chyba działa (a przynajmniej tak wygląda :D)

if (isset($_GET["action"]))
		{
                if ($c->checkCode($_POST["wpisanyKod"],$_POST["weryfikacja"])) {
		$wynik = mail('<'.$email.'>', $tytul, $wiadomosc, $naglowki);
		if ($wynik) {
                    echo '<p class="powodzenie">Wysłano poprawnie</p>';
                } else {
                    echo '<p class="blad">Wiadomość nie została wysłana</p>';
                }
				}
		}

nie wyświetla jedynie komentarza, gdy nie wyśle wiadomości, no ale cóż

Teraz jeżeli ktoś mógłby pomóc jak ten zapis do sesji ogarnąć (nie na przykładach z manuala bo tam już byłem i wszystko przeczytałem), próbowałem różnie, chyba wszystkie sposoby stąd też: http://forum.php.pl/lofiversion/index.php/t44383.html ale za nic nie chciało działać i tym samym po wysłaniu przez formularz, gdy się odświeży to wysyła ponownie i ponownie dodaje kolejny głos do licznika hmm...

1 użytkowników online, w tym zalogowanych: 0, gości: 1