Skocz do zawartości

System Errorów xd


Rekomendowane odpowiedzi

mam taki kod:

for ($i=0; $i<5; $i++)
{
$error[$i]=$_GET["error[".$i."]"];
if ($error[$i]!=='')
{echo "<script language='JavaScript'>alert('".$error[$i]."')</script>";}
}

i chce tego uzyc do errorow, ze np w shoutboxie ktos napisze za dlugie to www.strona.domena.pl/plik.php?error1=Za dlugi post!

a jak da za dlugi post + z wuglaryzmami to:

www.strona.domena.pl/plik.php?error1=Za dlugi post!&error2=Wulgaryzmy w poscie!

 

No i mam do dyspozycji 5 errorow, no to daje tak, ba daje tylko 2 errory a pięć razy wyskakuje mi pusty alert. czemu?

Odnośnik do komentarza
Udostępnij na innych stronach

Pętlą for sprawdź, ile jest errorów, i tyle razy niech się wykonuje kod z pętli for, bo jak na razie wykonuje się, bez względu na ilość errorów, pięć razy. Albo przesyłasz informację o ilości błędów, albo dajesz:

$max = 0;
while( isset( $_GET[ 'error' . $max ] ) )
  $max++;

for ($i=0; $i<$max; $i++)
{
$error[$i]=$_GET["error[".$i."]"];
if ($error[$i]!=='')
{echo "<script language='JavaScript'>alert('".$error[$i]."')</script>";}
}

Proszę bardzo :) . A tak btw - po co w gecie dodajesz nawiasy kwadratowe ([ oraz ]) ? Wychodzi wtedy nie $_GET[ 'error1' ], tylko $_GET[ '[error1]' ], a chyba tak być nie ma :P .

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Ja, gdy np. mam zapisywanie postów na forum, to po kolei sprawdzam czy po wysłaniu formularza wszystkie warunki są spełnione. Jest zmienna $zapisz = true; no i teraz lecimy: sprawdzam, czy użytkownik ma prawa pisać posty, czy użytkownik dodał nick, jeżeli jest niezalogowany, czy podał temat, czy podał treść postu, czy wcisnął zapisz czy podgląd - jeżeli gdzieś się coś nie zgadza, to $zapisz = false i blok kodu zapisujący post się nie wykona, ale mimo to sprawdzane są dalej wszystkie warunki dodania postu - a każdy dodaje jeden blok HTMLa z opisem błędu (gdy pracuje się z systemem szablonów, to jest to prostsze do stworzenia). Nie ma żadnych JSów, nie ma też żadnego przesyłania błędów w adresie strony - w końcu po to jest PHP, żeby kod sam generował błędy i je wyświetlał na stronie, a nie dopuszcał wtedy do wykonania określonej akcji.

 

Schemat wyglądał by tak:

 

$zapis = true;
$error = array();

if ( empty( $_POST['zmienna'] ))
{
$error[] = 'Brakuje nicku!';
$zapis = false;
}

if ( $forum['prawa'] != $prawa['gosc'] )
{
$error[] = 'Masz za małe prawa!';
$zapis = false;
}

... // i tak dalej, różne testy

if ( $zapis == true )
{
// tutaj np. zapis posta, albo coś innego i przekierowanie: header('Location: tresc.php');
}
else
{
echo '<h1>Błąd!</h1>' . implode('<hr>',$error);
}

// wyświetlanie normalnej zawartości strony, bo jezeli był błąd, to trzeba poprawić formularz, mozna do inputów powstadzać tekst który został przesłany metodą POST, zeby user nie wpisywał go drugi raz

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...