Autor Zpráva
one
Profil
Čau, mám celkem závažný problém, a nenapadá mě řešení jak to udělat, mám
strukturu stránky ve tvaru:
<html>
<head>
<body>

<hlavicka>

<levé menu>

<hlavní div>

<pravé menu>

<patička>

a v hlavním menu mám registraci, a když se nesplní podmínka tak tam mám
zobrazení hlášky + exit(); aby se script neprováděl dál a nedošlo tak k odeslání
uživatele do db bez žádných nebo špatných informací, no jo jenže když tak mám
exit() tak se logicky nemůže načíst pravé menu a patička :(
a mně nenapadá způsob jak to vyřešit, ja vim že je to možná triviální, ale holt
mě momentálně nic nenapadá, takže potřebuji radu...

bylo mi porazeno, že mám zkusit využít vyjímky (exceptions).

můžete mi na to napsat menší příklad?

děkuji
Karlik1985
Profil *
nedavej tam exit ale zabal to do ifu
DJ Miky
Profil
Vyřeš to třeba tak, že pokud se nesplní podmínka, tak se zobrazí jen hláška bez dalšího obsahu (a bez exit;) a tudíž se pravé menu a patička načtou.

To znamená:

hlavička
levé menu
<?php
if($podminka_registrace) {
echo 'obsah stránky';
}
else {
echo 'Chyba!';
}
?>
pravé menu
patička
one
Profil
no když tam dám jenom echo "blablabla"; tak se sice hláška zobrazí ale formulář nebo cokoliv jiného se odešle :-(

edit:

přiklad:

hlavička atd.
...
//kontrola, zda název účtu obsahuje jen povolené znaky
if (!eregi('^[_a-zA-Z0-9.-+]+$', $accountname)){
echo "chyba!";
}
...
pravé menu atd.
bukaj
Profil
a co takto:
if (eregi('^[_a-zA-Z0-9.-+]+$', $accountname)){
...
//zpracování výsledků
...
}else{
echo "chyba";
}
one
Profil
no to jsem taky chtěl zkusit, ale co myslíš pod tím 'zprácování výsledků', protože buď tam jsou blbé znaky a tak se zobrazí chyba a nebo to je v pořádku a pokračuje se dál ne? nebo se bych měl hodit u toho že je to v pořádku, protože tam pak mám další podmínky, např.:


if($_POST['accountname'] && strlen($_POST['accountname']) < 3){
echo "chyba";
$accountname='';
}


omlouvám se za to, že jsem tě nejspíš nepochopil, jak si to myslel...
bukaj
Profil
one
to //zpracování výsledků je např. uložení údajů do databáze, do souboru, vypsání apod.
myslel jsem tím postupně do sebe ty kontroly vnořovat, takže například:
if (eregi('^[_a-zA-Z0-9.-+]+$', $accountname)){
if($_POST['accountname'] && strlen($_POST['accountname']) > 3){
...
//tady může být další ověření nebo už samotné zpracování
...
}else{
echo "chyba ohledně délky $_POST['accountname']....";
}
}else{
echo "chyba";
}

prostě, kontroloval bys, jestli to nějaká ta položka odpovídá a pokud ano, testuješ dál, pokud ne, vypíšeš chybu. a takhle postupně zanořuješ podmínky do sebe až se dostaneš k tomu, že je vše ověřeno, a pak teprve zpracuješ
one
Profil
jo takhle, ok to zkusím, díky moc ;)
one
Profil
if(eregi('^[_a-zA-Z0-9.-+]+$', $accountname)){} {

if($_POST['accountname'] && strlen($_POST['accountname']) > 3) {


...vložení uživatele do databáze
}else{
$accountname='';
echo "název účtu je moc krátký";
}

}else{
echo "název účtu obsahuje nepovolené znaky";
}

hlásí mi to parse na vyznačeném místě, myslel jsem si že to nebude v pořádku, že tam bude problém s těma závorkama, ale udělal jsem to podle tebe, nebo jsem tak něco zkonil? :)
bukaj
Profil
problém je asi v tomto: if(eregi('^[_a-zA-Z0-9.-+]+$', $accountname)){} {
zkuisil bych zaměnit za: f(eregi('^[_a-zA-Z0-9.-+]+$', $accountname)){
teď by to už mělo šlapat :)
one
Profil
no jo, ja jsem blbec :) díky moc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0