Detaylı Sistem Bilgisi Görüntüleyici

pip install psutil pyperclip
import platform
import psutil
import wmi
import tkinter as tk
from tkinter import messagebox
import pyperclip
import subprocess

def get_detailed_system_info():
    info = []
    c = wmi.WMI()

    # Temel Bilgiler
    info.append(f"İşletim Sistemi: {platform.system()} {platform.release()}")
    info.append(f"OS Sürümü: {platform.version()}")
    info.append(f"Mimari: {platform.architecture()[0]}")
    info.append(f"İşlemci: {platform.processor()}")

    # CPU Bilgileri
    cpu_freq = psutil.cpu_freq()
    if cpu_freq:
        info.append(f"CPU Frekansı: {cpu_freq.max:.2f} MHz")
    info.append(f"CPU Çekirdekleri (Mantıksal): {psutil.cpu_count(logical=True)}")
    info.append(f"CPU Çekirdekleri (Fiziksel): {psutil.cpu_count(logical=False)}")

    # RAM Bilgileri
    virtual_memory = psutil.virtual_memory()
    info.append(f"RAM: {round(virtual_memory.total / (1024**3), 2)} GB")
    
    # Anakart Bilgileri
    for board in c.Win32_BaseBoard():
        info.append(f"Anakart: {board.Manufacturer} {board.Product}")
    
    # GPU Bilgileri
    for gpu in c.Win32_VideoController():
        memory = get_gpu_info_wmic()
        info.append(f"Ekran Kartı: {gpu.Name} ({memory} MB)")

    # Disk Bilgileri
    for disk in c.Win32_DiskDrive():
        size = int(disk.Size) / (1024**3) if disk.Size else 'Bilinmiyor'
        info.append(f"Disk: {disk.Model} ({size:.2f} GB)")

    # RAM Detayları
    for memory in c.Win32_PhysicalMemory():
        capacity = int(memory.Capacity) / (1024**3) if memory.Capacity else 'Bilinmiyor'
        speed = memory.Speed if memory.Speed else 'Bilinmiyor'
        info.append(f"RAM Slotu: {memory.Manufacturer} {capacity:.2f} GB {speed} MHz")

    return "\n".join(info)


def get_gpu_info_wmic():
    try:
        # wmic komutunu çalıştırarak ekran kartı belleğini al
        result = subprocess.run(
            ['wmic', 'path', 'Win32_VideoController', 'get', 'AdapterRAM'],
            capture_output=True,
            text=True
        )
        # Çıktıyı işleyerek bellek boyutunu MB cinsinden hesapla
        lines = result.stdout.strip().split('\n')
        if len(lines) > 1:
            memory_str = lines[2].strip()
            if memory_str:
                memory_bytes = int(memory_str)
                memory_mb = memory_bytes / (1024**2)
                return f"{memory_mb:.2f}"
            else:
                return "Ekran Kartı Belleği: Bilinmiyor"
        else:
            return "Ekran Kartı: Bilinmiyor"
    except Exception as e:
        return f"Ekran Kartı: Hata ({str(e)})"



def display_info():
    info = get_detailed_system_info()
    text_box.delete("1.0", "end")
    text_box.insert("end", info)

def save_to_file():
    info = get_detailed_system_info()
    with open("detaylı_sistem_raporu.txt", "w", encoding="utf-8") as file:
        file.write(info)
    messagebox.showinfo("Kaydedildi", "Sistem raporu 'detaylı_sistem_raporu.txt' dosyasına kaydedildi.")

def copy_to_clipboard():
    info = get_detailed_system_info()
    pyperclip.copy(info)
    messagebox.showinfo("Kopyalandı", "Sistem raporu panoya kopyalandı.")

# GUI Ayarları
root = tk.Tk()
root.title("Detaylı Sistem Bilgisi Görüntüleyici")

text_box = tk.Text(root, wrap="word", width=80, height=30)
text_box.pack(pady=10, padx=10)

btn_display = tk.Button(root, text="Bilgileri Göster", command=display_info, width=20)
btn_display.pack(pady=5)

btn_save = tk.Button(root, text="Dosyaya Kaydet", command=save_to_file, width=20)
btn_save.pack(pady=5)

