PHP-ongelmat

Muu yhteisön välinen keskustelu.
Post Reply
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: PHP-ongelmat

Post by Koodiapina »

http://php.net/manual/en/function.file.php

Toiselle parametrille voi antaa lippuja, esimerkiksi FILE_IGNORE_NEW_LINES.
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Warning: file() expects parameter 2 to be long, string given in /mbnet/p/pilpo/uusisivu.php on line 2

Warning: fwrite(): supplied argument is not a valid stream resource in /mbnet/p/pilpo/uusisivu.php on line 4

Warning: fclose(): supplied argument is not a valid stream resource in /mbnet/p/pilpo/uusisivu.php on line 6
sanoo mbnet kun PHP-koodi näyttää seuraavalta:

Code: Select all

<?php
$tiedosto = file(" $sivunnimi ","w");

fwrite($tiedosto," $tekstiä ");

fclose($tiedosto);
?>
ja muuttujat saadaan seuraavankaltaiselta .html:tä:

Code: Select all

<html>
<head>
<title>Yool-Julkaisin 0.5</title>
</head>
<body>
<form method="get" action="uusisivu.php">
	<p>Sivun koodi!
	<textarea name="tekstiä" cols="80" rows="10"></textarea></p>
	<p>Sivutiedoston nimi <input alt="Tähän tulee sivun nimi" name="sivunnimi" type="text">
	<input type="submit" value="lähetä"></p>
</form>

<p></p>

</body></html>
Mitään ehdotuksia mikä on väärin?
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: PHP-ongelmat

Post by m1c »

Ensinnäkin file() lukee tiedoston sisällön taulukkoon, mutta yrität näemmä saada tiedostokahvaa. Käytä fopen():ia.

Muuta myös funktioiden parametrit (" $sivunnimi ","w") -> ($sivunnimi, "w"), (poista ylimääräiset välit, samalla poista turhat lainausmerkit)
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Kato joo. Ohjelmointiputkassakin käytettiin fopen()a mutta eihän sitä ohjetta voinut ajatuksella lukea.
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Pyromanius
Newcomer
Posts: 6
Joined: Thu Jan 07, 2010 3:58 pm

Re: PHP-ongelmat

Post by Pyromanius »

Miten kannattaisi toteuttaa ns. selainpelin tietojen tallennus (salasanat, tutkimusten tasot joukot yms).
MySQL:llään harkitsin mutta onko mitään helpompaa tapaa kuin taulu jokaiselle pelaajalle, jossa on aivan älyttömästi noita sarakkeita.

Mikä olisi siis helpoim tapa järjestää tuo?
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: PHP-ongelmat

Post by TheFish »

Pyromanius wrote:taulu jokaiselle pelaajalle
Voi olla, että ymmärsin tuon kohdan hieman väärin, mutta kaikkien pelaajien tiedothan menevät samaan tauluun. Tietokanta on paras ratkaisu, mutta ennen kuin lähdet toteuttamaan sitä, suosittelisin, että tutustut hieman relaatiotietokantamalliin. Kaikkien tietojen ei vättämättä tarvitse olla samassa taulukossa, vaan voit myös tehdä viittauksia taulukoiden välille.

Esimerkiksi pelaajan tunnukseen liittyvät tiedot voivat olla yhdessä taulukossa, ja itse peliin liittyvät tiedot toisessa. Peliin liittyvistä tiedoista on tehty pelaajan id:n avulla viittaus tunnukseen. Näin sinun on helppoa esimerkiksi tyhjentää kaikki peliin liittyvät tiedot uuden kierroksen alkaessa.
CoolBasic henkilökuntaa
Kehittäjä
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: PHP-ongelmat

Post by Latexi95 »

Mitenkä saisin liitettyä php:llä lähetettyyn sähköpostiin linkkejä, lihavointia, alleviivausta ja muuta sellaista, sekä liitetiedostoja?
EDIT:

Ai niin... Miten ihmeessä esimerkiksi gmailissa kirjoituskenttään on saatu erivärejä?
Normaalistihan jos "textarean" tekstiin laittaa html tageja niin niitä ei suoriteta.

User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: PHP-ongelmat

Post by Jare »

