• 30 odgovora
  • 7.072 pregleda
Pomoc oko redirekcije i login skripte 30.01.2009. u 23:22 · pre 215 meseci #1
Cao svima! Vidim da ima dosta tema u vezi sa redirekcijom i login skriptama, ali nigde nisam nasao resenje za moj problem...
Imam zadatak da napravim web aplikaciju koja implementira AJAX i PHP. Posto sam pocetnik u PHP-u (mada ne toliki kao pre 2 nedelje :-)) treba mi mala pomoc...

1. Login radim preko sesija, a ukoliko korisnik zeli (remember me) moze i da se postavi kuki koji pamti user i pass. To sve radi ok. Medjutim kad hocu da se posle uspesnog logina redirektujem na stranicu sa koje sam pristupio loginu (tj. prethodnu) prikazuje mi ispis "Vec ste ulogovani, user. Odjavite se..." Za login na prethodnu sam koristio HTTP_REFERER. Kad stavim da se redirektuje explicitno na bilo koju stranicu (na pr. header ( location: "index.html"); sve radi super... Kako da resim ovaj problem?

2. Ovo je sitniji problem, ali mislim da cu izgubiti puno vremena ako trazim po netu, pa... Naime, ako je korisnik prethodno cekirao remember me (tj. postavio kuki za user i pass), hocu da mi to automatski ispise u odgovarajuca polja na formi. To sam uradio metodom echo() i to radi savrseno. Medjutim ako korisnik nije napravio kuki (tj. nije hteo da ga sistem zapamti) onda mi u polju user vraca \ a u pass verovatno isto \ ali se ne vidi zbog *... Zasto to i kako da ispravim da mi vrati blanko polja? Pretpostavljam da to ima veze sa stripslashes()??

Molim da mi neko kaze kako da ispravim kod jer sam se malo umorio od pretrazivanja :-) Hvala svima unapred.

login.php
Code:

