Page 10 of 11

Re: PHP-ongelmat

Posted: Tue May 01, 2012 6:47 pm
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?

Re: PHP-ongelmat

Posted: Tue May 01, 2012 9:16 pm
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:

Re: PHP-ongelmat

Posted: Tue May 01, 2012 10:10 pm
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.

Re: PHP-ongelmat

Posted: Tue May 01, 2012 10:47 pm
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/

Re: PHP-ongelmat

Posted: Wed May 02, 2012 9:59 am
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.

Re: PHP-ongelmat

Posted: Wed May 02, 2012 7:21 pm
by Konstaduck
Kiitos kaikille auttaneille, tutustun noihin Webbipalvelimiin sitten myöhemmin, kunhan aikaa on. Toivottavasti niillä ratkeaa :)

Re: PHP-ongelmat

Posted: Mon May 07, 2012 3:58 pm
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

Re: PHP-ongelmat

Posted: Mon May 07, 2012 4:28 pm
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.

Re: PHP-ongelmat

Posted: Mon May 07, 2012 4:30 pm
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).

Re: PHP-ongelmat

Posted: Tue May 08, 2012 4:45 pm
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...

Re: PHP-ongelmat

Posted: Tue May 08, 2012 4:49 pm
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).

Re: PHP-ongelmat

Posted: Tue May 08, 2012 5:22 pm
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ä?

Re: PHP-ongelmat

Posted: Tue May 08, 2012 5:44 pm
by Feuer
Eip, keksit, sessiot tai POST- ja GET-parametrit tosin ratkaisevat sen ongelman.

Re: PHP-ongelmat

Posted: Tue May 08, 2012 7:17 pm
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...

Re: PHP-ongelmat

Posted: Sat May 12, 2012 6:11 pm
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.

Re: PHP-ongelmat

Posted: Sat May 12, 2012 8:05 pm
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.

Re: PHP-ongelmat

Posted: Thu May 24, 2012 8:52 am
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]

Re: PHP-ongelmat

Posted: Tue May 29, 2012 8:27 pm
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?

Re: PHP-ongelmat

Posted: Thu Jun 14, 2012 6:46 pm
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.

Re: PHP-ongelmat

Posted: Thu Jun 14, 2012 7:06 pm
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.