首页 > 解决方案 > 使用 php 更改链接单击时回显内的目录名称或路径

问题描述

我正在尝试创建艺术家画廊。画廊已创建,但当我需要 50 位艺术家时,我必须创建 50 个页面。因此,单击链接后,我只需要更改文件夹的方向。最好的方法是什么?链接到我的画廊 http://www.divart.sk/vg/krajina.php

艺术家的链接

<option value="http://www.divart.sk/vg/krajina.php">krajina</option>
<option value="http://www.divart.sk/vg/virtualgallery.php">Adina Chitu</option>

php代码

$dir = "krajina/";
if (is_dir($dir)){
  if ($dh = opendir($dir)){
    while (($file = readdir($dh)) !== false){
      if( $file == '.' || $file == '..')
        continue;
      echo " <div><img src='krajina/" . $file . "'/></div>";
    }
    closedir($dh);
  }
}

标签: phpjquery

解决方案


您可以通过using ( Parse String ) 和ScanDir将文件夹名称传递给php 脚本来做简单的事情。Query String

您必须创建此结构:

http://www.divart.sk/vg/gallery.php?dir=the_artist_folder

http://www.divart.sk/vg/krajina/

http://www.divart.sk/vg/nicole/

http://www.divart.sk/vg/jonathan/

其中文件夹名称文件夹艺术家,而gallery.php是读取文件夹艺术家的php 脚本

根据评论中的要求,您可以通过加载放置在文件夹艺术家中的文本文件(不是最佳方式)来添加艺术家信息,例如:

http://www.divart.sk/vg/krajina/artist.txt

http://www.divart.sk/vg/nicole/artist.txt

http://www.divart.sk/vg/jonathan/artist.txt

文本文件示例artist.txt

Artist: krajina;
Born: 1967/04/18;
Photo Genre: Nature;
License Photo: Creative Commons;

例如:<option value="http://www.divart.sk/vg/gallery.php?dir=krajina">krajina</option>

gallery.php

<?php ini_set('default_charset', 'UTF-8'); ?>
<!DOCTYPE html>

<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="distribution" content="global">
  <meta name="language" content="italian it">
  <meta name="language" content="english en">
  <meta name="rating" content="general">
  <meta name="revisit-after" content="6 days">
  <meta name="pragma" content="no-cache">
  <meta name="robots" content="index, nofollow">
  <title>Gallery</title>
  <link rel="stylesheet" type="text/css" media="all" href="gallery.css">
  <link rel="shortcut icon" href="/favicon.ico">
</head>

<body>

<?php
  // example: http://www.divart.sk/vg/gallery.php?dir=krajina
  // rev .04 (23.04.2019)
  function file_get_contents_utf8($fn) {
    $content = file_get_contents($fn);
    return mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
  }
  $gurl = $_SERVER['QUERY_STRING'];
  $ourl = array();
  $list = array();
  parse_str($gurl, $ourl);
  $valid_artist = array("krajina", "nicole", "jonathan");
  if (isset($ourl['dir']) || (!empty($ourl['dir']))) {
    if (!in_array($ourl['dir'], $valid_artist)) {
      exit("This artist name isn't allowed");
    }
    if ((!file_exists($ourl['dir'])) || (!is_dir($ourl['dir']))) {
      exit("This folder doen't exist!");
    }
    if (preg_match('/[\s]/', $ourl['dir'])) {
      exit("Detected white space, please don't use it");
    } else {
      $dir = htmlspecialchars($ourl['dir'], ENT_NOQUOTES, 'UTF-8');
    }
  }
  if ((isset($dir)) || (!empty($dir))) {
    if (file_exists("$dir/artist.txt") && is_file("$dir/artist.txt")) {
      $artist = file_get_contents_utf8("$dir/artist.txt");
      $artist = htmlentities($artist, ENT_QUOTES, 'UTF-8');
      echo "<div>$artist</div>\n";
    }
    $list = scandir($dir);
    foreach ($list as $file) {
      if (is_file($dir . '/' . $file)) {
        $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
        if ($ext == 'gif' || $ext == 'jpeg' || $ext == 'jpg' || $ext == 'png') {
          echo "<div>\n<img src=\"" . $dir . '/' . $file . "\" alt=\"" . $dir . "\"><br />\n</div>\n";
          echo "<div>\nPhoto: " . basename($file) . "<br />\n</div>\n";
        }
      }
    }
  } else {
    echo "No Artist Folder to Show!";
  }
?>

</body>

</html>

如果你看到 PHP 生成的html 源代码,你可以看到:

<!DOCTYPE html>

<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="distribution" content="global">
  <meta name="language" content="italian it">
  <meta name="language" content="english en">
  <meta name="rating" content="general">
  <meta name="revisit-after" content="6 days">
  <meta name="pragma" content="no-cache">
  <meta name="robots" content="index, nofollow">
  <title>Gallery</title>
  <link rel="stylesheet" type="text/css" media="all" href="gallery.css">
  <link rel="shortcut icon" href="/favicon.ico">
</head>

<body>

<div>Artist: krajina;
Born: 1967/04/18;
Photo Genre: Nature;
License Photo: Creative Commons;</div>
<div>
<img src="krajina/001.jpg" alt="krajina"><br />
</div>
<div>
Photo: 001.jpg<br />
</div>
<div>
<img src="krajina/002.jpg" alt="krajina"><br />
</div>
<div>
Photo: 002.jpg<br />
</div>
<div>
<img src="krajina/003.jpg" alt="krajina"><br />
</div>
<div>
Photo: 003.jpg<br />
</div>
<div>
<img src="krajina/004.jpg" alt="krajina"><br />
</div>
<div>
Photo: 004.jpg<br />
</div>
<div>
<img src="krajina/005.jpg" alt="krajina"><br />
</div>
<div>
Photo: 005.jpg<br />
</div>

</body>

</html>

我希望这有帮助。


推荐阅读