我一直在阅读特别是'错误记录'我已经提出了函数'error_log',它似乎是一个用来处理错误记录的好工具.但最流畅和最好的使用方法是怎样的呢?
如果我有
try {
//try a database connection...
} catch (PDOException $e) {
error_log($e->getMessage(), 3, "/var/tmp/my-errors.log");
}
Run Code Online (Sandbox Code Playgroud)
这将记录my-errors.log文件中的错误.但是,如果我有时需要更改文件所在位置,新文件夹或其他内容.如果我有大量文件,我需要更改它们.
现在我开始考虑使用变量来设置错误日志的路径.当然可以工作,但是如果我想在函数或类方法中使用error_log呢?然后我需要将变量设置为全局,但这被认为是不好的做法!但是,如果我不应该在课堂上深入使用这个功能,那么这也不会被认为是不好的做法吗?这里有什么好的解决方案?
<?php
function legit() {
try {
if (1 == 1) {
throw new Exception('There was an error here');
}
} catch (Exception $e) {
throw new Exception('throw the error to the try-catch outside the function...');
}
}
try {
legit();
} catch (Exception $e) {
echo 'error here' . $e->getMessage();
//log it
}
Run Code Online (Sandbox Code Playgroud)
这是我上面讨论的一个例子(没有在类/函数中深入记录......这是一个好方法吗?)
进一步:
我不太确定我应该如何使用一般的例外.假设我想在方法中使用SQL对数据库执行INSERT,我是否会使用try/catch然后在失败时重新抛出异常?这被认为是好习惯吗?请举例.
所以我正在四处阅读并且对于拥有CSRF令牌感到困惑,我应该为每个请求生成一个新令牌,还是每小时或者其他什么?
$data['token'] = md5(uniqid(rand(), true));
$_SESSION['token'] = $data['token'];
Run Code Online (Sandbox Code Playgroud)
但是,假设每小时生成一个令牌更好,那么我需要两个会话:令牌,到期,
我将如何处理表格?只需将echo $ _SESSION ['token']放在隐藏的值表单上,然后在提交时进行比较?
我有一个index.php来处理所有的路由index.php?page = controller(简化)只是为了将逻辑与视图分开.
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w\d~%.:_\-]+)$ index.php?page=$1 [NC]
Run Code Online (Sandbox Code Playgroud)
基本上: http://localhost/index.php?page = controller To
任何人都可以帮我添加重写
http:// localhost/controller/param/value/param/value(和soforth)
那将是:
HTTP://本地主机/控制器/ PARAM =值&PARAM =值
我不能让它与Rewriterule一起工作.
控制器可能如下所示:
<?php
if (isset($_GET['action'])) {
if ($_GET['action'] == 'delete') {
do_Delete_stuff_here();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
并且:
<?php
if (isset($_GET['action']) && isset($_GET['x'])) {
if ($_GET['action'] == 'delete') {
do_Delete_stuff_here();
}
}
?>
Run Code Online (Sandbox Code Playgroud) 生成PDF时,它完全忽略了font-family应用于CSS的属性.而不是说Verdana,它使用Times New Roman.所以我的CSS看起来像:
.sub-header {
font-size: 1.4rem;
text-transform: uppercase;
font-family: NeutraText-Book !important;
padding-bottom: 1.5rem;
}
Run Code Online (Sandbox Code Playgroud)
PDF生成如下:
$pdf = PDF::loadHTML($view);
return $pdf->stream();
Run Code Online (Sandbox Code Playgroud)
如何设置我想要的字体?
要求$输入是不安全的.'.PHP'.然后开始上课.如何使其安全,无需使用可以被提及的类的白名单.
例1.(错误代码).
<?php
$input = $_GET['controller'];
require $input . '.php';
new $input;
?>
Run Code Online (Sandbox Code Playgroud) 我希望在我当前的应用程序中实现oAuth.什么是良好的数据库结构来存储所需的信息,例如令牌等时代.有标准吗?
$arr = array(
'test' => array(
'soap' => true,
),
);
$input = 'hey';
if (in_array($input, $arr['test'])) {
echo $input . ' is apparently in the array?';
}
Run Code Online (Sandbox Code Playgroud)
结果:嘿显然在阵列中?
这对我没有任何意义,请解释原因.我该如何解决这个问题?
如何从声音文件中读取比特率,长度等信息.不同的文件格式,mp3,wmw等.
我想那里有一些图书馆/班级,也许我可以尝试一下.
有什么建议?
我只需要确保我已正确获得PDO准备语句,SQL注入是否可以保护以下代码?
$data['username'] = $username;
$data['password'] = $password;
$data['salt'] = $this->generate_salt();
$data['email'] = $email;
$sth = $this->db->prepare("INSERT INTO `user` (username, password, salt, email, created) VALUES (:username, :password, :salt, :email, NOW())");
$sth->execute($data);
Run Code Online (Sandbox Code Playgroud) 
我无法真正找到如何在操作上添加参数,我该怎么办呢?上图是我使用的程序,Modelio ......
如何在Operation上添加参数?
我如何添加返回值?