我正在尝试使用MySQLi在我的数据库上运行多个查询.这是我的代码:
$stmt = $mysqli->prepare('SELECT password FROM `users` WHERE username=? LIMIT 1');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($hashedPass);
$stmt->fetch();
/* Check the passwords match */
$pwdHasher = new PasswordHash(8, FALSE);
if(!$pwdHasher->CheckPassword($password, $hashedPass))
exit;
$stmt = $mysqli->prepare('SELECT u_id FROM `users` WHERE username=? LIMIT 1');
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($u_id);
$stmt->fetch();
Run Code Online (Sandbox Code Playgroud)
但是当代码运行时,我收到此错误:
Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\ajax\login.php on line 42
Run Code Online (Sandbox Code Playgroud)
我已经检查过数据库字段是否存在,所以不是这样.第一个查询工作,它似乎是第二个查询不起作用.我在phpMyAdmin中自己运行查询并成功生成结果集,所以我真的不知道出了什么问题.
我想为上传的文件生成唯一的文件名.它们的长度应为5个字符,并且仅包含以下字符:abcdefghijklmnopqrstuvwxyz0123456789.这是我的代码:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$length = 5;
$filename = '';
for($i = 0; $i < $length; $i++)
{
$filename += $chars[mt_rand(0, 36)];
}
echo $filename;
Run Code Online (Sandbox Code Playgroud)
但我总是以1或2个字符长整数结束,从不使用任何字符串字符.如果我运行此代码:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$length = 5;
$filename = '';
for($i = 0; $i < $length; $i++)
{
echo $chars[mt_rand(0, 36)];
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,我得到以下输出:8iwzf.
我在这里做错了什么?谢谢!
我有一个注册表单,我正在验证用户输入.这是我的控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Register extends CI_Controller {
public function index()
{
$this->load->model('Users_model');
$this->load->helper('form');
$this->load->library('form_validation');
$data['page_title'] = 'Register';
$this->load->view('header', $data);
// Set form validation rules
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[16]|xss_clean|callback_username_check');
$this->form_validation->set_rules('email', 'Email', 'trim|required|min_length[5]|max_length[64]|valid_email|callback_email_check');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_error_delimiters('<span class="error">', '</span>');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('register', $data);
}
else
{
// Add the user to the database
$this->Users_model->add_user();
$this->load->view('register_success', $data);
}
$this->load->view('footer', $data);
}
/* Functions to check username and email */
}
/* End …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个用JavaScript编写的优秀的全方位语法高亮显示器,它将自动检测所使用的语言并应用正确的语法高亮显示.
我从一个简单的谷歌搜索中找到了无数的,但他们都必须在<pre>元素上有某种格式化的类<pre class="highlight-php">.
我注意到StackOverflow的语法突出显示设法从pre块中自动完成,任何人都知道他们正在使用什么库?
谢谢!
我有一个带有精灵的玩家类,我想让它面向我的鼠标指针.
我正在使用它来计算精灵的旋转应该是什么:
this.rotation = -(Math.atan2(this.x - mouseState.x, this.y - mouseState.y) * 180 / Math.PI);
Run Code Online (Sandbox Code Playgroud)
然后在我Player班级的绘画方法中我这样做:
Player.prototype.draw = function() {
window.ctx.save();
window.ctx.translate(this.x + this.sprite.width / 2, this.y + this.sprite/height / 2);
window.ctx.rotate(this.rotation);
window.ctx.drawImage(this.sprite, this.x, this.y);
window.ctx.restore();
}
Run Code Online (Sandbox Code Playgroud)
它做了一些事情,但不是我想要的.精灵似乎围绕画布的左上角旋转了一圈(x:0, y:0).
如何将精灵面朝向鼠标光标,同时使用其中心点作为原点?
我正在使用PHPass在我的应用程序中存储用户密码,因为它比md5或sha1更安全.我有一个关于如何使用盐密码的问题.
从我收集的内容中,当您插入用户时,我会像这样使用它:
$pwdHasher = new PasswordHash(8, false);
$hash = $pwdHasher->HashPassword($input_password);
Run Code Online (Sandbox Code Playgroud)
然后当您在登录时检查用户详细信息时,您执行以下操作:
$pwdHasher = new PasswordHash(8, FALSE);
if ($pwdHasher->CheckPassword($input_password, $hash_from_db)) {
echo 'password correct';
} else {
echo 'wrong credentials';
}
Run Code Online (Sandbox Code Playgroud)
但我没有看到任何使用盐的东西.根据我的阅读,我的用户表应该有一个额外的字段,用于散列密码时使用的盐,但CheckPasswordPHPass 的方法不需要盐?
谢谢.
我有一个高60像素的元素,其中包含其他元素,如图像和几个跨度,我无法让它们在60px高元素内垂直对齐.这是模型和CSS:
<div class="member">
<img src="images/pic.png" alt="John Smiths's Profile Picture" class="pic">
<span class="name"><a href="">John Smith</a></span>
<span class="skills">PHP, MySQL, Javascript, C#, Java</span>
</div>
#sidebar .member {
height: 60px;
margin-bottom: 10px;
vertical-align: center;
}
#sidebar .member .name {
font-size: 15px;
font-weight: bold;
}
#sidebar .member .pic {
width: 50px;
height: 50px;
border-radius: 50%;
float: left;
margin-right: 10px;
}
#sidebar .member .skills {
display: block;
font-size: 12px;
overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)
我把它放在了jsfiddle:http://jsfiddle.net/CYFyx/2/
如您所见,元素中的.member元素向上推.我需要它们垂直对齐,如下所示:

已经尝试vertical-align: middle;但没有运气.
我正在尝试在包装的 div 元素内放置一系列图块。目前,它们出现在环绕的 div 内,然后溢出到 div 之外,而不是水平环绕并显示为瓷砖。这是一个JSFiddle 示例。
要举例说明它们的外观,请查看 Windows Metro 界面,其中磁贴环绕到新列:
这是CSS:
body {
margin-top: 50px;
background: #238d9a;
}
#metro {
width: 960px;
height: 340px;
background: #004050;
margin: 0 auto;
padding: 10px;
}
.tile {
width: 100px;
height: 100px;
background: white;
margin: 0px 10px 10px 0px;
}?
Run Code Online (Sandbox Code Playgroud) 我正在使用Slim框架构建一个我正在开发的简单网站,并且还想使用Twig模板引擎.
我已经安装了Slim,Slim Extras和Twig,我的index.php文件包含以下内容:
<?php
/* Require and initialize Slim and Twig */
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
require 'Twig/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$app = new \Slim\Slim(array(
'view' => new \Slim\Extras\Views\Twig()
));
/* Application routes */
$app->get('/', function () {
$pageTitle = 'hello world';
$body = 'sup world';
$app->view()->setData(array('title' => $title, 'body' => $body));
$app->render('index.html');
});
/* Run the application */
$app->run();
Run Code Online (Sandbox Code Playgroud)
但是,这会导致错误: Fatal error: Call to a member function view() on a non-object in C:\xampp\htdocs\index.php on line 18
我承认我不知道如何正确使用Twig和Slim.我在目录结构上关注StackOverflow帖子以及如何加载Twig,但我不知道如何向视图添加一些自定义数据,我不知道应该存储Twig的视图文件的位置.
我用谷歌搜索,但很多信息是旧版本的Slim和Slim文档本身缺乏.
谢谢!
我可以通过在我的服务器块中使用以下代码段为旧IE用户提供过时的浏览器页面:
location / {
if ($http_user_agent ~ "MSIE 8.0") {
rewrite ^ /ie.html break;
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,nginx服务ie.html于IE 8用户.不过,我有两个问题.
一个是我想重新定向旧的IE用户,/upgradebrowser而不是仅仅为他们提供HTML页面.有没有办法可以发送Location:标题或其他东西?
第二,有什么方法可以让我轻松捕获IE的所有老用户?目前这只是在做IE 8.0,有没有办法使用$http_user_agent < "MSIE 8.0"?