ホーム > タグ > PHP

PHP

【drupal】ユーザー変数一覧

drupalで使用されているユーザー変数($user)の中身をprint_rで確認してみると以下のようになっている。

Continue reading

【drupal】独立したPHPファイルを作る場合

プロジェクトの内容によっては独立したPHPファイルを作成する必要が出てくる場合もありえます。

例えば、ユーザー管理などを効率的に行うために直接DBを編集するスクリプトを用意したいとします。
もちろん、管理者以外は実行出来ないように。

その場合、

if( $user->uid == 1){
~~PHPスクリプト~~
}

else{
exit();
}

と書きたいわけです。

ただ、drupalとは独立したPHPファイルであるため、$user変数は使用できません。

そんな時はincludes/bootstrap.incをincludeし、drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL)と記述することによってdrupalの機能にフルアクセスすることが可能になります。

↓こんな感じのが出来るわけです。これはセキュリティの面からも非常に有効ですのでオススメです。

include_once ‘includes/bootstrap.inc’;
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

if( $user->uid == 1){
~~PHPスクリプト~~
}

else{
exit();
}

【drupal】ユーザーロールによってログイン後のページを変える

drupalでログイン後のページをロールによって変えたいときはruleモジュールが便利です。
login_destinationというモジュールでも可能といえば可能ですが、圧倒的にruleモジュールの方が楽だと思います。

login_destinationモジュールの場合、自分でPHPを書くコトが出来るのでロールだけでなく、さらに細かい条件分岐をする場合は重宝しますが、そこまでの条件分岐が必要になる場面は少ないでしょう。

ruleモジュールの設定の方法はJapan Drupal Noteさんの記事が非常にわかりやすいです。
以下は、該当記事の引用です。今回のエントリはもはや、この該当記事の紹介のみみたいなもんです。

「管理セクション> ルール>トリガのルール」で「ルールを新規追加」をクリックする。
「ラベル:」に「user_login」を入力します。
「イベント:」は「ユーザーがログイン」を選択します。
「変更を保存」ボタンをクリックします。
「条件を追加」をクリックします。
条件を追加
「追加する条件を選択:」で「ユーザーがロールを保有」を選択します。
「次へ」ボタンをクリックします。
条件を編集
「ロールを選択:」で「認証済みユーザー」を有効にします。
「保存」ボタンをクリックします。
「アクションを追加」をクリックします。
アクションを追加
「追加するアクションを選択:」で「ページリダイレクト」を選択します。
「次へ」ボタンをクリックします。
アクションを編集
「宛先:」にログイン後に表示するURLを入力します。
「宛先:」に「管理セクション ? サイトの環境設定」の「デフォルトのフロントページ:」の
値を入力するとフロントページがログイン後に表示されます。
「保存」ボタンをクリックします。
これで、管理ユーザーと閲覧ユーザーごとに違うページに遷移させる、などの処理が可能になります。

【MySQL】【PHP】重複するKEYがあったらレコードの更新

商品にtagをつけて、検索可能になっているサイトとかで、たまに「どのタグが一番多く使われているか」をチェックしなきゃいけない時があります。
で、タグは「,」つなぎで一つのフィールドに登録されてたりしちゃったりして。
色々、方法はあるんだろうけど、以下は「どのタグが一番多く使われているか」をチェックする一例。(PHPで書いてます)

//まずはtable_nameテーブルからタグリストを取り出し。
mysql_query(‘SET NAMES utf8′);
$display = mysql_query(“SELECT taglist FROM table_name”);

while ($row = mysql_fetch_assoc($display)) {

 //「,」で分解して、配列につっこむ
 $tag_date = preg_split(“/[,]+/” ,$row['taglist']);

 foreach($tag_date as $row){
  //INSERT
  if(mb_strlen($row2) <= 10){
   $sql = “UPDATE nikon_tag
   SET num = num +1
   WHERE tag = ‘$row’”;
   mysql_query($sql);
  }else{
 }
}
}