btn_copy = tk.Button(root, text="Panoya Kopyala", command=copy_to_clipboard, width=20)
btn_copy.pack(pady=5)

# Uygulama başlatıldığında bilgileri göster
display_info()

root.mainloop()

Bu Python uygulaması, kullanıcılara bilgisayarlarının donanım ve yazılım bileşenleri hakkında kapsamlı bilgiler sunan bir grafiksel kullanıcı arayüzü (GUI) sağlar. Tkinter kütüphanesi kullanılarak geliştirilen bu uygulama, sistem bilgilerini görsel olarak sunar ve kullanıcı etkileşimini kolaylaştırır.

Ana Özellikler:

  • İşletim Sistemi Bilgileri: Uygulama, işletim sistemi türünü, sürümünü, mimarisini ve işlemci bilgilerini görüntüler.
  • CPU Bilgileri: CPU’nun maksimum frekansı, mantıksal ve fiziksel çekirdek sayısı gibi detaylar sunulur.
  • RAM Bilgileri: Toplam RAM miktarı ve her bir RAM slotunun kapasitesi ve hızı hakkında bilgiler sağlar.
  • Anakart Bilgileri: Anakart üreticisi ve modeli gibi temel bilgiler sunar.
  • GPU Bilgileri: Ekran kartı adı ve belleği hakkında bilgiler içerir.
  • Disk Bilgileri: Disk modelleri ve kapasiteleri hakkında bilgiler sunar.

Kullanıcı Etkileşimi:

Uygulama, kullanıcıların sistem bilgilerini görüntülemelerini, bu bilgileri bir dosyaya kaydetmelerini veya panoya kopyalamalarını sağlayan üç ana buton içerir:

  • Bilgileri Göster: Sistem bilgilerini GUI üzerinde görüntüler.
  • Dosyaya Kaydet: Görüntülenen bilgileri bir metin dosyasına kaydeder.
  • Panoya Kopyala: Görüntülenen bilgileri panoya kopyalar.

Gerekli Kütüphaneler:

Uygulamanın çalışabilmesi için aşağıdaki Python kütüphanelerinin yüklü olması gerekmektedir:

  • platform
  • psutil
  • wmi
  • tkinter
  • pyperclip
  • subprocess

Bu kütüphaneler, sistem bilgilerini toplamak ve GUI bileşenlerini oluşturmak için kullanılır.

Kurulum ve Çalıştırma:

Gerekli kütüphaneleri yüklemek için aşağıdaki pip komutlarını kullanabilirsiniz:

pip install psutil wmi pyperclip

tkinter kütüphanesi, Python’un standart kütüphanelerinden biridir ve genellikle varsayılan olarak gelir.

Uygulamayı çalıştırmak için, yukarıdaki Python kodunu bir dosyaya kaydedip çalıştırmanız yeterlidir.

Sonuç:

Bu uygulama, kullanıcıların bilgisayarlarının donanım ve yazılım bileşenleri hakkında hızlı ve kolay bir şekilde bilgi edinmelerini sağlar. Grafiksel arayüzü sayesinde, teknik bilgiye sahip olmayan kullanıcılar bile sistem bilgilerini rahatlıkla görüntüleyebilir ve dışa aktarabilirler.

Constant FILTER_SANITIZE_STRING is deprecated hatası çözümü

FILTER_SANITIZE_STRING filtresi PHP 8.1 ve üstü sürümlerde kaldırıldı. Bunun yerine FILTER_SANITIZE_FULL_SPECIAL_CHARS filtresini kullanabilirsiniz.

Örnek Kullanım:

