2016-08-20 35 views
0

请帮助。在上传到网页之前,有什么方法可以使用表单向图像添加超链接?我想使用表单来添加链接到我的图像,所以我不必手动添加链接到它们,因为它会花费时间。我也想在图像下方显示文字标题链接。图像和文字标题将链接到相同的地方。我希望使用表单来添加图片链接,并在图片上传之前在图片下方添加文字链接。我使用PHP编写代码。谢谢你的时间。使用表单在图像上传到网页之前向图像添加超链接

这是形式的相片图像上传之前:upload form image

这与文本字幕链路上传的图像在它之下:The upload image with link under it

这是代码:

<html> 
<head> 
    <title>Upload and display images with PHP</title> 
</head> 
<?php 
if(isset($_POST['upload_img'])) { 
    $file_name = $_FILES['image'] ['name']; 
    $file_type = $_FILES['image'] ['type']; 
    $file_size = $_FILES['image'] ['size']; 
    $file_tmp_name = $_FILES['image'] ['tmp_name']; 

    if($file_name) { 
     move_uploaded_file($file_tmp_name,"img/$file_name"); 
    } 
} 
?> 

<body> 

    <form action="" method="post" enctype="multipart/form-data"> 
     <label>upload Image</label><br><br> 
     <input type="file" name="image"><br><br> 

     <label>Add hyperlink to image:</label><br> 
    <input type="text" name="add_link"><br><br> 

     <input type="submit" value="Uplad Image" name="upload_img"> 
    </form> 



    <?php 
    $folder = "img/"; 
    //$dir = "img/"; 
    if(is_dir($folder)) { 
     if($handle = opendir($folder)) { 
      while(($file=readdir($handle)) != false) { 
       if($file ==='.' || $file ==='..') continue; 
       echo '<img src="img/'.$file.'" width="150" height="150" alt="">'; 
      } 
      closedir($handle); 
     } 
    } 


    ?> 

</body> 
</html> 
+0

你的意思是在图像上添加文字? – 2016-08-20 03:51:49

+0

是的。我想使用表单输入将添加到图像的链接,并且我还希望在照片下方显示可点击的文字链接。我希望用户能够点击照片或文字链接转到其他网页。 –

回答

0

请注意,用户可以通过为他们的文件选择“适当”名称来做坏事。例如,如果我将我的文件命名为subfolder/something.jpg"?或者如果我将其称为"/><script>alert('hi');</script>会发生什么?当然,操作系统可能不允许复杂的文件名,但你不能在安全性上这么想。相反,请记住,客户端可以向Web服务器发送“任何”(不是任何,但在这种情况下,它与任何HTTP数据)他们想要的数据;他们甚至不必打开你的形式。有几种方法可以让它更安全(您可以通过谷歌来了解它),但是现在我不会介入这件事,因为您询问了其他事情。

转到您的问题,有几种方法来解决这个问题。你需要的是将链接,文本以及对相关图像的引用存储在某处。一种我不推荐的方法是将这些信息存储在一个文件中,然后使用file_get_contentsfile_put_contents等函数来编写/读取它(例如,您可以将文件中的每一行专用于特定图像,并且使用分隔符来分隔不同的信息)。这样做的问题是很难保证安全,更不用说,当文件包含大量数据时,文件的读取效率会非常低。还有更多的问题我不会详细讨论(同时使用等),但简短的版本是,有更好的方法!

另一种方法是使用数据库。它们通常是为这种用法而设计的,使得它们高效,安全(正确配置和使用时)等等。出于这个原因,文本/链接部分将完美地存储在数据库中。 There are ways to store images in databases as well,虽然我不会推荐,因为它存在慢的问题。如果你愿意,你可以保持您当前的方法,简单地创建一个数据库表中的字段:

image_name | image_link | image_text 

在这种情况下,保持图像的独特的名称,因为它会作为标识符工作。如果使用此方法,则只需使用给定名称读取图像,然后搜索数据库表WHERE image_name = *name of your image*中的行并使用该行的其他列来打印文本/链接。

echo '<img src="img/'.htmlspecialchars($file).'" width="150" height="150" alt="">' 
echo '<br />\n'; 
echo '<a href="'.htmlspecialchars($link).'">'.htmlspecialchars($text).'</a>'; 

为什么我在上面的例子包括htmlspecialchars的原因是为了防止XSS攻击:

打印按如下规则进行。我不会编写执行查询所需的代码,因为如果您不知道它,只需通过Google搜索数据库教程即可轻松找出。也请务必使用准备好的语句,以保护您的网站免受SQL注入攻击。