PHPでバインドするこれでSQLの脆弱性が!?

上記の画像では脆弱性がある。

PHPでバインドするこれでSQLの脆弱性が解決してくれる?
こういう記述すると良さげ。
おまけでSQLデバッグ方法を書いとります。

<?php
$sql =<<<SQL
select * from demo where id = :id and namae = :hoge;
SQL;
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$id = 123;
$hoge = "hoge";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->bindValue(':hoge', $hoge, PDO::PARAM_STR);
$sth->execute();

//mysql log?https://github.com/panique/pdo-debug:$sth->debugDumpParams();

$fval = array(
    ':id'=>1,
    ':name'=>"hoge"
);
$sth = $dbh->prepare($sql);
$sth->execute($fval);
print PdoDebugger::show($sql, $fval);
$sth->debugDumpParams();

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。

WordPressの全記事の中からランダムで記事をピックアップしてツイートする。
実際、自分の階層に合わして呼び出しを変更してください。
なお、さくらレンタルサーバーでクロンの設定をして自動投稿できます。
ライブラリの設置などは割愛してます。

<?php
// cron:: cd /home/user/www/zip358.com/site/tw; /usr/local/bin/php tw.php

require_once ('../../wp-load.php');
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$consumer_key = "XXXXXXXXXXXXXX";
$consumer_secret = "XXXXXXXXXXXX";
$access_token = "XXXXXXXXXXXXXX";
$access_token_secret = "XXXXXXXXXXXXXXX";

$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);



$args = array(
	'posts_per_page' => 1,
    'orderby' => 'rand'
);

$posts = get_posts($args);
foreach ( $posts as $val ){
    $href =  get_permalink($val->ID);
    $title = get_the_title($val->ID);
    $res = $to->post("statuses/update", array("status" => $title . " " . $href));
}

PHPで怒られる怒られない2

PHPで怒られる怒られないの違いはさて何でしょうか?
selfの使い道がポイントです。selfは静的な要素だと動作し
$thisは動的な要素だと動作します。

<?php
class demo1 
{
    static function test1()
    {
        return __METHOD__.self::test2();
    }

    static function test2()
    {
        return __FUNCTION__;
    }


}

class demo2
{
    static function  test1()
    {
        return __METHOD__.self::test2();
    }

    function test2()
    {
        return __FUNCTION__;
    }

}
$demo1 = 'demo1';
print $demo1::test1()."\n";
$demo2 = 'demo2';
print $demo2::test1()."\n";

PHPのインターフェイスとやら簡単に言えば。

インターフェイスとはなんぞや?
簡単に言えばこのメソッド名は必ず使えです。
無ければエラーになります。
大規模な開発から中規模な開発時には一応必要かな?

 

<?php
interface  test1{
    public function test_11(int $val=1);
    public function test_12(string $val="000");
}



class demo implements test1{

    public function demo1(int $val=0){
        return $this->test_11($val);
    }

    public function test_11(int $val=1){
        return $val;
    }
    public function test_12(string $val=""){
        return $val;
    }    
}


$demo = new demo();
print $demo->demo1(111);

 

PHPで怒られる怒られない。

PHPで怒られる書き方と怒られない書き方です。
下記のコードを参照ください。

<?php

class demo_php1{

    function demo1($val=""){
        return $val;
    }

    public function demo2($val=""){
        return $val;
    }

    static function demo3($val=""){
        return $val;
    }
}

print demo_php1::demo1("DEMO1\n");
print demo_php1::demo2("DEMO2\n");
print demo_php1::demo3("DEMO3\n");

下記のようにインスタンス(instance)すればこのコードはすべて怒られないです
それだけの違い。ちなみにdemo3は怒られない書き方です。

オブジェクトを単体で使う場合は気をつけましょう。
PHPのバージョンアップするにつれjavaのような動きになってきています。
PHP、Pythonに負けないようにかこの頃開発が活発化してます。
最新はPHP7.4ですからね・・・。

