LoginSignup
7
7

More than 5 years have passed since last update.

PHP 関数($_SESSION etc)

Last updated at Posted at 2016-07-29

▪️strlen() 文字列の長さを得る

<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo strlen($str); // 7
?>

strlen関数(参考ページ)

$_SESSION

$_SESSION

▪️$_SESSION[セッション変数名] = 値
[ ]の中に保存したいセッションの名前(ここではusername)を書き、代入演算子 = で代入したいもの(tanaka)を書きます。

<?php
session_start();
$_SESSION[username] = yamada;
?>

セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みのこと

セッション.png

$_SESSION 使い方

セッションの使い方ですが、シンプルに session_start関数 を使って開始し、この下でセッションを保存していくことができます。

$_SESSION 中身の取り出し方

取り出し方は、echo でこの SESSION[‘username’] を取り出してあげれば、中身を取り出すことができます。

定義済み変数$_SESSION(参考ページ)

session_start();
$_SESSION[username] = tanaka;
echo $_SESSION[username] ;
?>

スクリーンショット 2016-07-29 17.08.50.png

PHPSESSID

     
PHPSESSID セッションが利用するクッキーの値
セッションID表示 $_COOKIE["PHPSESSID"]
<?php
    session_start();
?>
<?php
// クライアント側にセッションIDがクッキーとして書き込まれるのかどうかを確認
    if (!isset($_COOKIE["PHPSESSID"])){
        print('初回の訪問です。セッションを開始します。');
    }else{
        print('セッションは開始しています。<br>');
        print('セッションIDは '.$_COOKIE["PHPSESSID"].' です。');
    }
?>
実行結果
セッションは開始しています
セッションIDは knv7dmv9l353lhjfeccclcoop7 です 

session_regenerate_id

test39-input.php
<?php
session_start();
?>
<form action="test39-output.php" method="post">
<p>
<input type="text" name="name">
</p>
<input type="submit" value="送信" name="submit">
<!-- <input type="submit" value="SESSION削除" name="sessionDelete"> -->
</form>
test39-output.php
<?php
session_start();
if(isset($_POST['submit'])){
$_SESSION['name'] = $_POST['name'];
$name = $_SESSION['name'];
}
?>
<?php
if(isset($_SESSION['name'])){
echo $_SESSION['name'];
echo $_COOKIE['PHPSESSID'];
}
if(isset($_POST['sessionDelete'])){
session_regenerate_id();
}

?>
<form action="" method="post">
<input type="submit" value="SESSION再生成" name="sessionDelete">
</form>

20170418.png

$_COOKIE

$_COOKIEの中身

<?php var_dump($_COOKIE);?>
実行結果
array (size=1)
  'PHPSESSID' => string '30fmvbq1bdltdjnegbtvk0j7e2' (length=26)

$_COOKIE削除

クッキー名のみ指定
setcookie('クッキー名');
クッキー名入れてクッキー値に空の文字を指定
setcookie('userid','');

setcookie

setcookie(クッキーの名前,保存する値,有効期限,パスの指定);

     
保存する値 文字列or数字。配列や複雑なデータは指定できない

if文

if(参考ページ)

class属性(html)

class属性(参考ページ1)
class属性(参考ページ2)

class PHP

class PHP(参考ページ)

関数

rand()

     
rand() 0~32767の乱数を返す
getrandmax() 乱数の最大値を返す
1~5までの乱数を出す
echo rand(1,5);

rand()で画像をランダムに表示

echo '<img src="hanep',rand(1,3),'.gif">';

画像ファイルは
hanep1.gif
hanep2.gif
hanep3.gif
です。
hanep1.gifhanep2.gifhanep3.gif
ランダムに画像が変わります。

■偶数だけ生成
rand(1,5)*2

■(1以上9以下の)奇数だけを生成
rand(1,5)*2-1
rand(0,4)*2+1

htmlspecialchars()

htmlspecialcharsはtext/plainをtext/htmlに変換する。
htmlspecialchars関数にかけてから表示をしないと、
入力された文字によっては画面が壊れてしまったりするので、
決まり文句として覚えとく。
htmlspecialchars()(参考ページ)

▪️text/plain

plain text(平文)。一般的な文字列形式。

▪️ハッシュ化

ハッシュ化とは、元のデータから一定の計算手順に従ってハッシュ値と呼ばれる規則性のない固定長の値を求め、その値によって元のデータを置き換えること。
hashは英語で寄せ集めにする、ごた混ぜにする、めちゃくちゃにするという意味。

ceil関数

