• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formularz kontaktowy

Object Storage Arubacloud
0 głosów
354 wizyt
pytanie zadane 24 marca 2016 w PHP przez TheBan Obywatel (1,400 p.)
edycja 24 marca 2016 przez Arkadiusz Waluk

Witam! Mam pewien problem, gdyż tworząc formularz kontaktowy założyłem anty spamową tabliczke mnożenia. Problem jest taki, że tabliczka , którą stworzyłem daje użytkownikowi opcje wyboru jednej z 4 opcji select.
 

?>
<select name="odpowiedz" size="1">
<option value="oa"><?ECHO $oa;?></option>
<option value="ob"><?ECHO $ob;?></option>
<option value="oc"><?ECHO $oc;?></option>
<option value="od"><?ECHO $od;?></option>
</select>
<?

Gdy skończyłem wszystko postanowiłem to sprawdzić i okazało się , że mój kod działa tylko1 razowo, ponieważ nasz wybór jest wybierany z opóźnieniem, gdyż jak wybierzemy odpowiedź , którą chcemy to ona jest brana dopiero do kolejnego działania , a nie do tego z czasu teraźniejszego.
 

<?
                $opcja = $_POST['odpowiedz'];
            $szukajw = $_POST['email'];
$szukaj   = '@';
$pos = strpos($szukajw, $szukaj);
            if (empty($_POST['nick'])) {
echo ('Nie wypełniłeś 1-ego pola'); }
            elseif ($pos === false) {
 echo "Błędny e-mail'";
} ;
echo "toje".$opcja;
            if ($dzialanie != $opcja){
            echo " błąd ";}
            elseif ($dzialanie == $opcja){
                echo"wyslano";
            };
?>    
            <button type="submit" ><center>Wyślij<center></button>
            </form>
            
    </center
<?
//koniec kodu na formularz
?>        

Jeżeli , ktoś będzie potrzebował całego kodu to podeślę.

1 odpowiedź

0 głosów
odpowiedź 24 marca 2016 przez Mateusz11 Pasjonat (22,910 p.)

1. Istnieje opcja "code"

2. Zrób to lepiej z inputem textowym, albo skorzystaj z http://www.google.com/recaptcha

3. </center> nie jest zamknięty

4.Nie 

<?

tylko

<?php

5. Nie do końca wiem, o co Ci chodzi

 

Pozdrawiam

komentarz 24 marca 2016 przez TheBan Obywatel (1,400 p.)
edycja 24 marca 2016 przez Arkadiusz Waluk

Chciałbym skorzystać z recaptcha, niestety praca jaką robię jest grupowa i nie mogę skorzystać z pomysłu jaki ktoś inny wpadł z mojej grupy, a już niestety padło , że mój znajomy ma recaptcha a ja mam tabliczkę mnożenia, a jako , że chce , aby zaskoczyła każdego to chcę, aby miała te opcje a,b,c i d  i  była mała jeżeli mój wycięty fragment kodu jest słaby to masz tu cały god na formularz.Jeżeli zapytasz dlaczego to pobieranie jest przed formularzem to nwm, wcześniej dałem go po, ale nie działał, a jako spojżałem na inny formularz znajomego to on tak miał, ale to i tak nic ie zmienia.

 

<center>
        Formularz kontaktowy
        <?
                $opcja = $_POST['odpowiedz'];
            $szukajw = $_POST['email'];
$szukaj   = '@';
$pos = strpos($szukajw, $szukaj);
            if (empty($_POST['nick'])) {
echo ('Nie wypełniłeś 1-ego pola'); }
            elseif ($pos === false) {
 echo "Błędny e-mail'";
} ;
echo "toje".$opcja;
            if ($dzialanie != $opcja){
            echo " błąd ";}
            elseif ($dzialanie == $opcja){
                echo"wyslano";
            };
?>    
    <form action="Kontakt2.php" method="post"><div>
<br><br>
        <input  name="nick" style="width:200px;height:20px;border:1px solid;resize:none;" placeholder="Imię i nazwisko"   />
<br><br>
        <input  name="email" style="width:200px;height:20px;border:1px solid;resize:none;" placeholder="Adres e-mail"  />
<br><br>        
        <textarea style="width:200px;height:20px;border:1px solid;resize:none;" placeholder="Treść wiadomości" ></textarea>
<br><br>        
<?
    
