在我的脚本中,我将一些mysql连接数据添加到常量中以便于使用。为了安全起见,我试图使常量的名称不那么明显,因此每次用户访问页面时,脚本都会为每个常量添加额外的唯一前缀。我的问题是 - 是基于每个用户存储的常量还是由于最后一个用户在服务器上停止使用它们而将它们保存在内存中,因此,每个用户的那些额外前缀是否会产生任何性能问题?
这是剧本:
<?php
date_default_timezone_set('UTC');
class misclassified{
//pseudo function for getting mysql connection data
private function mysqlData(){
return array("host"=>"hostname","user"=>"username","base"=>"base");
}
public $prefix = "";
//defines mysql connection constants
public function mysqlConnConstants(){
$data = $this->mysqlData();
$prefix = crypt(date('ymdgis'),"salty pepper always better")."_";
$prefix = strtoupper($prefix);
define($prefix."HOST",$data["host"]);
define($prefix."USER",$data["user"]);
define($prefix."BASE",$data["base"]);
$this->prefix = $prefix;
return true;
}
}
?>
更新
还打算使用前缀变量作为项目中使用的每个文件的开头检查。它看起来像这样:
<?php
//$prefix - set in main php file where the mysqlMainConstants() is first executed
if(!defined($classReference->prefix."HOST") && !defined($classReference->prefix."USER")): die("Please, try the regular way of using our website!"); endif;
?>
这可能是错误的或无用的,这就是我要问的原因,因为起初听起来很好,以防止用户知道这些常量并恶意地将它们应用到脚本中。
答案 0 :(得分:0)
假设您希望/需要从数据库中检索数据,那么将值存储为常量的成本并不重要。它们将存储在内存中,用于PHP执行的生命周期,这是一个HTTP请求。
但更重要的问题是:你为什么要这样做?它不会增加操作的安全性,只会使其成为更复杂的编程环境。