phpinfo() saattaa olla estettynä kyseisellä palvelimella. Kysy palvelimen ylläpitäjältä, mikä PHP:n versio on käytössä.Tuxi wrote: En vain vieläkään tiedä käytössä olevan PHPn versiota. ( "<?php phpinfo() ?>" näytti tyhjää.)
PHP-ongelmat
Re: PHP-ongelmat
Re: PHP-ongelmat
Sehän on näin:Tuxi wrote:Sain sen latauslaskurin kuntoon.
Syynä oli "Mars1005.txt"-tiedoston virheelliset käyttöoikeudet.
En vain vieläkään tiedä käytössä olevan PHPn versiota. ( "<?php phpinfo() ?>" näytti tyhjää.)
Code: Select all
<?php phpinfo(); ?>
En ole varma että toimiiko koska en voi php:tä käyttää.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: PHP-ongelmat
Eihän sitä puolipistettä tarvita, jos on vain yksi rivi. Kyllähän yksirivinen CoolBasic-koodikin toimii, vaikka siinä ei olisi rivinvaihtoa lopussa.
Re: PHP-ongelmat
mitä yhteistä on CB:llä ja PHP:llä?Grandi wrote:Eihän sitä puolipistettä tarvita, jos on vain yksi rivi. Kyllähän yksirivinen CoolBasic-koodikin toimii, vaikka siinä ei olisi rivinvaihtoa lopussa.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: PHP-ongelmat
Molemmissa kielissä koodirivit pitää erottaa toisistaan.
Re: PHP-ongelmat
Monet palveluntarjoajat estävät mahdollisesti haittaavan tiedon levittämisen ja selvittämisen palvelimillaan. Jos esimerkiksi kotisivutila on täysin ilmaista on fiksua estää tarkkojen versiotietojen näkyminen, jotta haxorit eivät tiedä suoriltaan että mitä versiota vastaan heidän tulisi hyökätä. Tällä tavoin myös estetään lisäosien ja niiden haavoittuvuuksien selvittäminen helposti. Harvemmin olen kuullut että phpinfo olisi estetty maksullisissa alustoissa.
Monesti myös estetään erilaiset suorituskomennot ja rajataan käyttäjän oikeudet kotihakemistoonsa. Ihan vain tietoturvan nimissä.
Itse kyllästyin näihin rajoituksiin jossain vaiheessa ja siirryin itse ylläpidettyyn vuokrapalvelimeen jotta halutut ominaisuudet toimivat tai saadaan ainakin haluttaessa toimimaan.
Kotikoneellakin sitä PHP:tä voi helposti testailla ja kehitellä. Itseasiassa paremminkin kuin esimerkiksi jonkun kankean internet-yhteyden ylitse tai webbikäyttöliittymällä. Itse suosittelen käyttämään EasyPHP:tä. Tämä asentaa kokonaisen toimivan palvelinsetin (Apache, MySQL, PHP ja PHPMyADmin) koneelle joka ei (muistaakseni) oletuksena näy ulospäin ja ei ole koko aikaa päällä eikä asentele mitään servicejä koneeseen kuten esimerkiksi XAMPP ja vastaavat.
Koska suuri osa palvelimista on Linux-pohjaisia, niin toki kehitys Linux-alustalla on sinänsä parempi vaihtoehto, koska ne koodit ja oikeudet ei toimi ihan samalla tavalla kuin Windows-maailmassa. Itse kuitenkin vielä PHP:tä aktiivisesti koodaillessani tein sivut lokaalisti Windows-koneellani ja siirsin valmistuttua internetiin.
Monesti myös estetään erilaiset suorituskomennot ja rajataan käyttäjän oikeudet kotihakemistoonsa. Ihan vain tietoturvan nimissä.
Itse kyllästyin näihin rajoituksiin jossain vaiheessa ja siirryin itse ylläpidettyyn vuokrapalvelimeen jotta halutut ominaisuudet toimivat tai saadaan ainakin haluttaessa toimimaan.
Kotikoneellakin sitä PHP:tä voi helposti testailla ja kehitellä. Itseasiassa paremminkin kuin esimerkiksi jonkun kankean internet-yhteyden ylitse tai webbikäyttöliittymällä. Itse suosittelen käyttämään EasyPHP:tä. Tämä asentaa kokonaisen toimivan palvelinsetin (Apache, MySQL, PHP ja PHPMyADmin) koneelle joka ei (muistaakseni) oletuksena näy ulospäin ja ei ole koko aikaa päällä eikä asentele mitään servicejä koneeseen kuten esimerkiksi XAMPP ja vastaavat.
Koska suuri osa palvelimista on Linux-pohjaisia, niin toki kehitys Linux-alustalla on sinänsä parempi vaihtoehto, koska ne koodit ja oikeudet ei toimi ihan samalla tavalla kuin Windows-maailmassa. Itse kuitenkin vielä PHP:tä aktiivisesti koodaillessani tein sivut lokaalisti Windows-koneellani ja siirsin valmistuttua internetiin.
Re: PHP-ongelmat
Elisan Yrityswebissä tuo on estetty.Pettis wrote:Harvemmin olen kuullut että phpinfo olisi estetty maksullisissa alustoissa.
Itse olen havainnut yleensä helpoimmaksi sen, että kehitän sivut suoraan kohdepalvelimelle, jotta kaikki yhteensopivuusongelmat tulee heti ilmi. Kotikoneella olevan PHP:n versio saattaa kuitenkin olla eri kuin kohdepalvelimella. Kirjoitan sivut Notepad++:lla, jonka mukana tulee jo oletusarvoisesti lisäosa, joka osaa tallentaa ohjelmalla käsitellyt tiedostot FTP:n yli palvelimelle kun tallentaa tiedoston. Tämän ansiosta suoraan palvelimelle kehittäminen ei ole sen vaikempaa kuin PHP:n ajaminen kotikoneella (jos vain palvelimen ominaisuudet ovat omaan käyttöön sopivat). Tietokantaa taas käytän palvelimen ylläpidon asentamalla PhpMyAdminnilla, mikä on osoittautunut onnistuneeksi ratkaisuksi.Pettis wrote: Kotikoneellakin sitä PHP:tä voi helposti testailla ja kehitellä. Itseasiassa paremminkin kuin esimerkiksi jonkun kankean internet-yhteyden ylitse tai webbikäyttöliittymällä. Itse suosittelen käyttämään EasyPHP:tä. Tämä asentaa kokonaisen toimivan palvelinsetin (Apache, MySQL, PHP ja PHPMyADmin) koneelle joka ei (muistaakseni) oletuksena näy ulospäin ja ei ole koko aikaa päällä eikä asentele mitään servicejä koneeseen kuten esimerkiksi XAMPP ja vastaavat.
Re: PHP-ongelmat
Kyllä saa, jos osaa perustella.Jani wrote:Ja et saa sieltä osoitettaWee (offline) wrote:Mitäpä vikaa jouluserverissä on?
Ilmaiset 100(+)mb tilaa, kaistarajoitus tais olla 1gb/kk, sisältää 1 mysql tietokannan, php:n luonnollisesti (versio tais olla 4 tai 5), ja muuta pientä härpäkettä =). Ja netftp on ihan toimiva oman ftpohjelman rinnalla. Kattokaa nuo tiedot tarkemmin jouluserver.com:ista...
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Re: PHP-ongelmat
Okei, jos mä haluaisin että kun naputtelet selaimeesi osoitteen "rudi.arkku.net/linkkiruletti.php", selaimesi siirtyy 50:n URL:n listasta satunnaisesti valitulle sivulle, niin minkäslainen php -scripti siihen tarvittaisiin?
Olen koettanut ovelasti yhdistää tätä...
...ja tätä...
...koodia toisiinsa, mutta koska en ole koskaan elämässäni koskenutkaan php -koodiin (mitä nyt kääntänyt valmiita php -scriptejä suomenkielelle) minulla ei ole hajuakaan, miten se tehdään.
Olen koettanut ovelasti yhdistää tätä...
Code: Select all
<?php
$random_text = array("Random Text 1",
"Random Text 2",
"Random Text 3",
"Random Text 4",
"Random Text 5");
srand(time());
$sizeof = count($random_text);
$random = (rand()%$sizeof);
echo "$random_text[$random]";
?>
Code: Select all
<script type='text/javascript'>location.href='THE URL GOES HEER!';</script>";
EDIT:
Tarkemmin ajateltuna noita kahta koodia ei varmaan kannattaisikaan yhdistää, vaan helpommalla pääsisi kun suunnittelisi nimenomaista tarkoitusta varten oman scriptin.
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: PHP-ongelmat
Code: Select all
<?php
$random_text = array("Random Text 1",
"Random Text 2",
"Random Text 3",
"Random Text 4",
"Random Text 5");
echo "<script type='text/javascript'>location.href='".$random_text[rand(0,count($random_text))]."';</script>";
?>
Re: PHP-ongelmat
Ja sehän toimii. Kiitos!
EDIT:
OK, kiitos.
Last edited by Ruuttu on Thu Feb 19, 2009 1:45 pm, edited 1 time in total.
Re: PHP-ongelmat
Code: Select all
<?php
$random_text = array("Random Text 1",
"Random Text 2",
"Random Text 3",
"Random Text 4",
"Random Text 5");
header("Location: ".$random_text[rand(0,count($random_text))]);
?>
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: PHP-ongelmat
Joo, tuo header()-funktio on tosiaan parempi kuin JavaScript-kikkailut. Kannattaa kuitenkin muistaa, että tuon header-rivin pitää olla ennen kuin yhtään riviä merkkauskieltä on tungettu sivulle. Tämä oli muinoin ainakin itselläni ongelmana.
Re: PHP-ongelmat
Ei, vaan header-funktiota (proseduuria?) voi käyttää vain ennen headereiden lähettämistä (<head> vinkvink </head> )
Re: PHP-ongelmat
Pakko päästä pätemään suoraan php.netin sivuilta:esa94 wrote:Ei, vaan header-funktiota (proseduuria?) voi käyttää vain ennen headereiden lähettämistä (<head> vinkvink </head> )
Code: Select all
<?php
ob_start();
header("location: 1.html");
echo "send data";
header("location: 2.html"); //replaces 1.html
ob_end_flush(); //now the headers are sent
?>
Re: PHP-ongelmat
Linkki kyseiseen koodin olis kiva, jos kerran suoraan lainataan. :SzHelmet wrote:Pakko päästä pätemään suoraan php.netin sivuilta:
Re: PHP-ongelmat
Excuse me, mitä yrität päteä? Sanoin vain, että header() on käytettävissä vain ennen headerien lähettämistä, joka kivasti hoidetaankin tuossa sinun koodissasi, kuten kommenttikin sanoo. Lisävinkvink tarkoitti vain sitä, että <head>-tageillahan ne headerit HTMLssä lähetetään.zHelmet wrote:Pakko päästä pätemään suoraan php.netin sivuilta:esa94 wrote:Ei, vaan header-funktiota (proseduuria?) voi käyttää vain ennen headereiden lähettämistä (<head> vinkvink </head> )Eli on mahollista.Code: Select all
<?php ob_start(); header("location: 1.html"); echo "send data"; header("location: 2.html"); //replaces 1.html ob_end_flush(); //now the headers are sent ?>
Re: PHP-ongelmat
esa94 wrote:Excuse me, mitä yrität päteä? Sanoin vain, että header() on käytettävissä vain ennen headerien lähettämistä, joka kivasti hoidetaankin tuossa sinun koodissasi, kuten kommenttikin sanoo. Lisävinkvink tarkoitti vain sitä, että <head>-tageillahan ne headerit HTMLssä lähetetään.zHelmet wrote:Pakko päästä pätemään suoraan php.netin sivuilta:esa94 wrote:Ei, vaan header-funktiota (proseduuria?) voi käyttää vain ennen headereiden lähettämistä (<head> vinkvink </head> )Eli on mahollista.Code: Select all
<?php ob_start(); header("location: 1.html"); echo "send data"; header("location: 2.html"); //replaces 1.html ob_end_flush(); //now the headers are sent ?>
Code: Select all
<?php
ob_start();
echo "<html><head><title>asd</title></head><body>asd</body></html>";
header("location: 2.html"); //replaces 1.html
ob_end_flush(); //now the headers are sent
?>
EDIT:
http://fi2.php.net/header Tuolta kaivoin tuon Jare
Re: PHP-ongelmat
Headerihan meinaa yleisesti sitä oikeaa informaatiota edeltävää osaa, mutta HTML:n <head>-tagissa ei ole kyse aivan samasta asiasta kuin mistä nyt on puhe. Nekin toimivat headerina, mutta ennemminkin sivun sisällön kannalta. PHP:llä lähetettävät headerit tulevat suoraan HTTP-vastauksen alkuun(vastaavantyyppiset löytyvät myös pyynnöstä). Ideana on, että kaikki headerit on oltava lähetettynä ennen varsinaista sisältöä, jotta selain tietää mitä odottaa.esa94 wrote:Excuse me, mitä yrität päteä? Sanoin vain, että header() on käytettävissä vain ennen headerien lähettämistä, joka kivasti hoidetaankin tuossa sinun koodissasi, kuten kommenttikin sanoo. Lisävinkvink tarkoitti vain sitä, että <head>-tageillahan ne headerit HTMLssä lähetetään.zHelmet wrote:Pakko päästä pätemään suoraan php.netin sivuilta:esa94 wrote:Ei, vaan header-funktiota (proseduuria?) voi käyttää vain ennen headereiden lähettämistä (<head> vinkvink </head> )Eli on mahollista.Code: Select all
<?php ob_start(); header("location: 1.html"); echo "send data"; header("location: 2.html"); //replaces 1.html ob_end_flush(); //now the headers are sent ?>
Tämähän tietysti sisältää ne head-tagit, mutta niin kaiken muunkin. Yhtäkään tavua yhtään mitään muuta ei saa olla lähetettynä.
zHelmetin esimerkkikoodissa pistetään outputbufferin päälle, jolloin echoa käytettäessä "send data" menee vain jonoon. Sen sijaan headerit lähetetään kuten normaalisti. Huomioitavaa on myös, että skriptissä lähetetään kahdet uudelleenohjausheaderit. Selain ohjautuu jälkimmäiseen, koska myöhemmin tullut tieto korvaa vanhemman.
zHelmetin toisessa esimerkissä myöskin lausemuoto "Eli Header() toimii myös <head> tagin jälkeen." on hassusti valittu, sillä vaikka puskuriin echotaankin tavaraa, ei sitä silti lähetetä kun vasta ob_end_flushia kutsuttaessa, jota ennen headerit on jo lähetetty.
Re: PHP-ongelmat
Heitänpä minäkin oman lusikkani soppaan.
Yleisesti aloittelevilla nettisivujen kehittäjillä on ongelmia esimerkiksi merkistökoodauksen kanssa. Vaikka he laittavat sivuillensa head-tagien väliin merkinnän että sisältö on UTF-8:aa saattaa palvelin jolla sivut on lähettää kuitenkin selaimelle headerin joka sanoo että sivut on ISO-8859-15:ttä. Tämä headeri ei minnekkään HTML-koodiin tule näkyville, mutta silti se tieto selaimelle välitetään. Samoin palvelin välittää monia muitakin headereita joka sivulatauksella. Esimerkiksi palvelin kertoo selaimelle, että tämä tiedosto on HTML-tiedosto vaikka sen pääte nyt onkin vaikkapa se .php tai vaikka .jotain. Headerit sen määrää että minkä tyyppisenä tiedostona selain sen tiedoston näyttää. PHP-koodin saa näkymään vaikkapa kuvana lähettämällä sopivan headerin selaimelle.
Siinä olette kyllä oikeassa, että PHP-koodissa nuo headerit pitää lähettää ennen sisältöä. Sisällöksi kuitenkin lasketaan kaikki HTML-koodin tulosteet. Jos siis sinne koodiin lipsahtaa esim. välilyönti PHP-tiedoston alkuun, saattaa tulla virheilmoitusta koska tämä välilyönti lähetetään selaimelle ennen tulevaa koodia. Nämä PHP-headerit eivät nekään ilmesty minnekään sinne HTML-koodin sekaan vaan ne ovat eräänlaista metatietoa ladattavasta sivusta / tiedostosta.
Itse teen webbikehitystä paljon ja siksi noita headeritietojakin tulee seurailtua välillä. Yksi hyvä FireFox-plugin tuohon hommaan on esimerkiksi Live HTTP Headers. Pistäkää se päälle ja ladatkaa jokin sivu niin näette että sitä headeridataa vilisee kohtuullisesti. Siellä näkyy mm. palvelimen tiedot ja läjä versionumeroita yms. jos tietoturva on heikko.
Yleisesti aloittelevilla nettisivujen kehittäjillä on ongelmia esimerkiksi merkistökoodauksen kanssa. Vaikka he laittavat sivuillensa head-tagien väliin merkinnän että sisältö on UTF-8:aa saattaa palvelin jolla sivut on lähettää kuitenkin selaimelle headerin joka sanoo että sivut on ISO-8859-15:ttä. Tämä headeri ei minnekkään HTML-koodiin tule näkyville, mutta silti se tieto selaimelle välitetään. Samoin palvelin välittää monia muitakin headereita joka sivulatauksella. Esimerkiksi palvelin kertoo selaimelle, että tämä tiedosto on HTML-tiedosto vaikka sen pääte nyt onkin vaikkapa se .php tai vaikka .jotain. Headerit sen määrää että minkä tyyppisenä tiedostona selain sen tiedoston näyttää. PHP-koodin saa näkymään vaikkapa kuvana lähettämällä sopivan headerin selaimelle.
Siinä olette kyllä oikeassa, että PHP-koodissa nuo headerit pitää lähettää ennen sisältöä. Sisällöksi kuitenkin lasketaan kaikki HTML-koodin tulosteet. Jos siis sinne koodiin lipsahtaa esim. välilyönti PHP-tiedoston alkuun, saattaa tulla virheilmoitusta koska tämä välilyönti lähetetään selaimelle ennen tulevaa koodia. Nämä PHP-headerit eivät nekään ilmesty minnekään sinne HTML-koodin sekaan vaan ne ovat eräänlaista metatietoa ladattavasta sivusta / tiedostosta.
Itse teen webbikehitystä paljon ja siksi noita headeritietojakin tulee seurailtua välillä. Yksi hyvä FireFox-plugin tuohon hommaan on esimerkiksi Live HTTP Headers. Pistäkää se päälle ja ladatkaa jokin sivu niin näette että sitä headeridataa vilisee kohtuullisesti. Siellä näkyy mm. palvelimen tiedot ja läjä versionumeroita yms. jos tietoturva on heikko.