小编Jam*_*son的帖子

MySQLi准备好的语句返回false

我正在尝试使用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中自己运行查询并成功生成结果集,所以我真的不知道出了什么问题.

php mysqli prepared-statement

5
推荐指数
1
解决办法
5825
查看次数

生成唯一的文件名

我想为上传的文件生成唯一的文件名.它们的长度应为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 random filenames

5
推荐指数
2
解决办法
1万
查看次数

使用CodeIgniter验证后使用POST数据

我有一个注册表单,我正在验证用户输入.这是我的控制器:

<?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)

php post codeigniter registration

5
推荐指数
1
解决办法
5324
查看次数

自动语法荧光笔

我正在寻找一个用JavaScript编写的优秀的全方位语法高亮显示器,它将自动检测所使用的语言并应用正确的语法高亮显示.

我从一个简单的谷歌搜索中找到了无数的,但他们都必须在<pre>元素上有某种格式化的类<pre class="highlight-php">.

我注意到StackOverflow的语法突出显示设法从pre块中自动完成,任何人都知道他们正在使用什么库?

谢谢!

syntax-highlighting

5
推荐指数
1
解决办法
1284
查看次数

在画布元素上旋转精灵

我有一个带有精灵的玩家类,我想让它面向我的鼠标指针.

我正在使用它来计算精灵的旋转应该是什么:

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).

如何将精灵面朝向鼠标光标,同时使用其中心点作为原点?

javascript html5 canvas

5
推荐指数
1
解决办法
998
查看次数

正确实现PHPass

我正在使用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 的方法不需要盐?

谢谢.

php passwords phpass

4
推荐指数
1
解决办法
623
查看次数

使用CSS垂直对齐元素

我有一个高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;但没有运气.

html css vertical-alignment

4
推荐指数
1
解决办法
2937
查看次数

在包装 div 内平铺 div,而不是让它们出现在外面

我正在尝试在包装的 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)

html css

4
推荐指数
1
解决办法
4301
查看次数

使用带有Slim应用程序的Twig

我正在使用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文档本身缺乏.

谢谢!

php slim twig

4
推荐指数
1
解决办法
1万
查看次数

使用nginx将旧IE用户重定向到不同的URL

我可以通过在我的服务器块中使用以下代码段为旧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"

internet-explorer nginx

4
推荐指数
1
解决办法
3797
查看次数