标签: codeigniter

Googlebot无法解释的32个字符的十六进制附加字符串,每天导致超过20,000个404错误

我有一个非常有趣的问题,我没有解释.

每隔2到6秒googlebot(我查了googlebots IP,它真实的东西[使用主机IP ])请求我们网站上的页面(运行:php,apache,mongodb)不存在(404s).没有其他机器人或人类曾经请求过这样的页面!只是googlebot.

请求每个看起来像这样:

/ 2de4f853c2853807b2e72387aa8928a4

/ ea5700c343d1a9798bc554af7c1a330e

/ e5aafa102d54ba7517703336846cc019

我们的代码不使用任何32个char字符串,也没有类似我们网站内部或外部的链接.我们使用codeigniter,所以起初我以为它是默认的session_id,我已经检查过,但事实并非如此.

有没有人见过这样的东西?我们的网站在某些页面上使用history.push,这可能导致它吗?只是一个想法.

示例请求的原始数据:

array (
  'date' => '2012-12-01',
  'time' => '10:01:33 PM',
  'additional_data' => 
    array (
      'server_vars' => 
        array (
          'REDIRECT_STATUS' => '200',
          'HTTP_HOST' => 'www.xxxxxxx.com',
          'HTTP_ACCEPT' => '*/*',
          'HTTP_ACCEPT_ENCODING' => 'gzip,deflate',
          'HTTP_FROM' => 'googlebot(at)googlebot.com',
          'HTTP_USER_AGENT' => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
          'HTTP_X_FORWARDED_FOR' => 'xxxxxxx',
          'HTTP_X_FORWARDED_PORT' => '80',
          'HTTP_X_FORWARDED_PROTO' => 'http',
          'HTTP_CONNECTION' => 'keep-alive',
          'PATH' => '/sbin:/usr/sbin:/bin:/usr/bin:/home/ec2-user/ec2/bin',
          'SERVER_SIGNATURE' => '<address>Apache/2.2.22 (Amazon) Server at www.xxxxxxx.com Port 80</address>
',
          'SERVER_SOFTWARE' …
Run Code Online (Sandbox Code Playgroud)

php apache googlebot codeigniter

6
推荐指数
1
解决办法
452
查看次数

Codeigniter,路由在生产服务器上不起作用

我有3台服务器,一台localhost apache服务器,一台测试远程服务器和生产实时服务器.

我在所有3个上都安装了相同的codeigniter和站点设置,并且在localhost和测试服务器上没有'index.php'的路由工作100%.但是,在生产服务器上,无论URL显示只显示主页(通过默认控制器),似乎除了默认路由规则外,所有路由规则都被忽略.

但是,如果在URL中添加了index.php,那么它将按预期工作.

例如,如果生产站点上的URL为:'www.mysite.com/information',则加载的内容将构成默认控制器.

但是当生产站点上的URL为:'www.mysite.com/index.php/information'时,加载的内容来自'信息'控制器.

这是我的htacess文件的内容:http://pastebin.com/cDaZVJ8A

这是我的路由配置文件:http://pastebin.com/7Ewc2bwN

我的$ config ['index_page']设置为空.

我真的不知道为什么它不起作用,在codeigniter本身的所有服务器上的相同设置,并且mod_rewrite IS在生产服务器上工作.

我不知道该怎么办,我怎么能找出什么是错的?

php .htaccess codeigniter

6
推荐指数
1
解决办法
2396
查看次数

CodeIgniter中的regex_match form_validation生成:消息:preg_match():找不到结束分隔符'/'

我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线.但是我逃避了他们.

这是字符串的外观:

23/12/2012

这就是我宣布验证规则的方式:

regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)[0-9]{2}$/]
Run Code Online (Sandbox Code Playgroud)

结束分隔符在那里,日期的两个中间斜杠用反斜杠进行转义.我也试过这个略有不同,但我得到了同样的错误:

regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/]
Run Code Online (Sandbox Code Playgroud)

哪里出错?

编辑:

根据您的建议,我尝试使用回调函数.这是声明,它位于正在执行表单验证的控制器类中:

function mach_date($date) {
   /* DEBUG */ echo 'Here I am!'; exit; // execution should stop here displaying the echo
   return (bool)preg_match('/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/', $date);
}
Run Code Online (Sandbox Code Playgroud)

application/config/form_validation.php中的验证规则:

$config = array(
     // other validation groups.....,
     'articles' => array(
          // other validated fields.....,
          array(
                'field' => 'date_p',
                'label' => 'Publishing date',
                'rules' => 'callback_match_date'
          )
     )
); 
Run Code Online (Sandbox Code Playgroud)

php regex codeigniter

6
推荐指数
1
解决办法
4449
查看次数

Codeigniter - 设置目录和文件权限(chmod设置)

因为我不认为我的应用程序文件夹和文件都有正确的权限,无论如何都要检查它们的权限?

我的意思是,有没有人知道/有一个标准/教程/链接要跟随Codeigniter设置chmod权限?

谢谢,任何帮助appriaciated!

注意:当我说allover我的意思是从根到应用程序和系统文件夹包含的所有文件

另外要指定一点点,我认为我的权限有问题,因为我通过不同的操作系统传递我的应用程序,例如macosx在目录上设置不同的权限而不是Windows等...所以它实际上是一个地狱

这是我的应用架构:

/project
   /application
   /system
   /css
   /img
   /vendor
   index.php
   .htaccess
Run Code Online (Sandbox Code Playgroud)

php permissions codeigniter chmod

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

codeigniter在本地但在Web服务器上工作正常.404错误

Codeigniter在本地服务器上运行正常但在Web服务器上运行不正常.

我用于XAMPP本地的开发.

