Pomoc w formularzu rejestracyjnym [php]


(Druii) #1

Witam

 

Mam problem z formularzem rejestracyjnym. Nie mam pojęcia dlaczego, na serwerze uczelni i na wamp dostaje komunikaty że w ostatniej linii jest błąd.  Całość kodu to praktycznie część ćwiczenia z prezentacji wykładowcy, więc tutaj nie ma mowy o błędach (z resztą szczęśliwcy zdołali zrobić w czasie i formularz działał) - chyba że moich. Sprawdzałem całość kilka razy, w wielu edytorach by znaleźć błąd, ale niestety nie udało się.

 

Przez wakacje postanowiłem podszkolić chociaż jeden język, a że programowanie stron jest dość ciekawe (i aktualne na semestrze) to postanowiłem że zrobię jakąś stronkę portfolio. Analizowałem wykłady po kolei i tutaj trafiła kosa na kamień. Walczę już 3 dzień (po troszku bo jednak praca męczy), ale bez skutku.

 

Jeśli jest ktoś w stanie pomóc, byłbym bardzo wdzięczny

 

Pozdrawiam i zamieszczam kod

<? include once "test.php"?>

<!DOCTYPE HTML>

<html>
<body>	
	
<?php

$login="";
$haslo="";
$imie="";
$nazwisko="";
$rehaslo="";
$email="";

$pokaz_formularz = true;

if(isset ($_POST['imie']))
{
$login = mysqli_real_escape_string($link, $_POST['login']);
$login = str_replace(" ","",$login);
$haslo = mysqli_real_escape_string($link, $_POST['haslo']);
$rehaslo = mysqli_real_escape_string($link, $_POST['rehaslo']);
$imie = mysqli_real_escape_string($link, $_POST['imie']);
$nazwisko = mysqli_real_escape_string($link, $_POST['nazwisko']);
$login = mysqli_real_escape_string($link, $_POST['email']);

$tabl = mysql_fetch_assoc(mysqli_query($link, "select count(*) cnt form users where login='$login'") );

if ($tabl['cnt'] > 0)
{
echo "<b style=color:red>
Podany login juz jestnieje w bazie danych! </b> ";
}
else
{
$pokaz_formularz=false;

if(empty ($login) || empty ($haslo) || empty ($rehaslo) || empty ($imie) || empty ($nazwisko) || empty ($email) || $haslo != $rehaslo)
{
$pokaz_formularz = true;
echo "<b style=color:red>
Prosze uzupelnic popranie wszystkie dane formularza ! </b> ";

}
else { //wszystko ok

mysqli_query($link, "insert into users (login, haslo, imie, nazwisko, email)
values ('$login',md5('$haslo'),'$imie','$nazwisko','$email')");

if (mysqli_error($link)){
echo "
<b style=color:red>
Wystapil blad podczas tworzenia uzytwkonika!
</b> ";


switch (mysqli_errno($link))
{
case 1062: echo "<b style=color:green> Podany login już istnieje!</b>"; break;
default: echo mysqli_errno($link); break;

} //switch

$pokaz_formularz = true;

}

else
{
echo "<b style=color:green> Uzytwkonik zostal poprawnie utworzony</b>";
} //else

} //else

} //else

} //if isset


if($pokaz_formularz== true)
{

?>

<script language="JavaScript" type="text/javascript" src="_js/xmlhttp.js">
</script>
<script language="JavaScript" type="text/javascript">

var XMLHttp = getXMLHttp();

function sprawdz_login(login)
{
XMLHttp.open("GET","sprawdz_login.php?login=" + login);
XMLHttp.onreadystatechange = handlerFunction;
XMLHttp.send(null);

}

function handlerFunction()
{
if(XMLHttp.readyState == 4)
{
document.getElementById('sprlogin').innerHTML=XMLHttp.responseText;
}
}
</script>

<script>
function sprawdz_haslo()
{
if(document.getElementById('haslo').value != document.getElementById('rehaslo').value)
{
alert("Powtorzone haslo jest inne!");
return false;
}//if
else {return true;}
}//function
</script>



    <form method="post" >
        <table style="width: 80%; margin: auto; text-align: left;" >
		
		 <tr>
                <td class="napisz">Imie:</td>
                <td class="napisz"><input autofocus="autofocus" required="required" type="text" id="imie" name="imie" value=" <? echo $imie; ?> " /></td>
            </tr>
			
			 <tr>
                <td class="napisz">Nazwisko:</td>
                <td class="napisz"><input autofocus="autofocus" required="required" type="text" id="nazwisko" name="nazwisko" value=" <? echo $nazwisko;?>" /></td>
            </tr>
            <tr>
                <td class="napisz">Login:</td>
                <td class="napisz"><input autofocus="autofocus" required="required" type="text" id="login" name="login" value=" <? echo $login; ?> " onchange="sprawdz_login(this.value);"/></td>
            </tr>



            <tr>
                <td class="napisz">E-mail:</td>
                <td class="napisz"><input type="text" required="required" id="email" name="email" value=" <? echo $email; ?> "/></td>
            </tr>




            <tr>
                <td class="napisz">Haslo:</td>
                <td class="napisz"><input type="password" required="required" id="haslo" name="haslo" value="" /></td>
            </tr>


            <tr>
                <td class="napisz">Powtorz Haslo:</td>
                <td class="napisz"><input type="password" required="required" id="rehaslo" name="rehaslo" value=""/></td>
            </tr>

                     </table>

        <input type="submit" value="Załóż konto!" style="width: 100%; margin: 14px auto auto auto; padding: 5px;" />
    </form>
<? ;}; ?>

</body>

</html>

(Grzelix) #2

według tego checker'a http://phpcodechecker.com/

w pierwszej linii powinno być

<? include_once "test.php"?>

a nie

<? include once "test.php"?>

dodatkowo czasem używasz <? zgodnie z manualem: http://php.net/manual/en/language.basic-syntax.phptags.php zalecena jest <?php. Można używać skróconej formy ale trzeba pamiętać o włączeniu odpowiedniej opcji w pliku .ini


(GioWDS) #3

Proszę Cię zapoznać się z PSR bo tego się czytać nie da.


(rycerz2000) #4

hmm można też chyba użyć require_once


(Druii) #5

Wielkie dzięki! Mogę zacząć znowu działać :slight_smile:

Problemem było pisanie "?" zamiast "?php"