PageRank Bug

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
salve, oggi sono incappato in nuovo rompicapo che non riesco a risolvere, forse più semplice del previsto, inizio postando il codice:
PHP:
include("connect.php"); $tot_pages=mysql_query("SELECT * FROM ise");
echo "<strong>Analisi PageRank:</strong><br><br>";
for ($i=1;$i<=mysql_num_rows($tot_pages);$i++) {
  $page_query=mysql_query("SELECT link FROM ise WHERE id='$i'"); $page=mysql_fetch_array($page_query); $page['link']=substr($page['link'],7,strlen($page['link']));
  while ($row=mysql_fetch_row($tot_pages)) {
    if ($page['link']!=substr($row['4'],7,strlen($row['4']))) {
      $file=getContent($row['4']);
      $sub=substr_count($file,$page['link']);
      echo "$sub (" . $page['link'] . ") => [" . $row['4'] .  "]<br>";
    }
  }
}
in pratica utilizzando la funzione getContent apre la pagina esterna e ne legge i risultati, quindi faccio un esempio di cosa deve fare lo script:

legge la prima riga della tabella prendendone il record "link" (questa sarà la stringa che le altre pagine dovranno contenere), poi nello stesso ciclo effettuo un controllo con le altre pagine...poi in teoria dovrebbe ricominciare il processo partendo dalla 2 riga e successiva, ma invece mi analizza soltanto la prima riga con le altre righe. Mi rendo conto che a parole è difficile da spiegare, quindi spero che il codice sia comprensibile ma in pratica dovrei simulare una specie del pagerank di google che controlla nelle pagina quanti link puntano alla pagina scelta, io invece questo controllo lo faccio nel mio database, link per link.

ecco cosa mi esce di output:
HTML:
Analisi PageRank:

