Sprawdzanie poprawności kodu w formularzu

0

Witam, mam do napisania prosty formularz który sprawdzi mi poprawność kodu i wyślę formularz z kodem na inną stronę.
Aby sprawdzić czy kod jest poprawny, sprawdzam zmienna do której przypisuje element tablicy POST do z tablicą w której są wszystkie kody.

Jeśli kod jest poprawny, wyświetlam drugi formularz z uzupełnionym value o kod, do potwierdzenia i wysłania.
Jeśli kod nie jest poprawny, komunikuję że kod jest nie prawidłowy, wyświetlam formularz ponownie.

Kod z jakiegoś powody mi nie działa i nie wiem dlaczego.
Proszę o jakieś wskazówki.

Oto kod:

 
$form = '
		<form accept-charset="UTF-8" action="" method="POST">
		    
		        <label for="inf_field_ReferralCode">Referral Code *</label>
		        <input class="infusion-field-input-container" id="inf_field_ReferralCode" name="inf_field_ReferralCode" type="text" required/>
		        <input type="submit" value="Submit" />
		    <input name="checker" type="hidden" vaule="1" />
		</form>
		';
$formTrue = '<form accept-charset="UTF-8" action="jakasStrona.php" class="infusion-form" method="POST"
        <label for="inf_field_ReferralCode">Referral Code *</label>
        <input class="infusion-field-input-container" id="inf_field_ReferralCode" name="inf_field_ReferralCode" type="text" value="$_POST[\'inf_field_ReferralCode\']"/>
    <div class="infusion-submit">
        <input type="submit" value="Potwierdź" />
    </div>
</form>';

$kody[1] = "p0m1q";
$kody[2] = "p0m2w";
$kody[3] = "p0m3e";
$prawda = "false"; 

if(isset($_POST['checker'])){
	$kod = $_POST['inf_field_ReferralCode'];
	sprawdzKod($kod); 
} else {
		echo $form; 
	}

function sprawdzKod($kod){
	echo "kod to ".$kod; // sprawdzam tylko czy funkcja pobiera poprawnie kod
	for($i = 1; $i < 4; $i++){
		if($kod == $kody[$i]){
		echo "Kod poprawny, przejdź do filmiku";
		echo $formTrue; 
		$prawda = "true"; 
		}
	}
	if($prawda == "false"){
		echo "Kod niepoprawny";
		echo $form; 
	}
}
0

Jak na razie brakuje zamykającego apostrofu. Zgaduję, że chodzi o linię numer 11.
Druga sprawa to to, że "$zmienna" != '$zmienna', chyba, że coś w tej części php zmienili w ciągu ostatnich lat.

0
ŁF napisał(a):

Jak na razie brakuje zamykającego apostrofu. Zgaduję, że chodzi o linię numer 11.
Druga sprawa to to, że "$zmienna" != '$zmienna', chyba, że coś w tej części php zmienili w ciągu ostatnich lat.

U siebie w programie apostrof od $formTrue mam zamknięty, nie wiem dlaczego tu go nie ma.
Co do zmiennych to nie wiem o czym mówisz, u siebie nie widzę chyba nic takiego.

0

Co wypisze u Ciebie taki kod?

$var = 'dupa';
echo '$var';

[edit]
Masz niedomknięty drugi znacznik form.

0
ŁF napisał(a):

Co wypisze u Ciebie taki kod?

$var = 'dupa';
echo '$var';

[edit]
Masz niedomknięty drugi znacznik form.

Żeby nie było, to jest mój kod:
Wszystko jest domknięte, nie wiem czemu to nie działa.
Proszę o pomoc.

<?php
$getkod = $_GET['setkod']; 

$form = '
		<form accept-charset="UTF-8" action="" method="POST">
		    
		        <label for="inf_field_ReferralCode">Referral Code *</label>
		        <input class="infusion-field-input-container" id="inf_field_ReferralCode" name="inf_field_ReferralCode" type="text" required/>
		        <input type="submit" value="Submit" />
		    <input name="checker" type="hidden" vaule="1" />
		</form>
		';