// Kod na działanie
$liczba1 = rand(0,10);
$liczba2 = rand(0,10);
$dzialanie = "$liczba1" * "$liczba2";  
echo $liczba1."*".$liczba2."=";
echo $dzialanie;
$liczba2 = rand(0,10);
echo $text;
// wypadasz z teleturnieju
$losuj = rand(1,4);
$losuj==1 ? $z=1: 'nie';
$losuj==2 ? $z=2: 'nie';
$losuj==3 ? $z=3: 'nie';
$losuj==4 ? $z=4: 'nie';
?>
<?php
if ($z==1) {
$oa = $dzialanie;
$ob = rand(0,10);
$oc = rand(0,10);
$od = rand(0,10);
};
?>
<?php
if ($z==2) {
$oa = rand(0,10);
$ob = $dzialanie;
$oc = rand(0,10);
$od = rand(0,10);
};
?>
<?php
if ($z==3) {
$oa = rand(0,10);
$ob = rand(0,10);
$oc = $dzialanie;
$od = rand(0,10);
};
?>
<?php
if ($z==4){
$oa = rand(0,10);
$ob = rand(0,10);
$oc = rand(0,10);
$od = $dzialanie;
};
?>
<select name="odpowiedz" size="1">
<option value="oa"><?ECHO $oa;?></option>
<option value="ob"><?ECHO $ob;?></option>
<option value="oc"><?ECHO $oc;?></option>
<option value="od"><?ECHO $od;?></option>
</select>

            <button type="submit" ><center>Wyślij<center></button>
            </form>
            
    </center
<?
//koniec kodu na formularz
?>        
         </div>

 

komentarz 24 marca 2016 przez TheBan Obywatel (1,400 p.)
edycja 24 marca 2016 przez Arkadiusz Waluk
Wiesz co znalazłem już duży błąd, ale nie umiem go naprawić , gdyż jak każemy wypisać mu dane to on mówi dzialanie 48opcja od  , czyli nie są równe tak jak w kodzie. Teraz pytanie jak zrobić, aby value = odpowiedź. Jednak trzeba pamiętać, że zawsze mogą pojawić się 2 takie same liczby i żeby oby dwie działały wiesz np  działanie jest 2*2 to może być a)4 b)8 c)42 d)4
komentarz 24 marca 2016 przez Mateusz11 Pasjonat (22,910 p.)
<?php
$liczba = rand(0,5); //Wygeneruj numer dzialania

if($liczba == "1") //jezeli dzialanie jest rowne 1
{
	if(isset($_POST['a']) || isset($_POST['b']) || isset($_POST['c']) || isset($_POST['d']))
	{
		if($_POST['a'])
		{
			//Dalej co sie stanie jak rozwiazanie jest poprawne
		}
		else
		{
			//rozwiazanie nie poprawne
			header('Location: ./index.php?error=zly-wynik');
			exit();
		}
	}
	ELSE
	{
		//Gdy uzytkownik nic nie wypelni
		exit();
	}
}

?>

WZÓR

komentarz 24 marca 2016 przez TheBan Obywatel (1,400 p.)

ok(to do poprzedniej odpowiedzi). I tak już naprawiłem błąd, i zmienił się już w innny , czyli jak zrobić , aby pobierało z teraźniejszego wyboru opcje , a nie tą ostatnią, czyli mam kod taki:


 

	if ($z==1) {
if ($_POST['odpowiedz'] == "oa") {
	$opcja = $dzialanie;
	}};
	if ($z==2) {
if ($_POST['odpowiedz'] == "ob"){
	
	$opcja = $dzialanie;
	}};
	if ($z==3) {
	if ($_POST['odpowiedz'] == "oc"){
	
	$opcja = $dzialanie;
	}};
	if ($z==4) {
if ($_POST['odpowiedz'] == "od"){
	
	$opcja = $dzialanie;
	}};
	?>

 


 

Czyli teraz jak się wejdzie w formularz to bierze twoje kliknięcie ostatnie a nie to co się kliknęło teraz, proszę o wszelką pomoc ;)

komentarz 25 marca 2016 przez Mateusz11 Pasjonat (22,910 p.)

Zrób buttona w tym formularzu wysyłającym dane, i wtedy sprawdzaj czy jest ok czy nie jest ok

komentarz 25 marca 2016 przez efiku Szeryf (75,160 p.)
Zamiast robić coraz większy makaron w tym kodzie, lepiej zapoznaj się jak działa protokół HTTP i jak go ogarnąć w PHP.

Zobacz sobie na czysto jak działa select i jak przesyłany jest do skryptu.

- Użytkownik wysyła Request np. example.com/contact

- Serwer przygotowuje dane, dorzuca ten Twoj mechanizm ( liczba 1 losowana mt_rand(), liczba 2 losowana mt_rand() , wynik jest zapisywany w sesji i budowany jest select )

- Zwracany jest Response z formularzem i danymi.

- Po uzupełnieniu formularza i wysłaniu go, sprawdzana jest odpowiedź z tym wynikiem co siedzi w sesji.

Ot takie trudne.

PS: Zainteresowałbym się już Twigiem na tym etapie..

Podobne pytania

0 głosów
1 odpowiedź 102 wizyt
pytanie zadane 30 kwietnia 2016 w PHP przez hateemlowiec Nowicjusz (200 p.)
–1 głos
2 odpowiedzi 164 wizyt
pytanie zadane 1 października 2016 w PHP przez kkiermasz Użytkownik (680 p.)
0 głosów
4 odpowiedzi 276 wizyt
pytanie zadane 20 sierpnia 2015 w PHP przez witam_witam Nowicjusz (160 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...