Autor Zpráva
BlackMartin
Profil
Mám tento kód, ale pokaždé když do formuláře vložím nějaké údaje ( i správné ) tak mě to pokaždé přesměruje na http://$homepage/ nikoliv na post_news.php po vložení správných údajů.
Jo a mimochodem po přesměrování na http://$homepage/ se mi ani nezobrazí alert.

Nevíte kde dělám chybu ? Děkuju za pomoc.

<?php

session_start();
ob_start();
require ("header.php");
if(isset($_POST["login"])){
  $name = $_POST["login"];
  $password = $_POST["password"];
  $pass = md5($password);
    $query = MySQL_Query("SELECT * FROM `users` WHERE `username` = '$name' and `password` = '$pass' and `rank` = '10'") or die (mysql_error());
      $vysledek = Mysql_Fetch_Array($query);
        if($vysledek==TRUE){
        session_register("sign");
        session_register("login");
        session_register("id");
        $_SESSION["sign"] = 1;
        $_SESSION["login"] = $vysledek["username"];
        $_SESSION["id"] = $vysledek["id"];
        $location1="./post_news.php";
        header("location: http://$location1/"); 
        }
        else{
          
          echo "<script language=\"javascript\" type=\"text/javascript\">alert('Zadal jsi špatné údaje'); </script>";
          header("location: http://$homepage/");
        }
    mysql_free_result($query);
}else{
  echo "<br> Musíte zadat všechny údaje!";
}
ob_end_flush();
?>
BetaCam
Profil
Dej si tam
header('location: hxxp://'.$homepage.'/');
BetaCam
Profil
Místo HXXP si dej HTTP
BetaCam
Profil
Jo a za přesměrování si dej

exit;
BlackMartin
Profil
Stejně to nepomohlo.
Tedka mě to přesměruje na http://\'.martindeveloper.ic.cz.\'/ čili "Server nelze nalézt" ;-)
BetaCam
Profil
Tak tam dej jenom

header('location: '.$homepage);
BlackMartin
Profil
Ale tady se nejedná o přesměrování, ale o to se že nesplní podmínka if($vysledek==TRUE) ale provede se
else{
echo "<script language=\"javascript\" type=\"text/javascript\">alert('Zadal jsi špatné údaje'); </script>";
header("location: http://$homepage/");
}
BetaCam
Profil
Ale tady se nejedná o přesměrování, ale o to se že nesplní podmínka if($vysledek==TRUE) ale provede se

No a čim to asi bude??? Že by tim, že Mysql_Fetch_Array() nikdy nevrací TRUE???

Mysql_Fetch_Array() vrací pole př úspěchu a FALSE při selhání. Takže si tu podmínku napiš jinak. Možností je nespočet od if($vysledek != FALSE) až po if(is_array($vysledek)). Než napíšeš nějakou podmínku zkontroluj si jestli opravdu tato podmínka může někdy nastat.
BlackMartin
Profil
OK díky, už mi to funguje jenže mám zase problém stím že když zadám správné jméno a nesprávné heslo tak mě to přesto přihlásí ...
avaranger
Profil
Zeptej se tam na
mysql_numrows()
a to ti vrati pocet radku ve vysledku - kdyz 0, tak je heslo nebo jmeno spatne :)
BlackMartin
Profil
Hmm tak nic, ikdyž tedka zadám správné údaje tak mě to nepřihlásí.
Tu podmínku jsem napsal if(mysql_num_rows($vysledek)!=0)
BetaCam
Profil
BlackMartin

No tak ti ten dotaz nic nevrátí. Takže bud máš špatný heslo, jméno a nebo rank. Ověř si jestli opravdu existuje takoví uživatel, který splní podmínku tvého query.
BlackMartin
Profil
Na 100% je dobré jak jméno tak i heslo a rank též.
Takže nevím kde je chyba.
BetaCam
Profil
BlackMartin
Měl by sis trochu přečíst manuál. Kdyby si to udělal věděl by si kde máš chybu.

$query = MySQL_Query("SELECT * FROM `users` WHERE `username` = '$name' and `password` = '$pass' and `rank` = '10'") or die (mysql_error());
$vysledek = Mysql_Fetch_Array($query);
  if(mysql_num_rows($vysledek)!=0)


tohle je totiž blbost. Cpeš funkci mysql_num_rows() něco co neočekává. mysql_num_rows() stejně jako mysql_fetch_array() očekává Resource, ale ty jí cpeš pole. Tvá podmínka by tedy měla vypadat například takhle :

$query = MySQL_Query("SELECT * FROM `users` WHERE `username` = '$name' and `password` = '$pass' and `rank` = '10'") or die (mysql_error());
  if(mysql_num_rows($query)!=0)


Doporučuju ti, když chceš začít používat nějakou funkci přečti si v manuálu jak se používá, co vrací a co očekává.
BlackMartin
Profil
Ano, příště se podívám do manuálu.
Děkuji moc za rady už to funguje.
Děkuji moc všem.

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: