有一个php库让evreybody能够攻击我(比如cURL).然后我有一个想法来阻止它,我想为我的元素使用动态类名.看这个:
<div class="<?php $ClassName ?>">anything</div> // $className is taken from the database
Run Code Online (Sandbox Code Playgroud)
注意:
$ClassName会有不同的时间.
在这种情况下,任何人都不知道我的类名是什么来选择我的元素然后复制我的数据.现在我有两个问题:
$ClassName和.$ClassName (在css文件中)之间进行通信?换句话说,我如何使用php变量的css类名?(动态css类)使用数据库获取类名并不是最佳选择,除非可以在本地完成。您应该定义一个包含所有类名的数组,然后通过array_rand,如下所示:
// php code\n <?php\n $classes = array(\'class1\',\'class2\',\'class3\',\'class4\'); \n $class_name = $classes[array_rand($classes)];\n ?>\n\n\n// html code\n <div class="<? php echo $class_name; ?>">anything</div>\n\n\n// css code\n <style>\n .<? php echo $class_name; ?> {\n // your css codes\n }\n </style>\nRun Code Online (Sandbox Code Playgroud)\n\n注意:您必须知道您不能在.css文件中使用 php 代码,那么您应该在文件中编写所有您想要动态的 css 代码.php并使用<style> stuff </style>.
\n\n\n同时,正如@s\xd1\x94\xd0\xbcs\xd1\x94\xd0\xbc所说,你可以创建动态html标签。
\n
像这样的事情:(完整代码)
\n\n// php code\n <?php\n // dynamic class\n $classes = array(\'class1\',\'class2\',\'class3\',\'class4\'); \n $class_name = $classes[array_rand($classes)];\n\n // dynamic tags\n $tags_statr = array(\'\',\'<div>\',\'<div><div>\',\'<div><p>\',\'<span><div>\');\n $tags_end = array(\'\',\'</div>\',\'</div></div>\',\'</div></p>\',\'</span></div>\');\n $numb = array_rand($tags_statr);\n ?>\n\n\n// html code\n <?php echo $tags_statr[$numb]; ?>\n <div class="<? php echo $class_name; ?>">anything</div>\n <?php echo $tags_end[$numb]; ?>\n\n\n// css code\n <style>\n .<? php echo $class_name; ?> {\n // your css codes\n }\n </style>\nRun Code Online (Sandbox Code Playgroud)\n\n为了获得更高的安全性,您可以放置您的内容(此处为“任何内容”) (除了外部动态标签)。例如:
\n\n<span1>anything</span1> // <span1> changed to <span2,3,4....>\nRun Code Online (Sandbox Code Playgroud)\n\n在这种情况下,带有数据的相邻标签也是动态的,这使得爬虫变得更加困难。
\n\n最后,我必须说,你无法完全阻止爬虫,你只会让它变得困难。如果您确实想保护您的数据,您可以执行以下操作:
\n\n| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |