Newsgroup: it.comp.www.php
Titolo: memorizzare e rileggere indirizzi web

Ho un database PHP/MySQL dove nel campo di una tabella sono inseriti 
indirizzi web con addslashes($stringa);.
La tabella che contiene questi campi viene letta in una pagina web con 
stripslashes($stringaLetta) e inseriti in un select.
Al click su di una voce del select l'utente viene portato all'indirizzo 
web selezionato.
Se per esempio l'indirizzo ï¿œ:
http://www.librimondadori.it/
 
tutto funziona perfettaente,
ma se l'indirizzo ï¿œ per es.
http://www.amazon.it/Destra-e-sinistra-Norberto-Bobbio/dp/8860363829/ref=sr_1_2?s=books&ie=UTF8&qid=1401309725&sr=1-2&keywords=bobbio
 
 
non funziona. (ho scelto, per l'esempio, un vero indirizzo esistente.)
Penso che probabilmente il problema risieda nell'uso di addslashes per 
inserire e stripslashes per rileggere e ci deve essere un altro comando 
che ï¿œ adatto in tutte le circostanze.
Purtroppo a quest'ora mi sono perso a forza di cercare e tentare.
Mi potete dare una mano per la sintassi?
Grazie
Leonardo
 
-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 
 
 
-- 
Andrea
 


Una volta ricevuto con post l'indirizzo viene messo nella variabile 
$indirizzoweb
 
$indirizzoweb = addslashes($P[3]);
e inserito nel database così
$query = "UPDATE librinegozionline SET didascalia = '$didascalia', 
indirizzoweb = '$indirizzoweb', ordine = '$ordine', visibile = 
'$visibile' WHERE idlibrinegozionline = '$idlibrinegozionline'";
 
Nella pagina del sito web visibile ai nevigatori ciene lketto e poi 
inserite nel select così:
<form id="form3" name="form3" method="post" action="">
<select name="choice" onChange="jump(this.form)">
<option value="" ></option>
<?php
while ($row = mysql_fetch_array($resultNEGOZZIONLINE))
{
echo "<br>";
echo $row['didascalia'], " - " , $row['indirizzoweb'];
?>
<option value="<?php echo stripslashes($row['indirizzoweb']) ?>"><?php 
echo stripslashes($row['didascalia']) ?></option>
<?php
}
?>
</select>
</form>
 
Nella stessa pèagia  web il seguente codice javascript dovrebbe portare 
a nuova pagina al cambio voce del select:
 
<script>
<!--
/////  Cambio pagina automatico con select /////
/////   menù a discesa ////////////////////
function land(ref, target)
{
lowtarget=target.toLowerCase();
if (lowtarget=="_self") {window.location=loc;}
else {if (lowtarget=="_top") {top.location=loc;}
else {if (lowtarget=="_blank") {window.open(loc);}
else {if (lowtarget=="_parent") {parent.location=loc;}
else {parent.frames[target].location=loc;};
}}}
}
function jump(menu)
{
// alert("----");
ref=menu.choice.options[menu.choice.selectedIndex].value;
splitc=ref.lastIndexOf("&");
target="";
if (splitc!=-1)
{loc=ref.substring(0,splitc);
target=ref.substring(splitc+1,1000);}
else {loc=ref; target="_top";}; // codce per il target///////////
if (ref != "") {land(loc,target);}
}
//-->
/////      menù a discesa ///////////////////////////////
</script>
 
Dov'è che sbaglio?


 Dov'è che sbaglio?
 
Beh, a parte
<rant>
l'uso di addslashes() e il mancato uso delle stored procedures secondo 
le raccomandazioni della documentazione ufficiale, la frammistione di 
codice HTML e PHP, il possibile uso di codice HTML non valido (per i 
<br/> nell'elemento <select>), una nomenclatura di variabili e funzioni 
che lascia perlomeno confusi e qualche errore di ortografia in italiano
</rant>
direi che il problema è con la funzione JavaScript land(): l'argomento 
si chiama "ref" però poi nel corpo della funzione viene usato "loc" che 
è invece il nome della variabile locale usata in jump().
 
 
Stampare l'indirizzo che veniva fuori dall'elaborazione era il primo 
controllo da fare IMHO, per definire un problema devi mettere a 
confronto il risultato atteso e quello che invece hai ottenuto.
 
-- 
Andrea
 


Ok
Grazie
