我有一个关于重构PHP代码的快速问题.以下是三个功能.前两个看起来非常相似,只有一个if语句不同.第三个通过使用标志结合前两个.这是最好的做法吗?这里似乎可以使用一个标志,但如果我们将来需要添加更多标志呢?什么是最佳做法?
谢谢.
function check_contact_email($email)
{
$this->db->select('COUNT(login) AS count');
$this->db->from('users');
$this->db->where('email', $email);
$query = $this->db->get();
$row = $query->row();
return ($row->count > 0);
}
function check_contact_email_id($email)
{
$this->db->select('COUNT(login) AS count');
$this->db->from('users');
$this->db->where('email', $email);
$this->db->where('user_id !=', $_POST['user_id']);
$query = $this->db->get();
$row = $query->row();
return ($row->count > 0);
}
function check_contact_email($email, $id = FALSE)
{
$this->db->select('COUNT(login) AS count');
$this->db->from('users');
$this->db->where('email', $email);
if ($id) $this->db->where('user_id !=', $_POST['user_id']);
$query = $this->db->get();
$row = $query->row();
return ($row->count > 0);
}
Run Code Online (Sandbox Code Playgroud) 我已经使用ASP.NET一段时间了,但决定是时候学习PHP框架了.
看一篇文章NetTuts +看起来CodeIgniter是最简单的,也是最轻松,最简单的方法之一.
然而,我是一个巨大的jQuery粉丝,我想知道jQuery是否与框架很好地集成?有经验吗?
我想我在这里错过了一些简单的东西,但我无法理解我的生活.
如果验证失败,我正在使用set_radio()和set_checkbox()方法返回它们的值,就像这样
<input type="radio" name="gender" value="male" <? if(!isset($thankyou)) { echo set_radio('gender', 'male'); } ?>/>;Male
<br />
<input type="radio" name="gender" value="female" <? if(!isset($thankyou)) { echo set_radio('gender', 'female'); } ?>/>;Female
Run Code Online (Sandbox Code Playgroud)
我在其他地方还有另一组复选框,它们更大.一切正常,但默认情况下,选中第二个单选按钮,对于复选框,默认情况下会检查所有这些按钮.
如果我没有set_radio/set_checkbox,默认情况下不会检查它们,这就是我想要的.
将第3个参数添加到set_radio()即.set_radio('gender','male',false)也没有显示任何差异.
有人可以对此有所了解吗?
非常感谢你!
我希望有人,可以提供有关Cookies和Codeigniter的一些信息,我已经阅读了这些用户指南,所以我对如何设置它们有了解,等等.我想知道的是我如何使用,例如,如果你看在BBC网站上,您可以拖放框,它会记住您放置它们的位置,而无需您注册或登录等,因此我认为它存储在cookie中.
在我的网站上,我有一个菜单系统,允许用户选择"他们的"页面上的功能,现在我不希望他们必须注册或登录,所以我想我可以以某种方式存储他们的内容在cookie中要求?这可能吗?目前,他们单击一个链接,并使用URL中的ID和数据库中的ID匹配从数据库中提取相关内容.我只保存所请求的每个ID吗?如果是这样怎么样?
谢谢
使用PHP框架(CodeIgniter,Zend)是否需要特殊的服务器端设置?如果是的话,是否有一个不需要的PHP框架?
目的是使用仅支持普通PHP的托管服务器(没有安装框架 - 如果有意义的话),并且仅在开发机器上使用所提到的框架,然后将其预处理("编译")到普通PHP中.
[编辑]
对你们所有人:抱歉新手问题,我想我弄错了.到目前为止,我只在.NET中工作过,而且我还没有在PHP中从头开始做任何事情.对于我应该做的这个小项目,我想学习并使用CodeIgniter,因为它看起来像一个轻量级MVC框架,我可以快速获得结果.
在开始之前,我想咨询托管服务提供商(我的客户已经购买了一年的托管服务),他们表示他们只支持Zend.那么,我猜那是胡说八道呢?
[编辑2]
为了使我的问题完整,以下是他们的托管包提供的内容:
确切地说,我的问题是(因为我毕竟是新手):
问:你支持哪些PHP框架(Zend,CodeIgniter ......)?
答:我们支持Zend,但不支持CodeIgniter
现在我知道问题本身有点愚蠢,所以我可能会再次与他们联系.
有没有比这更简单的方法
foreach($_POST as $x=>$y){
$arr[$x] = $this->input->get_post($y, TRUE);
}
Run Code Online (Sandbox Code Playgroud)
用CI的XSS过滤器清理整个$ _POST数组.看看输入库似乎get_post()只接受一个单独的变量,而不是能够清理整个数组然后返回数组.
我正在尝试在视图中执行AJAX请求,用户提供了一些使用AJAX发送到服务器的输入,并且它应该去的功能是使用CodeIgniters路由进行路由的.
这是我在提出请求时目前所持的观点.
http://localhost:8888/companies/list
Run Code Online (Sandbox Code Playgroud)
在我的路由配置中,我在下面设置了这条路线来处理AJAX请求,该请求应该能够来自任何视图,并且仍然可以转到我指定的路由.
$route['test_ajax'] = "ajax/test_ajax";
Run Code Online (Sandbox Code Playgroud)
所以请求应该转到"ajax"控制器并使用函数"test_ajax",这应该使POST-url看起来像这样.
POST http://localhost:8888/test_ajax
Run Code Online (Sandbox Code Playgroud)
但我得到的是我正站在的当前URL,并且我已经指定的路由附加到URL完全崩溃我的响应来自AJAX请求,因为它甚至没有接近它应该的功能.我得到的POST-url看起来像这样.
POST http://localhost:8888/companies/test_ajax
Run Code Online (Sandbox Code Playgroud)
注意如何删除/ companies的参数.参数/ list在某个地方丢失了,虽然如果我在列表后面添加一个尾部斜杠,我也会在URL中获得list参数.
所以刚刚发生的事情是POST试图转向公司控制器并寻找功能test_ajax,它在ajax-controller中定义,而不是在公司控制器中定义.无论我在哪个URL,都会出现此错误,并且它始终遵循相同的模式.它会一直将我的route-URL附加到现有URL,而不是正确路由.
那么什么可能导致路由以这种方式运行,是否存在任何意外启用或任何设置的设置?因为我知道我在以前的项目中已经有数百次这样的工作.
提前致谢.
我是CodeIgniter的新手,我正在尝试使用下面的条件来确定表单是否已提交,然后显示某个视图(如果有).由于某种原因,我在标题中出现了错误,并且已经将问题排除了一半以上.有谁知道如何解决这个问题?谢谢!
if($this->input->post->lastName){
// load view if form was submitted
} else {
// load other view
}
Run Code Online (Sandbox Code Playgroud) 我是CodeIgniter的新手,我想知道限制直接访问您的视图文件是否被视为一种好习惯?显然,它们将包含许多依赖变量的php代码,以及未从控制器传递给它们的内容,因此,如果直接访问php代码,则很容易出错,不是吗?
额外的问题:为什么助手文件夹,库文件夹,钩子文件夹等在应用程序文件夹中为空?
谢谢你的时间。
我有一个验证函数,我在codeigniter中使用.
function valid_image() {
if ( ($_FILES["file"]["type"] != "image/jpeg") || ($_FILES["file"]["type"] != "image/gif") ) {
$this->form_validation->set_message('valid_image', 'Wrong file type..');
return false;
} else {
return true;
}
Run Code Online (Sandbox Code Playgroud)
只有if语句中的"image/jpeg"部分就能正常工作.如果我尝试上传除jpg文件以外的任何内容,则会失败.如果我运行上面的代码,它会失败并同时使用jpg或gif文件.
在有人说"为什么不使用上传课程"之前,我做不到.我将我的照片直接保存到MongoDB中,因此上传类没有多大帮助.
codeigniter ×10
php ×7
ajax ×1
checkbox ×1
cookies ×1
forms ×1
frameworks ×1
input ×1
jquery ×1
radio-button ×1
refactoring ×1
routing ×1
xss ×1