Latexi95 wrote:Mitenkä saisin liitettyä php:llä lähetettyyn sähköpostiin linkkejä, lihavointia, alleviivausta ja muuta sellaista, sekä liitetiedostoja?
PHPMailerilla voi kirjottaa sähköpostiin html:ää ja taitaa tiedostojenkin liittäminen onnistua.
Latexi95 wrote:
EDIT:

Ai niin... Miten ihmeessä esimerkiksi gmailissa kirjoituskenttään on saatu erivärejä?
Normaalistihan jos "textarean" tekstiin laittaa html tageja niin niitä ei suoriteta.

WYMEditoria käyttämällä saa xhtml:ää tuottavan tekstieditorin. Tuo käyttää JavaScriptiä.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: PHP-ongelmat

Post by Latexi95 »

Mitenkä saisin kätevästi tunnistettua koneen? Ulkoinen ip-osoitehan riippuu verkkopurkista eli samaa verkkopurkia käyttävillä on sama osoite. Mitenkä saisin erotettua ne toisistaan?
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: PHP-ongelmat

Post by esa94 »

Latexi95 wrote:Mitenkä saisin kätevästi tunnistettua koneen? Ulkoinen ip-osoitehan riippuu verkkopurkista eli samaa verkkopurkia käyttävillä on sama osoite. Mitenkä saisin erotettua ne toisistaan?
MAC-osoitteella?
m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: PHP-ongelmat

Post by m1c »

esa94 wrote:
Latexi95 wrote:Mitenkä saisin kätevästi tunnistettua koneen? Ulkoinen ip-osoitehan riippuu verkkopurkista eli samaa verkkopurkia käyttävillä on sama osoite. Mitenkä saisin erotettua ne toisistaan?
MAC-osoitteella?
Mahdotonta, MAC-osoite ei kuulu TCP/IP-kerrokseen.
Alkuperäiseen kysymykseen: jos kyse on ihan perus nettisivuista, kannattaa varmaan käyttää keksejä. Tällöin voit erottaa käyttäjät toisistaan, mutta kannattaa muistaa, että käyttäjä voi poistaa keksin ja saada sen jälleen "uuden identiteetin" uuden keksin muodossa.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: PHP-ongelmat

Post by esa94 »

m1c wrote: Mahdotonta, MAC-osoite ei kuulu TCP/IP-kerrokseen.
Jotenkin luulin vastanneeni ihan eri ketjuun, tämähän olikin PHP-ketju o_O

Keksit toiminevat, kuten m1c mainitsi.
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: PHP-ongelmat

Post by Latexi95 »

No käytetään sitten "keksejä".
Kiitos vastauksista.
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: PHP-ongelmat

Post by Jani »

Ajattelin tastata SimpleXML-luokkaa, mutta tulin ongelman kohdalle.

Sivulla http://213.216.225.182/xml.php on tämä koodi:

Code: Select all

<?php
	$xml = "
		<?xml version='1.0' standalone='yes'>
		<html>
			<head>
				<title>troll</title>
			</head>
			<body>
				<p>
					I'm troll!
				</p>
			</body>
		</html>";
	$xml = SimpleXMLElement($xml);
	$xml->head->title = "XML";
	
	$body = $xml->body;
	$xml->body->p[0] = "This is XML!";
	$xml->body->addChild('p');
	$xml->body->p[1]->addAttribute('style','text-align: center;');
	$xml->body->p[1] = "This is another p!";
	
	echo $xml->asXML();
?>
Minkä ihmeen takia tuo virheilmoitus tulee?
Sitten jos muutan koodin kommentoiduksi, sivu avautuu, mutta ei tietenkään tulosta mitään.

Code: Select all

<?php /*
	$xml = "
		<?xml version='1.0' standalone='yes'>
		<html>
			<head>
				<title>troll</title>
			</head>
			<body>
				<p>
					I'm troll!
				</p>
			</body>
		</html>";
	$xml = SimpleXMLElement($xml);
	$xml->head->title = "XML";
	
	$body = $xml->body;
	$xml->body->p[0] = "This is XML!";
	$xml->body->addChild('p');
	$xml->body->p[1]->addAttribute('style','text-align: center;');
	$xml->body->p[1] = "This is another p!";
	
	echo $xml->asXML(); */
?>
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Jani wrote:Ajattelin tastata SimpleXML-luokkaa, mutta tulin ongelman kohdalle.

