Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysylanie linku
Forum PHP.pl > Forum > Przedszkole
Dagger
Witam!
Jak mozna wyslac link? Ale bez koniecznosci stosowania formularza...
Tzn. mam link: www.jakis_server.pl/pliczek.php?zmienna=dane&cos_innego=dane2 itd.
Czy da sie (a jesli tak to jak?) wyslac ten link? Chcial bym aby skrypt reagowal na okreslone dane i jesli bedzie spelniony okreslony warunek to chcial bym aby skrypt "kliknal" w ten link.
Jak to mozna zrobic?
Z gory dzieki za pomoc.
lukaswoj
Wystarczy skorzystać z odpowiedniego nagłówka protokołu HTML a mówiąc bardziej po ludzku, wywołać funkcję header() np w ataki sposób:
[php:1:6897991eef]
<?php
header("Location: http://www.jakis_server.pl/pliczek.php?zmi...nnego=dane2");
?>
[/php:1:6897991eef]

Można w ten sposób symylować wypełnienie jakiegoś formularza ale tylko takiego, który wysyła dane metodą GET, do symolawania metody POST musiałbyś już użyć rozszerzenia php o nazwie "curl".
Dagger
Niestety nie pomoglo. Dodam jeszcze ze ten link dodatkowo musi "logowac sie" i dopiero wtedy moze wyslac dane do odpowiedniego pliku. (logowanie przy pomocy basic authorisation)

Probowalem juz tak:

[php:1:ef78daa61e]<?php
function http_get2($url)
{

$url_stuff = parse_url($url);
$port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;

$fp = fsockopen($url_stuff['host'], $port);

$query .= "GET ".$url_stuff['path']." HTTP/1.1rn";
//$query = 'GET ' . $url_stuff['path'] . " HTTP/1.0n";
$query .= "User-Agent: Smithrn";
$query .= "Host: ".$url_stuff['host']."rnConnection: closern";
$query .= "Connection: closernrn";


fwrite($fp, $query);

while ($tmp = fread($fp, 1024))
{
$buffer .= $tmp;
}

preg_match('/Content-Type: (([a-z]*)/([a-z]*))/', $buffer, $parts);
return substr($buffer, strpos($buffer,$parts[0])+strlen($parts[0]));

}

function http_get($url)
{

$url_stuff = parse_url($url);
$port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;

$fp = fsockopen($url_stuff['host'], $port);

$query = 'GET ' . $url_stuff['path'] . " HTTP/1.0n";
$query .= 'Host: ' . $url_stuff['host'];
$query .= "nn";

fwrite($fp, $query);

while ($tmp = fread($fp, 1024))
{
$buffer .= $tmp;
}

preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
return substr($buffer, - $parts[1]);

}

header("http://login:haslo@www.jakis_server.pl/auth/edit.html?zmienna=cos&zmienna2=cos");

http_get2("http://login:haslo@www.jakis_server.pl/auth/edit.html?zmienna=cos&zmienna2=cos");

http_get('http://login:haslo@www.jakis_server.pl/auth/edit.html?zmienna=cos&zmienna2=cos');
?>[/php:1:ef78daa61e]

Niestety nic z tego nie zadzialalo. A dodam jeszcze ze jak wpisze ten link w przegladarce to zadziala poprawnie.
cboot
Cytat
Niestety nie pomoglo. Dodam jeszcze ze ten link dodatkowo musi "logowac sie" i dopiero wtedy moze wyslac dane do odpowiedniego pliku. (logowanie przy pomocy basic authorisation)

W takim razie Twój problem, to nie to, jak wysłać link (bo to zrobi w 100% przykład lukaswoja), tylko jak się automatycznie zalogować na http, tak jak już pytałeś w innym wątku.

Jeśli jesteś pewnien, że tamte linki po wpisaniu w przeglądarkę działają - logują Cię (czy napewno nie byłeś już zalogowany przed wpisaniem tych linków?), a w php nie, to nasuwa się przypuszczenie, że coś po drodze zmienia ich zawartość. Jeśli tak, to pomogłoby sprawdzenie dwóch rzeczy:

1. Czy link znajdujący się pomiędzy " " w php jest poprawnym stringiem: http://pl2.php.net/manual/pl/language.type...g.syntax.double - aby miec pewność, że jest ok, możesz podmienić sobie dla testu header na echo i sprawdzić czy wypisze Ci taki link jak wpisujesz w przeglądarce:
[php:1:0a5b976329]<?php
echo("http://login:haslo@www.jakis_server.pl/auth/edit.html?zmienna=cos&zmienna2=cos");
?>[/php:1:0a5b976329]
Oczywiście z tymy wartościami, które Ty używasz.

2. Sprawdzić, czy link jest kodowany na taki url jaki powinien, czyli czy w haśle i loginie nie znajdują się polskie litery, albo znaki specjalne i tak samo w całym kawałku: auth/edit.html?zmienna=cos&zmienna2=cos. Zwłaszcza chodzi tu o polskie znaki, bo przeglądarka w pasku adresu może je inaczej kodować niż ciąg wysyłany przez php. Jeśli nie ma tam nigdzie polskich znaków, to ok.

Niestety nic innego mi do głowy nie przychodzi.
Dagger
No cos sie zmienilo...
po 1. string byl poprawny
po 2. jesli go wpisuje w przegladarce to napewno nie bylem wczesniej zalogowany
bledem u mnie bylo to:
[php:1:a37660892f]<?php
header("http://login:haslo@www.jakis_server.pl/auth/edit.html?zmienna=cos&zmienna2=c
os");
?>[/php:1:a37660892f]
Poprawilem na:
[php:1:a37660892f]<?php
header("Location: http://login:haslo@www.jakis_server.pl/aut...=cos&zmienna2=c
os");
?>[/php:1:a37660892f]
i czesciowo pomoglo... przekierowuje na strone na ktora powinien... ale prosi o podanie loginu i hasla (mimo ze mam go wpisane w linku)

Ma ktos pomysl jak to rozwiazac?
netzah
Wyslij jeszcze naglowek o autoryzacji:
[php:1:68ce37239c]<?php
header ('Authorization: Basic '. base64_encode('login:haslo'));
?>[/php:1:68ce37239c]
Dagger
hmm... jak dodalem to to teraz wyglada to tak:
- w IE nadal prosi o podanie hasla i loginu,
- natomiast w netscape dziala poprawnie.
a jak uruchomie ten skrypt poprzez crona na serwerku (bo tak docelowo ma byc uruchamiany) - nie dziala

Macie jeszcze jakies pomysly co mozna by z tym zrobic?

Moze inaczej dalo by sie wyslac te dane do pliku?
netzah
Moze sprawdz dokladnie jakie naglowki wysyla przegladarka jak jestes zalogowany i wysylaj przez header() takie same :?: :idea:
Dagger
A jak moge to sprawdzic? (zaznaczam ze nie mam dostepu do strony do ktorej sie loguje - do kodu)
netzah
Np. jakims snifferem.
Dagger
A mozesz jakiegos polecic?
Znalazlem jednego do instalacji ale nie dziala... a inny online jest platny :-P Chyba nie mam szczescia do szukania.
shpyo
http://hacking.pl

tam sa sniffery na ich ftpie smile.gif
Dagger
eee przegladalem cala stronke i nic poza niektorymi ciekawymy artykulami nie znalazlem :-(
Oni maja tego ftp'a gdzies ukryte? ;-)
netzah
Mozesz sprobowac np. Commview http://www.tamos.com/products/commview/, jest b. prostu w uzyciu; albo HTTP Look http://www.httpsniffer.com/ przeznaczony tylko wlasnie do HTTP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.