PHP:hen

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

PHP:hen

Post by Jambo »

Onko mitään mahdollisuutta suorittaa PHP scriptejä serveriltä coolbasicilla?
Mietin vaan, kun tarvitsisin tohon peliin tälläista, että voisi esim.luoda käyttäjän pelin kautta.

Päätin nyt kysäistä ennen kuin alan kokeilemaan, koska jos en se ei toimikkaan, jään yrittämään sitä moneksi viikoksi enkä koskaan luovuta.

Ei siis tietenkään coolbasicin omilla funktioilla, mutta tällä cbNetwork.dll:n funktioilla SAATTAISI saada jotenkin säädettyä.
Mutta en kyllä usko, että saa mitenkään toimimaan.

Olisi kiva jos saisin vastauksen nopeasti. Kiitos
User avatar
Ilmuri
Developer
Developer
Posts: 277
Joined: Sun Aug 26, 2007 2:46 pm
Location: \o

Re: PHP:hen

Post by Ilmuri »

Luonnollisesti tiedostoon sijoitettu php-skripti suoritetaan, kun kyseistä tiedostoa haetaan serveriltä. Käsittääkseni cbNetworkilla pystyy kyllä tiedostoja lataamaan.
CoolBasic henkilökuntaa
Kehittäjä
CoolBasic Classic
Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

Re: PHP:hen

Post by Jambo »

Ilmuri wrote:Luonnollisesti tiedostoon sijoitettu php-skripti suoritetaan, kun kyseistä tiedostoa haetaan serveriltä. Käsittääkseni cbNetworkilla pystyy kyllä tiedostoja lataamaan.
Mietin vähän itsekin samaa asiaa, mutta saisiko joltain vielä vahvistuksen että näin voi tehdä.

Kiitos :)
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: PHP:hen

Post by tuhoojabotti »

voi tehdä! tein oman irc ohjelmankin mutta lopetin kun tuli liian vaikeaksi :P
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

Re: PHP:hen

Post by Jambo »

Kiitos tiedosta. :)
Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

Re: PHP:hen

Post by Jambo »

Vielä yksi kysymys. :)

Näin ei varmaan voi tehdä, että jos luodaan käyttäjää ohjelmalla ja tarkistetaan PHP:llä onko nimimerkki käytössä.
Jos on niin lähetetään PHP:llä tieto ohjelmalle, muuten jatketaan eteenpäin.

Siis, VOIKO PHP:LLÄ LÄHETTÄÄ TIETOA OHJELMALLE??
Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

Re: PHP:hen

Post by Jambo »

Tuli heti mieleen, että jos PHP kirjoittaa vaikka tekstitiedoston serverille ja ohjelma lukee siitä, onko nimi käytössä.
Näin sen ainakin saisi toimimaan, mutta onko helpompia vaihtoehtoja?

Eli, luodaan uusi txt tiedosto, kirjoitetaan "true"(käytössä) tai "false" (käyttämätön), ladataan tiedosto muistiin tai tallennetaan serveriltä, luetaan se ohjelmalla ja lopuksi poistetaan tieto.
Last edited by Jambo on Fri May 30, 2008 3:39 pm, edited 1 time in total.
Pie2
Member
Posts: 55
Joined: Mon Aug 27, 2007 8:14 pm
Location: Porvoo

Re: PHP:hen

Post by Pie2 »

Jambo wrote:Vielä yksi kysymys. :)

Näin ei varmaan voi tehdä, että jos luodaan käyttäjää ohjelmalla ja tarkistetaan PHP:llä onko nimimerkki käytössä.
Jos on niin lähetetään PHP:llä tieto ohjelmalle, muuten jatketaan eteenpäin.

Siis, VOIKO PHP:LLÄ LÄHETTÄÄ TIETOA OHJELMALLE??
Voi tehdä. Teet tuon niin että välität php-skriptille tietoa esim. GETillä ja samalla skripti echoaa josko nimimerkki on käytössä.
Samaan sysyyn pitää skriptin kirjata eri nimimerkit, ylläpitää käytössä olevia ja poistaa vanhentuneet.
Since 24-March 05
Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

Re: PHP:hen

Post by Jambo »

...Ja ohjelma lukee PHP:stä, mitkä nimimerkit ovat käytössä?
Kyllähän se ehkä voisi toimiakin, mutta mietin, että PHP lähettäisi ohjelmalle suoraan, onko nimimerkki käytetty. ,,,,,
Ja se taas onnistuu minun kirjoittamallani tyylillä. :/

