Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ostoskori NopCart ongelmia

Sivun loppuun

sprawl [30.01.2006 21:17:00]

#

Olen tässä yrittänyt saada toimimaan tuota ilmaista ostoskoria. Sivuilta voi ladata tuollaisen malli kaupan, joka ei sekään toiminut omalla serverillä eikä mbnetin servulla.

Tässä warningit mitkä tulee tilauslomakkeen täytön jälkeen:

Notice: Undefined variable: b_first in c:\palvelin\oma\checkout.php on line 102
Notice: Undefined variable: header in c:\palvelin\oma\checkout.php on line 65
Warning: include() [function.include]: Failed opening '' for inclusion ... on line 65

jos jollakin on hyviä kokemuksia joistakin ilmaisista ostoskori pohjista niin linkkejä vaan tähän sitte...

tsuriga [30.01.2006 21:32:29]

#

Noticet ovat nimensä mukaisesti huomautuksia, noita muuttujia ei ole alustettu ennen käyttöä. Käytännössä ei haittaa, mutta on kuitenkin hyvien tapojen mukaista alustaa muuttujat ennen käyttöä / tarkistaa, onko muuttuja alustettu. Tuo includen virhe tulee siitä, ettei includelle syötetyn parametrin mukaista tiedostoa löydy, ainakaan sieltä mistä sitä etsitään. Kenties liittyy tuohon include_pathiin, näyttäisi osoittavan eri paikkaan. Etsi php.inistä hakusanalla "include_path" ja katso mitä siinä sanotaan, itsellä se on kommentoitu, koko rimpsu seuraavanlainen:
;include_path = ".;c:\php\includes"
Tai laita se tiedosto, jonka haluat includettaa, tuonne C:\php5\PEAR\-hakemistoon. Jos toimii niin kokeile vaihtaa include_path php.inistä.

sprawl [30.01.2006 23:39:27]

#

eipä auttanut mikään noista, kiitos kuitenkin. =)
Jos on aikaa ja mielenkiintoa niin kannattaa ladata se paketti sieltä http://www.nopdesign.com/freecart/ osoitteesta ja yrittää saada sillä php:llä toimimaan edes se sample sivusto joka on siinä samalla sivustolla ladattavissa

tsuriga [31.01.2006 00:28:43]

#

Niin siis tuo checkout.php tässä on kyseessä, löytyy sieltä alempaa. Tuo ei mitään järin kaunista koodia ole yleensäkään. Vika voi olla tuossa $header-muuttujan näkymättömyydellä tuonne funktioon. Eli joko kutsut funktiossa global $header, tai tunget sen superglobal-tauluun, $GLOBALS['header'] = "header.html"; (jälkimmäisestä en tiedä, löytyykö "header.html" nyt $header-muuttujasta, ainakin tuolta taulukosta sen löytää jos ei muuten).

sprawl [31.01.2006 14:01:06]

#

joo, tuo auttoi kun vaihdoin kaikki $header ja $footer filut $GLOBALS jne..

nyt tulee kuitenkin ilmoitus:

The form you submitted was not complete.

I'm sorry, but it appears that you forgot to fill in a required field. Please go back and correct the error.

vaikka täyttämällä samalla lailla kuin nopcartin sivuilla olevassa online demossa toimii, mutta nyt ei toimi.

-Ja vaikka täyttää kaikki kohdat asiallisesti niin ei auta, aina tuo sama virhe ilmoitus.

tsuriga [31.01.2006 15:48:05]

#

Tuo koko koodi pitäisi muuttaa PHP >= 4.2.x muotoon, kun register_globals laitettiin silloin defaultilla OFFille, syystä. Lisäksi sen html-muotoilun voisi muuttaa edes hieman silmille ystävällisemmäksi. Kaikki nuo formilta tulevat arvot löytyvät $_POST-taulukosta. Eli nyt tulee käyttää $_POST['ind1'] kun ennen toimi pelkkä $ind1 (tässä koodissa nuo $b_first ja semmoiset ovat näitä). Lisäksi php:n suositeltu aloitustagi on <?php, ei <?, jota scripta käyttää.

sprawl [31.01.2006 15:56:51]

#

Elikkä ymmärränkö oikein että noi $b_first ja kaikki muut muuttujat pitää muuttaa muotoon

$_POST['$b_first']

Muokkasin checkout.html tiedostoon muutokset:

Etunimi:    <input type="text" name="$_POST['$b_first']">
Sukunimi:   <input type="text" name="$_POST['$b_last']">
Email:      <input type="text" name="$_POST['$b_email']">

Tämä ei kuitenkaan auttanut, edelleen ilmoittaa virheellisiä tietoja.
tämänhetkisen tilanteen voi ladata: http://koti.mbnet.fi/spravl/nopcart.zip

Nythän täytyy sitten muuttaa checkout.php filusta nuo samaiset "$b_first" kohdat niin

$_GET['b_first']

mikäli olen tuon muuttujan oikein ymmärtänyt ?

sprawl [31.01.2006 17:12:12]

#

Muokkasin php filuun nuo $_GET hommelit.

