マーケターのプログラミング日記

東京、シンガポールを経てシリコンバレーで働く、マーケター。英語、プログラミング、データ分析は次世代マーケターの必須スキルだと信じて進む。

乱数でCookieIDを付与してデータベースに保存する

やりたいこと:クッキーIDを乱数で付与して、データベースに送る

Step.1: 0-1,000,000の乱数を発生させて、Cookieのvalueに入れる

function cookie() {
var val = Math.round( Math.random()*1000000 );
$.cookie('NAME',val, {expires:1,path:'/'});

Step.2: 作ったIDをひとまずtext boxに入れる

HTML

    <input type="text" name="cookie"> 

JavaScript

function view() {
$.cookie('NAME');
var value = $.cookie('NAME');

$("input[type=text][name=cookie]").val(""+value+"");
}

 

Step.3: IDをAjaxを使ってphp経由でデータベースに格納する

HTML

    <button>Submit cookie!</button> 

JavaScript

<script>
$(document).ready(function(){
$('button').click(function(){
$.ajax({
url: "cookie_reciever.php",
type: 'GET',
data: {

value: $("input[type=text][name=cookie]").val(),

},
})
.done(function(data){

alert(data);

})

.fail(function(data){
alert('ajax fail');
});
return false;
});
});
</script>

Step.4: Phpで、クッキーIDを受け取って一応、データベースにないか確認をして無ければ、新たに格納する

<?php

mysql_connect('localhost','root','root') or die(mysql_error());
//echo 'database connected';
mysql_select_db('Cookie_test') or die(mysql_error());
//echo '</br>Database HPM selected';
mysql_query('SET NAMES UTF8');

$value = $_GET['value'];

echo "'$value'";

$result = mysql_query('SELECT * FROM Cookie1 WHERE value="'.$value.'"');

$count = mysql_num_rows($result);
if(!$count) {

$sql = "INSERT INTO Cookie1 (value) VALUE ('$value')";
mysql_query($sql);

} else {

$emparray = array();

while ($data = mysql_fetch_array($result)){

$emparray = $data;

}
echo ("すでに存在しています");
}
?>

 以上です。

以下のように、テキストボックスに乱数で発生させたクッキーIDを入れて、"Submit Cookie!"ボタンを押すと、Ajaxを使ってphp経由でデータベースに格納されます。

f:id:yuyutata:20160116201638p:plain

もしも、すでにそのクッキーIDが存在している場合は、以下のようにアラートがでます。

f:id:yuyutata:20160116201902p:plain

 

総括

久しぶりでしたが、意外と手が動きました。今はまだcookie IDひとつしかやり取りしてませんが、ここから送る・受け取る値が増えるとJSON形式でやり取りしなくてはならないので、ハマりそうでちょっとこわいー。では、夕飯に行ってきまーす。

 

次回やりたいこと

クッキーがすでにあるか、クッキータグをブラウザから抜き出して条件分けする

  • If yes: 既存クッキーIDと閲覧URL, 閲覧時間などの情報をDBに入れる
  • If no: 新規クッキーIDを付与する(乱数でクッキーIDをつくって、DBにかぶってないか確認し、かぶっていれば再度、乱数でクッキーIDを吐く)