<?php session_start(); ?>
<html>
<head>
<title>Login</title>
<style type="text/css">
<!--
.style1 {color: #FF0000}
-->
</style>
</head>
<body>

<?php
include "connection.php";

if (!isset($_COOKIE['ck_user']) || !isset($_COOKIE['ck_pass'])){
    $user = $_POST['username'];
    $password = $_POST['password'];
}else{
    $user = $_COOKIE['ck_user'];
    $password = $_COOKIE['ck_pass'];
}

$upit = "SELECT * FROM users WHERE username = '$user' AND password = '$password'";
 
if (!isset($_SESSION['user'])){
?>
    <form action="login.php" method="post" name="login">
      <table width="0" border="0" align="center" cellpadding="4" cellspacing="4">
        <tr>
          <td colspan="2"><h2>Login</h2>
          <hr></td>
        </tr>
        <tr>
          <td width="113">Korisni&#269;ko ime:</td>
          <td width="270"><input name="username" type="text" class="polje" id="username" value=<?php echo($user); ?> /></td>
        </tr>
        <tr>
          <td>Lozinka:</td>
          <td><input name="password" type="password" class="polje" id="password" value=<?php echo($password); ?> /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><p>
              <input name="remember" type="checkbox" id="remember" value="da">
            Zapamti me <span class="style1">(kola&#269;i&#263;i moraju biti omogu&#263;eni) </span></p>
          </td>
        </tr>
        <tr>
          <td><div align="center">
          </div></td>
        <td><p>
          <input type="submit" name="submit" class="dugme" id="submit" value="Prijavi me" />
        </p>
          </td>
        </tr>
        <tr>
          <td colspan="2"><hr>        <p>Niste registrovani? Registrujte se <a href="register.php">ovde</a>. </p>
          </td>
        </tr>
      </table>
    </form>
    <?php
    if (isset($_POST['submit'])){
        $result = mysql_query($upit);
        if ($result AND mysql_num_rows($result)==1){
            header("location:" .$_SERVER['HTTP_REFERER']);
        
            $red = mysql_fetch_array($result);
            
            $_SESSION['user']=$user;
            $_SESSION['pass']=$password;
                        
            if ($_POST[remember] == "da")
            {
                setcookie("ck_user", $user, time()+120);
                setcookie("ck_pass", $password, time()+120);
            }
        
        }else{
            die("Uneli ste pogre&scaron;no korisni&#269;ko ime ili lozinku.");
        }
    }
}
else{
echo ('Ve&#263; ste ulogovani, ' . $_SESSION['user'] . '.');
?>
    <a href="logout.php">Odjavite se...</a>
<?php
}

mysql_close($db);
?>

</body>
</html>
Re: Pomoc oko redirekcije i login skripte 31.01.2009. u 15:27 · pre 215 meseci #2
PHP tebi kao HTTP_REFERER vraca login.php, a sesija ti je vec postavljena, tako da ti javlja tu gresku.
Ako hoces da te vrati na str. index.php, na primjer, onda moras taj parametar da proslijedis skripti preko URLa. Recimo, na index.php da ti stoji:
<a href="login.php?str=index.php">Login</a>
Pa onda da vidis sta ti je $_GET["str"] u login.php, vrsis provjeru, i kad se korisnik loguje ti ga posaljes na tu stranicu.
Mislim da je u ovome problem, ali nisam siguran jer nisam imao vremena detaljno da pogledam kod.

Za taj drugi problem, jednostavno provjeri jel' cookie postavljen.
Code:
if(isset($_COOKIE["ck_user"])) {  echo $_COOKIE["ck_user"]; } else { echo ""; }
Potpis
“I never think of the future - it comes soon enough.” - Albert Anštajn (Albert Einstein)
Re: Pomoc oko redirekcije i login skripte 31.01.2009. u 19:38 · pre 215 meseci #3
1. Ok, hvala na odgovoru. To mi radi kako si napisao. Jedino sto sam ja hteo da me dinamicki vraca na stranu na kojoj sam prethodno bio... Tj da me ne vraca na jednu te istu stranu uvek, vec nekako da mu prosledim naziv svake strane posebno. Cini mi se da bi se te moglo uraditi preko f-ja $_SERVER['PHP_SELF'] i $_SERVER['SERVER_NAME'] koje bi se ubacile kao promenljive u adresu linka tj. u str... Probao sam nesto ali ne ide :-(

2. Ovo drugo resenje sam i ja probao ali ne ide. Opet mi vrati '\' i u user i u pass. A pazi sad ovo, ako umesto praznog stringa ukucam neki drugi, vratice mi taj string onako kako sam ga uneo bez '\' ?!

Code:
<?php if(isset($_COOKIE["ck_user"])) {  echo $_COOKIE["ck_user"]; } else { echo "blabla"; } ?>


znaci u polje user mi vraca 'blabla'. Znaci da kod ipak radi, ali kako da se oslobodim '\' ?

3. I jos jedno pitanje... Posto pri izradi sajta koristim template (dreamweaver), da li mogu da stavim PHP kod na templejt a da se on izvrsava na svakoj stranici? Hocu da ubacim npr. kod za login koji ce se videti na svakoj strani ako user nije ulogovan, a ako jeste onda da mu ispise poruku (Dobro dosao, user.) i ponudi mu link za odjavu...
Re: Pomoc oko redirekcije i login skripte 01.02.2009. u 00:00 · pre 215 meseci #4
Posto radis POST na login.php, kada se uspesno logujes $SERVER['HTTP_REFERER'] je sada login.php pa te opet vrati na login.php ali sada sa postavljenom sesijom.

jedno od resenja bi bilo da pamtis stranicu sa koje se stiglo na login.php


Code:

<?php session_start(); ?>
<html>
 
...

<?php

$referer = parse_url($_SERVER['HTTP_REFERER']);

if ($referer['path'] != $_SERVER['PHP_SELF'])
{
    $_SESSION['referer'] = $referer['path'];
}

include "connection.php";
...
...
...
    <?php
    if (isset($_POST['submit'])){
        $result = mysql_query($upit);
        if ($result AND mysql_num_rows($result)==1){
            header("location:" . $_SESSION['referer']);
        
...
...



2. stavi navodnike u html

Code:
  value="<?php echo $user; ?>"






[Ovu poruku je menjao namesnik dana 01.02.2009. u 01:18 GMT+1]
Re: Pomoc oko redirekcije i login skripte 01.02.2009. u 14:14 · pre 215 meseci #5
@ namesnik
Tnx, sve radi! Za 2. sam znao da je neka sitnica u pitanju a ja lupam glavu ceo dan...

Imam novu misteriju za resiti :-) Probao sam da na template strani postavim php skriptu koja ce, u zavisnosti od toga da li je korisnik prijavljen ili ne, ispisivati poruku Dobro dosao, user. LOGOUT odnosno Niste ulogovani. LOGIN (sa odgovarajucim linkovima ka login.php i logout.php naravno). Ja sam to uradio na sledeci nacin, a s obzirom da sam pocetnik negde sam pogresio...

Code:

 ......        </td>
        <td width="370" valign="middle"><div align="right"><p>
        </p></p>
    
<?php

if(!isset($_SESSION['user']) || !isset($_SESSION['pass']))
{
    echo "Niste ulogovani.";
    ?>
    <a href="login.php">LOGIN</a>
    <?php
} else{
    echo "Dobro dosli, " . $_SESSION['user'];
    ?>
    <a href="logout.php">LOGOUT</a>
    <?php
}
?>

        
        </p>
          </div></td>
        </tr>
    </table>      
      <div align="center"></div>
    <!-- TemplateBeginEditable name="MainEddReg" --><!-- TemplateEndEditable --></td> ......
 


Ispisuje mi samo LOGIN LOGOUT i to u isto vreme, sto znaci da uopste ni ne ulazi u petlju. Verovatno ima neke veze sa interpretiranjem php koda u templejtu...
Ako neko ima ideju, sad je dobro dosla :-)
Re: Pomoc oko redirekcije i login skripte 01.02.2009. u 15:45 · pre 215 meseci #6
ne izvrsava ti se php zbog toga ti ispisuje oba linka, prebaci taj template na server pa ga pogledaj, ne moze samo open with browser.

Re: Pomoc oko redirekcije i login skripte 01.02.2009. u 23:31 · pre 215 meseci #7
@namesnik
I ja sam skontao da se ne izvrsava, cak i dok ga kucam ne boji mi kod (pocetak, promenljive, metode...) vec sve ispisuje istom bojom, pa sam i u toku pisanja pretpostavio da nece raditi...
Sajt radim u lokalu, na Apache web serveru (wamp), i fajlove menjam direkno u root-u servera, tj u C:\wamp\www\moj_sajt, tako da svaki put kad menjam templejt, ustvari radim ono sto si mi predlozio, zar ne? Ako sam dobro skapirao... Jel imas jos neku ideju?
Re: Pomoc oko redirekcije i login skripte 02.02.2009. u 13:16 · pre 215 meseci #10
Sta kako da izvedes, da renamujes fajlove u .php?
Mozes da podesis server da parsira .html fajlove (sad je pitanje dal ce ti host to dozvoliti)
ili mozes html fajlove renamovati u .php
Iskreno, nikad prakticno nisam videeo da neko programira u php-u sa .html extenzijom.
A mozda mozes taj deo koji ti je potreban ubaciti u iframe ili ajaxom ubaciti sadrzaj samo tog dela u html
Potpis
http://norway.dakipro.com/
Re: Pomoc oko redirekcije i login skripte 02.02.2009. u 13:41 · pre 215 meseci #11
Citat:
kebba: @ namesnik
Imam novu misteriju za resiti :-) Probao sam da na template strani postavim php skriptu koja ce, u zavisnosti od toga da li je korisnik prijavljen ili ne, ispisivati poruku Dobro dosao, user. LOGOUT odnosno Niste ulogovani. LOGIN (sa odgovarajucim linkovima ka login.php i logout.php naravno). Ja sam to uradio na sledeci nacin, a s obzirom da sam pocetnik negde sam pogresio...


Eto to sam hteo da uradim, svejdeno kako, samo da proradi... Kao sto rekoh sajt mi radi u lokalhostu. Fajl na koji sam hteo da postavim php kod je template.dwt (dakle nije .html u pitanju), klasican template u DW. Kao sto je i namesnik rekao, mora da bude .php extenzija fajla da bi parsirao (sto sam ja skroz bio zaboravio).

Mogao bih da dodam jos jedan editable region u tamplate i da kod uglavim na svaku stranu, ali to mi je bezveze. Sta da imam par desetina strana... Ova ideja sa AJAX-om mi deluje ok, ali bih morao to da istrazim jos... Sta je iFrame?

Dajte jos neke predloge...
Re: Pomoc oko redirekcije i login skripte 20.02.2009. u 20:07 · pre 215 meseci #13
E da malo digem temu iz mrtvih... Nije me bilo dugo, ali to zato sto sam bio zaokupljen drugim stvarima. Dobra vest je da mi je aplikacija proradila kako sam hteo i dobio sam 10-ku :-) stoga se zahvaljujem svima koji su ucestvovali u resavanju problema.
Sada bih hteo da je jos malo prosirim, pa imam jedno pitanje za strucnjake: Da li kroz URL (preko GET metode) moze da se posalje instanca objekta?
Objasnjenje: hteo bih da na jednoj strani izvrsim upit i napunim objekat, pa da ga preko URL-a posaljem drugoj strani i da tamo koristim podatke.
Pozz svima
Re: Pomoc oko redirekcije i login skripte 20.02.2009. u 20:56 · pre 215 meseci #15
Pitam se kako li bi izgledao taj url kad bi se u njemu nalazila instanca nekog objekta... :) Ne verujem da je tako neshto moguce.

