Jump to content

Form not responding correctly.


timmah1

Recommended Posts

Hi,

 

I have this form that checks the PR of domain names entered into a form.

It works great, except that no matter how many names you search for, it only shows the first domain entered.

 

I'm sure it's something incredibly simple, but I've been staring at this code for the past 2 days and can't figure it out.

This don't require a database, so you could implement it on your site to test.

 

Please help me!

<?php
echo '
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td>
<table width="100%" border="0" cellspacing="5" cellpadding="0" class="main_table">
<tr><td class="main_td" align="center"><h3>Domain Page Rankings</h3></td></tr><tr><td>';

if ((!isset($_POST['urls'])) && (!isset($_GET['urls'])))
{ echo '<center><form action="" method="post"><textarea name="urls" cols="65" rows="9"></textarea><br><input type="submit" name="Submit" value="enter multiple url on new lines and click here"></form></center>'; }
if (isset($_POST['urls'])) 
{  

$Dname = $_POST['urls'];
$url_info = parse_url($Dname);
$tempurls = $url_info['scheme']. "://". $url_info['host'];
$pieces = explode("\n", $tempurls); // finding all submitted urls
$size = sizeof($pieces);		// array size to use in the for loop at the end of program

//settings - host and user agent
$googlehost='toolbarqueries.google.com';
$googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';

//convert a string to a 32-bit integer
function StrToNum($Str, $Check, $Magic) {
    $Int32Unit = 4294967296;  // 2^32

    $length = strlen($Str);
    for ($i = 0; $i < $length; $i++) {
        $Check *= $Magic; 	
        //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), 
        //  the result of converting to integer is undefined
        //  refer to http://www.php.net/manual/en/language.types.integer.php
        if ($Check >= $Int32Unit) {
            $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
            //if the check less than -2^31
            $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
        }
        $Check += ord($Str{$i}); 
    }
    return $Check;
}

//genearate a hash for a url
function HashURL($String) {
    $Check1 = StrToNum($String, 0x1505, 0x21);
    $Check2 = StrToNum($String, 0, 0x1003F);

    $Check1 >>= 2; 	
    $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
    $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
    $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);	

    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

    return ($T1 | $T2);
}

//genearate a checksum for the hash string
function CheckHash($Hashnum) {
    $CheckByte = 0;
    $Flag = 0;

    $HashStr = sprintf('%u', $Hashnum) ;
    $length = strlen($HashStr);

    for ($i = $length - 1;  $i >= 0;  $i --) {
        $Re = $HashStr{$i};
        if (1 === ($Flag % 2)) {              
            $Re += $Re;     
            $Re = (int)($Re / 10) + ($Re % 10);
        }
        $CheckByte += $Re;
        $Flag ++;	
    }

    $CheckByte %= 10;
    if (0 !== $CheckByte) {
        $CheckByte = 10 - $CheckByte;
        if (1 === ($Flag % 2) ) {
            if (1 === ($CheckByte % 2)) {
                $CheckByte += 9;
            }
            $CheckByte >>= 1;
        }
    }

    return '7'.$CheckByte.$HashStr;
}

//return the pagerank checksum hash
function getch($url) { return CheckHash(HashURL($url)); }

//return the pagerank figure
function getpr($url) {
global $googlehost,$googleua;
$ch = getch($url);
$fp = fsockopen($googlehost, 80, $errno, $errstr, 30);
if ($fp) {
   $out = "GET /search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
   //echo "<pre>$out</pre>\n"; //debug only
   $out .= "User-Agent: $googleua\r\n";
   $out .= "Host: $googlehost\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);
   
   //$pagerank = substr(fgets($fp, 128), 4); //debug only
   //echo $pagerank; //debug only
   while (!feof($fp)) {
		$data = fgets($fp, 128);
		//echo $data;
		$pos = strpos($data, "Rank_");
		if($pos === false){} else{
			$pr=substr($data, $pos + 9);
			$pr=trim($pr);
			$pr=str_replace("\n",'',$pr);
			return $pr;
		}
   }
   //else { echo "$errstr ($errno)<br />\n"; } //debug only
   fclose($fp);
}
}
echo '
</td></tr></table><table width="100%" border="0" cellspacing="5" cellpadding="0" class="main_table"><tr><td align="left"><h4>Page Ranking as follows</h4></td></tr><tr><td>';
//generate the graphical pagerank
function pagerank($url,$width=40,$method='style') {
if (!preg_match('/^(http:\/\/)?([^\/]+)/i', $url)) { $url='http://'.$url; }
$pr=getpr($url);
$pagerank="PageRank: $pr/10";

//The (old) image method
if ($method == 'image') {
$prpos=$width*$pr/10;
$prneg=$width-$prpos;
$html='<img src="http://www.google.com/images/pos.gif" width='.$prpos.' height=4 border=0 alt="'.$pagerank.'"><img src="http://www.google.com/images/neg.gif" width='.$prneg.' height=4 border=0 alt="'.$pagerank.'">';
}
//The pre-styled method
if ($method == 'style') {
$prpercent=100*$pr/10;
$html='<div style="position: relative; width: '.$width.'px; padding: 0; background: #D9D9D9;"><strong style="width: '.$prpercent.'%; display: block; position: relative; background: #5EAA5E; text-align: center; color: #333; height: 4px; line-height: 4px;"><span></span></strong></div>';

}


    $out='<a href="'.$url.'" title="'.$pagerank.'">'.$html.'</a>';
return $out." PageRank = ".$pr." /10<br>";

}

    foreach ($pieces as $url)

        {					
            $url = trim($url);			
            echo $url, pagerank($url);			
        }

echo '</td></tr></table></td></tr>';


}
?>

 

Thanks in advance for any help.

Link to comment
https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/
Share on other sites

print_r won't fix it.  But put it right after you create the $temprurls variable -- it will print out the array.  And I think you'll see it's not an array, but a single value, which is why it's only showing that one value.  You need to explode $_POST['urls'] first, then do a foreach statement, and then process the URLs.

 

<?php
$exploded_urls = explode("\n", $_POST['urls']);

foreach($exploded_urls as $key=>$value) {
// Do your processing here
}
?>

No, no.  I gave you the answer to my rhetorical question.  The answer is literally nothing.  The functions are being defined, not called.  Not to sound mean (if I do, it's because I'm running few hours of sleep) but if you don't understand the difference between calling and defining functions, please go to the book store and pick up a beginning PHP book and start again.

 

What you need to do is cut and paste those functions above the rest of the code.  Then replace where they were with calls to them.  I do not know what variables to pass to them.  You gotta figure that part out.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.