socket 80 ja http -protocolla

Minulla on yksinkertainen lomake. Tarkoitus on saada lomake lähetetyksi siten että IP-osoite tulee palvelimelta (ei siis suffaajan koneelta)koska IP-osoite tarkistetaan vastaanottajapäässä.

Oletan että minun täytyy lähettää sopivat http-komennot TCP/IP:llä mutta kuinka?

Löysin netistä esimerkkikoodin (http://www.alt-php-faq.org/local/55/#id55) mutta kuinka tuohon liitetään formi.
6505
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Eli yrität saada lomakkeenkäsittelijän luulemaan, että lomakedata tuleekin jostain muusta ip:stä, kuin mistä se oikeasti tuleekaan? Kerro toki, mihin moista viritystä haluat, niin on ehkä helpompi jelppiä.

Äänestä

surffailijan selaimella on siis näkyvissä lomake, jonka action-kentässä on vaikka processForm.php

Tämä processForm.php sitten muokkaa tästä lomakkeesta sitten jonkun mailin? ja tämä maili sitten lähtee vaikka sinun sähköpostiisi. Mailiin haluat sitten sen palvelimen IP:n, jossa tuo processForm.php pyörii?

Ei tartte mitään http-komentoja lähetellä, kun ottaa vaan joko http-requestista tai environment-muuttujista sen IP:n.

Ne saa esiin phpinfo() funktiolla.

Tuolla on esimerkki:

http://www.entropy.ch/software/macosx/php/test.php

PHP Variables

kohdasta löytyy serverin IP ja surffaajaan IP.

Tuolla on ohjeita miten niitä haetaan:

http://www.php.net/manual/en/reserved.variables.php

Sitten vaan processFormilla haet serverin IP:n ja laitat mailiin mukaan.

Äänestä

Lähetin aikaisemmin tarkemman ongelman, mutta viesti näyttää kadonneen jonnekin (vai liekö edes lähti).

En tarkoittanut postauksella sähköpostia vaan "lomakedatan" välittämistä.

Tilanne on siis sellainen että haluan lähettää dataa sms-operaattorille (periaatteessa tukee kai get-metodia) aivan kuin kuittaisin vastaavan formin.

Onko tosiaan olemassa mahdollisuus saada IP-osoite tulemaan palvelimelta (ilman http:tä) kun IP-tarkastuksen tekee nimenomaan palveluntarjoajan järjestelmä.

Formin kuittaus ei nähdäkseni toimi, koska tällöinhän palveluntarjoaja-ohjelma rääkäisee tietoturvaongelmista aina kun käyttäjän selain sijaitsee muualla kuin palvelinkoneella. Lähettäjähän on käyttäjän selain, joka on pyytänyt sivun minun palvelimeltani.

Seuraavan koodi lähettää toimii periaatteessa oikein, mutta palvelin valittaa koodilleni takaisin:

Bad Request
Your browser sent a request that this server could not understand.
Invalid URI in request HTTP/1.0

Onko siis alla olevassa koodissani jotain vialla? Tietysti otan mielelläni vastaan myös helpomman tavan lähettää tiedot palvelimelle, jos sellainen on.

Toisaalta ei virhe tässä koodissakaan ole kovin suuri, mutta kun ei HTTP-protokolla ole hanskassa...

-----
$fp = @fsockopen('www.kotisivut.com', 80);
u=demo&p=salasana&to=050112233,2343242&msg=testiviesti";
$data ="u=demo&p=salasana&to=$sms_Numerot&msg=$sms_viesti";
if (!$fp){
echo "EI TUNNISTETTU IP-OSOITETTAOta
yhteys ylläpitoon.";
}
else
{
//YHTEYS AUKI
//NYT HTTP_TÄ LÄPI
fputs($fp, "$method $path HTTP/1.0\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($data) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");

fputs($fp, $data);
while (!feof($fp)) $buf .= fgets($fp, 1024);
fclose($fp);
echo "$buf";

}

Äänestä
  • Eli yrität tällaista viritystä, vai?

    (selain)==tietoa==>(palvelin)==tietoa==>(operaattori)

    Ts. Lomakkeelta lähtee viesti ensin sinun palvelimellesi, joka edelleen välittää sen sms-operaattorille. Tällöin sms-operaattori näkee palvelimen, ei selaimen IP:n.


    HTTP-protokolla ei ota ip-osoitteeseen kantaa, sillä ip kuuluu alemmalle protokollatasolle. Ainut, mitä sinun pitää saada aikaiseksi on tehdä oikeanlainen http-pyyntö sieltä palvelimelta operaattorille. Siihen, miten se tarkalleenottaen tehdään, en ota kantaa, sillä en ole PHP:n http-funktioihin tutustunut. Eli opettele sitä HTTP:tä vaan =)

    Minkä ihmeen takia sinä moista viritystä oikein kasaat?

    Äänestä

  • Juu no se maininta sähköpostista oli vaan sen takia, että sinne ne formien datat aika usein lähetetään.

    Eli se ei toimi, että formin action kentässä on suoraan toi sms-operaattori, koska silloin se vinkuu siitä IP-osoitteesta.

    Invalid URI kertois siitä, että toi www.kotisivu.... ei oo validi osoite. Puuttuu edestä http:// ?

    Kerta se sms-operaattori tukee GETtiä, niin ei pitäis olla vaikee juttu.

    Sen formin action kenttään vaan teet omalle servolle scriptin, joka ottaa vastaan sen formin. Pistät vielä method-kohtaan GET, niin saa kivasti urlista sen datan.

    Eli formissa action kohdassa vaikka omaProcess.php

    Ku formi lähetetään, niin formin dataa menee tolle skriptille.

    Siinä vaikka sitten jostain phpn muuttujasta otat sen GETin tiedot talteen ja kutsut skriptistä uudelleen sitten sitä sms-operaattorin skriptiä formista saatu GET data perään.

    Sitten sinne sms-operaattorille menee alkuperäsen formin data ja nyt kun kutsuja on sun palvelimen skripti, niin sinne menee sun palvelimen IP.

    Äänestä

  • Piru kirjoitti:

    Juu no se maininta sähköpostista oli vaan sen takia, että sinne ne formien datat aika usein lähetetään.

    Eli se ei toimi, että formin action kentässä on suoraan toi sms-operaattori, koska silloin se vinkuu siitä IP-osoitteesta.

    Invalid URI kertois siitä, että toi www.kotisivu.... ei oo validi osoite. Puuttuu edestä http:// ?

    Kerta se sms-operaattori tukee GETtiä, niin ei pitäis olla vaikee juttu.

    Sen formin action kenttään vaan teet omalle servolle scriptin, joka ottaa vastaan sen formin. Pistät vielä method-kohtaan GET, niin saa kivasti urlista sen datan.

    Eli formissa action kohdassa vaikka omaProcess.php

    Ku formi lähetetään, niin formin dataa menee tolle skriptille.

    Siinä vaikka sitten jostain phpn muuttujasta otat sen GETin tiedot talteen ja kutsut skriptistä uudelleen sitten sitä sms-operaattorin skriptiä formista saatu GET data perään.

    Sitten sinne sms-operaattorille menee alkuperäsen formin data ja nyt kun kutsuja on sun palvelimen skripti, niin sinne menee sun palvelimen IP.

    eli $QUERY_STRING pitää sisällään kysymysmerkin jälkeisen roinan.

    Eli jos omaProcess.php sais formin datan tuosta muuttujasta ja sitten vaan kutsut omaProcess.php skriptissä sms-operaattorin sivua tuon muuttujan data.

    Äänestä

Kommentoi aloitusta


socket 80 ongelmainen kirjoitti:

Minulla on yksinkertainen lomake. Tarkoitus on saada lomake lähetetyksi siten että IP-osoite tulee palvelimelta (ei siis suffaajan koneelta)koska IP-osoite tarkistetaan vastaanottajapäässä.

Oletan että minun täytyy lähettää sopivat http-komennot TCP/IP:llä mutta kuinka?

Löysin netistä esimerkkikoodin (http://www.alt-php-faq.org/local/55/#id55) mutta kuinka tuohon liitetään formi.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu