ChatGpt API PHP Kullanımı – Örnek Proje Kodlaması

Postman api kullanımı, chatgpt postman kullanımı ve örnek bir proje nasıl geliştirilir süreçleri izleyerek öğrenebilirsiniz ayrıca chatgpt php curl kodları içinde değişken nasıl kullanılır bunun yöntemini de vermiş oldum:

projenin kodları:

hesapla.php

<?php
if($_POST) {
 
$mesaj = $_POST['mesaj'];
 
$curl = curl_init();
 
curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.openai.com/v1/chat/completions',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  $postData = [
    "model" => "gpt-3.5-turbo",
    "messages" => [
        [
            "role" => "system",
            "content" => "Sana verilecek şehirler arasındaki mesafeyi km cinsinden hesapla"
        ],
        [
            "role" => "user",
            "content" => $mesaj
        ]
    ],
    "temperature" => 1,
    "top_p" => 1,
    "n" => 1,
    "stream" => false,
    "max_tokens" => 250,
    "presence_penalty" => 0,
    "frequency_penalty" => 0
],
CURLOPT_POSTFIELDS => json_encode($postData),
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'Accept: application/json',
    'Authorization: Bearer CHAT-GPT-API-KEY',
    'Cookie: __cf_bm=vZOEmnB.iBoARA5jNlzl_3fmVT5kf7XS5XGVJIULbzU-1707949206-1.0-Ab4yfu/SgkWvujszh3GgRmWFp+Yrn08466/17QdbMNzsExMjBK+iMYSXzmFjSaSxije1GChN+znSDrZVbagYXIw=; _cfuvid=4EBhWeYHBHCUPtDL8MCwyNKaINeeK3AkDRyEEqhKcAo-1707942992182-0.0-604800000'
  ),
));
 
$response = curl_exec($curl);
 
curl_close($curl);
 
$response = json_decode($response);
 
echo $response->choices[0]->message->content;
 
 
//print_r($response);
//echo $response;
 
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <form method="post">
    <textarea name="mesaj" rows="6"></textarea>
<button type="submit">Hesapla</button>
  </form>
 
</body>
</html>

ChatGpt Api Kullanarak Masal Yazdırma Projesi – ChatGpt For PHP Code

işte ChatGpt Api kullanarak bir hikaye/masal yazdırma projesi basit bir input alanından gelen veriyi bir değişkene atayıp prompt içinde kullanarak ekrana bir masal yazdırıyoruz.

<?php
 
//$input = "anahtar kelime, kelime2, başkabirşey";
 
if($_POST) {
 
 
  $input = $_POST['prompt'];
 
$curl = curl_init();
 
curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.openai.com/v1/completions',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  $postData = [
  "model" => "gpt-3.5-turbo-instruct",
  "prompt" => "Şu anahtar kelimelerle alakalı bir masal yaz: $input",
  "max_tokens" => 500,
  "temperature" => 0.7
],
  CURLOPT_POSTFIELDS => json_encode($postData),
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer CHAT-GPT-API-KEY',
    'Content-Type: application/json',
    'Cookie: __cf_bm=y5nFmlyys1DPwTtjCpj.pBevVryHN0TF6YLT1GWupkM-1706396921-1-AfYdSPVEQD1klX01+A+pFOeBJa1Q6CEeTN7fD99l7XJZu74miS5Ga4wAMuPgD/LaSIr0yjI6NT3Sp86lXVMfvAQ=; _cfuvid=DlcMs.nAdBoxgWFBSesVC0W8VMU8sZNGz2rkNOsG0xg-1706396921015-0-604800000'
  ),
));
 
$response = curl_exec($curl);
 
curl_close($curl);
 
$response = json_decode($response);
 
echo $response->choices[0]->text;
//print_r($response);
 
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
 
  <form method="post">
 
<textarea name="prompt" placeholder="Lütfen yazmamı istediğiniz masalınızın içeriğiyle alakalı anahtar kelimeler girin" rows="6"></textarea>
 
<button name="submit" type="submit">Gönder</button>
 
  </form>
 
</body>
</html>

WordPress Bootsrap Temasında Adminbar Navbar alanının üstüne geliyor (SORUN ÇÖZÜLDÜ)