Sivulla http://213.216.225.182/xml.php on tämä koodi:

Code: Select all

<?php
	$xml = "
		<?xml version='1.0' standalone='yes'>
		<html>
			<head>
				<title>troll</title>
			</head>
			<body>
				<p>
					I'm troll!
				</p>
			</body>
		</html>";
	$xml = SimpleXMLElement($xml);
	$xml->head->title = "XML";
	
	$body = $xml->body;
	$xml->body->p[0] = "This is XML!";
	$xml->body->addChild('p');
	$xml->body->p[1]->addAttribute('style','text-align: center;');
	$xml->body->p[1] = "This is another p!";
	
	echo $xml->asXML();
?>
Minkä ihmeen takia tuo virheilmoitus tulee?
Sitten jos muutan koodin kommentoiduksi, sivu avautuu, mutta ei tietenkään tulosta mitään.

Code: Select all

<?php /*
	$xml = "
		<?xml version='1.0' standalone='yes'>
		<html>
			<head>
				<title>troll</title>
			</head>
			<body>
				<p>
					I'm troll!
				</p>
			</body>
		</html>";
	$xml = SimpleXMLElement($xml);
	$xml->head->title = "XML";
	
	$body = $xml->body;
	$xml->body->p[0] = "This is XML!";
	$xml->body->addChild('p');
	$xml->body->p[1]->addAttribute('style','text-align: center;');
	$xml->body->p[1] = "This is another p!";
	
	echo $xml->asXML(); */
?>
XML-esittely alkaa sinulla väärällä tavalla. OIet unohtanut kysymysmerkin. Teit näin:

Code: Select all

<?xml version='1.0' standalone='yes'>
Ja oikea tapa on näin:

Code: Select all

<?xml version='1.0' standalone='yes'?>
Huomaat varmaankin eron? :)
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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: PHP-ongelmat

Post by Jani »

VesQ wrote:
Jani wrote:Ajattelin tastata SimpleXML-luokkaa, mutta tulin ongelman kohdalle.

Sivulla http://213.216.225.182/xml.php on tämä koodi:

Code: Select all

<?php
	$xml = "
		<?xml version='1.0' standalone='yes'>
		<html>
			<head>
				<title>troll</title>
			</head>
			<body>
				<p>
					I'm troll!
				</p>
			</body>
		</html>";
	$xml = SimpleXMLElement($xml);
	$xml->head->title = "XML";
	
	$body = $xml->body;
	$xml->body->p[0] = "This is XML!";
	$xml->body->addChild('p');
	$xml->body->p[1]->addAttribute('style','text-align: center;');
	$xml->body->p[1] = "This is another p!";
	
	echo $xml->asXML();
?>
Minkä ihmeen takia tuo virheilmoitus tulee?
Sitten jos muutan koodin kommentoiduksi, sivu avautuu, mutta ei tietenkään tulosta mitään.

Code: Select all

<?php /*
	$xml = "
		<?xml version='1.0' standalone='yes'>
		<html>
			<head>
				<title>troll</title>
			</head>
			<body>
				<p>
					I'm troll!
				</p>
			</body>
		</html>";
	$xml = SimpleXMLElement($xml);
	$xml->head->title = "XML";
	
	$body = $xml->body;
	$xml->body->p[0] = "This is XML!";
	$xml->body->addChild('p');
	$xml->body->p[1]->addAttribute('style','text-align: center;');
	$xml->body->p[1] = "This is another p!";
	
	echo $xml->asXML(); */
?>
XML-esittely alkaa sinulla väärällä tavalla. OIet unohtanut kysymysmerkin. Teit näin:

Code: Select all

<?xml version='1.0' standalone='yes'>
Ja oikea tapa on näin:

Code: Select all

<?xml version='1.0' standalone='yes'?>
Huomaat varmaankin eron? :)
Eron huomasin, mutta ei se toimi vieläkään :/
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Jani wrote:Eron huomasin, mutta ei se toimi vieläkään :/
Olet unohtanut, että tuo on luokka, mutta käytät konstruktoria kuten funktiota. Eli yksinkertaisemmin sanottuna, sinulta puuttuu new avainsana tästä:

Code: Select all

$xml = SimpleXMLElement($xml);
Sen pitäisi olla näin:

