header("Location: www.stranka.sk");ppt napísal:Neexistuje nejaka funkcia, ktora otvori nejaku stranku?
Potrebujem nieco take:
if ($a==$b){otvorenie stranky index.php};
PHP - if
Ano, diky. Len ja potrebujem nejaku inu funkciu. Pretoze tuto mozem pouzit len na zaciatku scriptu (v hlavicke). Ja mam tento if niekde v strede zdrojaku...Nosferatu napísal:header("Location: www.stranka.sk");
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
tak puozi Output buffer ...ppt napísal:Ano, diky. Len ja potrebujem nejaku inu funkciu. Pretoze tuto mozem pouzit len na zaciatku scriptu (v hlavicke). Ja mam tento if niekde v strede zdrojaku...
na zaciatku stranky zavolaj
Kód: Vybrať všetko
ob_start();Kód: Vybrať všetko
ob_end_flush();mastermind napísal:no skus sem dat ten zdrojak ci by sa to nedalo dat niekde na zaciatok.
Takze namiesto: echo "Správne meno aj heslo..."; potrebujem dat ten odkaz na druhu stranku. Vlastne ono by sa to aj mohlo urobit tak, aby to bolo na zaciatku (predpokladam), ale do buducnosti by som sa chcel naucit aj iny sposob. S tym output buffer-om sa to da ako presnejsie pouzit? Co mam kde napisat? Dakujem<html>
<head><title>Prihlásiť</title>
<body>
<?
$login = ((IsSet($_POST["login"]))?$_POST["login"]:0 );
$pass = ((IsSet($_POST["pass"]))?$_POST["pass"]:0 );
mysql_connect("localhost","login","heslo");
$result=mysql("databaza","select * from users");
mysql_close();
$pocet=mysql_NumRows($result);
$i=0;
while ($i<$pocet):
if (mysql_result($result,$i,"login")==$login){
if (mysql_result($result,$i,"heslo")==$pass): echo "Správne meno aj heslo...";
else: echo "Nesprávne heslo!";
endif;
$i=$pocet;
$i++;
endwhile;
?>
</body>
</html>
po prve .... chyba ti tam zatvorka } (k tej {)
po druhe ... $i=$pocet; je akoze co???
po tretie .... ten vypis ti je na dve veci .... pretoze ked pouzijes Header() tak ta presmeruje okamzite a nic neuvidis .... teda tam nedavaj ziadne html (ziadne <html><head><body> atd), cisto len php a pri spravnom mene+hesle to presmeruj tam kam chces a pri zlom na nejaku error page kde mu napises ze "zle udaje"
po stvrte .... ten output buffer sa pouziva presne tak ako som napisal
po druhe ... $i=$pocet; je akoze co???
po tretie .... ten vypis ti je na dve veci .... pretoze ked pouzijes Header() tak ta presmeruje okamzite a nic neuvidis .... teda tam nedavaj ziadne html (ziadne <html><head><body> atd), cisto len php a pri spravnom mene+hesle to presmeruj tam kam chces a pri zlom na nejaku error page kde mu napises ze "zle udaje"
po stvrte .... ten output buffer sa pouziva presne tak ako som napisal
1. ta zatvorka-} neviem, ako sa mi to mohlo stat, ale mi pri prekopirovani nejako zmizla. Asi, ked som upravoval mysql_connect() (aby tam neboli vsetky hesla).gwixt napísal:po prve .... chyba ti tam zatvorka } (k tej {)
po druhe ... $i=$pocet; je akoze co???
po tretie .... ten vypis ti je na dve veci .... pretoze ked pouzijes Header() tak ta presmeruje okamzite a nic neuvidis .... teda tam nedavaj ziadne html (ziadne <html><head><body> atd), cisto len php a pri spravnom mene+hesle to presmeruj tam kam chces a pri zlom na nejaku error page kde mu napises ze "zle udaje"
po stvrte .... ten output buffer sa pouziva presne tak ako som napisal
2. Kedze som zaciatocnik v php (v c som nerobil vobec), tak $i=$pocet som tam dal preto, aby sa cyklus while skoncil hned, ked sa najde v databaze premenna login. Neviem ako sa to dalo spravit inac, tak ma napadlo toto.
3. OK, html tagy tam nedam. Zase ale nestaci mi tam dat miesto toho hrubo vypisaneho echa Header? Vtedy by ma pri spravnom zadani preplo na tu stranku a pri zlom(ci uz heslo alebo login) by sa mi vypisala chyba.
4. Nevedel som presne, kde to treba napisat, ale zatial to netreba. Ak by trebalo, tak to napisem.
Zatial dakujem gwixt.
Zmenil som to teraz takto:
A vypisuje mi zase tu chybu s hlavickou. Co tam špatí, pls?<?
$login = ((IsSet($_POST["login"]))?$_POST["login"]:0 );
$pass = ((IsSet($_POST["pass"]))?$_POST["pass"]:0 );
mysql_connect("localhost","login","heslo");
$result=mysql("databaza","select * from users");
mysql_close();
$pocet=mysql_NumRows($result);
$i=0;
while ($i<$pocet):
if (mysql_result($result,$i,"login")==$login){
if (mysql_result($result,$i,"heslo")==$pass): header("Location: index.php");
else: header("Location: chyba.php");
endif;
$i=$pocet;
}
$i++;
endwhile;
?>
no vadit mu moze to ze php predtym vyhlasi nejaku chybu ... to je tiez vystup
napisem ti to ako by som toto tvoje robil ja
a ako to naozaj robim
(to len pre inspiraciu)
btw to $i=$pocet; uz dava zmysel ale bez tej zatvorky nedavalo
.... na ukoncenie cyklu sa pouziva break; (na skocenie na koniec aktualneho behu cyklu continue; .... to len tak naokraj)
napisem ti to ako by som toto tvoje robil ja
Kód: Vybrať všetko
<?
$login = ((IsSet($_POST["login"]))?$_POST["login"]:0 );
$pass = ((IsSet($_POST["pass"]))?$_POST["pass"]:0 );
if ($login && $pass)
{
mysql_connect("localhost","login","heslo");
$result=mysql("databaza","select * from users") or die("query nepreslo");
mysql_close();
$pocet=mysql_NumRows($result);
$i=0;
while($line=mysql_fetch_array($result,MYSQL_BOTH))
{
if ($line["login"]==$login)
{
if ($line["heslo"]==$pass) header("Location: index.php");
else header("Location: chyba.php");
break; // namiesto $i=$pocet;
}
}
}
else header("Location: chyba.php");
?>
Kód: Vybrať všetko
<?
$login = ((IsSet($_POST["login"]))?$_POST["login"]:0 );
$pass = ((IsSet($_POST["pass"]))?$_POST["pass"]:0 );
if ($login && $pass)
{
//tu je nejaky connect na DB
$query = 'SELECT * FROM `user` WHERE login=\''.$login.'\' AND heslo=\''.$pass.'\'';
$result = mysql_query($query)
or die("Query nepreslo");
if (mysql_num_rows($result) != 0 )
header("Location: index.php");
else
header("Location: chyba.php");
mysql_free_result($result);
mysql_close();
}
else
header("Location: chyba.php");
?>
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
to gwixt: nie ze by bol ten tvoj skript zly to nie, ale co ked niekto do pass zada nieco taketo skript vrati cislo ktore je rovne poctu uzivatelov, to je rozne od nuly a teda sa dostane na stranku aj bez toho aby vedel meno a heslo. 
Kód: Vybrať všetko
blbost' or 'x'='xTeraz vas nechapem. O aku chybu ide? Na tej stranke, na ktorej pracujem zase nie je az tak dolezita bezpecnost. Ale aby som pri inych projektoch vedel, o co ide.
K tomu header(): Neda sa miesto toho pouzit nejaky iny html tag podobny <a href>, ktory automaticky prepne na inu stranku? Existuju napr. stranky, ktore automaticky po nejakom case prepnu na inu stranu. Alebo to je javascript?
K tomu header(): Neda sa miesto toho pouzit nejaky iny html tag podobny <a href>, ktory automaticky prepne na inu stranku? Existuju napr. stranky, ktore automaticky po nejakom case prepnu na inu stranu. Alebo to je javascript?
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
da sa pouzit nejaky meta tag. uz to tu na fore bolo takze nepisem to znova.
a v com bola chyba v tom skripte? no select do databazy bol opvlyvneny tym co zadal uzivatel. takze ak zadal to co som napisal, tak select vratil vsetkych prihlasenych uzivatelov a tym obisiel prihlasovaci skript. taka blbost, da sa to jednoducho opravit....
add to nosferatu: nie je dobre prejst vsetkych uzivatelov, je to neefektivne. mozme predpokladat, ze uzivatelske meno je unikatne. takze vyberieme len heslo podla mena a porovname. alebo sa na to da pouzit hash. zahashujes vstup a tak urobis select.
a v com bola chyba v tom skripte? no select do databazy bol opvlyvneny tym co zadal uzivatel. takze ak zadal to co som napisal, tak select vratil vsetkych prihlasenych uzivatelov a tym obisiel prihlasovaci skript. taka blbost, da sa to jednoducho opravit....
add to nosferatu: nie je dobre prejst vsetkych uzivatelov, je to neefektivne. mozme predpokladat, ze uzivatelske meno je unikatne. takze vyberieme len heslo podla mena a porovname. alebo sa na to da pouzit hash. zahashujes vstup a tak urobis select.
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
A mohol by si mi prosim ta napisat nejaky jednoduchy skriptik? Cize ak mam v stranke prva.php ulozenu premennu $cislo a potrebujem ju dostat do stranky druha.php. Co ma byt ulozene v prva.php a druha.php? Je to jedno, ked je prechod z prva.php do druha.php cez <a href> alebo location()?mastermind napísal:premenu mozes poslat cez url, post, session, cookie. z formulara len get a post.
premennú cez get pošleš jednoducho..
..niekedy je dobré keď niečo posielaš cez get zakódovať, stačí base64 abo niečo podobné aby sa ti to nedoondilo..
premennú cez post rovnako, sic trochu inak..
ak si cel niečo iné, tak sry 
Kód: Vybrať všetko
<?
//prva.php
$cislo="123";
echo ("<a href=\"druha.php/?cislo=".$cislo."\" target=\"_parent\">Prepni</a>
?>
Kód: Vybrať všetko
<?
//druha.php
if(!empty($_GET["cislo"]))
{
$cislo=$_GET["cislo"]
echo $cislo;
}
?>
premennú cez post rovnako, sic trochu inak..
Kód: Vybrať všetko
<?
//prva.php
$cislo="123";
?>
<form method="post" action="druha.php">
<input type="hidden" name="cislo" value="<? echo $cislo;?>">
<input type="submit" value="Prepni">
</form>
<?
?>
Kód: Vybrať všetko
<?
//druha.php
if(!empty($_POST["cislo"]))
{
$cislo=$_POST["cislo"]
echo $cislo;
}
?>