Mada kroz sesiju sigurno mozhe da prodje. Probaj...
Re: Pomoc oko redirekcije i login skripte 22.02.2009. u 14:11 · pre 215 meseci #19
Provalio sam kako... Objekat treba da se serijalizuje, pa da se smesti u neku promenljivu u sesiji. Posle se vadi iz session promenljive i reverzibilnim postupkom dobija isti objekat...

Hm ali sad mi se pojavio drugi problem, ne vezan za klase... Na jednoj stranici dinamicki ispisujem podatke iz baze u okviru tabele. U poslednjoj koloni sam stavio akcije, tipa Preslusaj, Promeni, Obrisi... Problem se javlja kad hocu da ogranicim akcije u zavisnosti od nivoa pristupa korisnika. Na primer da samo administrator moze da menja i brise sadrzaj, registrovani da preslusa... Tabela se generise u while petlji, i cim pokusam da ubacim neki if iskaz u okviru nje automatski mi ispisuje samo prvi rekord iz tabele. Nemam ideju u cemu je problem, mozda od sume ne vidim drvece, pa ako neko moze da mi otvori oci :-) Evo koda:

Code:

//forma za pretragu
        ?>
        </p>
            <table width="538" border="1" cellpadding="5" cellspacing="2" style="text-align:center ">
            <tr>
            <td width="137"><div align="left"><b>Pesma</b></div></td>
            <td width="118"><div align="left"><strong>Izvodjac</strong></div></td>
            <td width="84"><b>Zanr</b></td>
            <td width="139" colspan=2 align=center><strong>Opcije</strong></td>
            </tr>
            <?php
            
        //ispisivanje rezultata u tabeli
        while($red = mysql_fetch_array($q))
        {
            ?>
            <tr>
            <td class="text"><div align="left" class="style2"><span class="style5"><?php echo $red["title"]?></span></div></td>
            <td class="text"><div align="left" class="style2"><span class="style5"><?php echo $red["artist"]?></span></div></td>
            <td class="text"><span class="style5 style2"><?php echo $red["genre"]?></span></td>
            <td>
            <?php
            //prilikom stampanja svakog reda iz tabele na kraju dodaj opciju za brisanje
            //poziva se isti fajl u kojem je skript, ali sa parametrima action i idpesme
            if(isset($_SESSION['user']) && isset($_SESSION['level'])){
                $song->id = $red["id"];
                $q = $song->select();
                $row = mysql_fetch_array($q);
                $putanja = $row['file'];
                echo "<a href='$putanja'><font color='#393939';>[Preslusaj]</font></a>";
                            
                if($_SESSION['level']==1){
                    echo "<a href=administration.php?action=obrisi&RbPesme=" . $red["id"] . "><font color='#393939';>[Obrisi]</font></a>";
                    echo "<a href=administration.php?action=izmeni&RbPesme=" . $red["id"] . "><font color='#393939';>[Izmeni]</font></a>";
                }
                
            }else{
                echo "<a><font color='#393939';>...</font></a>";
            }
            
            echo "</td>" . "</tr>";
            ?>
            <?php
        }
        ?>
        </table>
        <?php
    }


Objasnjenje: objekat $song je klase song koja ima metode za pretragu baze, akcije Obrisi i Izmeni su linkovi koji preko URL-a biraju akciju preko switcha iz tekuceg fajla (koji je implementiran u istom fajlu gde i tabela, ali nisam postavio kod jer je ranije radio, i mislim da je problem ovde negde). U sesiji se cuvaju podaci o korisniku user i level.
Re: Pomoc oko redirekcije i login skripte 22.02.2009. u 15:14 · pre 215 meseci #20
Chini mi se da je problem u tome shto ce ta promenljiva $q u prvom prolasku kroz petlju imati neku vrednost, a onda, ako se udje u taj prvi if, ti cesh njoj dodeliti neku drugu vrednost, ovde:
Code:

$q = $song->select();

I ona ce u sebi sadrzhati samo jedan red u rezultatu, poshto, ako sam dobro razumeo, ta funkcija select() ce vratiti samo jedan red na osnovu id-a pesme, pa ce se ta petlja vrteti josh samo jedan krug. Nazovi tu drugu promenljivu nekako drugachije, npr. $q1. :)

Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme