function registerf(){
if (!empty($nazwa) && !empty($hasło)){
if (strlen($nazwa) < 4) echo '<div class="alert alert-danger">Nazwa firmy jest za krótka!</div>';
elseif (strlen($nazwa) > 14) echo '<div class="alert alert-danger">Nazwa firmy jest za długa!</div>';
elseif (strlen($hasło) < 4) echo '<div class="alert alert-danger">Hasło jest za krótkie!</div>';
elseif (strlen($hasło) > 20) echo '<div class="alert alert-danger">Hasło jest za długie!</div>';
elseif ($nazwa == $hasło) echo '<div class="alert alert-danger">Nazwa firmy nie może być taka sama jak hasło!</div>';
else{
if (ctype_alnum($nazwa)){
$hasło = md5(sha1($hasło));
$juz_istnieje = row("SELECT * FROM firmy WHERE nazwa = '$nazwa' OR hasło = '$hasło'");
if ($istnieje) echo '<div class="alert alert-danger">Taka firma już istnieje!</div>';
else {
call("INSERT INTO firmy (nazwa, hasło) VALUES ('$nazwa', '$hasło')");
call("UPDATE firmy SET b_state = b_state + 2 WHERE id = ".$id);
echo '<div class="alert alert-success">Pomyślnie utworzono firmę</div>';
?><br><a href="game.php?a=firma">Zarządzaj</a> <?php
}
} else echo '<div class="alert alert-danger">Nazwa może zawierać tylko litery i cyfry!</div>';
}
} else echo '<div class="alert alert-danger">Wypełnij wszystkie pola!</div>';
}
W bazie danych stworzyłem tabelę firmy i dwie kolumny nazwa i hasło.
Oba są w jednym pliku tylko pominąłem nie związane z tym problemem fragmenty.
Nie zależnie od tego czy się wypełni formularz czy nie jak się kliknie Załóż to skrypt się nie wykonuje a strona włącza się jeszcze raz. co jest źle?
AD 2 - kalitt napisał Ci tutaj na czym polega problem, w twoim formularzu nie ma pola o nazwie “załóż”, a tutaj:
if (!empty($_POST['załóż']) ) registerf();
sprawdzasz, czy taka zmienna została przesłana. Zakładam, że chciałeś sprawdzić czy był kliknięty przycisk wysyłania, ale w takiej sytuacji powinieneś sprawdzić zmienną $_POST['potwierdzenie], albo jak sugerował kalitt dodać jakieś pole ukryte jako flagę
$juz_istnieje = row("SELECT * FROM firmy WHERE nazwa = '$nazwa' OR hasło = '$hasło'");
if ($istnieje) echo '<div class="alert alert-danger">Taka firma już istnieje!</div>';
function registerf()
{
extract($_POST);
if(!empty($nazwa) && !empty($haslo))
{
if(strlen($nazwa) < 4)
echo '<div class="alert alert-danger">Nazwa firmy jest za krótka!</div>';
elseif(strlen($nazwa) > 14)
echo '<div class="alert alert-danger">Nazwa firmy jest za długa!</div>';
elseif(strlen($haslo) < 4)
echo '<div class="alert alert-danger">Hasło jest za krótkie!</div>';
elseif(strlen($haslo) > 20)
echo '<div class="alert alert-danger">Hasło jest za długie!</div>';
elseif($nazwa == $haslo)
echo '<div class="alert alert-danger">Nazwa firmy nie może być taka sama jak hasło!</div>';
else
{
if(ctype_alnum($nazwa))
{
$haslo=md5(sha1($haslo));
$juz_istnieje=false;
if($juz_istnieje)
echo '<div class="alert alert-danger">Taka firma już istnieje!</div>';
else
{
// call("INSERT INTO firmy (nazwa, hasło) VALUES ('$nazwa', '$hasło')");
// call("UPDATE firmy SET b_state = b_state + 2 WHERE id = ".$id);
echo '<div class="alert alert-success">Pomyślnie utworzono firmę</div>';
?><br><a href="game.php?a=firma">Zarządzaj</a> <?php
}
} else
echo '<div class="alert alert-danger">Nazwa może zawierać tylko litery i cyfry!</div>';
}
} else
echo '<div class="alert alert-danger">Wypełnij wszystkie pola!</div>';
}
if(!empty($_POST['potwierdzenie']))
registerf();
?>
<form action="a.php" method="POST">
<table align="center">
<tr>
<td><b>Nazwa firmy:</b></td>
<td style="padding: 10px"><input type="text" name="nazwa" />
</tr>
<tr>
<td><b>Hasło do panelu zarządzania:</b></td>
<td style="padding: 10px"><input type="password" name="haslo"</td>
</tr>
</table><br>
<center><input type="submit" style="width: 25%" name="potwierdzenie" value="Załóż" /></center>
</form>
Ten kod działa. Zakomentowałem tylko wstawianie danych do bazy i zamiast pobierać dane wpisałem wartość logiczną.
No i poprawiłem kilka literówek, musisz uważniej tworzyć nazwy zmiennych, w jednym miejscu masz zmienną $juz_istnieje w innym $istnieje, w formularzu przesyłasz pole haslo, sprawdzasz zmienną $hasło, do tego w żadnym miejscu nie pobrałeś zmiennych przesłanych formularzem. Ja to zrobiłem trochę na skróty za pomocą extract($_POST);
W każdym razie teraz skrypt działa, musisz tylko upewnić się, że w zapytaniach do bazy nie ma błędów.