乱数で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経由でデータベースに格納されます。
もしも、すでにそのクッキーIDが存在している場合は、以下のようにアラートがでます。
総括
久しぶりでしたが、意外と手が動きました。今はまだcookie IDひとつしかやり取りしてませんが、ここから送る・受け取る値が増えるとJSON形式でやり取りしなくてはならないので、ハマりそうでちょっとこわいー。では、夕飯に行ってきまーす。
次回やりたいこと
クッキーがすでにあるか、クッキータグをブラウザから抜き出して条件分けする
- If yes: 既存クッキーIDと閲覧URL, 閲覧時間などの情報をDBに入れる
- If no: 新規クッキーIDを付与する(乱数でクッキーIDをつくって、DBにかぶってないか確認し、かぶっていれば再度、乱数でクッキーIDを吐く)