PHP-ongelmat

Muu yhteisön välinen keskustelu.
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

Keksiikö kukaan miksi echo ei suolla ulos mitään?

Code: Select all

<?php

if ($_GET["p"] != null) {
$page = ($_GET["p"]);
} else {
$directory = "System/Guestbook/";
if (glob($directory . "*.txt") != false)
 $page = count(glob($directory . "*.txt"));
}

$viestit = file('System/Guestbook/'.$page.'.txt');
$viestit = array_reverse($viestit);
$viestimaara = count($viestit);

for ($i = 0; $i < $viestimaara; $i++) {
   $tiedot = explode("|", $viestit[$i], 4);


   $nimi = $tiedot[0];
   $aika = $tiedot[1];
   $viesti = $tiedot[2];
   $iposo = $tiedot[3];

   echo "<p><b>Lähettäjä</b>: $nimi <p>";
   echo "<b>Aika</b>: " . date("d.m.Y H:i", $aika) . "<br>";
   echo "<br>$viesti<hr>";
}

if (glob($directory . "*.txt") != false)
 $maarat = count(glob($directory . "*.txt"));

$edel = $page - 1;
$seur = $page + 1;



If (is_file ($directory.$edel.".txt") != false) {

If (is_file ($directory.$seur.".txt") != false) {

echo "<h3><a href='lomake.php?p=".$seur."'>Uudemmat viestit</a>---<a href='lomake.php?p=".$edel."'>Vanhemmat viestit</a></h3>";

}

} else {

If (is_file ($directory.$edel.".txt") != false)
echo "<h3>Uudemmat viestit---<a href='lomake.php?p=".$edel."'>Vanhemmat viestit</a></h3>";


If (is_file ($directory.$seur.".txt") != false)
echo "<h3><a href='lomake.php?p=".$seur."'>Uudemmat viestit</a>---Vanhemmat viestit</h3>";

}


?>
Elikkä, kansiossa on 3 tiedostoa (1.txt, 2.txt...) , jokaisessa on viestejä. Ylläoleva koodinpätkä valitsee oikean tiedoston (eli katsoo antaako $_Get["p"] mitään arvoa ja mikä se on ja niinedespäin) ja tulostaa viestit. Ongelmana on tuo "valikko", eli sillä pitäisi voida vaihtaa tiedostoa klikkaamalla linkkiä (joko "uudemmat viestit" tai "vanhemmat viestit"). Siinä on myös ominaisuus, että se ei anna avata tiedostoa jota ei ole (eli nykyinen sivu on muuttujassa $page ja katsotaan sen arvoja muuttamalla löytyykö lisää tiedostoja). Muuten hyvä, mutta echo ei tulosta mitään.

Kiitos jo etukäteen :D
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Peltsi wrote:Keksiikö kukaan miksi echo ei suolla ulos mitään?
Huh kun on jotenkin kamalan näköistä koodia. Ei ole kaikkia lohkoja sisennetty, käytät isoja alkukirjaimia joissain iffeissä eikä kommentteja ole yhtäkään. Sen lisäksi vielä vertailet jokaisessa iffissä aivan turhaan onko jokin palautusarvo erisuuri kuin false. Ei sinun tarvitse sitä verrata, voit vain kirjoittaa

Code: Select all

if (is_file("not_exists")) { echo "Hei, maailma!"; } 
Noh, koitetaanpas silti saada selvää...

Code: Select all

for ($i = 0; $i < $viestimaara; $i++) {
   // ...koodia...
   echo "<p><b>Lähettäjä</b>: $nimi <p>";
   echo "<b>Aika</b>: " . date("d.m.Y H:i", $aika) . "<br>";
   echo "<br>$viesti<hr>";
} 
Ainakaan et tuossa kohtaa sulje kertaakaan <p>-tagia, vaan avaat niitä jokaista viestiä kohden kaksi kappaletta. Se ainakin aiheuttaa jotain ongelmia.

Code: Select all

if (glob($directory . "*.txt") != false)
$maarat = count(glob($directory . "*.txt"));
Tuo pätkä koodia on aivan turha, et tee sillä mitään. Ainakaan vielä. Jos meinaat tehdä jotain, niin tallenna ihmeessä glob($directory . "*.txt") talteen johonkin muuttujaan ensin ja sitten tee iffit ynnä muut. Säästyt turhalta glob-kutsulta.

