Page 7 of 11

Re: PHP-ongelmat

Posted: Mon Nov 29, 2010 5:31 pm
by Feuer
Pettis wrote:
temu92 wrote:

Code: Select all

$_SERVER['HTTP_REFERER'];
Referrer ei sitten ole 100% varmaa tietoa. Se voi joko puuttua tai olla väärennetty, koska se on vain selaimen antamaa tietoa. Yleisin ongelma on se, että se puuttuu, koska tietoturvaohjelmat tykkää poistaa kyseisen tiedon selaimen lähettämistä headereista.
Hyvä tietää. Miten tuo parin sivun mittainen takaisinohjaus kannattaisi toteuttaa jos tulee ongelma Referrerin kanssa? Säilyttämällä keksissä n viimeisintä avattua sivua (missä 5<n<15) ja poimimalla sieltä parin sivun takainen sivu kun tulee tarve liikkua takaisin?

Re: PHP-ongelmat

Posted: Mon Nov 29, 2010 6:06 pm
by DJ-Filbe
Feuer wrote:
Pettis wrote:
temu92 wrote:

Code: Select all

$_SERVER['HTTP_REFERER'];
Referrer ei sitten ole 100% varmaa tietoa. Se voi joko puuttua tai olla väärennetty, koska se on vain selaimen antamaa tietoa. Yleisin ongelma on se, että se puuttuu, koska tietoturvaohjelmat tykkää poistaa kyseisen tiedon selaimen lähettämistä headereista.
Hyvä tietää. Miten tuo parin sivun mittainen takaisinohjaus kannattaisi toteuttaa jos tulee ongelma Referrerin kanssa? Säilyttämällä keksissä n viimeisintä avattua sivua (missä 5<n<15) ja poimimalla sieltä parin sivun takainen sivu kun tulee tarve liikkua takaisin?
Tuon voi tietysti toteuttaa myös JavaScriptillä:
<script type="text/javascript">

Code: Select all

history.go(x)
</script>
missä x on negatiivinen luku, joka kertoo, montako sivua mennään taaksepäin. Positiivinen luku tarkoittaa taas eteen päin navigointia (vaatii back-napin painalluksia toimiakseen, luonnollisesti)

Re: PHP-ongelmat

Posted: Mon Nov 29, 2010 6:44 pm
by temu92
Kaikilla käyttäjillä ei ole JavaScriptiä käytössä joten jos sivulla ei muutoin käytetä sitä, ei ole mitään järkeä tehdä yhtä ainutta asiaa JS:n kanssa (jos ko. asia on vielä oleellinen sivun toimivuuden kannalta).

Re: PHP-ongelmat

Posted: Mon Nov 29, 2010 7:09 pm
by esa94
temu92 wrote:Kaikilla käyttäjillä ei ole JavaScriptiä käytössä joten jos sivulla ei muutoin käytetä sitä, ei ole mitään järkeä tehdä yhtä ainutta asiaa JS:n kanssa (jos ko. asia on vielä oleellinen sivun toimivuuden kannalta).
Jea, itelläni ei ainakaan oo JavaScript käytössä oletuksena.

Re: PHP-ongelmat

Posted: Sun May 08, 2011 10:52 am
by DJ-Filbe
Miten toteuttaisin chat-sivun php:llä? Niin että chattiin kirjautunut henkilö ei näe aikaisempia viestejä, ja x millisekuntia vanhat viestit poistetaan kaikkien keskusteluikkunoista. Kaikki viestit menevät myös lokitiedostoon.

Re: PHP-ongelmat

Posted: Sun May 08, 2011 12:54 pm
by buke44
DJ-Filbe wrote:Miten toteuttaisin chat-sivun php:llä? Niin että chattiin kirjautunut henkilö ei näe aikaisempia viestejä, ja x millisekuntia vanhat viestit poistetaan kaikkien keskusteluikkunoista. Kaikki viestit menevät myös lokitiedostoon.
Osaat kai käyttää ajaxia? Sillä voi tehdä javascriptin avulla kyselyitä palvelimelle. Enpä usko että tästä on mitään apua, mutta tässä on vähän aikaa sitten tekemäni chatin koodi http://laakeri.kapsi.fi/a/chatti.zip.

Re: PHP-ongelmat

Posted: Sun May 08, 2011 8:11 pm
by porzi
Kannattaa muistaa noita omia chatteja tehdessä, että se on palvelimelle aika raskasta, jos uusia viestejä haetaan palvelimelta liian tiuhaan. Ja kyselyiden määrähän kasvaa mukavasti käyttäjämäärän mukaan.

Jos viestien tallentamiseen käyttää mysliä, kannattaa optimoida ja cachettaa queryt hyvin.