WordPresste giriş yaptıktan sonra admin bar eğer temanızın navbar yada header alanınızı kaplıyorsa bunun için farklı çözüm yolları var ben kullandığım çözüm yolunu paylaşıyorum; temel mantığımız altta kalan divin class yada id değerine top değeri tanımlayarak aşağı indirmek olacaktır.

<style type="text/css">header.fixed-top { top: 34px; }</style>

Fakat bunu yapınca giriş yapmayan yada admin olmayan kullanıcılar için istenmeyen bir görüntü ortaya çıkabilir bu sorunu aşmak için yapmamız gereken wordpressin fonksyonlarıyla kullanıcıyı bulup admin olup olmadığına bakmak ve ona göre style uygulamasını sağlamak olacaktır.
header.php içinde şu kodu yazarak ve top:34px değeriyle oynama yaparak sorunu çözebilirsiniz

  <?php $wpUser = wp_get_current_user();
if (user_can( $wpUser, 'administrator' )) { ?>
<style type="text/css">header.fixed-top { top: 34px; }</style>
<?php } ?>

WordPress Admin Bar Overlapping Twitter Bootstrap Navigation, WordPress Admin Bar Covering & Overlapping Fixed Menu Header

PHP Warning: Attempt to read property HATA ÇÖZÜMÜ

simple_html_dom.php ile işlem yaparken file_get_html kullanırken almanız çekmeye çalıştığınız veri/obje her içerikte olmayabilir bu sefer de aşağıdaki hatayı almanız muhtemeldir.
xamp hata kodum: Warning: Attempt to read property “plaintext” on null in C:\xampp\htdocs…
Sunucularda da muhtemelen alacağınız hata kodu bu şekilde olacaktır, ulaşmaya çalıştığınız,

Bu hatanın nedeni Basitçe ifade etmek gerekirse, nesne olmayan bir değişkenden bir özelliğe veya yönteme erişmeye çalıştığımızda “PHP Uyarısı: Bir dize veya dizideki ‘…’ özelliğine erişme girişimi” ortaya çıkar. Bu uyarıyı önlemek için, verilen değişkenin object türünde olup olmadığını doğrulamak amacıyla komut dosyamıza koşullu bir parametre eklemek çok önemlidir. Ek olarak, tanımlanan değişkenin tipini kontrol etmek için PHP’nin is_object() yerleşik fonksiyonunu kullanmak önemlidir.

örnek kullanım:

 $source= $html->find('.ornekclass',0);
 
if(is_object($source)){ echo $haber_kaynak->plaintext; }

PHP Pdo Veritabanı Bağlantısı ve Veri Kontrolü (Bu veri var mı yoksa ekle)

PHP PDO veritabanı bağlantı kodlarımız:

$servername = "localhost";
$username = "root";
$password = "";
 
