Latasin HttpClient luokan täältä: http://scripts.incutio.com/httpclient/index.php
Pyrin kirjautumaan sivulle ja lukemaan salaisia asioita (vain kirjautuneet näkevät).
Ongelmaksi raukeaa tämä:
Bad request! kirjoitti:
Kirjautuminen:
Bad request!Your browser (or proxy) sent a request that this server could not understand.
Error 400
jne.
Salainen sivu:
et kuulu tänne
Tässä vielä kirjautumis koodini:
<?php include('HttpClient.class.php'); $client = new HttpClient('localhost'); $data = array('username' => 'Heikki','password' => 'kultakala'); if(!$client->post('/eclipse/post.php', $data)) { // kirjautuminen die('An error occurred: '.$client->getError()); } echo "Kirjautuminen: <br>"; echo $client->getContent(); echo "<br>"; if(!$client->get('/eclipse/inside.php')) { // salainen sivu die('An error occurred: '.$client->getError()); } echo "Salainen sivu: <br>"; echo $client->getContent(); echo "<br>"; ?>
Post.php
<?php session_start(); if(isset($_POST['username']) && isset($_POST['password'])) { $_SESSION['username'] = $_POST['username']; $_SESSION['password'] = $_POST['password']; } header("location:inside.php"); die("siirrytään.."); ?>
Inside.php
<?php session_start(); if(!isset($_SESSION['username']) || !isset($_SESSION['password'])) die("et kuulu tänne"); ?> salaista hommaa ;)
post.php ja inside.php toimivat, sillä olen testannut nämä html formilla.
Edit:
Ongelmaksi näköjään osoittautuu, että tämä luokka ei ymmärrä header("location:inside.php") ja yrittää mennä "http://localhostinside.php".
Otin headerin pois, mutta se ei siltikään näköjään tallenna keksejä.
Voisiko kukaan suositella jotain parempaa luokkaa? Itse en ole löytänyt vielä toimivaa..
https://www.ohjelmointiputka.net/koodivinkit/
https://www.ohjelmointiputka.net/koodivinkit/
Tässä pari parempaa vaihtoehtoa, mutta ei luokilla.
Tuollaista otsikkoa ei tarvitse ymmärtääkään, koska standardin mukaan siinä kuuluu olla koko osoite. (Yleinen käytäntö valitettavasti on toinen.)
Macro: Ymmärsit varmaan jotain väärin. Kyse oli koodista, joka osaisi kirjautua toiselle palvelimelle.
Ainakin cURL-kirjasto pystyy suunnilleen mihin tahansa, tosin käyttökään ei ole noin suoraviivaista.
Otin kantaa "Voisiko kukaan suositella jotain parempaa luokkaa?" -kohtaan.
Macro kirjoitti:
Otin kantaa "Voisiko kukaan suositella jotain parempaa luokkaa?" -kohtaan.
Mutta suosittelit limpparia kun alkuperäinen kysyjä tahtoi jäätelöä.
No, voi kirjautumisen tehdä muutenkin, jos sillä ei ole paljon väliä toteuttaako luokilla vai ei.
Macro kirjoitti:
No, voi kirjautumisen tehdä muutenkin, jos sillä ei ole paljon väliä toteuttaako luokilla vai ei.
Voi toki, mutta kumpikaan esittämistäsi vaihtoehdoista ei tee samaa, mitä kysyjän käytössä oleva luokka:
http://scripts.incutio.com/httpclient/index.php:
HttpClient is a client class for the HTTP protocol. It can be used to interact with another web server from within a PHP script. As well as retrieving information from a server, HttpClient can interact with a server via POST or GET. It can therefore be used as part of any script that needs to communicate with an application running on another site.
Lisäsin lihavoinnit.
En lueskellut tuota linkittämäänsä sivua, joten en voinut tietää.
Näkeehän sen tuosta koodistakin tai jopa luokan nimestä: HttpClient.
Tarjotaan nyt vielä toista: PHP:n HTTP-laajennos.
Aihe on jo aika vanha, joten et voi enää vastata siihen.