Code: Select all

$viestit = file('System/Guestbook/'.$page.'.txt'); 
Tuossa kohtaa sinulla on hyvin vakava ongelma, sillä käyttäjä voi antaa vaarallista dataa $_GET["p"] kohtaan. Kannattaa pakottaa $page-muuttuja olemaan kokonaisluku:

Code: Select all

$page = (int) $_GET["p"]; 

Code: Select all

If (is_file ($directory.$edel.".txt") != false) {

If (is_file ($directory.$seur.".txt") != false) {

echo "<h3><a href='lomake.php?p=".$seur."'>Uudemmat viestit</a>---<a href='lomake.php?p=".$edel."'>Vanhemmat viestit</a></h3>";

}

} else {

If (is_file ($directory.$edel.".txt") != false)
echo "<h3>Uudemmat viestit---<a href='lomake.php?p=".$edel."'>Vanhemmat viestit</a></h3>";


If (is_file ($directory.$seur.".txt") != false)
echo "<h3><a href='lomake.php?p=".$seur."'>Uudemmat viestit</a>---Vanhemmat viestit</h3>";

} 
Voisit tuon pätkän saada PALJON siistimmin koodattua ja vähentää samojen juttujen uudelleen koodaamista jos vain miettisit tuon tarkasti.

Vinkkinä sellainen, että jos käytät PHP:n puolella merkkijonoissa kaksoinlainausmerkkejä, niin muuttujat muutetaan suoraan koodista oikein - eli sinun ei tarvitse aina pätkäistä merkkijonoa, kun haluat laittaa sinne muuttujan. Nämä esimerkit tulostavat samat merkkijonot:

Code: Select all

<?php
$muuttuja = 9001; // OVER NINE THOUSAAAAAAND!
echo "Muuttuja on $muuttuja";
echo "Muuttuja on ".$muuttuja;
echo "Muuttuja on {$muuttuja}";
echo "Muuttuja on 9001";
?>
EDIT:

Näköjään oletkin käyttänyt tuota vinkkiäni jo joissain kohdissa mutta toisissa et, vaikka voisit. Jos aiot erotella muuttujat erikseen merkkijonoista niin on parempi käyttää yksinkertaisia lainausmerkkejä ' koska ne ovat nopeampia ja estävät mahdollisten muuttujien livahtamisen merkkijonoon.

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
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

