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...
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ä.
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
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).
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.
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ää.
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 ?
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
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'].
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ä! =)
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.
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ä
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
Sitten siirryttiin http://mureakuha.com/keskustelut/2?11235 jossa myös koodia näkyvillä.
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
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.
Tuo alkuperäinen checkout.php on kyllä niin hirviä viritys, että meikä sitoutuu irti moisen muokkaamisesta. Oiva esimerkki, kuinka vetäistä muuttujia hatusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.