我正在使用Parallels Plesk Panel 11.0.9 for Microsoft Windows.

未加载codeigniter的404错误页面.Url是服务器的loadind 404错误页面.我删除 .htacces 了根目录的 所有重写规则并包含在内index.php.它仍然没有用.

搜索了很多,但找不到正确的解决方案

codeigniter文件夹的目录(站点,应用程序,系统)

是

mysite/httpdocs/demo/test/
Run Code Online (Sandbox Code Playgroud)

mysite/httpdocs/demo/test/application/config/config.php中的基本URL

$config['base_url'] = 'http://mysite/httpdocs/demo/test/site/';
Run Code Online (Sandbox Code Playgroud)

在mysite/httpdocs/demo/test/application/.htaccess中

Deny from all
Run Code Online (Sandbox Code Playgroud)

在index.php中设置的集合(mysite/httpdocs/demo/test/site/index.php)

switch (dirname(__FILE__)) {
        case 'http://mysite/httpdocs/demo/test/site':
            define('ENVIRONMENT', 'development');
        break;

        default:
            define('ENVIRONMENT', 'production');
        break;
    }
          $system_path = '../system';
          $application_folder = '../application';
Run Code Online (Sandbox Code Playgroud)

在mysite/httpdocs/demo/test/site/.htaccess中

               <IfModule mod_rewrite.c>
                           Options +FollowSymLinks
                           RewriteEngine on
                           RewriteCond %{REQUEST_FILENAME} !-f
                         RewriteCond %{REQUEST_FILENAME} !-d
                          RewriteRule ^(.*)$ index.php/$1 [L]
              </IfModule>
Run Code Online (Sandbox Code Playgroud)

在mysite/httpdocs/demo/test/application/config/routes.php中

           $route['default_controller'] = "page"; …
Run Code Online (Sandbox Code Playgroud)

codeigniter

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

MySQL根据记录是否存在于另一个表中来选择布尔值

嗨,我有一个用户可以选择的实体表,我还有另一个表,其中包含有关用户最喜欢的实体的信息.看到:

表Entity:

id | ...
Run Code Online (Sandbox Code Playgroud)

表SavedEntity:

id | entity_id | user_id
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

entity_id | ... | favourite
Run Code Online (Sandbox Code Playgroud)

我的问题是如何更改我的查询获取所有实体,并添加一个额外的字段是boolean实体是否是用户的最爱的值?

我已经看过使用(或模仿!)a FULL JOIN但这似乎不必要地复杂,我无法让它工作,我已经看了CASE关键字,但我再次没有运气.

这种多对多的表结构是相当标准的我相信所以我确信有一种获取所需信息的标准方法,任何人都可以帮我弄清楚我缺少的东西吗?

NB我正在使用CodeIgniter和我的查询的活动记录,但我可以解决vanilla SQL问题.

mysql codeigniter case subquery full-outer-join

6
推荐指数
1
解决办法
2901
查看次数

codeigniter中的APPPATH是什么

这是一个例子.

class My_Loader extends CI_Loader {
    parent::__construct();
    include(APPPATH.'config/jscss.php');
}
Run Code Online (Sandbox Code Playgroud)

什么是上面的'APPPATH'?

php codeigniter

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

如何捕获CodeIgniter PHP中的DB错误

我是CodeIgniter,PHP和MySQL的新手.我想处理数据库生成的错误.从Stackoverflow中的一篇文章中,我知道通过以下语句可以捕获错误.

 $this->db->_error_message();
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚使用它的确切语法.假设我想通过以下语句更新名为"table_name"的表的记录:

$array['rank']="8";
$array['class']="XII";
$this->db->where('roll_no',$roll_no);
$this->db->update("table_name", $array);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我想在发生任何数据库级别违规时捕获数据库错误,即字段名称无效或发生某些唯一约束违规.如果有人帮助我解决这个问题,我将非常感激.谢谢.

php mysql codeigniter

6
推荐指数
2
解决办法
3万
查看次数

如何在Wamp中删除index.php?

我一直在XAMPP中使用CodeIgniter.重定向到功能URL没有问题(例如,function1):

http://localhost/function1
Run Code Online (Sandbox Code Playgroud)

当我改为WAMP时,我遇到了问题.我无法重定向到function1.但是,仍然可以在以下位置访问function1:

http://localhost/index.php/function1
Run Code Online (Sandbox Code Playgroud)

如何配置WAMP和CodeIgniter来删除index.php?为了在运行XAMPP时可以运行function1.

谢谢.

wamp codeigniter

6
推荐指数
1
解决办法
9951
查看次数

如何使用Codeigniter上传.docx?(PHP)

我正在尝试使用Codeigniter中的上传帮助程序上传.docx.

public function upload($id,$type){
        $folder = $type;
        $config['upload_path'] = RESOURCE_PATH . $folder;
        $config['allowed_types'] = 'pdf|doc|docx';
        $config['max_size'] = '100000';
        $this->CI->load->library('upload',$config);
        //$this->load->library('upload', $config);
        if (!$this->CI->upload->do_upload('userfile')){
            echo $this->CI->upload->display_errors();
        }
 ....
Run Code Online (Sandbox Code Playgroud)

上传功能在我的本地主机上正常工作.但是,当我尝试在服务器上上传.docx文件时,我得到"您尝试上传的文件类型是不允许的".

我可以在服务器上传其他文件,代码是我本地的精确副本.我也搜索了一下,发现有些人将.docx的mime更改为:

'docx'  =>  array('application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/octet-stream')  
Run Code Online (Sandbox Code Playgroud)

但这似乎没有解决问题.可能出现什么问题,如何解决问题以便解决此问题?

php codeigniter file-upload

6
推荐指数
1
解决办法
8623
查看次数