Parempia ideoita?
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP:hen

Post by valscion »

Pie2 wrote:
Jambo wrote:Vielä yksi kysymys. :)

Näin ei varmaan voi tehdä, että jos luodaan käyttäjää ohjelmalla ja tarkistetaan PHP:llä onko nimimerkki käytössä.
Jos on niin lähetetään PHP:llä tieto ohjelmalle, muuten jatketaan eteenpäin.

Siis, VOIKO PHP:LLÄ LÄHETTÄÄ TIETOA OHJELMALLE??
Voi tehdä. Teet tuon niin että välität php-skriptille tietoa esim. GETillä ja samalla skripti echoaa josko nimimerkki on käytössä.
Samaan sysyyn pitää skriptin kirjata eri nimimerkit, ylläpitää käytössä olevia ja poistaa vanhentuneet.
Eli laitan vielä esimerkkikoodin tuosta selityksestä, koska ainakin itselleni se tuppaa tekemään asiat paljon helpommaksi. Huom! Alla oleva koodi ei toimi itsessään, vaan sinun tulee vaihtaa tietysti tuo osoite ainakin oikeaksi ja lisätä tarvittavat härpäkkeet koodin alkuun ;)

Code: Select all

//Haetaan sivu ja lisätään PHP:lle tieto nimimerkistä GET parametrilla muuttujassa "nimimerkki"
tarkistus = HTTPGet("http://omadomain.com/nimimerkki.php?nimimerkki=" + nimimerkki, false)

If tarkistus <> 200 Then
//Heitetään virhe, jos HTTPGet toiminto ei onnistunut
  MakeError("Nimimerkkiä ei onnistuttu tarkistamaan!" + Chr(10) + Chr(13) + GetNetErrorString( tarkistus ))
Else
  //Ladataan PHP:n tulostama teksti muuttujaan "teksti"
  Dim teksti As String
    For i = 1 To HTTP_ContentLength
       teksti = teksti + Chr( _Net_GetByte() )
  Next i
  
  If teksti = "uusi" Then 
    //Jos PHP palautti tiedoston, jossa luki "uusi", tehdään jotain
    MakeError("Uusi käyttäjä!") 'ihan vain esimerkiksi
  ElseIf teksti = "vanha" Then
    //Jos taas PHP ilmoittaa että nimimerkki on jo tiedossa 
    //(eli tiedostossa lukee tässä tapauksessa "vanha"), tehdään jotain muuta
    //Tähän voisi lisätä vaikka salasanan pyytämisen
        //HUOM! Koska käytetään suojaamatonta yhteyttä, niin salasanan sieppaaminen
        //osoitteesta on ulkopuolisille helppoa! Muista ainakin kryptata/hashata salasana jotenkin! 
        //esim. MD5 -hashaus, sopii hyvin URLin mukana kuljettamiseen
        //MD5 funktion saat CB koodikirjastosta: http://cbkk.systec.fi/koodi.php?id=102
    //Esim.
    //HTTPGet("http://omadomain.com/nimimerkki.php?nimimerkki=" + nimimerkki + "&salasana=" + MD5(salasana))

    MakeError("Nimimerkki on jo käytössä!") 'tämäkin vain esimerkiksi
  Else
    //Jos tiedostossa ei ollutkaan sitä, mitä odotettiin, ilmoitetaan odottamattomasta virheestä.
    //Voi johtua esim. tietokantayhteyden hajoamisesta tai jostain muusta
    MakeError("Palvelimella tapahtui odottamaton virhe!")
  EndIf
EndIf
Huomaa, että kirjoitin koodin kokeilematta sitä ensin CB:ssä, joten siinä saattaa olla pikkuvirheitä.

Sitten tästä vielä esimerkki-PHP koodi omalla palvelimellasi tiedostossa nimimerkki.php:

Code: Select all