function sqlFilter($value ,$status = true)
{
	if ($status) {
		return filter_var($value, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
	} else {
		return $value;
	}
}

Txt Dosyasını Veritabanı Olarak Kullanmak

<?php
// Verileri okuyan ve şifresini çözen fonksiyon
function oku($fileName, $secretKey, $encryptionMethod)
{
    $fileContent = file_get_contents($fileName);
    $fileData = json_decode($fileContent, true);

    $iv = base64_decode($fileData['iv']);
    $decryptedData = openssl_decrypt(base64_decode($fileData['data']), $encryptionMethod, $secretKey, 0, $iv);

    return json_decode($decryptedData, true);
}
// Verileri yazan ve şifreleyen fonksiyon
function yaz($fileName, $data, $secretKey, $encryptionMethod)
{
    $jsonData = json_encode($data);

    $ivLength = openssl_cipher_iv_length($encryptionMethod);
    $iv = openssl_random_pseudo_bytes($ivLength);

    $encryptedData = openssl_encrypt($jsonData, $encryptionMethod, $secretKey, 0, $iv);

    $encryptedFileContent = json_encode([
        'data' => base64_encode($encryptedData),
        'iv' => base64_encode($iv),
    ]);

    file_put_contents($fileName, $encryptedFileContent);
}
//VERİTABANI BAĞLANTI
$fileName = 'lisanslar.txt'; // tablo adı
$secretKey = "Alp123*_.";
$encryptionMethod = "AES-256-CBC";
//OKUMA - SELECT
$data = oku($fileName, $secretKey, $encryptionMethod);
print_r($data);
//YAZMA - INSERT
$data[] = ["name" => "Alperen", "price" => 1000];
writeData($fileName, $data, $secretKey, $encryptionMethod);
//SİLME - DELETE
$id = 0; //dizi index no
unset($data[$id]);
$data = array_values($data);
writeData($fileName, $data, $secretKey, $encryptionMethod);
//GÜNCELLEME - UPDATE
$id = 0;//güncellenecek veri id
$name= "Mehmet"; //yeni isim
$data[$id]['name'] = $name;
writeData($fileName, $data, $secretKey, $encryptionMethod);
 

Php ve Yapay Zeka İle Kullanıcı Adı Kontrolü. Prompt Tasarım by Tayfun Erbilen

<?php
class ChatApp {
    private $model= "gpt-3.5-turbo-0301";
    private $messages= array();
    public $api_key;
    public function chat($message) {
        $prompt_messages[] = array("role" => "system", "content" => '
			Sen sadece JSON çıktı yazabilen ve kullanıcı adlarını denetleyen bir uzmansın.
			- kullanıcı adı siyasi, dini, ırkçı, hakaret içeremez.
			- kullanıcı adı rastgele bir değer olamaz.
			- kullanıcı adı anlamsız bir değer olamaz.
			- kullanıcı adı, yönetici gibi anlaşılacak isimler olamaz.
			- kullanıcı adı küfür içeremez, küfüre benzer diğer değerler
			içeremez.
			kullanıcı adlarında türkçe karakterler olmadığı için bazı
			küfürler örneğin ”oç" farklı şekillerde gelebilir. Örneğin ”oc”
			gibi, bunları düşünerek mantıklı bir filtreleme yap.
			eğer yukarıdaki koşullara göre uymayan bir kullanıcı adı
			girilmişse JSON formatında success: false ve reason içinde
			sebebini döndür.
			eğer bir sorun yoksa success: true döndür.			
			JSON formatı hariç hiçbir veri döndürme.
			Açıklama yazma sadece json sonucunu döndür.
			örneğin 
			{
			  "success": false,
			  "reason": "Kullanıcı adı küfür içeremez veya küfre benzer değerler içeremez."
			}
			veya
			{
			  "success": true,
			}
			döndürmen yeterli.
		');
        $prompt_messages[] = array("role" => "user", "content" => $message); 
        $post_fields = array(
            "model" => $this->model,
            "messages" => $prompt_messages
        );
        $header = array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->api_key
        );
        $ch = curl_init();
        $url = 'https://api.openai.com/v1/chat/completions';
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error: ' . curl_error($ch);
        }
        curl_close($ch);
        $response = json_decode($result, true);
        $assistant_message = $response["choices"][0]["message"]["content"];
        return $assistant_message;
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Kayıt Form</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <h1>Kayıt Ol</h1>
        <form method="POST" action="">
            <div class="form-group">
                <label for="username">Kullanıcı:</label>
                <input type="text" class="form-control" id="username" name="username" placeholder="Kullanıcı adınızı girin.">
            </div>
            <button type="submit" class="btn btn-primary">Kayıt GPT</button>
        </form>
    </div>
    <?php
    if (isset($_POST["username"])){
        $username = $_POST["username"];
        $chatApp = new ChatApp();
        $chatApp->api_key = "sk-lyaikhPwDdeneme1234567"; // bunu kendiniz değiştirin
        $response = $chatApp->chat($username);		
        $is_valid_json = (json_decode($response) !== null);
        if ($is_valid_json) {
			$result=json_decode($response,true);
			if($result["success"]==true){
				echo "<div class='container mt-3'>";
				echo "<div class='alert alert-success'>".$_POST["username"]." Kullanıcı adı kurallara uygun.</div>";
				echo "</div>";
			}elseif($result["success"]==false){
				echo "<div class='container mt-3'>";
				echo "<div class='alert alert-danger'>".$_POST["username"]." ".$result["reason"]."</div>";
				echo "</div>";			
			}
        }
    }
    ?>
</body>
</html>

Php Twitter Api v2 ve Oauth1.0a Sınıfı – Tweet API 2023

<?php
session_start();
define("CONSUMER_KEY", "iybjF4ucDqQ9VeSJm0....");
define("CONSUMER_SECRET", "xhLbOYuQyGSE2DyrAfpwgQ4o40Z1tgq0eh07CEcAPG....");
define("OAUTH_TOKEN", "1580647705633869826-YHuT8vIGTkZCMZRDVz5IUYN.....");
define("OAUTH_TOKEN_SECRET", "kYq4PFeCHHVkjjTw6xC47q7TJDvCBQDTqyMBb....");
define("OAUTH_CALLBACK", "http://localhost:80/callback.php");
class API{
    protected $consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret;
    protected $apiUrl = 'https://api.twitter.com/';
    protected $apiStandardUrl = 'https://api.twitter.com/1.1/';
    protected $apiUploadUrl = 'https://upload.twitter.com/1.1/';
    protected $oauth = [];
    public function __construct($consumer_key, $consumer_secret, $oauth_token = false, $oauth_token_secret = false){
        $this->consumer_key = $consumer_key;
        $this->consumer_secret = $consumer_secret;
        $this->oauth_token = $oauth_token;
        $this->oauth_token_secret = $oauth_token_secret;
        if ($oauth_token == false && $oauth_token_secret == false) {
            $this->oauth = [
                'oauth_consumer_key' => $this->consumer_key,
                'oauth_nonce' => time(),
                'oauth_signature_method' => 'HMAC-SHA1',
                'oauth_timestamp' => time(),
                'oauth_version' => '1.0',
            ];
        } elseif ($oauth_token !== false && $oauth_token_secret == false) {
            $this->oauth = $oauth_token;
        } else {
            $this->oauth = [
                'oauth_consumer_key' => $this->consumer_key,
                'oauth_nonce' => time(),
                'oauth_signature_method' => 'HMAC-SHA1',
                'oauth_token' => $this->oauth_token,
                'oauth_timestamp' => time(),
                'oauth_version' => '1.0',
            ];
        }
    }
    protected function buildAutheaders($oauth){
        $headers = 'Authorization: OAuth ';
        $values = [];
        foreach ($oauth as $key => $value) {
            $values[] = "$key=\"" . rawurlencode($value) . "\"";
        }
        $headers .= implode(', ', $values);
        return $headers;
    }
    protected function buildBearerheaders($oauth){
        $headers = 'Authorization: Bearer ' . $oauth;
        return $headers;
    }
    protected function buildString($method, $url, $params){
        $headers = [];
        ksort($params);
        foreach ($params as $key => $value) {
            $headers[] = "$key=" . rawurlencode($value);
        }
        return $method . "&" . rawurlencode($url) . '&' . rawurlencode(implode('&', $headers));
    }
    protected function buildSignature($baseInfo){
        $encodeKey = rawurlencode($this->consumer_secret) . '&' . rawurlencode($this->oauth_token_secret);
        $oauthSignature = base64_encode(hash_hmac('sha1', $baseInfo, $encodeKey, true));
        return $oauthSignature;
    }
    protected function getSignature($method, $url, $params = false){
        $oauth = $this->oauth;
        if ($params == false) {
            $baseInfo = $this->buildString($method, $url, $oauth);
            $oauth['oauth_signature'] = $this->buildSignature($baseInfo);
        } else {
            $oauth = array_merge($oauth, $params);
            $baseInfo = $this->buildString($method, $url, $oauth);
            $oauth['oauth_signature'] = $this->buildSignature($baseInfo);
        }
        return $oauth;
    }
	protected function reqCurl($method = 'GET', $url, $params = false, $headers = false, $postfields = false, $userpwd = false){
        $ch = curl_init();
        if ($params == false) {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
        if ($params == true) {
            curl_setopt($ch, CURLOPT_URL, $url . "?" . http_build_query($params));
        }
        if ($method == 'POST') {
            curl_setopt($ch, CURLOPT_POST, true);
        }
        if ($method == 'DELETE') {
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
        }
        if ($postfields == true) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
        }
        if ($headers == true) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }
        if ($userpwd == true) {
            curl_setopt($ch, CURLOPT_USERPWD, $this->consumer_key . ':' . $this->consumer_secret);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $result = curl_exec($ch);
        return $result;
    }
    protected function request2($method, $req, $params = false){
        $req = substr($req, 1);
        $url = $this->apiUrl . $req;
        if ($this->oauth_token !== false && $this->oauth_token_secret == false) {
            $oauth = $this->buildBearerheaders($this->oauth);
            $headers = [];
            $headers[] = $oauth;
        } else {
            $oauth = $this->getSignature($method, $url);
            $headers = [];
            $headers[] = 'Content-type: application/json';
            $headers[] = $this->buildAutheaders($oauth);
        }
        $result = $this->reqCurl($method, $url, null, $headers, $params);
        return json_decode($result, true);
    }
    public function request($method, $req, $params = false){
        $method = strtoupper($method);
        if ($req == 'media/upload') {
            return $this->upload($method, $req, $params);
        }
        $version = explode('/', $req);
        if ($version[0] == '2') {
            $req = "/$req";
            return $this->request2($method, $req, $params);
        }
        if ($version[1] == '2') {
            return $this->request2($method, $req, $params);
        }
        if ($version[0] == 'labs') {
            $req = "/$req";
            return $this->request2($method, $req, $params);
        }
        if ($version[1] == 'labs') {
            return $this->request2($method, $req, $params);
        }
        $url = $this->apiStandardUrl . $req . ".json";
        if ($this->oauth_token !== false && $this->oauth_token_secret == false) {
            $oauth = $this->buildBearerheaders($this->oauth);
            $headers = [];
            $headers[] = $oauth;
        } else {
            $oauth = $this->getSignature($method, $url, $params);
            $headers = [];
            $headers[] = $this->buildAutheaders($oauth);
        }
        $result = $this->reqCurl($method, $url, $params, $headers, null);
        return json_decode($result, true);
    }
    protected function reqUpload($method, $req, $params){
        $url = $this->apiUploadUrl . $req . ".json";
        $oauth = $this->getSignature($method, $url);
        $headers = [];
        $headers[] = $this->buildAutheaders($oauth);
        $headers[] = 'Content-Type: multipart/form-data';
        $result = $this->reqCurl($method, $url, null, $headers, $params);
        return json_decode($result, true);
    }
    protected function uploadChunked($req, $params){
        $_params = [
            'command' => 'INIT',
            'total_bytes' => filesize($params['media']),
            'media_type' => $params['media_type'],
        ];
        if (isset($params['additional_owners'])) {
            $_params['additional_owners'] = $params['additional_owners'];
        }
        if (isset($params['media_category'])) {
            $_params['media_category'] = $params['media_category'];
        }
        $req = $this->reqUpload('POST', 'media/upload', $_params);
        $fp = fopen($params['media'], 'r');
        $segment_id = 0;
        while (!feof($fp)) {
            $chunk = fread($fp, 40960);
            $__params = [
                "command" => "APPEND",
                "media_id" => $req['media_id'],
                "segment_index" => $segment_id++,
                'media_data' => base64_encode($chunk),
            ];
            $this->reqUpload('POST', 'media/upload', $__params);
        }
        fclose($fp);
        $lastParams = array(
            "command" => "FINALIZE",
            "media_id" => $req['media_id'],
        );
        $result = $this->reqUpload('POST', 'media/upload', $lastParams);
        return $result;
    }
    public function upload($method, $req, $params){
        if ($method == 'GET') {
            return "METHOD MUST BE POST";
        }
        $url = $this->apiUploadUrl . $req . ".json";
        $c = count($params);
        if ($c == 1 && isset($params['media'])) {
            $filename = file_get_contents($params['media']);
            $base64 = base64_encode($filename);
            $_params = ['media_data' => $base64];
            return $this->reqUpload('POST', 'media/upload', $_params);
        } elseif ($c == 1 && isset($params['media_data'])) {
            $base64 = $params['media_data'];
            $_params = ['media_data' => $base64];
            return $this->reqUpload('POST', 'media/upload', $_params);
        } else {
            return $this->uploadChunked($req, $params);
        }
    }
    public function file($oauthUrl){
        $oauth = $this->getSignature("GET", $oauthUrl);
        $headers = [];
        $headers[] = $this->buildAutheaders($oauth);
        $result = $this->reqCurl("GET", $oauthUrl, null, $headers, null);
        return $result;
    }
    public function oauth($req, $params){
        $url = $this->apiUrl . $req;
        $oauth = $this->getSignature("POST", $url, $params);
        $headers = [];
        $headers[] = $this->buildAutheaders($oauth);
        $result = $this->reqCurl("POST", $url, $params, $headers, null);
        parse_str($result, $arr);
        return $arr;
    }
    public function url($req, $params){
        $url = $this->apiUrl . $req . "?" . http_build_query($params);
        return $url;
    }
    public function oauth2($req, $params){
        $url = $this->apiUrl . $req;
        $result = $this->reqCurl("POST", $url, $params, null, null, true);
        return json_decode($result, true);
    }
}
// ÖRNEK TWEET ÇEKME
$conn = new API(CONSUMER_KEY, CONSUMER_SECRET);
$params = ['grant_type' => 'client_credentials'];
$bearerToken = $conn->oauth2('oauth2/token', $params);
$conn2 = new API(CONSUMER_KEY, CONSUMER_SECRET, $bearerToken['access_token']);
$res = $conn2->request('GET', '/2/users/by/username/senggolbaok');
print_r($res);
// ÖRNEK TWEET ATMA
$conn = new API(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET);
$postfields = "{\"text\":\"Merhaba Dünya\"}";
$res = $conn->request('POST', '/2/tweets', $postfields);
print_r($res);

Kaynak: composer require ferrysyahrinal/twifer

Php ile Chatgpt yapay zeka sohbet botu sorgulama ve geçmişi hafızaya alarak cevap verme

<?php
class ChatApp {
    private $model;
    private $messages;
    public $api_key;
    public function __construct($model = "gpt-3.5-turbo", $load_file = "") {
        $this->model = $model;
        $this->messages = array();
        if ($load_file != '') {
            $this->load($load_file);
        }
    }
    public function chat($message) {
        if ($message == "exit") {
            $this->save();
            exit();
        } elseif ($message == "save") {
            $this->save();
            return "(saved)";
        }
        $this->messages[] = array("role" => "user", "content" => $message);
        $post_fields = array(
            "model" => $this->model,
            "messages" => $this->messages
        );
        $header = array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . $this->api_key
        );
        $ch = curl_init();
        $url = 'https://api.openai.com/v1/chat/completions';
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_fields));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error: ' . curl_error($ch);
        }
        curl_close($ch);
        $response = json_decode($result, true);
        $assistant_message = $response["choices"][0]["message"]["content"];
        $this->messages[] = array("role" => "assistant", "content" => $assistant_message);
        return $assistant_message;
    }
    public function save() {
        try {
            $ts = time();
            $json_object = json_encode($this->messages, JSON_PRETTY_PRINT);
            $filename_prefix = preg_replace('/[^0-9a-zA-Z]+/', '-', substr($this->messages[0]["content"], 0, 30));
            $filename = "chat_model_" . $filename_prefix . "_" . $ts . ".json";
            file_put_contents($filename, $json_object);
        } catch (Exception $e) {
            exit();
        }
    }
    public function load($load_file) {
        $json_data = file_get_contents($load_file);
        $this->messages = json_decode($json_data, true);
    }
}
//Not: Bu sınıf yüksek ücretlere sebep olabilir.
$chatApp = new ChatApp();
$chatApp->api_key="sk-lyaikhPwD73bPVtUMO5FT3BlbkFJ"; // OpenAI API anahtarını buraya girin
//Yazışma geçmişi
$assistant_message = $chatApp->chat("Merhaba, nasılsın?");
$assistant_message = $chatApp->chat("Hava durumu hakkında bilgi verir misin?");
$assistant_message = $chatApp->chat("Konya");
//Sonuç
echo $assistant_message;
/* Çıktısı
Tamam, şu anda Konya'da hava durumu nasıl diye bakayım. Konya' da hava parçalı bulutlu olarak devam ediyor. Sıcaklık ise yaklaşık 16 derece civarında. Bugün için yağış beklenmiyor. Ancak yarın öğleden sonra hafif yağmur tahmini yapılmaktadır.
*/
// Çıkış yapmak istediğinizde "exit" komutunu kullanabilirsiniz
$chatApp->chat("exit");
?>

