Så var man här igen, med ett nytt script... :)
Den här gången är det ett script för att använda sökmotorer på andra siter, och det här scriptet gjordes åt PHPPortalen.net för att kunna söka igenom deras manual. Alla värden gäller alltså för php.net.
Funktionen kopplar upp sig mot bestämd plats, genom bestämd port, mot bestämt dokument och med bestämt metod. Den returnerar sedan hela sidan i HTML-format, som om man hade besökt sidan med en webläsare.
Funktionen
function search ( $searchServer, $searchPort, $searchPath, $searchMethod, $searchFromVars ) {
/* Funktionen search är skriven av Björn Wikström,
* bjorne.w@telia.com
*
* Funktionen får användas fritt så länge
* dessa raders finns kvar.
*/
$searchString = "";
$searchResult = "";
while ( list ( $varKey, $varValue ) = each ( $searchFromVars ) ) {
if ( $searchString != "" )
$searchString .= "&";
$searchString .= $varKey . "=" . $varValue;
}
$searchPointer = fsockopen ( $searchServer, ( int ) $searchPort, $errorNumber, $errorString, 25 );
if ( !$searchPointer ) {
$errorMessage = "Kunde inte skapa en koppling mot " . $searchServer . ":" . $searchPort;
$errorMessage .= "<br>";
$errorMessage .= "Felnummer: " . $errorNumber;
$errorMessage .= "<br>";
$errorMessage .= "Fel: " . $errorString;
die ( $errorMessage );
}
else {
fputs ( $searchPointer, strtoupper ( $searchMethod ) . " " . $searchPath . " HTTP/1.1\n" );
fputs ( $searchPointer, "Host: " . $searchServer . "\n" );
fputs ( $searchPointer, "Content-Type: application/x-www-form-urlencoded\n" );
fputs ( $searchPointer, "Content-Length: " . strlen ( $searchString ) . "\n\n" );
fputs ( $searchPointer, $searchString . "\n" );
while ( !feof ( $searchPointer ) )
$searchResult .= fgets ( $searchPointer, 128 );
fclose ( $searchPointer );
}
return $searchResult;
}
Funktionen search () tar emot fem parametrar, dvs. servern som ska anslutas till, anslutningsport, sökväg till sida, sökmetod och vilka variabler som ska användas.
Servern: Enkelt. Ange serverns adress, utan http://.
Port: Lika enkelt. De flesta bör använda mot port 80.
Sökväg: Ännu enklare. Själva sökvägen på servern till det script som du vill ansluta mot.
Sökmetod: Typ POST, GET, HEAD.
Variabler: De som skickas till din sida, alltså $HTTP_POST_VARS eller $HTTP_GET_VARS.
Exempel
Följande exempel använder sig av php.net's sökmotor för manualen.
if ( $HTTP_POST_VARS ) {
echo search ( "www.php.net", 80, "/search.php", "POST", $HTTP_POST_VARS );
}
else {
echo "
<html>
<form action=\"" . $PHP_SELF . "\" method=\"POST\">
<input type=\"text\" name=\"pattern\">
<input type=\"hidden\" name=\"show\" value=\"manual\">
<input type=\"submit\">
</form>
</html>
";
}
Jag använder samma input-namn på fälten som php.net använder med sin sökfunktion, eftersom att den ska funka likadant. HTMLen som returneras formateras dock inte, utan den kommer på samma sätt som den hade sett ut via webläsaren. Formatering sköts väl enklast med hjälp av regular expressions, men det hör till ett annat kapitel. :)
Trevlig användning!
------------------
SPiN, bjorne.w@telia.com
-- Wise men talk because they have something to say; fools, because they have to say something. --