UPDATE~SET~を知らずに、やたら苦労しました。
テーブルを2つ用意して何とかしようとしてたんだから驚きです。

【AJAX】jQueryを使って非同期通信

javascriptからPHPを呼び出すときのサンプルです。
基本的にjavascriptからPHPを直に実行はできないので、AJAXを使うみたいです。
友人のブログに秀逸なサンプルがあったので、転載すると

$.ajax({
 type: “POST”, //メソッドタイプ
 url: “sample.php”,//実行PHP指定
 cache: false,//キャッシュ(なくてもおk)
 data: “sampleVal=test”,//送るデータ
 success: function(html){//実行後の処理
  samplefunc(html);
 }
});

のようにして実行できます。

ちなみに、複数のデータをPHPに送る時の方法を探すのに意外と時間を食ってしまったので、その方法も以下に書いておきます。

$.ajax({
type: ‘POST’,
url: ‘sample.php’,
cache: false,
//data: “imgurl=”+ img,
data:{
“data[]“:[sample1,sample2]
},
success: function(html){
alert(html);
}
});

要はチェックボックとかの値を送るときと同じように配列にして渡すってことですね。

twitter search APIから発言をとってきてDBに突っ込む

とっても便利なtwitterAPI。
その中でもsearchAPIは多くの人が使っているAPIではないでしょうか。

で、searchAPIは便利なんですが、検索出来るtweetsは大体1週間くらい前までという制限があります。
twitter関連アプリを作るときに、これは微妙に不便なこともあります。

で、そういう時にtweetsをDBに突っ込むなんてことをすることも、あり得ないとは言い切れないわけですが、その時に一つ注意。

まず、searchAPIを使って一度に取れるtweetsは100件です。なので、

$query = urlencode(“キーワード”);

for( $i=100; $i>0 ; $i–){
$url = “http://search.twitter.com/search.atom?q=”.$query.”&locale=ja&rpp=100&page=”.$i;
なんちゃらら
}

というような感じでページャー部分をループで回す必要があります。
(pageの最大値は100です。)

その時に、1から100に向かってループを回すと多重登録の可能性が出てきます。
(page=1のtweetsをDBに入れている間にもtweetsはどんどん貯まっていき、page=1のtweetsを全てDBに入れpage=2に移った時にはpage=1のいくつかがpage=2に押し出されている可能性が在るため)

重複したものを削除する機能を用意しても良いんですが、それが面倒なときは100から1に向かってループを回しましょう。
(まぁ、これでも誤差は出ます。しっかりと全て取得したいなら、やっぱり重複処理を用意して下さい)

ちなみに、searchAPIにはsince_idというオペレータもあり、

http://search.twitter.com/search.atom?q=test&since_id=111111111111111

という風にすることによって、指定したid以降のtweetsだけ取得ということも可能です。
とまぁ、twittersearchAPIに関する覚書でした。

プログラミング能力最底辺の俺が会津のお天気botを作ってみた

<2010/03/01追記>
去年の9月でこのbotを動かしているサーバーの契約切れていたのを忘れてました。
とりあえず、仮サーバーに移動しましたが、動作保証は無しです。すいません。

プログラミング、苦手です。
HTMLとかCSSとかは大好きなんですけどね。

そんな自分にも最近流行のtwitterを使って何か作れないの?みたいな欲求はあるようです。
驚きですね。

そんなわけで、とりあえず既に氾濫している「お天気ボット」を作ってみました。
会津限定で。超単純なヤツ。俺でも作れそうなヤツ。でも、地味に自分が使いたいものを作ったつもり。

最初にどんなんかっていうと、こんなんです。
(実はまだ未完成なんですが、ことプログラミングに関しては恥らうものなど何一つ持っていないぜ!)

Continue reading

Home > Tags > PHP

Search
Feeds
Meta
ad

Return to page top