PHP question

teammatt3's picture

He has: 2,102 posts

Joined: Sep 2003

I am trying to get this to work. I have this script... Don't look through it, scroll down to the bottom.

<?php
function google_pagerank($url) {

   
/*
    This code is released unto the public domain
    Raistlin Majere <a href="mailto:[email protected]" class="bb-email">[email protected]</a>
    */

   
define('GOOGLE_MAGIC', 0xE6359A60);
   
   
//unsigned shift right
   
function zeroFill($a, $b)
    {
   
$z = hexdec(80000000);
    if (
$z & $a)
    {
   
$a = ($a>>1);
   
$a &= (~$z);
   
$a |= 0x40000000;
   
$a = ($a>>($b-1));
    }
    else
    {
   
$a = ($a>>$b);
    }
    return
$a;
    }
   
    function
mix($a,$b,$c) {
   
$a -= $b; $a -= $c; $a ^= (zeroFill($c,13));
   
$b -= $c; $b -= $a; $b ^= ($a<<8);
   
$c -= $a; $c -= $b; $c ^= (zeroFill($b,13));
   
$a -= $b; $a -= $c; $a ^= (zeroFill($c,12));
   
$b -= $c; $b -= $a; $b ^= ($a<<16);
   
$c -= $a; $c -= $b; $c ^= (zeroFill($b,5));
   
$a -= $b; $a -= $c; $a ^= (zeroFill($c,3));
   
$b -= $c; $b -= $a; $b ^= ($a<<10);
   
$c -= $a; $c -= $b; $c ^= (zeroFill($b,15));
   
    return array(
$a,$b,$c);
    }
   
    function
GoogleCH($url, $length=null, $init=GOOGLE_MAGIC) {
    if(
is_null($length)) {
   
$length = sizeof($url);
    }
   
$a = $b = 0x9E3779B9;
   
$c = $init;
   
$k = 0;
   
$len = $length;
    while(
$len >= 12) {
   
$a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24));
   
$b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24));
   
$c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24));
   
$mix = mix($a,$b,$c);
   
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
   
$k += 12;
   
$len -= 12;
    }
   
   
$c += $length;
    switch(
$len) /* all the case statements fall through */
   
{
    case
11: $c+=($url[$k+10]<<24);
    case
10: $c+=($url[$k+9]<<16);
    case
9 : $c+=($url[$k+8]<<8);
   
/* the first byte of c is reserved for the length */
   
case 8 : $b+=($url[$k+7]<<24);
    case
7 : $b+=($url[$k+6]<<16);
    case
6 : $b+=($url[$k+5]<<8);
    case
5 : $b+=($url[$k+4]);
    case
4 : $a+=($url[$k+3]<<24);
    case
3 : $a+=($url[$k+2]<<16);
    case
2 : $a+=($url[$k+1]<<8);
    case
1 : $a+=($url[$k+0]);
   
/* case 0: nothing left to add */
   
}
   
$mix = mix($a,$b,$c);
   
/*-------------------------------------------- report the result */
   
return $mix[2];
    }
   
   
//converts a string into an array of integers containing the numeric value of the char
   
function strord($string) {
    for(
$i=0;$i<strlen($string);$i++) {
   
$result[$i] = ord($string{$i});
    }
    return
$result;
    }
   
    function
get_pr($url) {
   
$result=array(\"\",-1);
   
    if ((
$url.\"\"!=\"\")&&($url.\"\"!=\"http://\")):
    // check for protocol
    if (substr(strtolower(
$url),0,7)!=\"http://\"):
   
$url=\"http://\".$url;
    endif;
   
   
$url=\"info:\".$url;
   
$checksum=GoogleCH(strord($url));
   
$google_url=sprintf(\"http://www.google.com/search?client=navclient-auto&ch=6%u&features=Rank&q=\".$url,$checksum); // url to get from google
   
   
$contents=\"\";
    // let's get ranking
    // this way could cause problems because the Browser Useragent is not set...
    if (
$handle=fopen($google_url,\"rb\")):
    while(true):
   
$data=fread($handle,8192);
    if (strlen(
$data)==0):
    break;
    endif;
   
$contents.=$data;
    endwhile;
    fclose(
$handle);
    else:
   
$contents=\"Connection unavailable\";
    endif;
   
   
$result[0]=$contents;
    // Rank_1:1:0 = 0
    // Rank_1:1:5 = 5
    // Rank_1:1:9 = 9
    // Rank_1:2:10 = 10 etc
   
$p=explode(\":\",$contents);
    if (isset(
$p[2])):
   
$result[1]=$p[2];
    endif;
    endif;
   
    return
$result;
    }
   
   
$pr = get_pr($url);
    if(
$pr[1] == -1)
       
$pr[1] = 0;
    return
$pr[1];

} // end google_pagerank()
?>

What it does is display pagerank. Now to see the pagerank I use this code

<?php
echo google_pagerank('http://www.nutang.com'); // output: 5
?>

What if the main part of the code is at example.com but I am displaying the short part of the code at example2.com do I do something like

<?php
echo www.example2.com_google_pagerank('http://www.nutang.com'); // output: 5
?>

I have no idea if it's possible to host php scripts on different domains and then call for them.

Renegade's picture

He has: 3,022 posts

Joined: Oct 2002

Yes, it's possible to host PHP scripts on other domains/servers and call them, just use the include function:

<?php
include("http://www.example-domain.com/script.php");
?>
'

Busy's picture

He has: 6,151 posts

Joined: May 2001

Not sure if you will be able to do it with PHP5 and may also have to remember about safe mode - on or off ...

teammatt3's picture

He has: 2,102 posts

Joined: Sep 2003

Well, for some reason, the script works on my computer (I have PHP on it) but it doesn't work on the web.

JeevesBond's picture

He has: 3,956 posts

Joined: Jun 2002

phpinfo(); then, check the configurations are the same? Also have you tried Renegades method. It's a little different to yours (although that shouldn't really make any difference you never know...)

And what happens when you try running it on the web? What error pops out?

a Padded Cell our articles site!

teammatt3's picture

He has: 2,102 posts

Joined: Sep 2003

See for yourself http://koopy.org/pagerank.php

<?php
// let's get ranking
    // this way could cause problems because the Browser Useragent is not set...
(line 108)    if ($handle=fopen($google_url,\"rb\")):
(line 109)    while(true):
(line 110)   
$data=fread($handle,8192);
?>

Want to join the discussion? Create an account or log in if you already have one. Joining is fast, free and painless! We’ll even whisk you back here when you’ve finished.