<?php //tästä alkaa php-koodi
//Yhdistetään palvelimen tietokantaan, muista vaihtaa arvot
$mysql_con = mysql_connect("http://omadomain.com","käyttäjä","salasana");
If( !$mysql_con ) {
  //jos tietokantaan yhdistäminen ei onnistunut, niin pysäytetään koodin 
  //suorittaminen ja annetaan virheilmoitus
  die( "Virhe yhdistettäessa MySQL tietokantaan!\n" . '<br />' . mysql_error() );
}
If( $_GET['nimimerkki'] ) {
  // Tässä kohtaa tarkistettaisiin tietokannasta löytyykö nimimerkkiä.
  //Talletettaisiin siitä totuusarvo (true tai false) muuttujaan userExists,
  //koska sitä tarvitaan seuraavissa ehtolauseissa.
  
  //Jos nimimerkkiä ei löydy, ilmoitettaisiin että nimimerkki on uusi, eli:
  If(!userExists) //jos userExists ei ole true
    echo "uusi";
  //koska CB-koodissa viesti "uusi" tarkoittaa uutta käyttäjää.
  
  If( empty($_GET['salasana'] && userExists ) {
    /* (kommentoinnin aloitus)
    Jos URLissa ei ollut nimimerkin lisäksi salasanaa ja käyttäjä on jo olemassa, tehdään jotain.
    
    Jos taas nimimerkki
    olisi puolestaan jo käytössä, ilmoitettaisiin siitä näin:
      echo "vanha";
    Selitys tästä on sama kuin uuden käyttäjän kohdalla ;)
    (kommentoinnin lopetus) */
  } ElseIf( !empty($_GET['salasana']) && userExists ) {
    //salasana on annettu ja käyttäjä löytyy tietokannasta
    
    //tehdään jonkinlainen tarkistus, jossa katsotaan onko salasana sama kuin tietokannassa
  } ElseIf( !empty($_GET['salasana']) && !userExists ) {
    //Käyttäjää ei ole olemassa ja salasana on annettu.
    //Luotaisiin siis uusi käyttäjä ja asetettaisiin sen 
    //salasanaksi tuo 'salasana' GETtiin tallennettu merkkijono
  }
} Else {
  //URLissa ei kerrottu nimimerkkiä
  echo "Virhe!\n".'<br />';
  echo "Et ilmoittanut nimimerkkiä!"
}
//lopetetaan PHP-koodi, mutta sitä ennen suljetaan MySQL yhteys
mysql_close($mysql_con);
?>
Toivottavasti näistä koodinpätköistä on apua. Yritin tehdä mahdollisimman selkeät selitykset siitä, miten homma etenee ja mitä sinun tulee tehdä.
Tämänhän voisi melkein laittaa johonkin esimerkiksi, koska muillakin on varmaan samanlaisia ongelmia..
EDIT:

Lisäsin vielä tarkistuksen PHP-koodiin, jos on uusi nimimerkki ja salasana on annettu

Jambo
Member
Posts: 75
Joined: Sat Apr 05, 2008 5:57 pm

Re: PHP:hen

Post by Jambo »

Kiitos esimerkistä! Olen kiitollinen, kun jaksoit vielä kirjoittaa noin pitkän esimerkin. Siihen meni varmasti vähän aikaa..

En tiedä, oliko siitä apua minulle, mutta ainakin muille on kunhan vaan laitat sen tutoriaaleihin. :)
Aion nimittäin tehdä ihan saman, mutta omalla koodillani.

Tai no, voihan se olla, että kirjoitan koodin jossain vaiheessa väärin ja joudun katsomaan sinun koodistasi mallia. :D
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: PHP:hen

Post by valscion »

Jambo wrote:Kiitos esimerkistä! Olen kiitollinen, kun jaksoit vielä kirjoittaa noin pitkän esimerkin. Siihen meni varmasti vähän aikaa..

En tiedä, oliko siitä apua minulle, mutta ainakin muille on kunhan vaan laitat sen tutoriaaleihin. :)
Aion nimittäin tehdä ihan saman, mutta omalla koodillani.

Tai no, voihan se olla, että kirjoitan koodin jossain vaiheessa väärin ja joudun katsomaan sinun koodistasi mallia. :D
Jep, hyvä että siitä on apua. Koodiin meni juu hieman aikaa, mutta oli vaan mukavaa muistella vähän, miten ne nettikomennot menivätkään ;)

Niin, ja jos jossain vaiheessa tulee sormi suuhun niin heitä ihmeessä yksityisviestiä vaan, käyn foorumeilla lähes jatkuvasti (n. 1 päivitys / 40min), että vastauskin tulee luultavasti nopeasti (ja ammattitaidolla *keh keh*) :)
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
Post Reply