-
Passaggio url youtube
Salve a tutti, da poco ho creato uno script che tra i tanti dati che memorizza sul database mysql deve memorizzare anche l'URL di un video YOUTUBE (Tipo: http://www.youtube.com/watch?v=uF5jgMrcrTk). Allora il form in html è un semplice post che rimanda allo script php con l'input: <input type="text" name="youtube" value="http://" />. Penso che fin qui non ci sono problemi. Poi ho scritto lo script per memorizzare nel database mysql del tipo:
Codice PHP:
$urlyoutube = $_POST['youtube'];
mysql_query("INSERT INTO ....
VALUES ('$urlyoutube'....
Sembra che tutto funzioni, ma in realtà non funziona per nulla, infatti se inserisco l'utl http://youtube.com sul DB l'url viene scritto in modo corretto, ma se l'url che scrivo diventa del tipo: "http://www.youtube.com/watch?v=uF5jgMrcrTk", sul DB viene scritto solo "http://www.youtube.com/watch?v".
So che c'è un errore nel passaggio della variabile, ma come devo risolverlo? Con special characters ??? GRAZIE :!:
RISOLTO.C'era un problema sul DB.
-
La cosa importante dei link di youtube è il contenuto dopo v= .. se lo inserisci nel db credo che consideri = come l' inizio di un' altra cosa (non mi so spiegar bene), potresti fare che dal link che inseriscono nell' input tramite php estrai il contenuto dopo v= , poi quando lo vai ad inserire nel db scrivi http://youtube.com/watch?v={$variabiledellestratto}
Scrivi:
$url = $_POST['youtube'];
$urlyoutube = substr($url, 30, 11);
e poi lo inserisci nel db
-
Sisi ho risolto. Unica cosa, sapreste dirmi come validare un url in php, controllando se è presente http:// all'inizio, e se non presente viene aggiunto? Tipo:
function isValidURL($url)
{
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}
-
Non è piu' semplice fare:
Codice PHP:
$url = $_POST['url'];
$completo = substr_count($url, 'http://');
if ($completo == "0") {
$urlfinale = "http://{$url}";
}
-
Codice PHP:
$yt_id = htmlspecialchars(trim($_POST['url'])); # Evita le SQL Injection
if (preg_match('/^([a-z0-9_-]){11}$/i', $yt_id))
{
$v = $yt_id;
}
else
{
parse_str(parse_url($yt_id, PHP_URL_QUERY));
}
La prima parte controlla che il dato passato via POST non sia direttamente l'ID del video, altrimenti parsa l'url e viene creata la variabile $v (dato che il paramentro di YouTUBE è v).
Poi usi la variabile $v che ha l'ID del video e ne fai ciò che vuoi.
:wink:
-
Risolto, grazie mille. Mi è bastato l'esempio di exabite. Ciao...