ilmoitti että email on väärin, onko siis tässä lauseessa jotain mätää:

//# checks for valid email address
if( !(ereg("^(.+)@(.+)\\.(.+)$",$_GET['$b_email'])) ) {
    doFormError("You submitted an invalid email address.  Please go and correct the error.");
    exit;
}

kokeilin myös ohittaa tuon mailin tarkastuksen ihan vain kokeilun vuoksi, ilmoitti seuraavaa:

lainaus:

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in c:\palvelin\checkout.php on line 148

tsuriga [31.01.2006 21:16:56]

#

Ai ne tulevat GETillä, en huomannut moista. mailin käyttämiseksi sinulla pitäisi pyöriä jokin SMTP-softa koneella. Mbnetillä kuitenkin pitäisi toimia tuo mail? Tuo $_GET['$b_email'] on väärin, ellei sinulla todellakin ole URL muotoa "http://www.mydomain.com/mypage.php?$b_email=asdf". Jos formin metodi on GET, niin $_GET['b_email'].

sprawl [31.01.2006 21:26:51]

#

Tulivat getillä kun muutin ne, kattelin noita php manuja tuossa niin kun vinkin laitoit että post:illa lähettää tietoja eteenpäin niin getillä otetaan vastaan :]

joo, en muuttanut mitään noitten post ja get toimintojen jälkeen, ja lähetin filut mbnetin servulle ja rupesi toimimaan :)

toimimattomuus siis noitten muutosten jälkeen johtui vaan siitä että ei ollut itellä tarpeeksi softaa koneella.

Mutta, Kiitos tod. paljon tsuriga näistä avuista, sinun ansiosta saadaan firma käyntiin tässä viikon parin sisällä! =)

tsuriga [31.01.2006 22:06:10]

#

En kai minä semmoista vihjannut. form-tagin attribuutti "method" voi saada kahta arvoa, POST tai GET:
-POST: Tiedot lähetetään serverille palvelupyynnön mukana.
-GET: Tiedot lähetetään serverille osoitterivillä.
POST näyttäisi tässä mukavammalta.
np.

sprawl [31.01.2006 22:43:57]

#

Aa, huomasin että tuo toimii nyt ilman tuota emailin oikeellisuuden tarkistusta, siinä on jotain mätää koska se on kyllä aika hyödyllinen kuiteskin?

tässä koodipätkä jota en ole saanut selville mikä mättää:

if( !(ereg("^(.+)@(.+)\\.(.+)$",$_GET['$b_email'])) ) {
    doFormError("You submitted an invalid email address.  Please go and correct the error.");
    exit;
}

Hmm, maili tulee mutta siinä ei näy nimiä eikä osoitetietoja, eli mitään sellaista ei näy minkä asiakas kirjoittaa tilausta tehdessä

tsuriga [31.01.2006 23:38:14]

#

Tuossa kaksi viestiä taaksepäin sanoin mikä tuossa $_GET-taulukon viittauksessa on väärin. Muistelen myös kirjoittaneeni URLiin mypage.php?$b_email=asdf, mutta ei tuota dollarimerkkiä siinä näy. Näkyykö tilauslomakkeen lähdekoodissa formin metodin (<form method="POST/GET">) kohdalla POST vai GET? Jos GET niin vaihda se suosiolla POSTiin. Sitten checkout.php:ssä sinun pitää vaihtaa ne siinä mailissa olevat muuttujat muotoon $_POST['b_first'] etc. Ja kannattaa sitten rajoittaa noita käyttäjän syötteitä jotenkin, etteivät käyttäjät voi lähetellä aivan mitä tahansa tai pahimmassa tapauksessa, käyttää checkout.php:tä roskapostin lähettämiseen.

Ps. Vakavamielisempään firmaan suosittelen jotain ei-javascript-pohjaista tuotetta, esim. eCommerce (ei omakohtaisia kokemuksia kylläkään). http://opensourcecms.com

tsuriga [01.02.2006 01:10:03]

#

Sitten siirryttiin http://mureakuha.com/keskustelut/2?11235 jossa myös koodia näkyvillä.

sprawl [01.02.2006 14:07:30]

#

tuolla php filussa pitää kuitenkin olla tiedot muodossa: ?=

$strMessageBody .= "   $b_first \n";

->siis siinä kohdassa missä ilmoitetaan mitkä tiedot lähetetään emalina

----
vaihoin checkout.html:stä kaikki:

$_POST['$b_first']

seuraavaksi:

$_POST['b_first']

Ei auttanut näkyvästi

tsuriga [01.02.2006 17:33:15]

#

Kannattaa lukaista tuo Ohjelmointiputkan opas läpi, siellä on tuosta formien käsittelystä asiaa. Tulepa irkkiin @ Qnet ja /msg tsuriga asdf niin kattellaan siel sitä koodia pastebinin kera.

tsuriga [01.02.2006 20:44:41]

#

Tuo alkuperäinen checkout.php on kyllä niin hirviä viritys, että meikä sitoutuu irti moisen muokkaamisesta. Oiva esimerkki, kuinka vetäistä muuttujia hatusta.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta