Hei,
Kopsasin sivuilleni ao linkissä olevan sovelluksen ja se toimii hienosti.
http://www.mvnet.fi/index.php?osio=Kotisivun_teko&sivu=Salasanasuojaus_PHPll%E4
Nyt haluaisin lisätä tälläisen toiminnon:
Käyttäjän kirjauduttua sivuille, hän ohjautuu esim. sivu.php. Tällä sivulla olisi käyttäjäntiedot näkyvissä, jotka hän rekisteröityessään on antanut: nimi, sukunimi, sähköposti, asuinpaikka, ikä yms. Olen saanut käyttäjätunnuksen/sähköpostin näkymään tällä:
<?php $salakoodi ="XXXXXX"; //Printtaa kuka on käyttäjä if ($_SESSION["accesslevel"] == "$salakoodi") { $kukakayttaa = $_SESSION["username"]; print ("<b>Omat tiedot</b>: "."$kukakayttaa"); } ?>
Mutta miten saisin tuohon näkymään käyttäjän muita tietoja? Varmasti ihan yksinkertainen ratkaisu, jota mä en osaa lisätä :(
Olen täysin aloittelija PHP:n ja MySQL:n osalta, joten pliis, puhukaa niin selkeästi kuin mahdollista. Kaikesta vinkkailusta on apua, kiitos jo etukäteen!
Mod. korjasi kooditagit!
Haet ensin käyttäjän kaikki (haluamasi) tiedot tietokannasta, jonka jälkeen tulostat ne haluamaasi muotoon sivulle. Tietojen hakeminen kannattaa varmaankin eristää omaan funktioonsa, josta sitä on helppo päivittää ja itse tulostava sivu pysyy oleellisesti selkeämpänä.
<?php function hae_kayttaja($id) { $kayttaja_q = db()->prepare("SELECT kayttajanimi, email FROM kayttajat WHERE id = ?"); $kayttaja_q->execute(Array($id)); $kayttaja = $kayttaja_q->fetch(); return $kayttaja; }
Itse sivulla sitten vain kutsut tuota funktiota käyttäjän id-numerolla, jonka olet kaiketi tallentanut evästeeseen / sessioon.
Koodi näyttää kylläkin käyttävän tekstitiedostoja, joten Teuron neuvo ei toimi (eikä muutenkaan toimisi suoraan). Joka tapauksessa koodi on yksi huonoimmista, joita olen vähään aikaan nähnyt, joten kannattaa todellakin etsiä jokin laadukkaampi kirjautumisjärjestelmä, jossa ehkä profiilisivukin olisi toteutettu valmiiksi.
Kiitoksia noistakin neuvoista, opin heti uutta, vaikka ilmeisesti ei ole nyt tähän hätään apuna.
Onko Metabolixilla vinkkejä, mistä sellaisen voisi löytää? Useimmat on "puoliksi tehtyjä", enkä osaa niitä vielä loppuun asti tehdä..
Ihan ensiksi pitää miettiä, mihin edes tarvitset tällaista järjestelmää ja mitä hyötyä on pelkästä kirjautumisesta, jos et osaa edes jatkokehittää sitä mihinkään suuntaan. Jos taas tarkoitus on opetella ohjelmointia ja saada joskus jotain tehtyä, koodin kopiointi ei ole siihen oikea tapa.
Tulee käyttöön virtuaalitallille, joten tuota koodia ei tarvitsisi kamalasti "laajentaa" ja tietoturvankaan ei tarvitse olla kovin korkea :) Tarkoitus on tosiaan opetella, ja opin HTML + css koodauksenkin kopioimalla ja muokkaamalla koodeista haluamani.
Toki opettelen tekemään myös alusta itse yksinkertaisempia koodeja, mutta nyt sattui olemaan tarvetta tälläiselle.
Millä tavalla koodi on huono? Tuleeko sen toimivuudessa olemaan ongelmia vai?
Olisi kyllä loistavaa, jos joku osaisi neuvoa, miten saisin nuo käyttäjäntiedot "profiilisivuun" (on kaikille sama sivu (osoite), mutta hakisi kannasta oikean käyttäjän tiedot).
Ajattar kirjoitti:
Millä tavalla koodi on huono?
No eihän nyt esim. tämä estä koodia toimimatta, mutta aiheuttaa aiheuttaa kyllä suunnattoman WTF -kohtauksen
print ("<b>Omat tiedot</b>: "."$kukakayttaa");
Jotenkin normaalimman näköinen olisi jompi kumpi seuraavista:
Mutta enemmän varmaan huonoudesta kieli tuollaisen salakoodi -muuttujan käyttäminen access leveliin. Sessiossa olevaan access leveliin olisi loogista laittaa joko numero tai enum joka kuvaisi käyttöoikeutta, ei mitään salakoodeja.
Ajattar kirjoitti:
Millä tavalla koodi on huono? Tuleeko sen toimivuudessa olemaan ongelmia vai?
Enemmänkin voisi kysyä, onko koodissa oikeastaan mitään hyvää (paitsi se, että se tuurilla ehkä näyttää vähän toimivan).
Kiitos paljon kommentoineille :) Luottaen viisaampiin luovun tuosta koodista.
Öh, löysin googlettelemalla tämän:
https://www.ohjelmointiputka.net/keskustelu/
Ja tuolla on Metabolixen kirjoittama koodi, saako sitä käyttää?
(En tosin ymmärrä, onko tuohon lisätty "uloskirjautuminen"?)
Lisäys: Ja onko sivuja, joihin käyttäjä kirjauduttuaan ohjautuu, suojattu mitenkään, vai pääseekö niihin vain menemällä kys. osoon? :D
Löytämässäsi keskustelussa ei oteta mitään kantaa sivujen suojaukseen, vaan kysymys on vain ja ainoastaan käyttäjän ohjautuksesta tietylle sivulle tunnuksen ja salasanan perusteella. Koodissa ei myöskään ole rekisteröitymistä, vaan kaikki käyttäjät on kirjattu koodiin valmiiksi. Siispä tuo koodi ei liity kysymykseesi millään tavalla.
Paremmin ehkä löytyy englanniksi etsimällä, tai voisit vain opetella itse tekemään, jos ei ole kauhea kiire. Mikä PHP:n versio palvelimella on? (echo PHP_VERSION;)
Metabolix kirjoitti:
Löytämässäsi keskustelussa ei oteta mitään kantaa sivujen suojaukseen, vaan kysymys on vain ja ainoastaan käyttäjän ohjautuksesta tietylle sivulle tunnuksen ja salasanan perusteella. Koodissa ei myöskään ole rekisteröitymistä, vaan kaikki käyttäjät on kirjattu koodiin valmiiksi. Siispä tuo koodi ei liity kysymykseesi millään tavalla.
Paremmin ehkä löytyy englanniksi etsimällä, tai voisit vain opetella itse tekemään, jos ei ole kauhea kiire. Mikä PHP:n versio palvelimella on? (echo PHP_VERSION;)
Tuo linkkaamani koodinpätkäkin voisi olla ihan passeli, rekisteröityminen ei ole mitenkään pakollinen, sillä käyttäjiä sivuilla on vain muutama (alle 5).
Versio on 5.3.18
Aihe on jo aika vanha, joten et voi enää vastata siihen.