PHP-ongelmat

Muu yhteisön välinen keskustelu.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: PHP-ongelmat

Post by axu »

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.
Kuulostaa siltä, kuten TheFish sanoi, eli php-tagit puuttuu. Toinen mikä tuli mieleen, onhan palvelimella asennettuna php?
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: PHP-ongelmat

Post by Konstaduck »

axu wrote:
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.
Kuulostaa siltä, kuten TheFish sanoi, eli php-tagit puuttuu. Toinen mikä tuli mieleen, onhan palvelimella asennettuna php?
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 uudestaan :oops:
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Pettis
The Evil Admin
The Evil Admin
Posts: 1044
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: PHP-ongelmat

Post by Pettis »

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.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: PHP-ongelmat

Post by axu »

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/
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

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
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: PHP-ongelmat

Post by Konstaduck »

Kiitos kaikille auttaneille, tutustun noihin Webbipalvelimiin sitten myöhemmin, kunhan aikaa on. Toivottavasti niillä ratkeaa :)
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: PHP-ongelmat

Post by Konstaduck »

Kirjautumisen kanssa on onkelmia. Tällä kertaa ollaan arkun puolella, joten webbipalvelimet jääköön unholaan.

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>
Tässä näin login.php, joka sijaitsee siis DATA - alikansiossa.

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
	}
?>

Ja tulos ei ole kehuttava, kas tässä:
error.png
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

Konstaduck wrote:tekstiä...
Mitä ovat nuo

Code: Select all

?$annettu_nimi:"";
kohdat? Eikös sen pitäisi olla ihan normaalisti

Code: Select all

$annettu_nimi=$_POST['Nimi']
ilman noita ihme loppujuttuja?

Saattaa olla että olen väärässäkin (en kyllä koskaan ole nähnyt tommosta tapaa), mutta pisti silmään.
User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: PHP-ongelmat

Post by axu »

Konstaduck wrote:Kirjautumisen kanssa on onkelmia. Tällä kertaa ollaan arkun puolella, joten webbipalvelimet jääköön unholaan.
Suosittelen vieläkin kuluttamaan muutaman minuutin siihen oman testipalvelimen pystyttämiseen, niin näkisit varsinaisen virheilmoituksenkin. Riviltä 19 puuttuu puolipiste rivin lopusta:

Code: Select all

echo "Väärin meni!"
Sitten seuraava pätkä on joko väärin tai sitten en käsitä, mitä yrität saada aikaan:

Code: Select all

//formilta tulleet tunnukset 
$annettu_nimi=$_POST['Nimi']?$annettu_nimi:""; 
$annettu_salasana=$_POST['Salasana']?$annettu_salasana:""; 
Tuossahan tutkit, onko $_POST-taulukon muuttuja tosi (vaikka sen pitäisi olla merkkijono), jos on, niin $annettu_nimi arvoksi asetetaan $annettu_nimi (joka on asettamatta eli lienee NULL), jos ei niin sitten tyhjä. Oletan, että haluat tutkia, onko lomake palauttanut nimen ja salasanan ja asettaa nuo muuttujat, jos on. Tarkistamiseen käytetään isset() -funktiota. Korjattu koodi:

Code: Select all

//formilta tulleet tunnukset
$annettu_nimi = isset($_POST['Nimi']) ? $_POST['Nimi'] : "";
$annettu_salasana = isset($_POST['Salasana']) ? $_POST['Salasana'] : "";
Jos nuo tarkistukset jättää laittamatta, niin php valittaa, jos ei tietoja ole palautettu (riippuen php:n asetuksista tietty).
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: PHP-ongelmat

Post by Konstaduck »

Joo, enpä tiedä mitä olen siinä yöllä tehnyt, ei pitäisi tehdä mitään yöllä :D

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...
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Code: Select all

Header("Location: ".$_SERVER['HTTP_REFERER']);
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).
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: PHP-ongelmat

Post by Konstaduck »

Feuer wrote:

Code: Select all

Header("Location: ".$_SERVER['HTTP_REFERER']);
 
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).
Toimiiko login.php:eessa samat muuttujat, kuin pääHTML:lässä?
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

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
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: PHP-ongelmat

Post by Konstaduck »

Feuer wrote:Eip, keksit, sessiot tai POST- ja GET-parametrit tosin ratkaisevat sen ongelman.
Selvä ;) Rupeenpas taas säätämään palvelimen kanssa...
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: PHP-ongelmat

Post by Jare »

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.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

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.
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.
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
Storm_koulussa

Re: PHP-ongelmat

Post by Storm_koulussa »

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:

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]
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: PHP-ongelmat

Post by Jare »

Tässä on vastaanottava pää aika yksinkertaisesti toteutettuna: (en ole testannut!)

Code: Select all

<?php
$sivun_nimi = $_POST['SivunNimi'];
$sisalto = $_POST['Sisältö'];
$tulos = fopen('w', $sivun_nimi.'.txt');
fwrite($tulos, $sisalto);
fclose($tulos);
?>
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?
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: PHP-ongelmat

Post by Jare »

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.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: PHP-ongelmat

Post by esa94 »

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.
Ainakin siellä on kaksi <html>-tagia. Poista jälkimmäinen ja katso korjaantuuko ognelma.
Post Reply