Code: Select all

$xml = new SimpleXMLElement($xml);
Suosittelisin kuitenkin, että vaihdat noiden muuttujien nimet niin, ettei luokan SimpleXMLElement instanssilla "$xml" ole samaa nimeä kuin varsinaisella xml-tekstillä. Sitten vielä sen verran, että xml-määrittelyn tulee olla HETI ENSIMMÄISENÄ xml-merkkijonossa. Siis tässä kokonaisuudessaan:

Code: Select all

<?php
   $xmlstr = "<?xml version='1.0' standalone='yes'?>
      <html>
         <head>
            <title>troll</title>
         </head>
         <body>
            <p>
               I'm troll!
            </p>
         </body>
      </html>";
   $xml = new SimpleXMLElement($xmlstr);
   $xml->head->title = "XML";
   
   $body = $xml->body;
   $xml->body->p[0] = "This is XML!";
   $xml->body->addChild('p');
   $xml->body->p[1]->addAttribute('style','text-align: center;');
   $xml->body->p[1] = "This is another p!";
   
   echo $xml->asXML();
?>
EDIT:

Sitten vielä yksi asia. Jos haluat, että selain käsittelee dokumentin XML-dokumenttina (niinkuin sen pitäisi, kun kyseessä on XML eikä HTML..!), tulee sinun lähettää selaimelle tieto headerissa, että kyseessä on XML-dokumentti. Käytä sitä varten PHP:n funktiota header tähän tapaan:

Code: Select all

header('Content-Type: text/xml');
Tuo pitää olla asetettuna ennen kuin MITÄÄN (siis edes välilyöntiä tai rivinvaihtoa) on lähetetty selaimelle. Tässä on oma esimerkkisi tuolla header-jutskalla lisättynä. Huomaa, että laitoin sen juuri ennen echo-komentoa - tällöinhän header lähetetään kuitenkin ennen kuin mitään muuta on lähetetty :).

Code: Select all

<?php
   $xmlstr = "<?xml version='1.0' standalone='yes'?>
      <html>
         <head>
            <title>troll</title>
         </head>
         <body>
            <p>
               I'm troll!
            </p>
         </body>
      </html>";
   $xml = new SimpleXMLElement($xmlstr);
   $xml->head->title = "XML";
   
   $body = $xml->body;
   $xml->body->p[0] = "This is XML!";
   $xml->body->addChild('p');
   $xml->body->p[1]->addAttribute('style','text-align: center;');
   $xml->body->p[1] = "This is another p!";
   
   header('Content-Type: text/xml');
   echo $xml->asXML();
?>
Eron huomaa selkeästi, varsinkin firefoxilla.[/edit]
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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 4:53 pm

Re: PHP-ongelmat

Post by Jani »

Ei - ei toimi vieläkään... :(
Ei toimi vaikka koodi ois eri :/
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Jani wrote:Ei - ei toimi vieläkään... :(
Miten sitten onnistut säätämään? Minulla ainakin toimii ihan loistavasti: http://vesq.jouluserver.com/examples/simplexml.php

Ja tässä on tiedoston sisältö:

Code: Select all

<?php
   $xmlstr = "<?xml version='1.0' standalone='yes'?>
      <html>
         <head>
            <title>troll</title>
         </head>
         <body>
            <p>
               I'm troll!
            </p>
         </body>
      </html>";
   $xml = new SimpleXMLElement($xmlstr);
   $xml->head->title = "XML";
   
   $body = $xml->body;
   $xml->body->p[0] = "This is XML!";
   $xml->body->addChild('p');
   $xml->body->p[1]->addAttribute('style','text-align: center;');
   $xml->body->p[1] = "This is another p!";
   
   header('Content-Type: text/xml');
   echo $xml->asXML();
?>
Sitten taasen ilman header-funktiota: http://vesq.jouluserver.com/examples/simplexml_html.php
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
m1c
Member
Posts: 65
Joined: Tue Aug 28, 2007 5:10 pm
Location: \o

Re: PHP-ongelmat

Post by m1c »

Kannattaa jani huomata myös, että html-dokumenttien parsimiseen/luomiseen DOM on oikea työkalu, vaikka periaatteessa xhtml onkin täysin xml-yhteensopivaa
Post Reply