Xampp Php 7.4 x86 32bit VC15

 XAMPP for Windows 7.4.29 sürümü 64 bit olduğundan sizlere 32 bitlik sürümünü hazırladım.

  • Apache/2.4.38 (Win32) OpenSSL/1.1.1a PHP/7.4.29
  • Veritabanı istemcisi sürümü: libmysql – mysqlnd 7.4.29
  • PHP uzantısı: mysqli  curl  mbstring 
  • PHP sürümü: 7.4.29
  • Sunucu sürümü: 10.1.38-MariaDB – mariadb.org binary distribution
  • phpMyAdmin Sürüm bilgisi: 5.2.0
<?php //32bit
$whitelist = array('127.0.0.1','::1');
if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){
  $mysqli= @new mysqli("localhost","root","");
}
?>

Tıkla İndir 203MB

Phpmyadmin Güncellemesi İndir 13MB

Mysql Sıradaki Atlanmış Boş Otomatik Id Numaralarını Bulma

Bazen auto increment kullanırken aradan veriler silinebiliyor. Bu şekilde bir kullanım ile tekrar boş idleri doldurabilirsiniz

SELECT t1.id+1 AS siradaki FROM urun AS t1 WHERE 0=(SELECT COUNT(t2.id) FROM urun AS t2 WHERE t2.id=t1.id+1 order by t2.id asc) order by t1.id asc LIMIT 1

