【问题标题】:how to change youtube short url into embeddable value via form submission to database?如何通过表单提交到数据库将 youtube 短 url 更改为可嵌入值?
【发布时间】:2012-09-23 12:17:46
【问题描述】:

我希望能够将 youtube 视频的短网址输入到表单输入中,例如;

'http://youtu.be/rAndoMText'

并在“提交”时在处理表单的 php 文件中执行三个函数:

替换:

'http://youtu.be/'

与:

'<a class='youtube' href="http://www.youtube.com/embed/'

并添加:

'?rel=0&wmode=transparent">link</a>'

到新值的末尾

然后将最终值提交到数据库。

我当前的 php 文件如下,它的“逻辑”基于我对 php 的基本知识和在互联网上搜索解决方案,我不希望它是正确的。

它确实在在线语法检查器中进行检查,并将其他表单输入发送到数据库,而不是我试图修改的那个。

<?php

$original_link = $_POST["link"];
$prepender = "<a class='youtube' href=\"http://www.youtube.com/embed/\"";
$appender = "?rel=0&amp;wmode=transparent\">link</a>";

$modified_link = str_replace ("http://youtu.be/","$prepender","$original_link");

$modified_link . "" . $appender = $final_value;

$con = mysql_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);

$sql="INSERT INTO data (fieldone, fieldtwo, fieldthree, fieldfour, link)
VALUES
('$_POST[fieldone]','$_POST[fieldtwo]','$_POST[fieldthree]','$_POST[fieldfour]',
'$final_value')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
header ('Location: http://return-to-your-website.com');

mysql_close($con);
?>

我也尝试在上面的“modified_link”区域中使用它,但它返回了相同的结果:

$modified_link = "";
ob_start (); 
{
echo str_replace ("http://youtu.be/","$prepender","$original_link");
$modified_link = "ob_get_contents ()";
}
ob_end_clean (); 
$modified_link . "" . $appender = $final_value;

谢谢。

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    以下代码将为您提供所需的链接:

    $link_provided_by_user = 'http://youtu.be/rAndoMText';
    $random_text = array_pop(explode('/',$link_provided_by_user)); // get the text after the last slash
    $link_you_want = '<a class=\'youtube\' href="http://www.youtube.com/embed/'.$random_text.'?rel=0&amp;wmode=transparent">link</a>';
    
    echo $link_you_want; // ex: <a class='youtube' href="http://www.youtube.com/embed/rAndoMText?rel=0&amp;wmode=transparent">link</a>
    

    请阅读SQL Injections

    【讨论】:

    • 非常感谢,'youtube' 类只需要用单引号(而不是双引号)括起来。当我将上面的代码更改为包含单引号时,表单给了我一个错误“解析错误:语法错误,意外的 T_STRING”。当我尝试通过在单引号前添加反斜杠来转义单引号时,我收到错误“错误:您的 SQL 语法有错误”。
    • 上面的代码应该可以正常工作。这意味着错误来自其他地方。我不知道自从我发帖后您对代码做了哪些更改,但这一行还有另一个错误:$modified_link . "" . $appender = $final_value;
    • 感谢您的回复,您的代码工作正常,正在向数据库提交数据,谢谢。但是它正在提交a class = "youtube"(在youtube 周围带有双引号),我需要它提交a class = 'youtube'(在youtube 周围带有单引号)。当我将双引号更改为单引号时,我收到错误消息,当我尝试使用反斜杠转义单引号时,我也收到错误消息。我怎样才能让 youtube 只被单引号包围而不收到错误消息?谢谢。
    • 您可以使用上面的代码,但请记住阅读 SQL 注入。您的解决方法是在将其插入数据库之前使用addslashes()mysql_real_escape_string()`。但请阅读我的回答中有关 SQL 注入的链接,以便您以后改进代码。
    • 再次感谢您的帮助和提供的信息。我发现有效的是您的代码的以下修改$link_you_want = "&lt;a class=\'youtube\' href=\"http://www.youtube.com/embed/".$random_text."?rel=0&amp;amp;wmode=transparent\"&gt;link&lt;/a&gt;";
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多