try {
  $conn = new PDO("mysql:host=$servername;dbname=kodgunlugum", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();

Bu veri var mı select işlemiyle sorgulayıp sayısına göre işlem yapmak için

// veri kontrolü
   $kontrol = $conn->query("SELECT * FROM tabloAdi WHERE baslik='{$baslik}'");
   ## kontrol için koşul belirttik.

 
if ($kontrol->rowCount()>0) {
 
echo "bu kayıt zaten var";
 
 
} else {
 
// bu kayıt yok insert işlemleri burada yapılabilir.
}

PDO ile insert işlemi örneği (ad soyad ve gsm değişkenlerinden veri geldiğini düşünerek çalıştıracak olursak)

 
   $sql=$conn->prepare("insert into tabloAdi set ad=?,soyad=?,gsm=?");
$sql->execute([$ad,$soyad,$gsm]);
 
 
if ($sql->rowCount()>0) {
 
   echo "Kayıt Başarılı";
 
 
}else {
 
   echo "kayıt eklenemedi";
}

Php Resim Kaydederken Bozuk URL Düzeltme

Php ile farklı bir kaynaktan resim çekip kendi sunucumuza kaydederken bazı problemler çıkabilir & gibi karakterleri urldecode işlemi yaparak temizleyip resim linkini okunaklı hale getirmekte fayda var
Bozuk yapı:

https://yemek.com/_next/image/?url=https%3A%2F%2Fcdn.yemek.com%2Fmnresize%2F1250%2F833%2Fuploads%2F2022%2F04%2Fcitir-tavuk-dilimleri-yemekcom.jpg&w=1920&q=75

Düzelmiş hali:

https://yemek.com/_next/image/?url=https://cdn.yemek.com/mnresize/1250/833/uploads/2022/04/citir-tavuk-dilimleri-yemekcom.jpg&w=1920&q=75

Düzeltmek ve kaydetmek için:

 
 $url = str_replace( "&amp;", "&", urldecode(trim($resim)) );
 
$veri2 = file_get_contents($url);
$kayit = fopen('images/'.uniqid().".jpg","w+");
fwrite($kayit, $veri2);
fclose($kayit);

Foreach döngü içindeki ilk veriyi dışarıya taşımak

Bunu yapmak için öncelikle foreach döngü sayısı aşağıdaki gibi bir kereyle sınırlıyoruz ardından ilgili değişkeni dışarıdan çağırarak veriyi dışarıya aktarabiliyoruz.

$i = 0;
foreach ($rss->channel->item as $item) {
 
 
$temizBaslik = "veri1";
 
 
 
// 1 kayıt getir ve dur
  if(++$i > 0) break;
 
 
 
}
 
echo $temizBaslik;

WordPress wp_insert_post sayfasında aynı başlık var mı veri kontrolü yapmak

WordPress manual veri ekleme sayfanız varsa insert işlemini de bir otomasyona bağlayıp sürekli veri ekliyorsanız aynı başlığı kontrol etmeniz gerekebilir ben wp_posts tablosundaki post_excerpt sütununu baz alarak aşağıdaki kodu kullanıyorum siz kendinize göre uyarlayabilirsiniz.

global $wpdb;
$tableName = $wpdb->prefix . 'posts';
$test = $wpdb->get_var( $wpdb->prepare(" SELECT post_excerpt FROM {$tableName} where post_excerpt='{$temizBaslik}'" ));
//var_dump($test);
 
if($test < 1){ 
 
// Belirtilen kayıt yok. veri eklemek için wp_insert_post çalışabilir 
 
}else { 
// Belirtilen kayıt var insert işlemi yapılmaz
}

Haber sitelerinden XML (RSS) kullanarak Content (içerik) ve görseli çekmek

klasik simplexml_load_string kullanarak veri çekebiliyoruz fakat içeriğin tamamı yapısı içinde yer aldığından veri çekerken str replace kullanarak yapıyı düzeltmek gerekebiliyor örneğin:

$feed = file_get_contents('https://www.habersitesi.com/rss');
$feed = str_replace('content:encoded', 'content', $feed);
$rss = simplexml_load_string($feed);
 
foreach ($rss->channel->item as $item) {
 
   echo '<h2><a href="'. $item->link .'">' . $item->title . "</a></h2>";
   echo "<p>" . $item->pubDate . "</p>";
   echo "<p>" . $item->description . "</p>";
   echo "<p>" . $item->content . "</p>";
   echo  $item->enclosure['url'];
 
 
}

örnekte olduğu gibi $item->enclosure[‘url’] şeklinde yapıyı kullanabilirsiniz

PHP Ay İsimlerini Türkçeye Çevirme (Kolay bir fonksiyonla çözdük)

php date fonksiyonuyla ekrana yazdırdığımız ingilizce kalıp ay ve gün isimlerini türkçeye çevirmek için küçük bir fonksiyon kullanıyorum

    date_default_timezone_set('Europe/Istanbul');
 
    $tarih = date("d F l");
    echo $tarih;
    // Çıktı: 23 May Tuesday
 
    $ing_aylar = array("January","February","March","May","April","June","July","August","September","October","November","December");
    $tr_aylar = array("Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık");
 
    $ing_gunler = array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
    $tr_gunler = array("Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar");
 
    $tarih = str_replace($ing_aylar,$tr_aylar,$tarih);
    $tarih = str_replace($ing_gunler,$tr_gunler,$tarih);
 
    echo $tarih;
    // Çıktı: 23 Ağustos Salı