Poslao: 04 Feb 2007 02:40
|
offline
- igor86
- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
@Rastafarii
Pogledaj, kada se pokusas ulogovati, da li ti unutar Cookies-a ostaje PHPSESSID.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 04 Feb 2007 03:25
|
offline
- Pridružio: 07 Okt 2006
- Poruke: 34
- Gde živiš: Zrenjanin
|
Ako si ovo stavio na pocetku svake strane :
Rastafarii ::
odnosno, sve ono sto bi trebalo da stavis na vrh svake stranice:
<?php
session_start();
$username=$_SESSION['username'];
$password=$_SESSION['password'];
if ($username != "" and $password != "") {
$respass = mysql_query("SELECT password FROM ime_tabele WHERE username='$username'");
$row = mysql_fetch_array($respass);
if ($password != $row{'password'}) {
echo "<script>location.href='login.php';</script>";
die();
}
}
else {
echo "<script>location.href='login.php';</script>";
die();
}
?>
U oba slucaja redirekcija je na login.php i stalno ce te vracati na tu stranu.
Druga stvar. Zar nebi trebao na pocetku da proveris da li postoje sesije :
if (isset($_SESSION['username'] AND $_SESSION['password']))
{
pa tek onda da radis proveru iz baze.
Ovako za bilo koga ko pristupi toj strani kreira se nova sesija i ponovo ga vraca na login.php
|
|
|
|
Poslao: 04 Feb 2007 04:56
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Citat:@rastafarii: zar ti nije logicnije da se zapitas da nije greska do "tebe" a ne do browsera, jer ti browser na svemu ostalom radi normalno, a samo na tom jednom primeru ne..
Nisam ja ni pomislio da je GRESKA do browsera, nego da se razlikuje interpretiranje, a znam da je IE takav kakav je... Ono sto sam ja rekao je da FF ima problema sa tim, i da ne znam zasto. To sto si ti rekao jeste jedna od solucija, koja je usput vrlo verovatna.
Dopuna: 04 Feb 2007 4:56
@taksistaZR: naravno da je redirekcija u oba slucaja na istu stranu, kad su oba slucaja pogresna. Pravi sadrzaj stranice ide ispod toga.
@igor86: proverio sam, nema
@all: izvalio sam gde je greska (ipak je meni optimalno radno vreme od 02 - 06 AM ). Problem je bio u tome sto sam pokusavao da izvucem podatke iz sesija koje jos uvek nisam setovao...
Tacan kod:
<?php
session_start();
$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($dbname, $connect) or die(mysql_error());
if (isset($_POST['logmein'])) {
$usr_pass = md5($_POST['password']);
$usr_user = $_POST['username'];
$respass2 = mysql_query("SELECT password FROM ime_tabele WHERE username='$usr_user'");
$row = mysql_fetch_array($respass2);
if ($usr_pass == $row{'password'}) {
$_SESSION['username'] = $usr_user;
$_SESSION['password'] = $usr_pass;
echo "<script>location.href='index.php';</script>";
die();
}
else {
echo "<script>location.href='login.php';</script>";
die();
}
}
$username=$_SESSION['username'];
$password=$_SESSION['password'];
if ($username != "" and $password != "") {
$respass = mysql_query("SELECT password FROM ime_tabele WHERE username='$username'");
$row = mysql_fetch_array($respass);
if ($password != $row{'password'}) {
$_SESSION['username'] = "";
$_SESSION['password'] = "";
echo "<script>location.href='login.php';</script>";
die();
}
}
else {
echo "<form action='login.php' method='post'><input type='text' name='username' value='username' onfocus=\"document.forms[0].elements[0].value=''\"><br><br><input type='password' name='password' value='password' onfocus=\"document.forms[0].elements[1].value=''\"><br><br><input type='submit' name='logmein' value=\"Pristupi\" ></form>";
die();
}
?>
Provereno i radi i u FF. Tek sad mi nije jasno kako je IE radio sa sesijama koje se ponistavaju prilikom logina, i to pre nego sto se podese...
|
|
|
|
Poslao: 04 Feb 2007 05:41
|
offline
- Pridružio: 07 Okt 2006
- Poruke: 34
- Gde živiš: Zrenjanin
|
Sad tek videh da je onaj poslednji else vezan za prvi if ... ok onda.
|
|
|
|
Poslao: 04 Feb 2007 11:05
|
offline
- Blood
- Ugledni građanin
- Pridružio: 26 Jul 2003
- Poruke: 384
- Gde živiš: Beograd
|
Rastafarii ::
odnosno, sve ono sto bi trebalo da stavis na vrh svake stranice:
<?php
session_start();
$username=$_SESSION['username'];
$password=$_SESSION['password'];
if ($username != "" and $password != "") {
$respass = mysql_query("SELECT password FROM ime_tabele WHERE username='$username'");
$row = mysql_fetch_array($respass);
if ($password != $row{'password'}) {
echo "<script>location.href='login.php';</script>";
die();
}
}
else {
echo "<script>location.href='login.php';</script>";
die();
}
?>
Ovde je greska u kodu. Ova linija:
$row = mysql_fetch_array($respass);
posto nisi stavio unutar while petlje, nikad nece vratiti $row['password']; vec ce vratiti samo prvu vrednost a to je $row[1]; e sada, ili je ubaci u while petlju, ili ono mysql_fetch_array() promeni u mysql_fetch_assoc()
|
|
|
|
Poslao: 04 Feb 2007 12:35
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
@Blood: ne znam da li je tu greska, ali meni vraca $row{'password'} i sve radi kako treba, nakon sto sam na login.php zamenio redosled setovanja sesije (ako je kliknuto na "ulogujte se") i provere da li je sesija setovana...
|
|
|
|
Poslao: 04 Feb 2007 15:08
|
offline
- Blood
- Ugledni građanin
- Pridružio: 26 Jul 2003
- Poruke: 384
- Gde živiš: Beograd
|
hm, bem li ga, desavalo mi se par puta da zeza sam mysql upit, da trazi navodnike, probaj ovako
$respass = mysql_query("SELECT `password` FROM `ime_tabele` WHERE `username`='".$username."'");
Dopuna: 04 Feb 2007 15:08
isto tako probaj malo drugaciji pristup:
$respass = mysql_query("SELECT `id` FROM `ime_tabele` WHERE `username`='".$username."' AND `password`='".$password."'");
if(mysql_num_rows($query) == 0) {
header("Location: login.php");
}
|
|
|
|
Poslao: 04 Feb 2007 15:57
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
@Blood: covece rekao sam da radi bez problema... problem je bio u pogresnom rasporedu php koda... Nije ni do upita ni do navodnika nego u tome sto sam pokusavao da proverim sesije pre nego sto ih setujem... Inace, query savrseno radi, sa tim nikada nije bilo problema...
I dalje mi nije jasno kako je IE radio sa tim...
|
|
|
|
Poslao: 04 Feb 2007 15:58
|
offline
- Pridružio: 07 Okt 2006
- Poruke: 34
- Gde živiš: Zrenjanin
|
@Blood : $row = mysql_fetch_array($respass) ne mora unutar petlje posto query daje samo jedan rezultat
@Rastafarii : Sad sam probao kod na brzinu, kod mene login radi, ali pristup stranama sa onim kodom ne radi ni na FF ni na IE. Mozda je u pitanju neko podesavanje sa sesijama u mom php.ini ... pogledacu kasnije.
|
|
|
|
Poslao: 04 Feb 2007 16:35
|
offline
- Pridružio: 19 Jan 2005
- Poruke: 286
- Gde živiš: Tamo daleko,tj.Beograd City
|
@blood
$row = mysql_fetch_array($respass) ,heh i ja isto ovako pisem,i ako ima samo jedan rezultat,jbg navika,
@Rastafarii ,heh ja i dalje nerazumem kako IE uopste funkcionise ,nebih da lupam,al bas mislim da je radio zbog niske bezbednosti,ja iskreno nisam imao vremena da se igram s ovim codom,jer stvarno sad imam mnogo obaveza (izlasci,pijancenje,treninzi,ucenje i naravno zene L) ),tako da ste me spaliti ,e da,vec kad spomenuh zene,juce sam video enu iz VB,nije nista posebno,doduse ima dobru guzu ,steta sto je kod nje bio i marko
btw kako mogu da posaljem sakriveno polje preko post-a,hocu da npr
echo "<a href= 'index.php?act=izmeni&id' " , mogao bi to da posaljem uz get,al ce se videti ime table u kojoj se menjaju podaci,sto ne bih zeleo,a na drugoj strani bi "vatao" podatke
$id=$_GET['id'];
$tabela=$_POST['tabela'];
i slao bi ih u query
|
|
|
|