Yukarıdaki örnekte urun adlı tablodaki id sütununa göre arama yapar ve sıradaki boş id leri çağırır.

Örneğin 1,2,3,5,6 gibi bir veride 4 sonucunu verir.

SELECT t1.id+1 AS siradaki FROM urun AS t1 WHERE 0=(SELECT COUNT(t2.id) FROM urun AS t2 WHERE t2.id>=t1.id+1 and t2.id<=t1.id+21 order by t2.id asc) and t1.id>1000 order by t1.id asc LIMIT 1

Yukarıdaki örnekte urun adlı tablodaki id sütununa göre arama yapar,1000 nolu id’den büyük ve arada 20 adet ardışık boş id bulunan değerleri döndürür.

Örneğin 1025,1028,1030,1051 gibi bir veride 1031 sonucunu verir

Phpmyadmin Binary Veriyi Utf8 Görüntüleme

$result = bin2hex($content);
$result = pack('H*', $result);
$result = mb_convert_encoding($result, "UTF-8","ISO-8859-9");
$result = htmlspecialchars($result);

phpMyAdmin\libraries\classes\Display\Results.php içerisinde yaklaşık 5000.satırda handleNonPrintableContents fonksiyonu içerisindeki bin2hex fonksiyonunun olduğu satırı yukarıdaki şekilde değiştirin.