Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Toisen sivulle kirjautuminen PHP:lla

Sivun loppuun

awly [22.02.2010 14:53:27]

#

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..

Macro [22.02.2010 15:19:53]

#

https://www.ohjelmointiputka.net/koodivinkit/24301-php-kirjautuminen-rekisteröityminen-mysql-llä
https://www.ohjelmointiputka.net/koodivinkit/25276-php-kirjautuminen-kolmella-tavalla

Tässä pari parempaa vaihtoehtoa, mutta ei luokilla.

Metabolix [22.02.2010 15:27:00]

#

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.

Macro [22.02.2010 15:30:00]

#

Otin kantaa "Voisiko kukaan suositella jotain parempaa luokkaa?" -kohtaan.

Blaze [22.02.2010 16:35:13]

#

Macro kirjoitti:

Otin kantaa "Voisiko kukaan suositella jotain parempaa luokkaa?" -kohtaan.

Mutta suosittelit limpparia kun alkuperäinen kysyjä tahtoi jäätelöä.

Macro [22.02.2010 16:38:31]

#

No, voi kirjautumisen tehdä muutenkin, jos sillä ei ole paljon väliä toteuttaako luokilla vai ei.

trilog [22.02.2010 16:46:07]

#

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.

Macro [22.02.2010 16:48:34]

#

En lueskellut tuota linkittämäänsä sivua, joten en voinut tietää.

Metabolix [22.02.2010 17:15:56]

#

Näkeehän sen tuosta koodistakin tai jopa luokan nimestä: HttpClient.

Tarjotaan nyt vielä toista: PHP:n HTTP-laajennos.


Sivun alkuun

Vastaus

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

Tietoa sivustosta