timmah1 Posted May 31, 2008 Share Posted May 31, 2008 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 More sharing options...
nloding Posted June 1, 2008 Share Posted June 1, 2008 It's because $tempurls only contains a single URL. You aren't looping that at all, and I think parse_url will only return a 'single' URL. Trying using print_r($tempurls) and I think I'll be right. What is $_POST['urls'] variable supposed to contain? Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-554584 Share on other sites More sharing options...
timmah1 Posted June 1, 2008 Author Share Posted June 1, 2008 $_POST['urls'] are from the textarea Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-554616 Share on other sites More sharing options...
timmah1 Posted June 1, 2008 Author Share Posted June 1, 2008 I'm confused on exactly where to put print_r($tempurls) Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-554620 Share on other sites More sharing options...
nloding Posted June 1, 2008 Share Posted June 1, 2008 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 } ?> Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-554835 Share on other sites More sharing options...
timmah1 Posted June 1, 2008 Author Share Posted June 1, 2008 Thanks nloding. Still don't work though. I have no idea how to fix this Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-554888 Share on other sites More sharing options...
nloding Posted June 1, 2008 Share Posted June 1, 2008 I think you next need to look at your functions. What the heck are they doing? The answer is nothing. Those function's are just being defined -- I don't see them being called anywhere. http://www.htmlgoodies.com/beyond/php/article.php/3472491 Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-555152 Share on other sites More sharing options...
timmah1 Posted June 2, 2008 Author Share Posted June 2, 2008 I wish I knew the answer to that, like I said, it's not my code. Some college student did this site for his 'project', now they want things moved around, and I'm at a lose Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-555280 Share on other sites More sharing options...
nloding Posted June 2, 2008 Share Posted June 2, 2008 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. Link to comment https://forums.phpfreaks.com/topic/108171-form-not-responding-correctly/#findComment-555332 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.