Yksi tapa, jolla palvelimen turhaa loadia voi keventää on tehdä chattiin toiminto, joka tiputtaa viestikyselyiden tiheyttä huomattavasti, mikäli chattiin ei ole tullut vähään aikaan viestejä.

Re: PHP-ongelmat

Posted: Tue May 10, 2011 12:13 pm
by Pettis
Enemmän tuossa chatin kuormituksessa merkitsee se, että kuinka nopea palvelin on ja kuinka raskaiden sovellusten päällä chatti pyörii. Jos jokainen chatin kysely palvelimelle menee esim. Apachen päällä pyörivälle PHP:lle, on tämä raskasta. Jos sama määrä kyselyitä menee esimerkiksi node.js:lle tai vaikkapa nginxin tai lighttpd:n päällä pyörivälle PHP:lle niin ollaan jo paljon kevyemmillä vesillä. Vielä jos mukana on PHP opcode-cache, niin jokaisen kyselyn tuoma kuorma pienenee entisestään aika suuresti.

Apache on rakas. Sitä on turha käyttää pieniin ja nopeutta vaativiin kyselyihin. Apachen etuja on kuitenkin laaja käyttäjäkunta, vakaus ja erilaisten moduulien helppo saatavuus ja suuri määrä.

Toinen vaihtoehto on käyttää kunnon ohjelmointikieliä PHP:n sijaan, jolloin chatin palvelimen pään ohjelmaa voi ajaa siten, että chattikoodi on koko ajan käynnissä ja odottaa vain palvelimen HTTP-pyyntöä, johon vastaus tulee nopeammin, kun koodia ei tarvitse käynnistää uudelleen.

Re: PHP-ongelmat

Posted: Tue May 10, 2011 4:39 pm
by DJ-Filbe
Arkkunetissä. Ei omaa palvelinta ;(

Re: PHP-ongelmat

Posted: Wed Jun 15, 2011 11:13 am
by DJ-Filbe

Code: Select all

if ($handle = opendir('.')) {
	while (false !== ($file = readdir($handle))) {
		if ($file != "." && $file != "..") {
			if ((strpos($file,"n") && $_GET['n'] == "1") || (!strpos($file,"n") && $_GET['n'] == "0")) {
				echo $file.chr(10);
			}
		}
	}
	closedir($handle);
}
Tämän pitäisi toimia näin:
- Jos GET-parametri n=1 niin listataan tiedostot, joiden nimen ensimmäinen kirjain on 'n'.
- Jos GET-parametri n=0 niin listataan tiedostot, joiden nimen ensimmäinen kirjain ei ole 'n'.

Mikä failaa?

Re: PHP-ongelmat

Posted: Wed Jun 15, 2011 11:54 am
by Jare
DJ-Filbe wrote: Tämän pitäisi toimia näin:
- Jos GET-parametri n=1 niin listataan tiedostot, joiden nimen ensimmäinen kirjain on 'n'.
- Jos GET-parametri n=0 niin listataan tiedostot, joiden nimen ensimmäinen kirjain ei ole 'n'.

Mikä failaa?
Strpos() palauttaa haettavan merkkijonon paikan tai false, jos sitä ei löydy. Ensimmäisen merkin paikka on 0, toisen 1 jne. Joten jos nimi alkaa n-kirjaimella, strpos() palauttaa 0, mikä evaluoituu falseksi, ellet vertaa arvoa näin:
- 0 === strpos(*parametrit*) //n-kirjain on ensimmäisenä
- 0 !== strpos(*parametrit*) //n-kirjain ei ole ensimmäisenä

Re: PHP-ongelmat

Posted: Wed Jun 15, 2011 12:18 pm
by DJ-Filbe
Jare wrote:
DJ-Filbe wrote: Tämän pitäisi toimia näin:
- Jos GET-parametri n=1 niin listataan tiedostot, joiden nimen ensimmäinen kirjain on 'n'.
- Jos GET-parametri n=0 niin listataan tiedostot, joiden nimen ensimmäinen kirjain ei ole 'n'.

Mikä failaa?
Strpos() palauttaa haettavan merkkijonon paikan tai false, jos sitä ei löydy. Ensimmäisen merkin paikka on 0, toisen 1 jne. Joten jos nimi alkaa n-kirjaimella, strpos() palauttaa 0, mikä evaluoituu falseksi, ellet vertaa arvoa näin:
- 0 === strpos(*parametrit*) //n-kirjain on ensimmäisenä
- 0 !== strpos(*parametrit*) //n-kirjain ei ole ensimmäisenä
Kiitos! Tuo auttoi :)
Vielä kun tiedostot voisi järjestää ajan mukaan nousevassa järjestyksessä (vanhimmat ensin) niin olisi loistavaa!