0 (xeryan.altervista.org) => [http://xeryan.altervista.org/blonox]
0 (xeryan.altervista.org) => [http://socialdrink.altervista.org]

quando invece l'analisi dovrebbe essere fatta cosi:
HTML:
Analisi PageRank:

0 (xeryan.altervista.org) => [http://xeryan.altervista.org/blonox]
0 (xeryan.altervista.org) => [http://socialdrink.altervista.org]
0 (xeryan.altervista.org/blonox) => [http://xeryan.altervista.org]
0 (xeryan.altervista.org/blonox) => [http://socialdrink.altervista.org]
0 (socialdrink.altervista.org) => [xeryan.altervista.org]
0 (socialdrink.altervista.org) => [http://xeryan.altervista.org/blonox]
Help, Please 0:)
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
L'unica ragione per cui si debba fermare all'improvviso è che questa condizione:
PHP:
if ($page['link']!=substr($row['4'],7,strlen($row['4'])))
Non venga soddisfatta. Prova a fare:
PHP:
var_dump($page['link'], substr($row[4], 7, strlen($row[4]));
E vedi se le due stringhe stampate per ogni record sono uguali.
 

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
ecco cosa mi esce:

HTML:
string(21) "xeryan.altervista.org" string(21) "xeryan.altervista.org" string(21) "xeryan.altervista.org" string(28) "xeryan.altervista.org/blonox" string(21) "xeryan.altervista.org" string(26) "socialdrink.altervista.org"

quindi il problema non è nella condizione, ma penso da qualche altra parte...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
la funzione getContent è una funzione che ti sei fatto tu? non mi sembra che sia una funzione nativa di php.
non ti stai confondendo forse con file_get_contents o get_content ?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
La funzione getContent, come ha già detto borgo, non esiste, quindi deve essere per forza definita nel file connect.php oppure in un file incluso da esso (o in un file che include la pagina che visualizza gli URL). Comunque prova modificando così, anche se dubito che cambi qualcosa:
PHP:
<?php
require 'connect.php';
$tot_pages = mysql_query('SELECT * FROM ise');
echo '<strong>Analisi PageRank:</strong><br /><br />';

while($assoc = mysql_fetch_assoc($tot_pages))
{
	$page_query = mysql_query("SELECT link FROM ise WHERE id='{$assoc['id']}'");
	$page = mysql_fetch_array($page_query);
	$page['link'] = substr($page['link'], 7, strlen($page['link']));

	while($row = mysql_fetch_assoc($tot_pages))
	{
		$without_prot = substr($row[4], 7, strlen($row[4]));

		if($page['link'] != $without_prot)
		{
			$file = getContent($row['4']);
			$sub = substr_count($file, $page['link']);
			echo "{$sub} ({$page['link']}) => [{$row[4]}]<br />";
		}
	}
}
?>
 

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
borgo la funzione getContent lo presa da google :p

PHP:
function getContent ($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  $output = curl_exec($ch);
  $info=curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);
  if ($output==false || $info!=200) {$output=null;} 

  return $output;
}

@alessandro: grz davvero però il codice da te postato non funziona :skull:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
la funzione getContent lo presa da google
prova ad andare sul manuale ufficiale
http://www.php.net/manual/en/
ed in altro a dx inserisci getContent nella ricerca, vedrai che non una funzione nativa di php.

se hai trovato getConten su google guarda che non ti manchi tutta la definizione delle funzione, ciè una parte di scrip simile al seguente:

PHP:
function getConten($pincopallo){
//codice della function
}
 

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
si scusa mi sono espresso male, lo so che non è una funzione built-in di php... :hammer:

P.S. comunque ritornando al mio problema, con il codice di alessandro ho provato cambiando da _assoc a _row la funzione mysql_fetch_ecc... e mi esce lo stesso output, quindi ritorno al punto di partenza, non capisco come mai il ciclo non legga le altre combinazioni
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
non avevo letto bene, hai tutta la definizione.
allora subito sotto il tag di apertura php devi scrivera la funzione
PHP:
<?php
function getContent ($url) { 
  $ch = curl_init(); 
  //ecc....
}
oppure scriverla in un file (chiamto ad es funzione.inc.php) e come ha detto alex

PHP:
<?php 
require 'connect.php'; 
require_once "funzione.inc.php";
//ecc.....
 

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
mi sà che ti sei perso la prima parte XD, ho già la funzione "personale" getContent e "funziona" alla perfezione, il problema non è questo ma il fatto che non riesco a far leggere combinazioni di record, con un esempio numerico spiego meglio cosa non funziona:

ho X numeri (1,2,3,...[x]) e voglio analizzare ogni combinazione dei numeri quindi avendo tre numeri le combinazioni saranno le seguenti:
1 con 2; 1 con 3; 2 con 1; 2 con 3; 3 con 1; 3 con 2.

nel mio caso il problema è che il ciclo mi si ferma a 1 con 3 senza continuare...

P.S. per chi ancora non lo avesse capito sto facendo un esercizio di programmazione in php sui motori di ricerca :p
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
PHP:
mi sà che ti sei perso la prima parte XD, ho già la funzione "personale" getContent e

è che non vedo nel tuo script ne l'include ne la definizione, probabilmente non l'hai postata.
mi è venuto comunque un dubbio, gli id della tabella ise sono autoincrement? non hai per caso cancellato qualche record? in questo caso se prima avevi
id link
1 link1
2 link2
3 linh3

nel caso che tu cancelli un link e ne rimetti un altro la tabella diventa:
id link
1 link1
3 linh3
4 link4
per cui ciclando con for $i++ che si incrementa 1,2,3,4....
se sei nel secondo caso può provocarti un po' di inca....tura
il quanto l'id 2 non esite più
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Mi accorgo ora che il risultato del var_dump mostra una situazione in cui i link successivi a quelli visualizzati non possono essere mostrati. Guarda qua:
xeryan.altervista.org
xeryan.altervista.org
Fin qui tutto ok, e infatti il primo link viene visualizzato correttamente. Il problema sorge dal secondo in poi:
xeryan.altervista.org
xeryan.altervista.org/blonox
Qui i due link non sono uguali, quindi la condizione dell'if non viene soddisfatta. E non lo è neanche qui:
xeryan.altervista.org
socialdrink.altervista.org
Quindi evidentemente c'è qualcosa di sbagliato nella struttura del database. I due campi da cui prendi i link dovrebbero contenere entrambi lo stesso link, mentre non è così...
 

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
uhm...non ho ben capito ma i campi da cui prendo i link non devono contenere gli stessi link altrimenti non avrebbe senso effettuare un pagerank di una pagina con la stessa ma sicuramente avrò capito male io :book:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
guarda che forse il problema e nei cicli che usi
se vuoi verificare il primo record con il secondo col terzo col quarto.....
il secondo col terzo con il quarto .... ecc..
secondo me dovresti provare a fare questi cicli

PHP:
<?php
include("connect.php");
$tot_pages=mysql_query("SELECT * FROM ise"); 
echo "<strong>Analisi PageRank:</strong><br><br>"; 
while($riga_uno=mysql_fetch_array($tot_pages)){
	$id=$riga_uno['id'];
	$link_uno=$riga_uno['link'];
	//estraggo gli altri link escluso il precedente
	$page_query=mysql_query("SELECT link FROM ise WHERE id >$id");
	$link_uno=substr($link,7,strlen($link_uno));
	while($riga_due=mysql_fetch_array($page_query)){
		$link_due=$riga_due['link'];
		$link_due=substr($link_due,7,strlen($link_due));
		if ($link_uno!=$link_due) {
			$file=getContent($link_due);
			$sub=substr_count($file,$link_uno);
			echo"$sub ($link_uno) => $link_due<br>";
		}//fine if
	}//fine while riga_due
}//fine while riga_uno
?>

p.s.
un piccolo consiglio:
usa l'indentazione e in fase di sviluppo tieni separate le istruzioni poi è più facile fare il debag
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Oh, chiedo perdono. Non so per quale motivo ma credevo che l'if fosse di uguaglianza, quindi il mio ragionamento crolla. Allora non saprei, l'unico problema potrebbe essere nei cicli. Vedi se modificando come ha detto borgo funziona.
 

xeryan

Nuovo Utente
3 Set 2010
22
0
0
Napoli, Italy
con il codice verrebbe questo:

() => xeryan.altervista.org/blonox
() => socialdrink.altervista.org
() => socialdrink.altervista.org

comunque andrebbe bene solo per 3 link, ma il numero dei siti è sicuramente maggiore
 
Discussioni simili
Autore Titolo Forum Risposte Data
Lion PageRank recuperabile? SEO e Posizionamento 0
max_400 Aumentare il Pagerank SEO e Posizionamento 5
T Pagerank annullato SEO e Posizionamento 6
M Anomalia Pagerank 4 SEO e Posizionamento 0
T aumentare pagerank gratuitamente SEO e Posizionamento 2
R come migliorare il pagerank ? SEO e Posizionamento 4
E Backlinks e PageRank SEO e Posizionamento 2
M Domanda sul pagerank SEO e Posizionamento 1
M pagerank vs. trustrank: che differenza c'è? SEO e Posizionamento 2
B pagerank patatrak SEO e Posizionamento 2
S Sito Pagerank 4. vendo pubblicità Vendere e Acquistare pubblicita' online 6
G Pagerank e Backlink: qual è il punto d'incontro? SEO e Posizionamento 1
S Nuova Directory gratis passa Pagerank Presenta il tuo Sito 0
E PageRank 4 ma non compaio nelle prime posizioni SEO e Posizionamento 8
jan267 Google e il Pagerank! SEO e Posizionamento 3
C pagerank SEO e Posizionamento 7
D Google e Pagerank SEO e Posizionamento 1
felino Bug estetici del nuovo layout Supporto Mr.Webmaster 1
S Scoperto Bug Pinterest Discussioni Varie 0
C 3 Bug CSS AND HTML: Overlay-Banner-Menu HTML e CSS 0
C 3 BUG CSS AND HTML: OVERLAY - BANNER- MENU HTML e CSS 0
F Woocommerce bug? WordPress 0
P Bug visualizzazione tastiera alla pressione del tastio Vai(dispositivi mobili) Javascript 0
filippino Bug WordPress: sito usato per phising WordPress 1
P Bug IE 7/8 slideshow inserito in pagina html5 Parallax HTML e CSS 4
P Bug IE 7 slideshow inserito in pagina html5 Parallax Javascript 1
darkjoker Sessione di bug hunting Sicurezza e Virus 1
max_400 php i bug permetto agli haker di entrare negli spazi web? PHP 7
T bug vista+explorer7 Javascript 1
C installazione e bug fix script php PHP 2
L Attacco al server o Bug? Aiutatemi!! PHP 5
B bug con switch su float PHP 5
W risolvere un bug PHP 4
M bug ie - doubled margin? HTML e CSS 0
D Firefox bug Supporto Mr.Webmaster 6
Filippine bug di sicurezza su mozilla e firefox Discussioni Varie 0
peppoweb I bug di Office Sicurezza e Virus 0
peppoweb Un bug blocca a distanza il log di Apache HTTP Server Sicurezza e Virus 0
peppoweb Bug nella registrazione di Office 2000 Windows e Software 0

Discussioni simili