我正在使用CodeIgniter和PHPExcel来读取和写入excel文件.
在localhost中一切正常,但是当我将我的PHP CodeIgniter应用程序上传到pagodabox中的服务器时,当我尝试从excel文件中读取数据时,我得到了以下消息.
Fatal error: Uncaught exception 'Exception' with message 'ZipArchive library is not enabled' in /var/www/application/libraries/PHPExcel/Reader/Excel2007.php
Run Code Online (Sandbox Code Playgroud) 我不是专业人士,但我知道我的PHP方式,我是Codeigniter的新手.
正在浏览这些教程:http://net.tutsplus.com/articles/news/codeigniter-from-scratch-day-5-crud/
好的,所以我有一个列出用户的页面,点击用户名将进入编辑页面,该页面的URL为:index.php/users/edit/1(其中1是用户ID)
在编辑页面上是一个表单,这个表单包含几个部分,每个部分都是从DB中的不同表填充的.所以我的Controller编辑如下:
function edit() {
//load model
$this->load->model('users_model');
//assign user data from DB
$data['data_user'] = $this->users_model->getUser($this->uri->segment(3));
//get users Password, using username from above
$data['data_user_password']= $this->users_model->getUserPassword($data['data_user'][0]->UserName);
$data['page_content'] = 'pages/users_edit';
$this->load->view('template/template', $data);
}
Run Code Online (Sandbox Code Playgroud)
注意:
$data['data_user']包含用户数据,如名称,用户名,电子邮件
$data['data_user_password']包含来自不同表的用户密码
然后我可以填写表单,在users_edit.php上,这一切都正常.我通过执行以下操作来访问此数据:
if (is_array($data_user)) {
foreach($data_user as $user)
{
$userID = $user->id;
$userName = $user->Name;
$userUserName = $user->UserName;
$userMail = $user->Mail;
$userDepartment = $user->Department;
$userWorkPhone = $user->WorkPhone;
$userHomePhone = $user->HomePhone;
$userMobile = $user->Mobile;
}
}
//user password
if (is_array($data_user_password)) { …Run Code Online (Sandbox Code Playgroud) 所以我现在处于两难境地.我想在我的网站上实现一个登录按钮,该按钮在没有用户登录时出现.但是,如果某人已经登录,我希望该按钮更改为用户个人资料的链接.
我不知道这样做的正确方法是在视图中放置一个if语句,根据从Controller传递的数据呈现不同的HTML,或者Controller是否需要确定用户是否已登录,并将适当的数据结构传递给View.在CodeIgniter中执行此操作的正确方法是什么?
我有一个包含表格的视图.带有输入字段和单选按钮.需要使用数据库中的数据填充此表单,以便将其用作数据编辑表单.
我已经使用set_value()函数进行表单验证,其中在发布后从同一个控制器调用视图.但是如何在没有POST的情况下使用set_value函数?即只是在加载的视图中填充表单中的值.比方说,数据库中的数组或对象.
我需要从以下范围之外加载视图:
$this->load->view();
Run Code Online (Sandbox Code Playgroud)
这似乎是从base/application/views目录工作.如何从/application/目录外部访问视图?
我想我将不得不延长CI_Loader class这将是最好的前进方式吗?
我还找到了包含view_paths的数组:
// base/system/core/Loader.php
// CI_Loader
/**
* List of paths to load views from
*
* @var array
* @access protected
*/
protected $_ci_view_paths = array();
Run Code Online (Sandbox Code Playgroud)
但是所有声明的变量上面的注释让我陷入困境
// All these are set automatically. Don't mess with them.
Run Code Online (Sandbox Code Playgroud)
关于从哪里去的任何想法将不胜感激:-)
我正在尝试使用以下内容将Google Plus身份验证添加到CodeIgniter中:https: //code.google.com/p/google-api-php-client/
我把这些文件放在third_party/google-api-php-client/src中
如果我在没有CI的情况下这样做,我会简单地使用:
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_PlusService.php';
Run Code Online (Sandbox Code Playgroud)
什么是CI等同于"需要"这些文件的方式?我试过了
require APPPATH .'third_party/google-api-php-client/src/Google_Client.php';
Run Code Online (Sandbox Code Playgroud)
但是会发出以下消息:
消息:require(application/third_party/google-api-php-client/src/Google_Client.php):无法打开流:权限被拒绝
我正在尝试为用户登录我的网站时设置会话数据.
因此,如果用户存在于db中,我会设置会话数据,如: $this->session->set_userdata('user_exists','1');
现在,每当我想检查用户是否存在并记录时,我会:
if($this->session->userdata('user_exists')){
//do somenthing for logged user
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道这是否意味着用户已登录并存在于数据库中,因为他登录并且我为他设置了一个会话参数,这是真的吗?或者我会遇到安全问题?
注意:我正在使用会话数据库
我在这里使用omnipay设置:https://github.com/adrianmacneil/omnipay来处理paypal快速结账.
该过程工作正常,用户被重定向到paypal - >他们登录并选择支付 - >他们返回我的网站,此时我捕获付款.
我遇到的问题是我需要将他们输入Paypal的地址作为他们的账单/送货地址.
要将用户发送到paypal,我有以下内容:
$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('XX-USERNAME_XX');
$gateway->setPassword('XX_PASSWORDXX');
$gateway->setSignature('XX_SIG_XX');
$gateway->setTestMode(true);
$response = $gateway->purchase(
array(
'cancelUrl'=>'http://www.XXX.co.uk/',
'returnUrl'=>'http://www.XXX.co.uk/paypalexpress_confirm',
'amount' => $totalamount,
'currency' => 'GBP'
)
)->send();
$response->redirect();
Run Code Online (Sandbox Code Playgroud)
当用户返回时,我有以下内容:
$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('XX-USERNAME_XX');
$gateway->setPassword('XX_PASSWORDXX');
$gateway->setSignature('XX_SIG_XX');
$gateway->setTestMode(true);
$response = $gateway->completePurchase(
array(
'cancelUrl'=>'http://www.XXX.co.uk/',
'returnUrl'=>'http://www.XXX.co.uk/paypalexpress_confirm',
'amount' => $totalamount,
'currency' => 'GBP'
)
)->send();
echo $responsemsg=$response->getMessage();
echo '<br><br><br>';
$data = $response->getData();
print_r($data);
Run Code Online (Sandbox Code Playgroud)
响应消息或原始数据中的任何内容都不包含客户地址.
有没有人得到这个工作,因为我正在努力,这是完成交易的最后一步.
我有一个寄存器视图文件,其中有一个非常大的形式.因此我打算使用表单向导插件和jquery表单验证插件.我只希望在特定页面上加载这些脚本.我该怎么做呢 ?这是我的控制器方法.
public function index(){
$data['title'] = "Register";
$this->load->view("site_header", $data);
$this->load->view("site_nav");
$this->load->view("content_register");
$this->load->view("site_footer");
}
Run Code Online (Sandbox Code Playgroud)
我在这里看到了关于stackoverflow的类似帖子,但我不明白该怎么做.请帮忙.
我正在尝试使用COdeigniter设置一个cron作业,但我无法弄清楚如何让它工作.我的控制器文件夹中有一个名为email_check.php的文件,我已将.cron文件添加到服务器cron文件夹中,其中包含以下内容:
email_check.cron
*/1 * * * * php /var/www/html/application/controllers/email_check
Run Code Online (Sandbox Code Playgroud)
email_check.php
class Email_check extends CI_Controller {
function __construct()
{
parent::__construct();
$this->index();
}
function index()
{
$this->load->model('admin/info_model');
$this->info_model->addTestData();
}
}
Run Code Online (Sandbox Code Playgroud)
addTestData将新行添加到数据库表中.我希望每分钟运行一次,但它根本不工作,我不知道为什么.
也许它可能是错误的路径.我是否需要将php部分指向服务器中的php.exe.
如果有人可以帮助或指出我正确的方向,将不胜感激!
codeigniter ×10
php ×8
autoload ×1
ci-merchant ×1
cron-task ×1
logging ×1
omnipay ×1
paypal ×1
pecl ×1
phpexcel ×1
security ×1
session ×1
templates ×1
ziparchive ×1