パスワード認証
http://www.symantec.com/business/support/index?page=content&id=TECH103176&locale=ja_jp#
— login.php ——
入力したPASSWORDと、定義パスワードを比較する。
<?php
define("PASSWORD", "pass"); session_start(); //セッションスタート if(isset($_POST["action"])&&$_POST["action"]==="login"){ if(PASSWORD === $_POST["password"]){//パスワード確認 $_SESSION["TEST"] = md5(PASSWORD);//暗号化してセッションに保存 header("Location:admin.php"); //admin.phpを表示 }else{ session_destroy();//セッション破棄 message(); } } ?> <?php
function message(){ print "パスワードが違います"; } ?> <form action="" method="post"> <input name="password" type="text" value="pass" /><br /> <input name="action" type="submit" value="login" /> </form>
— admin.php ——
PASSWORDが認証され、セッションに保存されている値と同じであれば「success」を表示する。
<?php
define("PASSWORD", "pass");
session_start(); //セッションスタート
if(isset($_SESSION["TEST"]) && $_SESSION["TEST"] != null &&
md5(PASSWORD) === $_SESSION["TEST"])
//セッションに保存されているパスワードと一致
{
print "Login success";
}else{
session_destroy();//セッション破棄
print "Login false";
}
?>
ファイルの読み込み
$index = @file($index_file);//ファイルの全行を読み込み
for($i=0;$i<count($index);$i++){//各行のカンマ区切りのデータ
$info[$i]= explode(',',$index[$i]);//カンマで分割して、$infoの2重配列へ
}
フォーム入力データから、htmlタグを外す
$form_data = htmlspecialchars($_POST[“input_form”]);
データベースに関して
rootのパスワード変更
$> mysqladmin -u root password "newpwd"
$>mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client
のエラーが出た場合
mysql> set password for root@localhost = OLD_PASSWORD('newpwd');
データベースの作成
mysql> create database sample; mysql> exit
一般ユーザの追加
データベースを操作するユーザ
ユーザ名:hoge パスワード:passwd
mysql> grant select,insert,delete,update,create,drop,file, alter,index on *.* to hoge@localhost identified by '123456'; mysql> flush privileges; mysql> exit
これでもOK
GRANT ALL ON *.* TO hoge@localhost IDENTIFIED BY '123456';
データベースへの接続
データベース sample 操作するユーザ名:test パスワード:passwd
//DB接続
$dbHandle = mysql_connect("127.0.0.1","test","passwd");
if ($dbHandle == False) {
print ("can not connect dbn");
exit;
} else {
mysql_select_db("test",$dbHandle);
}
データベースのテーブルへデータの追加
sampleデータベースのsample_tableテーブルへID番目のデータを追加 //データ追加 $tuika = "insert into sample_table values(ID, '項目1', '項目2', '項目3')"; mysql_query($tuika);
LDAP認証
foo@hoge.com の DN を取得します。samaccountname は fooになる。
$ldaphost = 'hoge.com';
$ldapport = 389;
$user_dn = '...';
$username = 'username';
$password = 'password';
$samaccountname = 'foo';
$conn = ldap_connect(
$ldaphost,
$ldapport);
ldap_set_option( $conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option( $conn, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind(
$conn,
$username,
$password
);
$attrs = array( 'memberof' );
$result = ldap_search(
$conn,
'DC=hoge,DC=com',
"(samaccountname=$samaccountname)",
$attrs
);
$info = ldap_get_entries( $conn, $result );
if( !$info['count'] ) {
// ユーザー情報の取得に失敗
}
$user_dn = $info[0]['dn'];
グループオブジェクトの取得
ユーザー DN をメンバーに持つグループが存在するかどうかチェック
$base_dn = "CN=group1,OU=ou1,DC=hoge,DC=com";
$filter = "(&(objectCategory=group)(member=$user_dn))";
$result = ldap_search( $conn, $base_dn, $filter);
$info = ldap_get_entries($conn, $result);
if( !$info['count'] ) {
// ユーザーはそのグループに所属していない
}
else {
// ユーザーはそのグループに所属している
}