Hei, ajattelin kysyä että miten voin saada tietyn sivun suojatuksi niin, että käyttäjän pitää olla kirjautunut sisään ennenkun voi mennä sivulle?
käytän tätä järjestelmää: https://www.ohjelmointiputka.net/koodivinkit/
Siellä kerrotaan ihan selvästi.
Eli lisään tuon koodin vain sivuuni niin pitäisi toimia?
Tee testinä samaan kansioon ylaosa.php tiedosto kanssa tiedosto nimeltä testi.php. Tallenna tuo sinne, ja mene sille sivulle.
kyllä toimii, mutta entä jos on vaikka sivu nimeltä "pelit" niin miten liitän sen niin että se pelit sivusto näkyy sitten vasta kun tyyppi on kirjautunut sisään
No siis tuo $user muuttujahan sisältää tiedon siitä onko kirjauduttu sisään vai ei. Eli kaikki minkä halutaan näkyvän vain jos on kirjauduttu sisään täytyy panna ehtolauseen sisään, jonka ehtona on että $user-muuttuja on true. Eli näin:
<?php if($user){ //tähän sitten vaikka se pelit-sivusi } ?>
Edit: Jos siis haluat semmoista, että koko sivulle ei pääse niin täytyy käyttää joko htccaccesia, tai sitten vain panna elseen header("Location:joku.php"), jolloin käyttäjä ohjataan toiselle sivulle.
Eli, onko sellaista, koodia että se tarkistaa onko kirjaudutta vai ei ja sitten jos on kirjauduttu, se menee sivulle: pelit.php ja jos ei niin se menee: kirjauduensin.php
Siis näin:
Paitsi että ylaosa.php luultavasti tulostaa jo jotain, jolloin header ei toimi. Siinä tapauksessa headerin voi korvata tällä:
Hex kirjoitti:
Eli, onko sellaista, koodia että se tarkistaa onko kirjaudutta vai ei ja sitten jos on kirjauduttu, se menee sivulle: pelit.php ja jos ei niin se menee: kirjauduensin.php
<?php include("ylaosa.php"); if($user) { header("Location: pelit.php"); } else { header("Location: kirjauduensin.php"); } ?>
...mutta tällä tavoin käyttäjä pääsee pelit.php-sivulle kirjoittamalla osoitekenttään pelit.php. Eli pelit.php-tiedostoon tuo jo123:n antama koodi.
Metabolix kirjoitti:
Paitsi että ylaosa.php luultavasti tulostaa jo jotain...
Pakko myöntää etten ollenkaan tarkistanut koodivinkkiä. Oletin vain, että ylaosa.php ei tulosta mitään, vaan sisältää itse kirjautumisen tarkistamisen yms. =)
<?php include("ylaosa.php"); if($user) { <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Pelit</title> </head> koodia.. </body> </html> } else { echo "<h1>Kirjaudu ensin!</h1>\n"; echo "<p>Sivu on vain kirjautuneiden nähtävillä. <a href='kirjaudu.php'>Kirjaudu ensin</a> tai <a href='rekisteroidy.php'>luo uusi tunnus</a>.</p>\n"; } ?>
tämäkö on siis se koodi millä tämän pitäisi ratkaista..
Ei PHP:tä ja HTML:ää sotketa noin... Lisäksi, ei kannata kysyä täältä että menikö se näin vaan koita sitä mitä luulet.
<?php include("ylaosa.php"); if($user) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Pelit</title> </head> koodia.. </body> </html> <?php } else { echo "<h1>Kirjaudu ensin!</h1>\n"; echo "<p>Sivu on vain kirjautuneiden nähtävillä. <a href='kirjaudu.php'>Kirjaudu ensin</a> tai <a href='rekisteroidy.php'>luo uusi tunnus</a>.</p>\n"; } ?>
mutta eikö toi ole mahdollista että ton kirjaudu ensin tekstin sijaan laittaisi sen headerin mikä menis sinne kirjauduensin.phplle?
Hex kirjoitti:
mutta eikö toi ole mahdollista että ton kirjaudu ensin tekstin sijaan laittaisi sen headerin mikä menis sinne kirjauduensin.phplle?
Kyllä jos et ole tulostanut ennen sitä headeria yhtikäs mitään...
Kyllä se silti onnistuu, jos sivun alussa on se ob_start() kuten mainitsin ylempänä. Laita sen echo-rivien tilalle siihen header("Location: sivun_osoite.php");
.
Macro kirjoitti:
Kyllä se silti onnistuu, jos sivun alussa on se ob_start()
Tuo tapa on vaan hieman kyseenalainen ja kun suunnittelee vain sivun oikein, niin myös täysin hyödytön. Tietenkin voi olla joitain ihmetapauksia, jossa saattaa oikeasti olla hyötyöä puskuroinnista (siis tämän kyseisen asian kanssa).
Jos aloittaja ei aikaisempien viestien perusteella osannut laittaa headeria siirtämään käyttäjän toiselle sivulle, niin silloin on helpompi laittaa ob_start() alkuun kuin alkaa säätämään mitään ihmeellisyyksiä.
Macro kirjoitti:
Jos aloittaja ei aikaisempien viestien perusteella osannut laittaa headeria siirtämään käyttäjän toiselle sivulle, niin silloin on helpompi laittaa ob_start() alkuun kuin alkaa säätämään mitään ihmeellisyyksiä.
Olet oikeassa =)
onko mahdollista niin, ettei sinne ylhäälle tulisi sitä loginform palkkia,
Macro kirjoitti:
Tuon viimeisenkin php-pätkän voi siirtää body-tagien sisälle ja typistää pelkkään else {?> html <?php }
.
Macro kirjoitti:
Jos aloittaja ei aikaisempien viestien perusteella osannut laittaa headeria siirtämään käyttäjän toiselle sivulle, niin silloin on helpompi laittaa ob_start() alkuun kuin alkaa säätämään mitään ihmeellisyyksiä.
Ehkä hieman liioittelua kutsua kaiken koodin siirtämistä sivun alkuun "ihmeellisyydeksi". Toki tässä pitää edellä mainitun operaation jälkeen miettiä, että mitenkäs sitten sivun keskellä tulostellaan niitä muuttujien arvoja, mutta ei sekään mitään teoreettista fysiikkaa ole.
Hex kirjoitti:
onko mahdollista niin, ettei sinne ylhäälle tulisi sitä loginform palkkia
Kyllä on. Etsi se tiedosto tai kohta koodista, joka tuon palkin sinne tulostaa, ja poista kyseinen tulostus.
Aihe on jo aika vanha, joten et voi enää vastata siihen.