Browser Check With Codeigniter - codeigniter

i wanted to know if possible and a better way of doing this.
I want to use codeigniter to check for a specific browser and browser version so to redirect to a page if the browser is not up to the required for viewing my app, please i wanted to know if this is possible and the best way to achieve this with codeigniter, thanks.

Use the User Agent Class:
if ($this->agent->is_browser('Safari')) {
}
If you want to check for a specific version:
if ($this->agent->is_browser('Safari') && $this->agent->version() == 5) {
}

Related

AB Testing in Codeigniter

I'm trying to use CodeIgniter for AB Testing, but this is a first for me, so please forgive the newbie question.
I have found that in index.php I can control which applications folder to present to a user based on the following:
if(isset($_SESSION['subsite']))
{
$application_folder = "application".$_SESSION['subsite'];
}
elseif(rand(1,2) % 2)
{
$application_folder = "application";
$_SESSION['subsite'] = '';
}
else
{
$application_folder = "application_old";
$_SESSION['subsite'] = '_old';
}
However, this will redirect all traffic without any indication of a redirect. I am concerned that SEO can take a dive with this method as Google and other bots will be continually seeing different versions of the site. Can someone please provide the appropriate procedure for this. Thanks.
You can check if the user agent string to determine if a visitor is a search engine crawler.
User agent string is stored in $_SERVER['HTTP_USER_AGENT'] in PHP. You can check out this SO post for more information: how to detect search engine bots with php?

How to disable sessions, cookies and auto login in Yii2?

I am building stateless restfull API in Yii2. So I created new APP in my advanced app layout (as preferred by Yii2 creators) and configure all necessary things and API worked.
Now I want to make it stateless - I want to disable session and I want it to be accomplished in config/main.php inside my API app to ensure it as global setting.
Also I want to disable cookies and auto login.
What I have been playing now so far is inside Module class
<?php
namespace api\modules\v1;
use \app\models\User;
use yii\filters\auth\HttpBasicAuth;
class Module extends \yii\base\Module
{
...
public function init()
{
parent::init();
\Yii::$app->user->enableSession = false;
\Yii::$app->user->enableAutoLogin = false;
}
...
}
But when trying to access data using POSTMAN on Chrome I can see that:
Cookies are set (PHPSESSID, _csrf, _identity)
I always get popup asking for username and password
Thanks for your help in advance!
Finally I found out what the problem is. Yii2 worked OK, but Postman had some data stored from the past when cookies and session were enabled. What helped me was deleting browser's history (including cookies), close all instances of browser and rerun.

How can we change redirection of url. Read below for detail :

How can we change redirection of url. Means i have a site abc.com.au. When i open it in browser abc.com.au or www.abc.com.au, it opens show different url (abc.com.au / www.abc.com.au). Now i want to do setting as such type it show only abc.com.au in browser either we write www.abc.com.au or abc.com.au. Can anybody have a idea regarding redirection of url, then please share with me.
I think you have to change something in your domains DNS or check it with PHP?
if($_SERVER['HTTP_HOST'] == 'www.abc.com.au')
{
header("Location: http://abc.com.au");
}
else
{
//site
}

codeigniter php native sessions without using cookies or URL session id, but matching browserfingerprints in database

Because of european privacy law being harsly applied in the Netherlands and to keep my company's site user friendly without nagging the users with questions if it's okay to store a cookie on their computer that allows me to access their client data.
What I need is a way to "overwrite" the native php sessions class so that at the point where the native class requests the cookie that stores the phpsessid, that I can place my own code there that checks the browsers fingerprint and matches that to a session id which I can use to return the normal working of the native class.
My idea is:
table sess_fingerprints
Fields: fingerprint - phpsessid
function getsessionid()
{
$result = $this->db->query("SELECT phpsessid
FROM `sessiondatabase`.`sess_fingerprints`
WHERE `sess_fingerprints`.`fingerprint` = '$userfingerprint'");
if($result->num_rows() != 0)
{
return $result->row->phpsessid;
}
}
and at that point the native php session code just works as it would normally do.
So, my question is: is it possible to overwrite only the "cookie" part of the phpsession class? if so, how? because I haven't found that yet.
I'm aware of being able to pass along the session variable via urls etc, but that's not secure enough for my web applications.
PHP provides support for custom session handlers:
http://php.net/manual/en/session.customhandler.php
I think I have found the solution to my problem.
I'm going to override the functions related to cookies by using http://php.net/manual/en/function.override-function.php
Thank you all for thinking along.

Can you retrieve your Skype status using JSONP?

Does anyone know of a URL to get your Skype status using JSONP?
I've only found an XML status URL so far (http://mystatus.skype.com/username.xml).
(I'm trying to query Skype using AJAX. Yes, I could use a server-side proxy script to beat the cross-domain limits, but a direct call would be awesome.)
Simon.
Well apparently you can get a text-only version of the status by changing the extension to .txt:
http://mystatus.skype.com/username.txt
It will return "Online" or "Offline". About the Cross-domain AJAX, you can only do it via server and direct call is definitely not allowed.
You might change the headline to 'JSONP' instead of JSON. That's what you want.
JSONP hijacks cross domain fetches like this to work, without server proxies, by carrying the data in fetches. It's like the most hackish useful technology I come to mind, right now. :)
I nagged Skype about this - the easiest way out would be for their servers to have an official, documented JSONP interface. I hope they'll do that.
In the mean time, this is how I got the problem solved:
Placed this PHP script on my server, alongside the usual HTML: http://benalman.com/projects/php-simple-proxy/
Edited the configuration of it like so:
$enable_native = true;
$valid_url_regex = '/^http:\/\/mystatus\.skype\.com\/myuserid.*/';
This allows it to fetch (via curl running on the server) the mystatus.skype.com/myuserid.num (or .txt) information.
Fetching from JS with URL:
ba-simple-proxy.php?url=http%3A%2F%2Fmystatus.skype.com%2Fmyuserid.num&mode=native&full_status=1
That's it. Pheeew... :)
Also you can retrieve it using PHP
function getSkypeStatus($username) {
$data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
return strpos($data, '<presence xml:lang="en">Offline</presence>') ? 'Offline' : 'Online';
}
OR
function getSkypeStatus($username) {
$data = file_get_contents('http://mystatus.skype.com/' . urlencode($username) . '.xml');
preg_match('#<presence xml:lang="en">(.*?)</presence>#i', $data, $match);
return isset($match[1]) ? $match[1] : 'Error retrieving status';
}
Cheers!
Thanks to Bradgrafelman from - http://www.phpbuilder.com/board/showthread.php?t=10361050

Resources