Kuulostaa siltä, kuten TheFish sanoi, eli php-tagit puuttuu. Toinen mikä tuli mieleen, onhan palvelimella asennettuna php?Konstaduck wrote:Meillä on html:n puolella lomake, joka lähettää tietonsa login.php:eelle. Kun nimi ja salasasana on kirjoitettu, painetaan sitä kirjaudu nappia. Mutta login.php ei toimi toivotulla tavalla, ja selain avaa sen kuin minkätahansa tekstitiedoston.
PHP-ongelmat
Re: PHP-ongelmat
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: PHP-ongelmat
Tässä se tuli. Koodaan sivuja offlinessa, jotta voisin ne sitten lisätä palvelimen puolelle. Ja offlinessa ei siis onnistu testaus? Kyllä arkulta varmaankin PHP tuki löytyy, ja onhan ne tagitkin siellä oikealla paikallaan. Kokeilenpa lisätä sen palvelimen puolelle, katsotaan sitten uudestaanaxu wrote:Kuulostaa siltä, kuten TheFish sanoi, eli php-tagit puuttuu. Toinen mikä tuli mieleen, onhan palvelimella asennettuna php?Konstaduck wrote:Meillä on html:n puolella lomake, joka lähettää tietonsa login.php:eelle. Kun nimi ja salasasana on kirjoitettu, painetaan sitä kirjaudu nappia. Mutta login.php ei toimi toivotulla tavalla, ja selain avaa sen kuin minkätahansa tekstitiedoston.
Re: PHP-ongelmat
Ne PHP-tiedostot ei toimi maagisesti, ne pitää suorittaa palvelinohjelmiston ja/tai sen PHP-tulkin läpi.Jos linkität suoraan siihen tiedostoon, ei sitä suoriteta, vaan se on - noh, tavallinen tiedosto. Palvelin toki PHP:n tapauksessa hoitaa suorituksen automaattisesti tiedostopäätteen mukaan.
Re: PHP-ongelmat
Onneksi uusimman php:n mukana tulee yksinkertainen webbipalvelin, jonka avulla voi helposti kokeilla sivujen toimintaa omalla koneella. Sen pystyttäminen on helppoa:
- Lataa zippipaketti (5.4.1 thread safe) ja pura se: http://windows.php.net/download/
- Uudelleennimeä jompi kumpi mukana tulleista asetustiedostoista php.iniksi (itse laitoin php.ini-development)
- Aseta aikavyöhyke initiedostosta (lisää rivi "date.timezone = Europe/Helsinki" [Date] rivin jälkeen)
- Mukavuuden vuoksi luo pikakuvake php.exestä ja lisää pikakuvakkeen asetuksista käynnistysparametrit: -S localhost:80 -t htdocs (-S käynnistää serverin, localhost:80 käskee kuuntelemaan vain omalta koneelta tulevia pyyntöjä ja -t htdocs kertoo mistä haetaan tiedostot - nyt haetaan htdocs-nimisestä, voi olla joku muukin jos haluat).
- Käynnistä serveri pikakuvakkeella ja selaile osoitteeseen http://localhost/
Re: PHP-ongelmat
Helpompi ratkaisu sivujen kehittämiseen: Asenna WampServer, se sisältää Apachen (webbipalvelin), PHP:n, MySQL:n (tietokanta) ja helppokäyttöisen sovelluksen, jolla hallitset näitä kaikkia. Käyttö on helppoa.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: PHP-ongelmat
Kiitos kaikille auttaneille, tutustun noihin Webbipalvelimiin sitten myöhemmin, kunhan aikaa on. Toivottavasti niillä ratkeaa
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: PHP-ongelmat
Kirjautumisen kanssa on onkelmia. Tällä kertaa ollaan arkun puolella, joten webbipalvelimet jääköön unholaan.
Ote index.html:lästä, jossa kirjautuminen on:
Tässä näin login.php, joka sijaitsee siis DATA - alikansiossa.
Tän avulla siis tullaan hallinnoimaan. Sijaitsee index.html:lässä.
Ja tulos ei ole kehuttava, kas tässä:
Ote index.html:lästä, jossa kirjautuminen on:
Code: Select all
<Form Action="Data/login.php" Method="Post">
Käyttäjänimi: <Input type="text" name="Nimi" SIZE="20" MAXLENGTH="20" /><br>
Salasana: <input type="PASSWORD" name="Salasana" SIZE="24" MAXLENGTH="20" /><br>
<INPUT TYPE="submit" VALUE="Kirjaudu">
</form>
Code: Select all
<?php
//halutut tunnukset
$nimi="Haluttu_tunnus";
$salasana="Haluttu_Salasana";
//formilta tulleet tunnukset
$annettu_nimi=$_POST['Nimi']?$annettu_nimi:"";
$annettu_salasana=$_POST['Salasana']?$annettu_salasana:"";
//tarkistus
if($annettu_nimi==$nimi && $annettu_salasana==$salasana){
//toimenpiteet jos tunnukset täsmäävät
//tässää teemme käyttäjälle sessionin jolla tarkistamme että on sisällä
$_SESSION['login']=1;
}else{
//muuten näytetään väärin meni - teksti
echo "Väärin meni!"
}
?>
Tän avulla siis tullaan hallinnoimaan. Sijaitsee index.html:lässä.
Code: Select all
<?php
if ($_SESSION['login']==1;) {
echo "Tervetuloa: " + $nimi
}
?>
Re: PHP-ongelmat
Mitä ovat nuoKonstaduck wrote:tekstiä...
Code: Select all
?$annettu_nimi:"";
Code: Select all
$annettu_nimi=$_POST['Nimi']
Saattaa olla että olen väärässäkin (en kyllä koskaan ole nähnyt tommosta tapaa), mutta pisti silmään.
Re: PHP-ongelmat
Suosittelen vieläkin kuluttamaan muutaman minuutin siihen oman testipalvelimen pystyttämiseen, niin näkisit varsinaisen virheilmoituksenkin. Riviltä 19 puuttuu puolipiste rivin lopusta:Konstaduck wrote:Kirjautumisen kanssa on onkelmia. Tällä kertaa ollaan arkun puolella, joten webbipalvelimet jääköön unholaan.
Code: Select all
echo "Väärin meni!"
Code: Select all
//formilta tulleet tunnukset
$annettu_nimi=$_POST['Nimi']?$annettu_nimi:"";
$annettu_salasana=$_POST['Salasana']?$annettu_salasana:"";
Code: Select all
//formilta tulleet tunnukset
$annettu_nimi = isset($_POST['Nimi']) ? $_POST['Nimi'] : "";
$annettu_salasana = isset($_POST['Salasana']) ? $_POST['Salasana'] : "";
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: PHP-ongelmat
Joo, enpä tiedä mitä olen siinä yöllä tehnyt, ei pitäisi tehdä mitään yöllä
Sain sen nyt toimimaan. Ainut juttu on vaan se, että en halua, että selain avaa tyhjän PHP sivun (jos meni oikein), vaan se palauttaisi, menikö oikein jolloin voisimme siellä pääsivulla huomauttaa, jos vaikka meni väärin...
Sain sen nyt toimimaan. Ainut juttu on vaan se, että en halua, että selain avaa tyhjän PHP sivun (jos meni oikein), vaan se palauttaisi, menikö oikein jolloin voisimme siellä pääsivulla huomauttaa, jos vaikka meni väärin...
Re: PHP-ongelmat
Code: Select all
Header("Location: ".$_SERVER['HTTP_REFERER']);
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Blogi - Peräpohjola - MERPG
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: PHP-ongelmat
Toimiiko login.php:eessa samat muuttujat, kuin pääHTML:lässä?Feuer wrote:Eikös sinulla ollut viime sivulla joku palvelinongelma, joka rikkoi myös tämän? Silläkin uhalla että toistaisin itseäni, nykyään ratkaisen tuon ongelman AJAXilla (taino, jQueryn ajax-metodeilla).Code: Select all
Header("Location: ".$_SERVER['HTTP_REFERER']);
Re: PHP-ongelmat
Eip, keksit, sessiot tai POST- ja GET-parametrit tosin ratkaisevat sen ongelman.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Blogi - Peräpohjola - MERPG
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: PHP-ongelmat
Selvä Rupeenpas taas säätämään palvelimen kanssa...Feuer wrote:Eip, keksit, sessiot tai POST- ja GET-parametrit tosin ratkaisevat sen ongelman.
Re: PHP-ongelmat
Oma mielipiteeni on, ettei omalla koneella kannata pitää testipalvelinta, jos ei ole sataprosenttisen varma, että PHP:n asetukset ovat täsmälleen samat kuin tuotantopalvelimella, jolle projekti on tarkoitus siirtää kun se julkaistaan. Tietysti virheiden raportointiasetukset voivat olla eri, mutta muuten palvelinten PHP-asetusten tulisi olla samanlaiset. Monesti tuotantopalvelimella ei pääse muuttamaan PHP:n asetuksia, ja siellä voi olla päällä esimerkiksi sellaisia ilkeitä asetuksia kuten safe mode ja magic quotes. (Näistä löytyy lisätietoa googlettamalla).
Itse suosin siis kehittämistä suoraan tuotantopalvelimelle ja sivuston suojaamista vaikka htaccessilla niin, että sen pääsee näkemään vain tietyllä käyttäjätunnuksella ja salasanalla ennen kuin siitä tehdään julkinen. Tämän hyöty on se, että mahdolliset ongelmat tuotantopalvelimen PHP-asetusten kanssa tulevat ilmi heti koodia kirjoittaessa, eikä vasta sitten kun projekti olisi tarkoitus julkaista, jolloin ongelmia tulee kerralla yhden sijasta kymmenen.
Tässä tosin ongelmaksi heittäytyy Windows, joka ei suoraan salli tiedostojen avaamista ja muokkaamista esimerkiksi FTP:n yli, vaan ne pitäisi säilyttää omalla koneella ja sitten lähetellä muuttuneet tiedostot FTP:n yli testaamista varten. Se on työlästä, mutta esimerkiksi Notepad++ osaa tehdä sen automaattisesti FTP-pluginin avulla. (Tosin en ole varma, toimiiko tuo FTP-plugin enää uusissa Npp:n versioissa). Windowsin puutteet ovatkin syy siihen, miksi olen jo pitkään tehnyt kaiken web-kehityksen Ubuntulla. Sillä onnistuu tiedostojen muokkaaminen suoraan FTP- tai SFTP-yhteyden yli.
Kaikki edeltävä on siis omaa mielipidettäni ja kehitystyön voi varmasti tehdä hyvin monella eri tavalla.
Itse suosin siis kehittämistä suoraan tuotantopalvelimelle ja sivuston suojaamista vaikka htaccessilla niin, että sen pääsee näkemään vain tietyllä käyttäjätunnuksella ja salasanalla ennen kuin siitä tehdään julkinen. Tämän hyöty on se, että mahdolliset ongelmat tuotantopalvelimen PHP-asetusten kanssa tulevat ilmi heti koodia kirjoittaessa, eikä vasta sitten kun projekti olisi tarkoitus julkaista, jolloin ongelmia tulee kerralla yhden sijasta kymmenen.
Tässä tosin ongelmaksi heittäytyy Windows, joka ei suoraan salli tiedostojen avaamista ja muokkaamista esimerkiksi FTP:n yli, vaan ne pitäisi säilyttää omalla koneella ja sitten lähetellä muuttuneet tiedostot FTP:n yli testaamista varten. Se on työlästä, mutta esimerkiksi Notepad++ osaa tehdä sen automaattisesti FTP-pluginin avulla. (Tosin en ole varma, toimiiko tuo FTP-plugin enää uusissa Npp:n versioissa). Windowsin puutteet ovatkin syy siihen, miksi olen jo pitkään tehnyt kaiken web-kehityksen Ubuntulla. Sillä onnistuu tiedostojen muokkaaminen suoraan FTP- tai SFTP-yhteyden yli.
Kaikki edeltävä on siis omaa mielipidettäni ja kehitystyön voi varmasti tehdä hyvin monella eri tavalla.
Re: PHP-ongelmat
Olet vain valinnut huonon ohjelman FTP-yhteyden käyttöön. Itse käytän WinSCP:tä ja pistän sillä yleensä jatkuvan päivityksen päälle. Aina kun muokkaan omalla koneellani olevaa tiedostoa, WinSCP lähettää kyseisen tiedoston palvelimelle ja homma siis toimii lähes reaaliajassa.Jare wrote:Tässä tosin ongelmaksi heittäytyy Windows, joka ei suoraan salli tiedostojen avaamista ja muokkaamista esimerkiksi FTP:n yli, vaan ne pitäisi säilyttää omalla koneella ja sitten lähetellä muuttuneet tiedostot FTP:n yli testaamista varten. Se on työlästä, mutta esimerkiksi Notepad++ osaa tehdä sen automaattisesti FTP-pluginin avulla.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: PHP-ongelmat
Koodinpätkää tarvitsisin, jolla voi tehdä lomakkeella uuden sivun, jossa on valmis HTML-pohja valmiina. Sivun nimi tekstikenttään, ja se tallentaisi painikkeesta kenttään annetulla nimellä sivujen pääkansioon txt-filuna, josta includella näkyisi.
Itse olen sen suunnitellut jokseenkin tähän tapaan:
Itse olen sen suunnitellut jokseenkin tähän tapaan:
Code: Select all
muuttuja SivunNimi
tekstikenttä SivunNimi
tekstialue tyhjänä txt-filuna, joka lisätään sivupohjaan
painikkeessa rename-funktio (tyhjä pohja nimellä uusisivu.txt)
luo sivu [LUO UUSI SIVU PÄÄHAKEMISTOON, TALLENNA TEKSTIALUE txt PÄÄTTEELLÄ, NIMI RENAMELLA]
Re: PHP-ongelmat
Tässä on vastaanottava pää aika yksinkertaisesti toteutettuna: (en ole testannut!)
Vaatimuksena on että php:lla on kirjoitusoikeus kansioon, jossa skripti ajetaan. Parempi olisi toki tehdä oma kansio tallennettaville sivuille. Ja vielä parempi olisi käyttää tiedostonimissä juoksevia numeroita ja sitten kirjoittaa yhteen tiedostoon lista, joka kertoo kunkin sivun nimeä vastaavan numeron. Nyt nimittäin käyttäjä voi syöttää sivun nimeen erikoismerkkejä, joita tiedostojärjestelmä ei salli tiedostojen nimissä. Ja ääkkösetkin saattavat tuottaa ongelmia. Lisäksi tuosta puuttuu virheenkäsittely kokonaan. Pitäisi tarkistaa että muuttujan $tulos arvoksi ei tule FALSE ja ilmoittaa käyttäjälle, mikäli homma menee pieleen. Samoin pitäisi tarkistaa, onko annetulla nimellä jo tallennettuna jokin sivu. Käyttäjältä tulee kysyä, tallennetaanko päälle.
Tulisi myös tarkistaa, ettei sivun nimi sisällä kautta- tai kenoviivoja eikä kaksoispistettä, jottei käyttäjä pääse muokkaamaan tiedostoja muissa kansioissa kuin missä on tarkoitus. (Tältä tarkitukselta vältytään, jos alat käyttämään juoksevia numeroita kuten ehdotin ylempänä). Toinen tietoturvaan vaikuttava seikka on se, että käyttäjä saattaa syöttää sivulle PHP-koodia. Includen sijaan voit sisällyttää sivun sisällön tällä komennolla: echo file_get_contents('sivun_nimi.txt'); Silloin mahdollinen php-koodi tulostuu sellaisenaan. Toki tilanteesta riippuen voi olla tärkeää, että sivujen sisällöissä saa olla suoritettavaa php-koodia.
Varmista vielä php:n asetuksista, että magic_quotes on poissa päältä, niin säästyt sellaisilta ongelmilta että " korvautuu merkeillä \", samoin kuin ' -> \' ja \ -> \\ . Minä vihaan tuota ominaisuutta.
Lisäksi päädyin vähän erilaiseen ratkaisuun tuon uusisivu.txt-pohjan kanssa. Jokaiselle sivulle ei kannata erikseen tallentaa samaa pohjaa, vaan kannattaa mieluummin tehdä header.txt- ja footer.txt-tiedostot, jotka sisällytetään includella niin, että sivun sisältö sisällytetään näiden väliin. Silloin jokaista sivua ei tarvitse tallentaa uudestaan jos pohjaa muutetaan, ja ei tule ongelmaksi poistaa pohjaa sivusta silloin kun sivua muokataan.
Tarvitsetko vielä mallikoodin lomakkeesta?
Code: Select all
<?php
$sivun_nimi = $_POST['SivunNimi'];
$sisalto = $_POST['Sisältö'];
$tulos = fopen('w', $sivun_nimi.'.txt');
fwrite($tulos, $sisalto);
fclose($tulos);
?>
Tulisi myös tarkistaa, ettei sivun nimi sisällä kautta- tai kenoviivoja eikä kaksoispistettä, jottei käyttäjä pääse muokkaamaan tiedostoja muissa kansioissa kuin missä on tarkoitus. (Tältä tarkitukselta vältytään, jos alat käyttämään juoksevia numeroita kuten ehdotin ylempänä). Toinen tietoturvaan vaikuttava seikka on se, että käyttäjä saattaa syöttää sivulle PHP-koodia. Includen sijaan voit sisällyttää sivun sisällön tällä komennolla: echo file_get_contents('sivun_nimi.txt'); Silloin mahdollinen php-koodi tulostuu sellaisenaan. Toki tilanteesta riippuen voi olla tärkeää, että sivujen sisällöissä saa olla suoritettavaa php-koodia.
Varmista vielä php:n asetuksista, että magic_quotes on poissa päältä, niin säästyt sellaisilta ongelmilta että " korvautuu merkeillä \", samoin kuin ' -> \' ja \ -> \\ . Minä vihaan tuota ominaisuutta.
Lisäksi päädyin vähän erilaiseen ratkaisuun tuon uusisivu.txt-pohjan kanssa. Jokaiselle sivulle ei kannata erikseen tallentaa samaa pohjaa, vaan kannattaa mieluummin tehdä header.txt- ja footer.txt-tiedostot, jotka sisällytetään includella niin, että sivun sisältö sisällytetään näiden väliin. Silloin jokaista sivua ei tarvitse tallentaa uudestaan jos pohjaa muutetaan, ja ei tule ongelmaksi poistaa pohjaa sivusta silloin kun sivua muokataan.
Tarvitsetko vielä mallikoodin lomakkeesta?
Re: PHP-ongelmat
Tämä ei ole varsinaisesti PHP-ongelma, mutta liittyy nettisivuihin.
Asiakkaani sivusto http://www.koneurakointilm.fi toimii oikein kunnollisilla selaimilla (Opera, Firefox), mutta jostain syystä Internet Exploder 8 näyttää sivun sekunnin ajan ja näyttää sitten 404-ilmoituksen. Mistä tämä voisi johtua?
Kiitos avustanne.
Asiakkaani sivusto http://www.koneurakointilm.fi toimii oikein kunnollisilla selaimilla (Opera, Firefox), mutta jostain syystä Internet Exploder 8 näyttää sivun sekunnin ajan ja näyttää sitten 404-ilmoituksen. Mistä tämä voisi johtua?
Kiitos avustanne.
Re: PHP-ongelmat
Ainakin siellä on kaksi <html>-tagia. Poista jälkimmäinen ja katso korjaantuuko ognelma.Jare wrote:Tämä ei ole varsinaisesti PHP-ongelma, mutta liittyy nettisivuihin.
Asiakkaani sivusto http://www.koneurakointilm.fi toimii oikein kunnollisilla selaimilla (Opera, Firefox), mutta jostain syystä Internet Exploder 8 näyttää sivun sekunnin ajan ja näyttää sitten 404-ilmoituksen. Mistä tämä voisi johtua?
Kiitos avustanne.