我已经安装了一个干净的Apache2(加上PHP和MySQL)服务器并启用mod_rewrite了apache配置.我添加了.htaccess文件以从URL中删除index.php,如CodeIgniter wiki中所述.
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
我把这个文件放在网站的根目录下.
当我尝试访问该URL时,mydomain.local/index.php/welcome我得到CodeIgniter的默认页面.但是当我尝试访问同一页面时,mydomain.local/welcome我得到了404页面.
如何检查整个重写规则是否有效?为什么它不起作用?
假设我已将此设置为我的加密密钥,并且我已在autoload上安装了加密库:
$config['encryption_key'] = 'bjA{<ATCs1w5?,8N(bJvgO3CW_<]t?@o';
如何在加密功能中使用它?
function s()
{
$something = $this->encrypt->encode('eoaighaeg',$key);
echo $this->encrypt->decode($something, $key);
}
Run Code Online (Sandbox Code Playgroud)
^非工作示例给你一个想法.
我注意到我的所有模型看起来非常相似.他们中的大多数倾向于遵循一种模式,在这种模式中,它们是包含活动记录代码的方法集合,这些代码只是彼此之间的微小变化 这是一个例子:
class Site extends CI_Model {
public function get_site_by_id($id)
{
// Active record code to get site by id
}
public function get_sites_by_user_id($user_id)
{
// ...
}
// ...
public function get_site_by_user_id_and_url_string($user_id, $url_string)
{
// ...
}
// Non active record methods and business logic
// ...
}
Run Code Online (Sandbox Code Playgroud)
这种方法对我来说很好,但我想知道是否有更优雅的解决方案.我似乎不应该每次需要以新的方式查找数据时创建一个新方法.这是常见做法还是我错过了重构这种方法的方法?
下面的代码使用查询字符串生成分页.但是,没有领先优势?.所以,我得到这样的东西:http://localhost/index.php/search/&limit=10.有什么想法吗?
this->load->library('pagination');
$config = array();
$config['base_url'] = 'http://localhost/index.php/search/';
$config['total_rows'] = 200;
$config['per_page'] = 10;
$config['num_links'] = 4;
$config['full_tag_open'] = '<ol>';
$config['full_tag_close'] = '</ol>';
$config['first_link'] = 'First';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['last_link'] = 'Last';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$config['next_link'] = 'Next';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['prev_link'] = 'Previous';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="active">';
$config['cur_tag_close'] = '</li>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$this->pagination->initialize($config);
echo ($this->pagination->create_links()); …Run Code Online (Sandbox Code Playgroud) 对于我目前的项目,我决定为一些常见的功能创建一个库.
例如:Login_check,get_current_user等.
凭借我的小知识,我创造了一个简单的但不幸的是它不起作用.
我的图书馆:
FileName:Pro.php和位于application/libraries
class Pro{
public function __construct()
{
parent::_construct();
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->load->database();
}
function show_hello_world()
{
$text = "Hello World";
return $text;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我试图在我的控制器上加载它:
<?php
class Admin extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->library(array('session'));
$this->load->library("Pro");
}
function index()
{
echo($this->Pro->show_hello_world());
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我看不到任何错误...但我得到一个空白页面.
我怎么了?
谢谢 .
编辑:我收到此错误:
Call to a member function show_hello_world() on a non-object in C:\wamp\www\Project\application\controllers\admin.php on line 13
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过我的PHP脚本通过SMTP发送电子邮件,通过CodeIgniter运行.
请参阅下面的调试输出.这是用PHP(Unable to send email using PHP SMTP)还是在他们的末尾指示我的问题(hello: 250-parrot.email-provider.co.uk- 这意味着它已连接到他们的服务器,因为我输入的实际SMTP服务器是mail2.email-provider.co.uk,所以它似乎连接并重定向到这个parrot东西).
我的SMTP详细信息我已经确认是正确的,但仍然说它无法验证密码 - 即使相同的密码在我的本机邮件客户端中有效.
我已经更改了我的网站名称和提供商的名称(如果这是我的错,我不想说出耻辱!):
220 parrot.email-provider.co.uk ESMTP Postfix
hello: 250-parrot.email-provider.co.uk
250-PIPELINING
250-SIZE 512000000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Failed to authenticate password. Error: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
from: 250 2.1.0 Ok
to: 554 5.7.1 : Relay access denied
The following SMTP error was encountered: 554 5.7.1 : Relay access denied
to: 554 5.7.1 : …Run Code Online (Sandbox Code Playgroud) 每个客户都有各自的详细信息.这是一个非常简单的例子.
<input type="text" name="customer_names[]" />
在codeigniter中,每个customer_name都是必需的
$this->form_validation->set_rules('customer_names[]','Customer Names','required');
如果任何客户名称为空,则validation_errors();显示整个阵列的一条消息.
如何为该客户获取个别错误消息?
注意: echo form_error('customer_names[0]');我正在尝试实现customer_name 0留空的位置.
我正在使用CodeIgniter的Active Record Classes,我正在使用以下代码检索错误:
$this->db->select("*");
$this->db->order_by("id");
$this->db->limit($limit, $offset);
$this->db->from("atoms");
$this->db->join("atommeta", "atommeta.atom_id = atoms.atom_id");
$query = $this->db->get();
Run Code Online (Sandbox Code Playgroud)
它会产生以下错误:
Error Number: 1052
Column 'id' in order clause is ambiguous
SELECT * FROM (`atoms`) JOIN `atommeta` ON `atommeta`.`atom_id` = `atoms`.`atom_id` ORDER BY `id` LIMIT 10
Filename: /Applications/MAMP/htdocs/atom/models/atom_model.php
Line Number: 197
Run Code Online (Sandbox Code Playgroud)
197行: $query = $this->db->get();
任何想法为什么?这似乎与...有关order_by
这个功能曾经为我工作,直到有一天facebook决定强制执行一些更改.
function get_facebook_cookie() {
$app_id = '[MyAppID]';
$application_secret = '[MyAppSecrect]';
if(isset($_COOKIE['fbs_' . $app_id])){
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $application_secret) != $args['sig']) {
return null;
}
return $args;
} else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我能够轻松获得FB用户访问令牌
$cookie['access_token']
Run Code Online (Sandbox Code Playgroud)
现在似乎我不能再检索此信息了.
我成功(轻松)能够对我的javascript代码进行必要的更改,但我有点难以在php端.作为一个快速的说明我正在使用codeigniter,我在尝试使用FB PHP SDK发挥得很好时遇到了很多麻烦,我也没有看到任何将PHP 3 SDK集成到codeigniter中的例子所以我是寻找一个快速而肮脏的解决方案,这将允许我从cookie获取访问令牌,从而允许我使用以下调用Facebooks API:
'https://api.facebook.com/method/friends.getAppUsers?access_token=' . $cookie['access_token'];
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
在CodeIgniter框架上开发的项目上使用版本控制时,我应该忽略哪些文件夹?
我已经忽略了application/cache文件夹,但还有其他吗?
codeigniter ×10
php ×7
activerecord ×1
apache2 ×1
class ×1
email ×1
encryption ×1
facebook ×1
html5 ×1
mod-rewrite ×1
mysql ×1
oauth-2.0 ×1
oop ×1
refactoring ×1
smtp ×1
validation ×1