VesQ wrote:*tekstiä*
Siistin (ja yritin korjata) koodin valikkokohtaa, valittaa ylimääräisestä { merkistä ensimmäisen if lauseen kohdalla:

Code: Select all

If (is_file ("System/Guestbook/$edel.txt") {
//Valittaa ylläolevasta rivistä

   If (is_file ("System/Guestbook/$seur.txt")) {
   echo "<h3><a href='lomake.php?p=$seur'>Uudemmat viestit</a>---<a href='lomake.php?p=$edel'>Vanhemmat viestit</a></h3>";

   } else {

   echo "<h3>Uudemmat viestit---<a href='lomake.php?p=$edel'>Vanhemmat viestit</a></h3>";

   }

} else {

echo "<h3><a href='lomake.php?p=$seur'>Uudemmat viestit</a>---Vanhemmat viestit</h3>";

}
Eikö php muka ymmärrä sisäkkäisitä if-lauseista jos käytetään else:ä, vai enkö sitten itse ymmärrä... :D

PS: sisennys oli viimeksi huonoa, kun koodailin sen puhelimella, ja sisentelyt sillä on suht "mukavaa"...
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Peltsi wrote:
VesQ wrote:*tekstiä*
Siistin (ja yritin korjata) koodin valikkokohtaa, valittaa ylimääräisestä { merkistä ensimmäisen if lauseen kohdalla:

Code: Select all

If (is_file ("System/Guestbook/$edel.txt") {
Ihmekkös kun valittaa kun sinulta puuttuu toinen sulkumerkki )
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
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

VesQ wrote:
Peltsi wrote:
VesQ wrote:*tekstiä*
Siistin (ja yritin korjata) koodin valikkokohtaa, valittaa ylimääräisestä { merkistä ensimmäisen if lauseen kohdalla:

Code: Select all

If (is_file ("System/Guestbook/$edel.txt") {
Ihmekkös kun valittaa kun sinulta puuttuu toinen sulkumerkki )
Kiitos, tuota en tajunnut tarkastaakkaan, koitin etsiä virheitä vain lohkojen sitomisista (vai miksikä sitä { } merkkien laittelua oikein kutsutaan...). Nyt toimii :D
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

Ongelma on sellainen, että pitäisi muuttaa ''kaksois-hipsujen sisässä olevista tekstinosista'' kaksoishipsut [ i] - tageiksi ja kolmoishipsujen ympäröimistä hipsut [ b]-tageiksi, seuraavan esimerkin mukaan:

''Hello World :)'' => Hello World :)
'''Hello World :)''' => Hello World :)
'''''Hello World :)''''' => Hello World :)

Tällä hetkellä olen toteuttanut tämän näin:

Code: Select all

                    $wikiItalic = "/''(\\[b\\])*(.+)(\\[\\/b\\])*''/";
                    $wikiBold = "/'''(.+)'''/";

                    $message = preg_replace($wikiBold, '[b]$1[/b]', $message);    //$message = teksti, jota muotoillaan
                    $message = preg_replace($wikiItalic, '[i]$1$2$3[/i]', $message);
 
Mutta, kuten voi päätellä siitä että kirjoitan tätä, toiminta on huono. Yksinkertaiset, yksinäiset hipsuilla kuorrutetut sanat menevät läpi ihan nätisti, mutta heti jos $message sisältää välilyönnin tai jotain muuta monimutkaista, tuo systeemi hajoaa. Miten tuo pitäisi toteuttaa?
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: PHP-ongelmat

Post by Jare »

Feuer wrote:Ongelma on sellainen, että pitäisi muuttaa ''kaksois-hipsujen sisässä olevista tekstinosista'' kaksoishipsut [ i] - tageiksi ja kolmoishipsujen ympäröimistä hipsut [ b]-tageiksi, seuraavan esimerkin mukaan:

...

Mutta, kuten voi päätellä siitä että kirjoitan tätä, toiminta on huono. Yksinkertaiset, yksinäiset hipsuilla kuorrutetut sanat menevät läpi ihan nätisti, mutta heti jos $message sisältää välilyönnin tai jotain muuta monimutkaista, tuo systeemi hajoaa. Miten tuo pitäisi toteuttaa?
En välttämättä ihan löytänyt bugaavaa kohtaa tuosta, mutta pari huomiota tuli mieleen. Toisaalta en tarkkaan tiedä, mitä tarkoiti sillä että "systeemi hajoaa". Ehkä tästä vastauksesta on jotain apua.

Code: Select all

$wikiItalic = "/''(\\[b\\])*(.+)(\\[\\/b\\])*''/";
[ b] ja [/ b] -tageja ei mielestäni tarvitse huomioida tässä kohtaa. .+ huomioi ne joka tapauksessa. Jos patternin saa yksinkertaisemmaksi, on helpompi nähdä siinä mahdollisesti olevat virheet.

Toinen juttu on se, että .+ on ahmatti joka syö niin paljon merkkejä kuin vain voi. Esimerkiksi merkkijonosta ''teksti1'' asd ''teksti2'' tuo $wikiBold-pattern nappaa molemmat tekstit, eli tällaisen pätkän: teksti1'' asd ''teksti2, koska pisteelle kelpaa myös heittomerkit. Vaihda .+:n tilalle .+? jolloin se tyytyy lyhimpään mahdolliseen merkkijonoon.

Testaamatta en kuitenkaan osaa sanoa, onko tuossa muuta parannettavaa. RegExpit on kuitenkin rakettitiedettä. :D
Feuer
Devoted Member
Posts: 520
Joined: Tue Jun 16, 2009 11:13 am
Contact:

Re: PHP-ongelmat

Post by Feuer »

mm. välilyönti aiheutti sen, ettei teksti enää mätsännyt kumpaankaan patterniin ja tuota koodia räpeltäessä sain ulos myös tällaista merkkausta[/ i][/ u], joka ilmeisesti onkin phpbb:n mielestä ihan hyvää merkkausta. Jännä.


RegExpit on kuitenkin rakettitiedettä. :D

On! Mutta kiinnostavaa sellaista, niin kauan kun pysyy preg_ - funktioiden ajatuksenkulussa perässä :P

EDIT:

Jaha, kaikki muut testitapaukset parseutuivatkin ihan kauniisti tuon koodin läpi, paitsi yksi.

''Jumankauta O.o sehän toimii'', elämä on '''hassumpaa ''boldattuna''''' kääntyi muotoon
Jumankauta O.o sehän toimii'', elämä on hassumpaa ''boldattuna[/ i][/ b]
vaikka selvästi ensimmäisen kursiivin pitäisi päättyä sanaan "toimii" ja sanan "boldattuna" pitäisi olla oma kursiivinsa.

Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

Moro.

Ajattelin tutustua tuohon MySQL:ään. Ongelma on se, että yritän tarkastaa taulusta että onko siellä esim. käyttäjä "a". Ja jos käyttäjä "a" löytyy niin jotain jne...
Kaikenlaisia koodiesimerkkejä tuon käyttäjän tarkastamiseen kokeiltu, mikään niisä ei jostain syystä toimi.
Käytän tietokantaa PDO:lla.

Toivottavasti oli tarpeeksi tietoa ongelmasta ja joku keksii siihen ratkaisunkin.
Sly_Jack0
Devoted Member
Posts: 612
Joined: Mon Dec 10, 2007 8:25 am

Re: PHP-ongelmat

Post by Sly_Jack0 »

Psudokoodia seuraa:

Code: Select all

SELECT * FROM users

foreach tulokset {
     Jos käyttäjänimi == 'a' {
          löytyi = true
          break
    }
}

Jos löytyi = true, niin jtn....
En usko, että on paras tapa, mutta ensimmäinen, jonka keksin.
Herra Siili
Advanced Member
Posts: 308
Joined: Tue Nov 25, 2008 8:06 pm
Contact:

Re: PHP-ongelmat

Post by Herra Siili »

Pseudolla jatketaan.

Code: Select all

SELECT * FROM users WHERE username =`a`

Jos löytyi yksi rivi, käyttäjä on olemassa.
PDO tekee koodista hieman erilaista, mutta periaate on sama.
a.k.a. Gehock
User avatar
Peltsi
Active Member
Posts: 121
Joined: Thu Sep 30, 2010 12:16 pm

Re: PHP-ongelmat

Post by Peltsi »

Sly_Jack0 wrote:Psudokoodia seuraa:

Code: Select all

SELECT * FROM users

foreach tulokset {
     Jos käyttäjänimi == 'a' {
          löytyi = true
          break
    }
}

Jos löytyi = true, niin jtn....
En usko, että on paras tapa, mutta ensimmäinen, jonka keksin.
Voitko selventää tuota?

Code: Select all

$kysely = $yhteys->prepare("SELECT * FROM allusers");

$kysely->execute();

foreach $kysely {
     if (kayttaja == '$k') {
          echo "löytyi";
          break
    }
}
Koitin ymmärtää tuota, mutta eihän siitä mitään tullut, no tulos on tuossa... Ja tuo $k on haettava käyttäjä, siis.
Eihän se tietenkään toiminut. Mistä tuo esimerkkisi muuttuja "tulokset" saa datansa?

EDIT:

Herra Siili wrote:Pseudolla jatketaan.

Code: Select all

SELECT * FROM users WHERE username =`a`

Jos löytyi yksi rivi, käyttäjä on olemassa.
PDO tekee koodista hieman erilaista, mutta periaate on sama.

Joo, ongelma onkin vain se, että miten tarkastan onko enemmän kuin 0 (eli saanko kyselyn tuloksen johonkin muuttujaan, josta tarkastan onko suurempi kuin 0, tätä on kokeiltu, mutta epäonnistunut). Johan tuntee ittensä hölmöksi :D[/edit]
EDIT:

Ongelma ratkaistu, kiitos kaikille auttaneille!

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 »

Toivottavasti teit sen ilman tuota for-looppia. Sen kanssa se on ehkä yksi pöljimmistä näkemistäni ratkaisuista :)
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: PHP-ongelmat

Post by Ruuttu »

Mun pääni ei tässä vaiheessa enää toimi, mutta ehkä joku teistä osaa auttaa. Olen kehittänyt yksinkertaisen piirrä & arvaa -pelin, jossa yksi pelaajista piirtää ja muut yrittävät tietyn aikarajan sisällä arvata, mistä sanasta on kysymys. Clientit ottavat yhteyttä PHP-palvelimeen sekunnin välein päivittääkseen chättiä ja tietysti sen piirroksen. Pelierät, pelaajat, sekä arvattavat sanat tallennetaan mySQL-tietokantaan. Ongelma on tämä: Jokainen pelierä saa kestää korkeintaan 120 sekuntia, eli kun time() - erän_alkamisaika >= 120, erät-tauluun lisätään uusi rivi, ja näin alkaa uusi erä. Koska pelaajia on useita, aina silloin tällöin käy niin että palvelimelle tulee kaksi pyyntöä täysin samaan aikaan => erä todetaan päättyneeksi monta kertaa, ja uusia eriä luodaan useita. Tästä seuraa lukuisia ongelmia. Olen paininut tämän asian kanssa jo pitemmän aikaa, enkä tiedä enää lainkaan onko sitä edes mahdollista korjata. Googlesta en onnistunut löytämään mitään hyödyllistä.

Code: Select all

$sql = mysql_query('SELECT * FROM erät ORDER BY erä_id DESC LIMIT 1'); /* haetaan tuorein erä */
$current_game = mysql_fetch_assoc($sql); /* isketään se muuttujaan */
				
if ($time - $current_game['starttime'] > 120) { /* lasketaan onko erä kulunut loppuun vertaamalla sen alkamisajankohtaa nykyhetkeen */
	/* tässä välissä on useita kyselyjä käsittävä koodinpätkä,
	jolla valikoidaan kenelle annetaan seuraavaksi piirtovuoro,
	ja minkä sanan hän joutuu piirtämään */
	$sql = mysql_query('INSERT INTO erät (artist, starttime, finishtime, winner)
	VALUES ('.$next_artist.','.$time.',0,0)');
}
Erä siis luodaan kahdesti koska yksittäinen PHP-sessio voi ainoastaan tarkistaa onko erä jo luotu - mutta ei sitä, onko jokin toinen PHP-sessio juuri luomassa sitä.
Peliä voi pelata (tästä bugista huolimatta) osoitteessa http://datikset.dalocker.net/doodle/
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP-ongelmat

Post by valscion »

Ruuttu wrote:Mun pääni ei tässä vaiheessa enää toimi, mutta ehkä joku teistä osaa auttaa.
Sanoisin että voisit selvitä ongelmasta, jos teet aikatarkistuksen myös MySQL:n puolella ja yhdistät siihen tarkistuksen, onko jokin toinen rivi jo luotu.

SQL-query voisi näyttää jotenkin tältä:

Code: Select all

SELECT TIMESTAMPDIFF(SECOND, `lastgame_started`, NOW()) As diff, `nextId` FROM `mytable` 
  WHERE diff >= 120 AND 
    (SELECT TIMESTAMPDIFF(SECOND, `starttime`, NOW()) FROM `erät` ORDER BY `id` LIMIT 1) >= 120
  LIMIT 1
Tuosta ottaisit siis talteen 'nextId' kolumnin sisältämän arvon. Sitten INSERTin tekisit käyttämällä jotenkin tämäntapaista SQL:ää:

Code: Select all

INSERT IGNORE INTO `erät` (id, artist, starttime, finishtime, winner) VALUES (<tähän edellinen nextId arvo>, ....)
Kunhan id kenttä olisi määritelty uniikiksi (UNIQUE) niin INSERTin pitäisi olla laittamatta uutta riviä tauluun, koska siellä on jo kyseisellä ID:llä uusi peli tulossa.

Tuo idea tuossa minun selectissäni olisi siis se, että sinulla olisi erillinen taulu (esimerkissä viitattuna nimellä mytable) jossa olisi aina yksi rivi. Taulussa olisi sarakkeet lastgame_started ja nextId, jotka kertoisivat milloin viimeisin peli on alkanut ja mikä olisi seuraavan pelin ID. Sitten SELECT hakisi tiedon että milloin edellinen peli on aloitettu, vertaisi sitä nykyhetkeen sekunneissa ja tarkistaa että ero on ainakin 120 sekuntia. Sitten tehtäisiin toinen tarkistus WHERE-lausekkeen sisältä, joka hakisi erät-taulusta viimeisimmän luodun pelin aloitusajan ja tarkistaisi että myös se on ylittänyt 120 sekuntia.

PHP:n puolella tekisit sitten tarkistuksen, että palauttiko tuo SELECT yhtään riviä. Jos ei palauttanut, aikaa ei ole vielä mennyt tarpeeksi tai mahdollisesti uusi peli on jo luotu (eli tekisit uuden queryn ja tarkistaisit onko uusi peli jo olemassa). Jos tuo palautti yhden rivin, niin sitten PHP:n puolella teet tuon INSERT-kutsun. Jos se epäonnistuu, niin mysql_num_rows() palauttaa nollan eli tiedon siitä ettei yhtään riviä lisätty. Jos mysql_num_rows() palauttaa yksi, niin uusi peli on luotu onnistuneesti.
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 »

Nettisivuja taas vaihteeksi kyhäämässä, seuraavanlainen ongelma tuli vastaan:

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. Miten saada se toimimaan sillein, että se vain tarkistaisi, menikö oikein, ja selaimen ruudulla pysyisi kokoajan index.html?

kosketusnäytöllä on sitten vaikeaa kirjoittaa...
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 »

Konstaduck wrote: Mutta login.php ei toimi toivotulla tavalla, ja selain avaa sen kuin minkätahansa tekstitiedoston.
Eli miten? Tulostaa php:n syötteen? Tulostaa php-koodin?
Konstaduck wrote: Miten saada se toimimaan sillein, että se vain tarkistaisi, menikö oikein, ja selaimen ruudulla pysyisi kokoajan index.html?
AJAX? Kannattaa vilkuilla jQueryä. Tai sitten login.php:hen rivi, olettaen että ymmärsin oikein

Code: Select all

Header("Location: ".$_SERVER['HTTP_REFERER']);
 
Asus P8P67 LE/Intel Core i5 2500K/ GTX560/ 8GT RAM/750GT HDDt + 120GT SSD + 13" Macbook Pro
Blogi - Peräpohjola - MERPG
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: PHP-ongelmat

Post by Viltzu »

Konstaduck wrote:Nettisivuja taas vaihteeksi kyhäämässä, seuraavanlainen ongelma tuli vastaan:

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.
Olethan varma, että se on .php? Jotkut HTML editorit tuppaavat heittämään aina .html päätteen. Tarkista ettei tiedosto ole sittenkin login.php.html. (Voit vaikka mennä johonkin kansioon ja painaa Järjestä -> Kansion ja haun asetukset -> välilehti "näytä" -> ruksi pois kohdasta "piilota tunnettujen tiedostotyyppien tunnisteet")
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 »

Viltzu wrote:
Konstaduck wrote:Nettisivuja taas vaihteeksi kyhäämässä, seuraavanlainen ongelma tuli vastaan:

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.
Olethan varma, että se on .php? Jotkut HTML editorit tuppaavat heittämään aina .html päätteen. Tarkista ettei tiedosto ole sittenkin login.php.html. (Voit vaikka mennä johonkin kansioon ja painaa Järjestä -> Kansion ja haun asetukset -> välilehti "näytä" -> ruksi pois kohdasta "piilota tunnettujen tiedostotyyppien tunnisteet")
Ei, kyllä se ihan .php tiedosto on. Selain siis avaa sen samaan tyyliin, kuin katsoisi jonkun sivun lähdekoodia. Ja feuer, tuo koodipätkänen ei hyödyttänyt mitään :o
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...
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: PHP-ongelmat

Post by TheFish »

Konstaduck wrote:
Viltzu wrote:
Konstaduck wrote:Nettisivuja taas vaihteeksi kyhäämässä, seuraavanlainen ongelma tuli vastaan:

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.
Olethan varma, että se on .php? Jotkut HTML editorit tuppaavat heittämään aina .html päätteen. Tarkista ettei tiedosto ole sittenkin login.php.html. (Voit vaikka mennä johonkin kansioon ja painaa Järjestä -> Kansion ja haun asetukset -> välilehti "näytä" -> ruksi pois kohdasta "piilota tunnettujen tiedostotyyppien tunnisteet")
Ei, kyllä se ihan .php tiedosto on. Selain siis avaa sen samaan tyyliin, kuin katsoisi jonkun sivun lähdekoodia. Ja feuer, tuo koodipätkänen ei hyödyttänyt mitään :o
Onhan tiedostossa varmastikkin php-tagit (siis "<?php" ja "?>")? Palvelimen lokitiedostoista kannattaa myös katsoa, sanotaanko siellä mitään asiaan liittyvää.
CoolBasic henkilökuntaa
Kehittäjä
Post Reply