$formTrue = '<form accept-charset="UTF-8" action="https://aq183.infusionsoft.com/app/form/process/8ff6766c59729e6c561dfd73bad9f1ec" class="infusion-form" method="POST">
    <input name="inf_form_xid" type="hidden" value="8ff6766c59729e6c561dfd73bad9f1ec" />
    <input name="inf_form_name" type="hidden" value="Sign up for newsletter" />
    <input name="infusionsoft_version" type="hidden" value="1.35.0.43" />
    <div class="infusion-field">
        <label for="inf_field_ReferralCode">Referral Code *</label>
        <input class="infusion-field-input-container" id="inf_field_ReferralCode" name="inf_field_ReferralCode" type="text" value="'.$_POST['inf_field_ReferralCode'].'"/>
    </div>
    <div class="infusion-submit">
        <input type="submit" value="Potwierdź" />
    </div>
</form>
<script type="text/javascript" src="https://aq183.infusionsoft.com/app/webTracking/getTrackingCode?trackingId=57e3499d794abfbf75d40afa43d5b277"></script>';


$kody[1] = "p0m1q";
$kody[2] = "p0m2w";
$kody[3] = "p0m3e";
$prawda = "false"; 

if(isset($_POST['checker'])){
	$kod = $_POST['inf_field_ReferralCode'];
	sprawdzKod($kod); 
} else {
		echo $form; 
	}

function sprawdzKod($kod){
	echo "kod to ".$kod;
	for($i = 0; $i < 4; $i++){
		if($kod == $kody[$i]){
		echo "Kod poprawny, przejdź do filmiku";
		echo $formTrue; 
		$prawda = "true"; 
		}
	}
	if($prawda == "false"){
		echo "Kod niepoprawny";
		echo $form; 
	}
}
 
2

Ale co oznacza "nie działa"? Jaki masz efekt? Pusta strona? Sypie błędami czy jak?

0

Wolał bym się dowiedzieć czemu nie działa kod ;) ale dzięki za wskazówkę

0

Zrobiłem to teraz w ten sposób i działa jak należy, jednak dalej nie wiem czemu wcześniejszy kod nie chciał działać :/
Jednak dziękuje wam za wskazówki i pomoc w napisaniu tego od nowa :)

$form = '
		<form accept-charset="UTF-8" action="" method="POST">
		    
		        <label for="inf_field_ReferralCode">Wprowadź kod: </label>
		        <input class="infusion-field-input-container" id="inf_field_ReferralCode" name="kod" type="text" required/>
		        <input type="submit" value="Submit" />
		    <input name="checker" type="hidden" vaule="1" />
		</form>
		';
$formTrue = '<form accept-charset="UTF-8" action="jakas.php" class="infusion-form" method="POST">

    <div class="infusion-field">
        <label for="inf_field_ReferralCode">Referral Code *</label>
        <input class="infusion-field-input-container" id="inf_field_ReferralCode" name="inf_field_ReferralCode" type="text" value="'.$_POST['kod'].'"/>
    </div>
    <div class="infusion-submit">
        <input type="submit" value="Potwierdź" />
    </div>
</form>
';
		
$kody[0] = "p0m3e";
$kody[1] = "p0m1q";
$kody[2] = "p0m2w";

$prawda = false; 

if(isset($_POST['checker'])){
    $kod = $_POST['kod'];
	for($i=0; $i < 3; $i++){
		if($kod == $kody[$i]){
			$prawda = true;
			break;
		}
		else {
			$prawda = false; 
		}
	}
	if($prawda){
		echo $formTrue; 
	} else {
		echo "Kod nie prawidłowy"; 
	}
	
} else {
        echo $form; 
    }
 
2
        if($kod == $kody[$i]){
            $prawda = true;
            break;
        }
        else {
            $prawda = false; 
        }

Ten else jest niepotrzebny, bo zmienną ustawiasz przed pętlą na false i jeżeli nie znajdzie ci odpowiedniego kodu to tak już pozostanie.

1

to mozna tez zoptymalziwoac:

deklaracja tablicy:

$kody = array("p0m1q", "p0m2w", "p0m3e");

a potem tak, ew. ''in_array wydzieli

if(isset($_POST['checker'])){
    $kod = $_POST['inf_field_ReferralCode'];

    echo "kod to ".$kod;
    if(kodPoprawny($kod, $kody)){
         echo "Kod poprawny, przejdź do filmiku";
         echo $formTrue; 
    }else{
        echo "Kod niepoprawny";
        echo $form; 
    }
}

i prosta funkcja ktora potem bedzie mozna rozbudowac:

function kodPoprawny($kod, $kody)
{
    return in_array($kod, $kody)
}

tak samo formularze zamaist echowac to wrzuc do osbnych plikow i inlcuduj jak trzeba. wtedy ebdzie widac z gory co sie robi gdzie

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