Php 使用define()作为网站名称
我有一个这样的页面:Php 使用define()作为网站名称,php,forms,Php,Forms,我有一个这样的页面: <form method="POST" action="scripts/save-settings2.php"> <div id="posts"> <div class="post"> <div> <label for="siteName">Site Nam
<form method="POST" action="scripts/save-settings2.php">
<div id="posts">
<div class="post">
<div>
<label for="siteName">Site Name</label>
<div class="input-wrap">
<input value="<?php echo constant('siteName'); ?>" type="text" name="siteName" />
</div>
</div>
<input type="submit" value="Save" />
<a href="posts.php" class="cancel">Cancel</a>
</div> <!--Post-->
</div> <!--Posts-->
</form>
我试图做的是将用户填写的内容输入到siteName输入字段中,并将其定义为常量“siteName”,这样我就可以在站点的其他位置回显该常量。出于某种原因,这是行不通的。我在这里犯了一些明显的错误吗?我不相信如果您更改页面,常量会保持不变。只定义脚本执行的最后一个生命周期,它们不会通过重定向持续 查看会话,并将站点名称存储在会话中
// store in session
$_SESSION['siteName'] = $siteName;
// retrieve from session
$siteName = $_SESSION['siteName']';
更改此项:
define("siteName", "$siteName");
为此:
define("siteName", $siteName);
最好将siteName设置为大写,如果要选择常量的内容,请执行以下操作:
echo siteName;
编程中的常量实际上应该只用于在执行开始之前就知道并且永远不会改变的事情。就像这个典型的例子:
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');
/** MySQL database username */
define('DB_USER', 'username_here');
/** MySQL database password */
define('DB_PASSWORD', 'password_here');
不要将常量用于用户输入。常量应始终使用所有大写字母命名方案
如果您真的只想在整个应用程序中使用一个变量,那么可以使用一个
同样,常量就像变量一样,只在程序执行时存储在内存中——一旦执行完成,值就会消失
如果您想在多个请求中使用一个值,您可以将其存储在数据库、缓存机制(如Memcached或Redis)或会话存储中。请注意,会话依赖于浏览器中的Cookie,并且不可用
如果您正在构建一个内容管理系统,那么您应该将这些数据保存在数据库中,而不是按照其他一些答案的建议保存在会话中。因为会话是一种个人存储,对于不同的用户将不一样
此外,当用于清理数据库输入时,不要使用mysql\u real\u escape\u string
它,并且不能防止用户向页面中注入恶意javascript的XSS攻击
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');
/** MySQL database username */
define('DB_USER', 'username_here');
/** MySQL database password */
define('DB_PASSWORD', 'password_here');