Newsgroup: it.comp.www.php
Titolo: Paginei in database da indicizzare

In una pagina web ho un form per il "cerca nel sito".
In questo form ci sono 2 controlli:
<input name="TestoRichiesto" type="text" id="TestoRichiesto" size="12" />
<input type="submit" name="buttonCERCA" id="buttonCERCA" value="Cerca" />
Nella realtà la ricerca viene fatta all'interno di alcuni campi di una 
tabella.
Parte della query di selezione è:
Where pagine.titolopag Like '%$TestoRichiesto%'.
Il tutto sembra funzionare perfettamente e se l'utente fa click sul pulsante 
Cerca lasciando vuot "TestoRichiesto" vengono selezionati tutti i record 
della tabella; questo perché la spazio esite in tutti i campi e % è il 
cartattare jolly.
La cosa non disturba il proprietario del sito che anzi ne è lieto.
Quello che vorrei sapere è: durante la scansione del sito, gli "spyder" 
(Google ecc.) "premono" sul pulsante e vanno alla pagina dei risultati 
indicizzando così le pagne linkate da questi anche se non hanno link da 
altre pagine web?
Grazie a chi potrà darmi lumi.
Saluti
Leonardo

 altre pagine web?
No, solitamente non lo fanno, ma non posso esserne sicuro, vista la 
competizione recente tra motori di ricerca.
Di solito i form, e soprattutto quelli in POST, non vengono toccati.
Bye.

 Grazie a chi potrà darmi lumi.
Se la tua (giusta) preoccupazione è quella di un rallentamento del sito
a causa di un sconsiderato uso della ricerca senza parametri, da parte
dei bot, e a causa dell'aumentare dei record nel db.. sottoporrei la
questione al proprietario del sito (cliente?).
Oltre che gli spyder ci sono anche quelli che non hanno un tubo da fare
se non spammare e creare DoS appena ne trovano l'occasione.
Il cliente dovrebbe essere "sensibilizzato" su queste cose.
-- 
Aiuta l'Alleanza Ribelle :
http://vwdarkside.com/it/jedi/maestro-padulo-132140

altre pagine web?
La domanda reale è: vuoi che gli spider possano andare sulla pagina dei
risultati oppure no?
Perché fino a prova contraria chi comanda sei tu.
Leonardo
-- 
Surstangas via akcipitr', la ceval' fojnumas nur:
Jen vigla damo en brakum', kaj vi pensas pri forkur'?
Do li turnis sin, kaj turnis sin, kaj ekdormis sen singard';
Kaj lin apudis je l' vekigx, soldatoj kaj Barnard'.

Where pagine.titolopag Like '%$TestoRichiesto%'.
Dimenticavo una cosa.
E' spesso molto vantaggioso costruire la query in maniera dinamica, per
esempio nel caso tuo
	if ('' != trim($TestoRichiesto))
		$WHERE[]= "pagine.titolopag LIKE '%"
			. SQLEscape(trim($TestoRichiesto))
			. "%'";
(oppure:
		// Questo mi genera automaticamente, data una lista di
		// campi, una subcond del tipo
		//    campo LIKE %testo% OR campo2 LIKE %testo% OR...
 
		$TESTO = array();
		$FIND  = "LIKE '%"
			. SQLEscape(trim($TestoRichiesto))
			. "%'";
		foreach($CampiDoveCercare AS $campo)
			$TESTO[] = "$campo $FIND";
		if (!empty($TESTO))
			$WHERE .= '(' . implode(' OR ', $TESTO) . ')';
)
	...
e alla fine:
$SQL = "SELECT ...";
// Se ci sono condizioni di selezione, aggiungerle
if (count($WHERE))
	$SQL .= ' WHERE (' . implode(' AND ', $WHERE) . ')';
In questo modo, non perdi tempo ad elaborare condizioni semanticamente
nulle tipo " " e il codice è piu' mantenibile, perche' hai due array e
la roba da cercare è lì dentro.
Addirittura puoi rendere più flessibile la form indicando in quali dei
campi cercare la roba (tipo 'titolo' e 'descrizione', per dire). Con i
dati del secondo esempio là sopra potresti avere un terzo elenco con i
campi permessi, e
	foreach($CampiPermessi as $campo => $dummy)
		if (isset($_REQUEST['check_'.$campo]))
			$CampiDoveCercare[] = $campo;
...e anche il codice con le checkbox puoi generarlo automagicamente da
$CampiPermessi:
	foreach($CampiPermessi as $campo => $descrizione)
		print "<input type=\"checkbox\" name=\"check_$campo\">
$descrizione<br />";