ceil(数値) 端数の切り上げ

▪️例

<?php
echo ceil ( 225.8 );
?>

▪️例 実行結果
226

intval関数

intval() 引数に指定した値を整数値(integer)に変換する関数

▪️例 

<pre>
<?php
$str = "11";
$str2 = 2;
$str3 = "テスト";
echo intval ( $str );
print ("\n") ;
echo intval ( $str2 );
echo ("\n");
echo intval ( $str3 );
echo ("\n");
echo intval ( 154.7 );
echo ("\n");
?>
</pre>

▪️例 実行結果
11
2
0
154

mb_convert_kana関数

  • POINT、_________________________________
    mb_convert_kana
    ・mb_convert_kana(文字列,変換オプション,文字エンコーディング)
    _________________________________________________________

カタカナを半角から全角へ変換する

kadai_27_zenhan-kana-input.php
<?php require 'header.php';?>
<p>お名前のフリガナを入力してください。</p>
<p>フリガナを半角から全角に変換する。</p>
<form action="kadai_27_zenhan-kana-output.php" method="post">
<input type="text" name="furigana">
<input type="submit" value="確定">
</form>
<?php require 'footer.php';?>
kadai_27_zenhan-kana-output.php
<?php require 'header.php';?>
<?php
//フリガナを半角から全角に変換する
echo 'フリガナは「', mb_convert_kana($_REQUEST['furigana'],'K','UTF-8'), '」です。';
?>
<?php require 'footer.php';?>

■実行結果
20161227.png
確定ボタン押下↓
201612271.png

数値を全角から半角へ変換する

kadai_27_zenhan-number-input.php
<?php require 'header.php';?>
<!-- 数値を全角から半角へ変換する -->
<p>購入個数を入力してください。</p>
<p>数値を全角から半角へ変換する。</p>
<form action="kadai_27_zenhan-number-output.php" method="post">
<input type="text" name="count">
<input type="submit" value="確定">
</form>
<?php require 'footer.php';?>
kadai_27_zenhan-number-output.php
<?php require 'header.php';?>
<?php
//n→全角数字を半角に変換
//数値を全角から半角へ変換する
$count = mb_convert_kana ( $_REQUEST ['count'], 'n','UTF-8');
if (preg_match ( '/[0-9]+/', $count )) {
    echo $count, '個を購入します。';
} else {
    echo $count, 'は数値ではありません。';
}
?>
<?php require 'footer.php';?>

■実行結果
201612273.png
確定ボタン押下↓
201612274.png

if文

{}がない

if分は括弧が無い場合、次の1文の命令のみが対象になる。
{}内の処理が複数の文の場合には{}を省略することができない。

test27-edit3.php
if(isset($_REQUEST['command'])) {
    switch ($_REQUEST['command']){
    case 'insert':
        //if文は、括弧がない場合、次の1文の命令のみが対象になる
        //実行文が1行のときは{}を省略できる
        if(empty($_REQUEST['name']) || !preg_match('/[0-9]+/', $_REQUEST['price']))
            break;
        //それ以外だったら
        $sql = $pdo->prepare('insert into product values(null,?,?)' );
        $sql = execute(array(htmlspecialchars($_REQUEST['name']),$_REQUEST['price']));
            break;
    }
}
これと同じ意味
       case 'insert' :
            if (empty ( $_REQUEST ['name'] ) || ! preg_match ( '/[0-9]+/', $_REQUEST ['price'] )) {
                break;
            }
            $sql = $pdo->prepare ( 'insert into product values(null,?,?)' );
            $sql->execute ( array (
                    htmlspecialchars ( $_REQUEST ['name'] ),
                    $_REQUEST ['price']
            ) );

参考サイト

test26.php
<?php
$s = 'あ';
$s1 = 'い';
switch ($s) {
    case 'あ' :
        if ($s1 == 'い')
            echo 'Hello';
        break;
        // breakした時点でswitch構造を抜けるから、通らない
        echo 'World';
        break;
}
?>
Worldと表示される
<?php
$s = 'a';
$s1 = 'c';
switch ($s) {
    case 'a' :
        if ($s1 == 'b')
        break;
        // breakした時点でswitch構造を抜けるから、通らない
        echo 'World';
        break;
}
?>
Worldと表示されない
<?php
$s = 'a';
$s1 = 'c';
switch ($s) {
    case 'a' :
        if ($s1 == 'b')
            echo 'Hello';
        break;
        // breakした時点でswitch構造を抜けるから、通らない
        echo 'World';
        break;
}
?>
7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7