Re: PHP-ongelmat

Posted: Wed Jun 15, 2011 12:36 pm
by esa94
Jare wrote:
DJ-Filbe wrote:0 === strpos(*parametrit*) //n-kirjain on ensimmäisenä
Eikö myös 0 == strpos(... toimisi, kun kerran 0 evaluoituu falseksi joka tapauksessa?
EDIT:

Tietty === on tyyppiturvallisempi

EDIT:

aa aivan strpos palauttaa false jos ei löydy :D


Re: PHP-ongelmat

Posted: Wed Jun 15, 2011 5:57 pm
by valscion
DJ-Filbe wrote:Vielä kun tiedostot voisi järjestää ajan mukaan nousevassa järjestyksessä (vanhimmat ensin) niin olisi loistavaa!
Näyttääpäs hankalalta tuo sinun koodisi. Eikö helpompaa olisi vain käyttää scandiriä ja sitten järjestäisit arrayn filemtime-funktion avulla? Jos haluaisit vielä käydä kansiot rekursiivisesti läpi niin NetMatchin updaterin PHP-koodin tutkiskelu voi auttaa. Tälläistä se tulostaa.

Re: PHP-ongelmat

Posted: Thu Jun 16, 2011 5:03 pm
by axu
Ihan nopeasti semmonen kysymys, että mikä mahtaa olla helpoin tapa testata PHP-skriptien toimivuutta (ilman nettiin uppaamista)? Apache-palvelimen asennus ja siihen PHP:n asennus vaikuttaa yliampuvalta pelkästään tätä tarkoitusta varten, onko jotain kevyempää?

Re: PHP-ongelmat

Posted: Thu Jun 16, 2011 6:10 pm
by temu92
Tuskin muu siinä nyt auttaa. Onhan Apachea varten olemassa valmispaketteja, ettei tarvitse itse asentaa kaikkea käsin jos sitä tarkoitat. Itse käytän XAMPP:ia jossa on Apache, PHP, MySQL, Perl ja ties mitä vielä.

Muistaakseni ohjelmointiputkassa oli joku sivu (jonka osoitetta en muista) jolla pystyi testaamaan koodinpätkiä, mutta ympäristö on todella rajoitettu väärinkäyttöjen estämiseksi.

Re: PHP-ongelmat

Posted: Thu Jun 16, 2011 6:11 pm
by esa94
axu wrote:Ihan nopeasti semmonen kysymys, että mikä mahtaa olla helpoin tapa testata PHP-skriptien toimivuutta (ilman nettiin uppaamista)? Apache-palvelimen asennus ja siihen PHP:n asennus vaikuttaa yliampuvalta pelkästään tätä tarkoitusta varten, onko jotain kevyempää?
*AMP tikulle?
EDIT:

Niin, vaikkapa tuo XAMPP

Toinen vaihtoehto on ladata PHP ja ajaa skriptit vain suoraan sen parserin läpi.


Re: PHP-ongelmat

Posted: Thu Jun 16, 2011 9:39 pm
by axu
Kiitoksia vastauksista :)
EDIT:

En saa XAMPPia toimimaan... Latasin installerin ja asennuksen jälkeen XAMPP ohjauspaneelista painoin Start (Apache) nappia ja vaikka se väittää, että Apache lähti käyntiin (portti asiaankuuluvasti 80), ei http://localhost/ palauta mitään. Ei index.htmlää eikä 404 erroria tahi kansiolistausta. Pitäisikö jotain konffaamista tehdä? Jos niin mitä muutoksia?


Re: PHP-ongelmat

Posted: Sun Jun 19, 2011 7:40 pm
by Pettis
Sen Apachen oikeasti asentaminen nyt ei ole sen kummempi operaatio kuin asentaa se apache ja sitten PHP. Tämän jälkeen googlataan sopiva konffipätkä PHP:n käyttöönottamiseksi apacheen ja pastetaan se Apachen konffiin. Toki jos noilla "helppopaketeilla" on sotkenut jotain oleellisia asetuksia koneestaan, niin kunnollisen devikonffauksen tekeminen voi olla aika infernaalista.

Btw. Allekirjoituksessa on linkkiä webmasterfoorumiin, josta koitan tehdä suomenkielistä webbijuttuihin keskittyvää foorumia.

Re: PHP-ongelmat

Posted: Sun Jun 19, 2011 10:21 pm
by Feuer
Muistanko aivan väärin, vai eikös korrekti osoite portissa 80 elävään palvelimeen ole localhost:80 eikä silkka localhost?