$demo_php1 = new demo_php1();
print $demo_php1->demo1("DEMO1\n");
print $demo_php1->demo2("DEMO2\n");
print $demo_php1->demo3("DEMO3\n");

tensorflowは簡単にインストールできるけど、そこから何やれば

tensorflowは簡単にインストールできるけど、そこから何やれば
良いのか、よくわからない。
いま流行りの人工知能ですが、こういうこと出来るよってのは
知っている、例えば画像の仕分けとか。

そこからオリジナルに適応できないのだ。
若造なら画像収集とか考えそうです、、、えぇぇ。
10代なら若気の至りだろうけど、40代間近になると
さすがに無いなと思うわけです。

収集していたらグロ画像が釣れそうな気がしますし
怖くてできません。ちなみに
逃げるは恥だが役に立つグーグル画像検索ダウンロードコンソールアプリを
公開しているのですが、これ変更すればえぇまぁ出来そうですね。

■人工知能を仕事で活用するならば。
人工知能で出来ることで、人の顔にモザイクをかけることが出来るということ。
他には、画像の仕分けとか、本屋さんで小耳に挟んだことですが
工事現場とかでは結構写真を取らないといけないらしく
それを分別するのが面倒だとか、
こういうのには人工知能は大活躍しそうですね。

 

windows10 1809 不具合 Chromeが繋がらない(タイムアウト)

windows10アップデート後(1809) 不具合 :Chromeが繋がらない
(タイムアウト)の対応策。

初期化して再度OSを入れ直すのもアレなんで対応策として
スタートアップ時にBatを走らせる事にした。

管理者権限にするBatとネットワークサービスを再起動するBatで
なんとか次期OSのアップデートかGさんが解決してくれる事を
期待しています。

それまでコンピュータ管理のサービスとかも停止せず待っときます。

Batは下記になります。

追記:
累積アップデートで直りましたと言いたいところだけど
一度、累積アップデートの一部を削除して再度、累積アップデートを
適応したら直りました・・・。

net stop CryptSvc
net start CryptSvc
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process (管理者)ネットが繋がらないよ.bat -Verb runas"

jQuery独自プラグイン基本サンプル2

忘れやすい自分のためにメモとして残しときます。

(function($){

    $.fn.smp = function (options) {
        var config = {
            text:"おいら"
        };

        var cfg = $.extend({}, config, options);

        cfg.text = cfg.text + "のお金";
        return $(this).html(cfg.text);
    };
})(jQuery);


$("#hoge1").smp({text:"ぼく"});
$("#hoge2").smp();

VBAオブジェクトを自動生成しイベントを付与する。

VBAオブジェクトを自動生成しイベントを付与する。
サンプルコードです。

ダウンロードはこちら
https://zip358.com/tool/sample.zip

Dim chg_class(0 To 5) As chg
Public Sub objset()
Dim obj_ctl As Control
Dim i As Integer
For i = LBound(chg_class) To UBound(chg_class)

    Set obj_ctl = UserForm1.Controls.Add("Forms.TextBox.1", "Box" & i)
    obj_ctl.Top = 10 + 20 * i
    obj_ctl.Width = 200
    obj_ctl.Height = 20
    obj_ctl.Text = "ここを変更してみて、またはダブルクリック(" & i & "番)"

    Set chg_class(i) = New chg
    chg_class(i).set_evn obj_ctl, i
    Set obj_ctl = Nothing
Next i
End Sub
Private WithEvents TextB As MSForms.TextBox
Private index_no As Integer
Public Sub set_evn(hoge_obj As MSForms.TextBox, hoge As Integer)
    Set TextB = hoge_obj
    index_no = hoge
End Sub
Private Sub TextB_Change()
    MsgBox TextB.Text 'UserForm1("Box" & index_no)
End Sub

Private Sub TextB_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    MsgBox TextB.Text 'UserForm1("Box" & index_no)
End Sub
Private Sub TextBox1_Change()
MsgBox TextBox1
End Sub

Private Sub CommandButton1_Click()

End Sub

Private Sub UserForm_Click()

End Sub