<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kaan Hanoğlu</title>
    <description>The latest articles on DEV Community by Kaan Hanoğlu (@kaan_hanoglu).</description>
    <link>https://dev.to/kaan_hanoglu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3269005%2F669beb15-1f95-4947-9296-027992f5b61f.jpg</url>
      <title>DEV Community: Kaan Hanoğlu</title>
      <link>https://dev.to/kaan_hanoglu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kaan_hanoglu"/>
    <language>en</language>
    <item>
      <title>What Is fetchpriority="high" and Who Should Use It ?</title>
      <dc:creator>Kaan Hanoğlu</dc:creator>
      <pubDate>Wed, 01 Jul 2026 09:30:44 +0000</pubDate>
      <link>https://dev.to/kaan_hanoglu/what-is-fetchpriorityhigh-and-who-should-use-it--hbn</link>
      <guid>https://dev.to/kaan_hanoglu/what-is-fetchpriorityhigh-and-who-should-use-it--hbn</guid>
      <description>&lt;p&gt;If you've ever analyzed your website with Lighthouse or PageSpeed Insights, you've probably come across a recommendation similar to this:&lt;br&gt;
The LCP image should have &lt;code&gt;fetchpriority="high"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The first time I saw this warning, I was confused.&lt;/p&gt;

&lt;p&gt;The website was already well optimized. It was running LiteSpeed Cache, images were compressed, WebP was enabled, lazy loading was configured correctly, Critical CSS was working, and LiteSpeed was even generating preload tags for my hero image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So why was Lighthouse still complaining?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This question led me to spend several hours researching how modern browsers prioritize resources, what &lt;code&gt;fetchpriority&lt;/code&gt; actually does, and why preloading an image is sometimes not enough.&lt;/p&gt;

&lt;p&gt;I first encountered this issue while optimizing one of my client's production websites. During the optimization process, I was documenting performance improvements, Core Web Vitals tests, and SEO experiments on one of my own projects. That real-world testing environment helped me compare different optimization techniques and better understand how browsers handle resource prioritization. If you're curious, you can take a look at one of those production projects: &lt;a href="https://esenyurtkorsantaksici.blog/" rel="noopener noreferrer"&gt;Esenyurt Korsan Taksi&lt;/a&gt;. It's one of the websites I use to test real-world SEO and Core Web Vitals optimizations.&lt;/p&gt;

&lt;p&gt;This article brings together everything I learned about &lt;code&gt;fetchpriority="high"&lt;/code&gt;- what it is, when you should use it, when you shouldn't, and why such a small HTML attribute can make a measurable difference to your Largest Contentful Paint (LCP) and overall Core Web Vitals.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is fetchpriority?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;fetchpriority&lt;/code&gt; is an HTML attribute that allows developers to give the browser a hint about how important a particular resource is during page loading.&lt;/p&gt;

&lt;p&gt;Modern browsers are incredibly intelligent.&lt;br&gt;
Whenever someone visits your website, the browser immediately starts downloading dozens of different resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Fonts&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Icons&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;API requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since all of these resources compete for bandwidth, the browser needs to decide what should be downloaded first.&lt;/p&gt;

&lt;p&gt;Usually, it does a pretty good job.&lt;/p&gt;

&lt;p&gt;But browsers don't actually know which image is the most important for your visitors. That's where &lt;code&gt;fetchpriority&lt;/code&gt; comes in.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;code&gt;&amp;lt;img src="hero.webp" alt="Hero Image" fetchpriority="high"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This simple attribute tells the browser:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This image is extremely important. Please prioritize downloading it before less important images.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It doesn't make your internet connection faster. It simply helps the browser make better decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why was &lt;code&gt;fetchpriority&lt;/code&gt; introduced?
&lt;/h2&gt;

&lt;p&gt;For many years, browsers relied entirely on their own algorithms.&lt;br&gt;
They looked at things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the image visible?&lt;/li&gt;
&lt;li&gt;Where does it appear in the HTML?&lt;/li&gt;
&lt;li&gt;Has the page layout already been calculated?&lt;/li&gt;
&lt;li&gt;Is it inside the viewport?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the time those guesses were correct. Sometimes they weren't.&lt;br&gt;
Imagine a landing page containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one large hero banner&lt;/li&gt;
&lt;li&gt;twelve product images&lt;/li&gt;
&lt;li&gt;several SVG icons&lt;/li&gt;
&lt;li&gt;partner logos&lt;/li&gt;
&lt;li&gt;background decorations&lt;/li&gt;
&lt;li&gt;social media icons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without any priority hints, the browser has to decide which image deserves attention first. Sometimes it starts downloading gallery images before the hero image.&lt;/p&gt;

&lt;p&gt;Sometimes decorative assets compete with the image that users actually see first.&lt;/p&gt;

&lt;p&gt;Every unnecessary delay affects Largest Contentful Paint. Google introduced &lt;code&gt;fetchpriority&lt;/code&gt; to solve exactly this problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Largest Contentful Paint (LCP)
&lt;/h2&gt;

&lt;p&gt;Largest Contentful Paint, commonly known as LCP, is one of Google's Core Web Vitals.&lt;/p&gt;

&lt;p&gt;Instead of measuring how fast your entire website loads, it measures something much more important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How long does it take until the largest visible content appears on the screen?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That content is often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a hero banner&lt;/li&gt;
&lt;li&gt;a featured article image&lt;/li&gt;
&lt;li&gt;a landing page illustration&lt;/li&gt;
&lt;li&gt;a large promotional image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google recommends keeping LCP below 2.5 seconds. A slow LCP doesn't necessarily mean your server is slow.&lt;/p&gt;

&lt;p&gt;Very often it means the browser simply didn't download the most important image early enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preload and Fetch Priority are NOT the same thing
&lt;/h2&gt;

&lt;p&gt;One of the biggest misconceptions I found while researching this topic is that many developers believe image preloading automatically gives an image high priority.&lt;/p&gt;

&lt;p&gt;It doesn't. Let's compare both.&lt;/p&gt;

&lt;p&gt;Image Preload&lt;br&gt;
&lt;code&gt;&amp;lt;link rel="preload" as="image" href="/hero.webp"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This tells the browser:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You will need this image soon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The browser starts downloading it earlier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fetch Priority
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;img src="/hero.webp" fetchpriority="high"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This tells the browser:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Among all images on this page, this one matters the most.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These are two completely different signals.&lt;/p&gt;

&lt;p&gt;One starts the download earlier. The other influences download priority.&lt;/p&gt;

&lt;p&gt;Using both together provides the strongest possible hint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Lighthouse still complains
&lt;/h2&gt;

&lt;p&gt;Many people believe preload is enough.&lt;/p&gt;

&lt;p&gt;Technically, preload only tells the browser that a resource will probably be needed.&lt;/p&gt;

&lt;p&gt;It does not explicitly say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This resource should receive higher priority than other images.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once the HTML parser reaches multiple &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; elements, the browser still has to prioritize them internally.&lt;/p&gt;

&lt;p&gt;Without &lt;code&gt;fetchpriority&lt;/code&gt;, it continues relying on its own heuristics.&lt;/p&gt;

&lt;p&gt;That's why Lighthouse recommends adding both.&lt;/p&gt;

&lt;h2&gt;
  
  
  How browsers actually prioritize resources
&lt;/h2&gt;

&lt;p&gt;Think about an airport. There are dozens of passengers waiting to board.&lt;/p&gt;

&lt;p&gt;Without special instructions, everyone joins the queue.&lt;/p&gt;

&lt;p&gt;Now imagine one passenger is told:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Please board first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nothing else changes.&lt;/p&gt;

&lt;p&gt;The airplane doesn't become faster.&lt;/p&gt;

&lt;p&gt;The runway doesn't become longer.&lt;/p&gt;

&lt;p&gt;The order simply changes.&lt;/p&gt;

&lt;p&gt;That's exactly how &lt;code&gt;fetchpriority&lt;/code&gt; works.&lt;/p&gt;

&lt;p&gt;It changes priority—not speed.&lt;/p&gt;

&lt;p&gt;This tiny change can reduce waiting time for your most important content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should every image use &lt;code&gt;fetchpriority="high"&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;Absolutely not.&lt;/p&gt;

&lt;p&gt;One of the most common mistakes developers make is adding:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fetchpriority="high"&lt;/code&gt; to every image.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;img fetchpriority="high"&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;img fetchpriority="high"&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;img fetchpriority="high"&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;img fetchpriority="high"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This defeats the entire purpose. If everything is important...&lt;/p&gt;

&lt;p&gt;Nothing is important.&lt;/p&gt;

&lt;p&gt;The browser ignores excessive priority hints because they stop being meaningful.&lt;/p&gt;

&lt;h2&gt;
  
  
  When should you use it?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;fetchpriority="high"&lt;/code&gt; is ideal for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hero banners&lt;/li&gt;
&lt;li&gt;Landing page images&lt;/li&gt;
&lt;li&gt;Featured article images&lt;/li&gt;
&lt;li&gt;The image identified as your Largest Contentful Paint element&lt;/li&gt;
&lt;li&gt;Above-the-fold content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the images users are waiting to see.&lt;/p&gt;

&lt;h2&gt;
  
  
  When should you NOT use it?
&lt;/h2&gt;

&lt;p&gt;Avoid using it on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gallery images&lt;/li&gt;
&lt;li&gt;Product thumbnails&lt;/li&gt;
&lt;li&gt;Team member photos&lt;/li&gt;
&lt;li&gt;Logos&lt;/li&gt;
&lt;li&gt;Icons&lt;/li&gt;
&lt;li&gt;Decorative illustrations&lt;/li&gt;
&lt;li&gt;Images below the fold&lt;/li&gt;
&lt;li&gt;Footer graphics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These resources don't need to compete with your hero image.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can it improve performance?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;But it's important to have realistic expectations.&lt;/p&gt;

&lt;p&gt;Adding &lt;code&gt;fetchpriority="high"&lt;/code&gt; won't suddenly make your website one second faster.&lt;/p&gt;

&lt;p&gt;Performance optimization rarely works that way.&lt;/p&gt;

&lt;p&gt;Instead, it helps the browser make slightly better scheduling decisions.&lt;/p&gt;

&lt;p&gt;During my own testing, I noticed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster hero image rendering&lt;/li&gt;
&lt;li&gt;Slightly lower LCP values&lt;/li&gt;
&lt;li&gt;Better Lighthouse reports&lt;/li&gt;
&lt;li&gt;More consistent loading on slower mobile devices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The improvements were usually measured in milliseconds rather than seconds.&lt;/p&gt;

&lt;p&gt;But in Core Web Vitals, milliseconds matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since LiteSpeed Cache wasn't adding the attribute automatically to the actual LCP image, I decided to create a small WordPress plugin for my own projects.&lt;/p&gt;

&lt;p&gt;The plugin has one simple responsibility.&lt;/p&gt;

&lt;p&gt;Whenever LiteSpeed preloads the main hero image, the corresponding &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; element also receives:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fetchpriority="high"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;No settings.&lt;br&gt;
No configuration.&lt;br&gt;
No database tables.&lt;br&gt;
No unnecessary features.&lt;/p&gt;

&lt;p&gt;Just one tiny improvement that complements LiteSpeed's existing optimization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is LiteSpeed doing something wrong?
&lt;/h2&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;LiteSpeed Cache already provides an impressive amount of automatic optimization.&lt;/p&gt;

&lt;p&gt;Every website has a different layout, different themes, and different methods of rendering images.&lt;/p&gt;

&lt;p&gt;Determining which image is truly the Largest Contentful Paint element isn't always straightforward.&lt;/p&gt;

&lt;p&gt;That's probably one of the reasons why LiteSpeed doesn't automatically add &lt;code&gt;fetchpriority="high"&lt;/code&gt; to every preloaded image.&lt;/p&gt;

&lt;p&gt;It leaves that decision to developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One thing I've learned after optimizing many websites is that performance isn't always about installing more plugins or buying a faster server.&lt;/p&gt;

&lt;p&gt;Sometimes it's about understanding how browsers think.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fetchpriority="high"&lt;/code&gt; is a perfect example.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's a tiny HTML attribute.&lt;/li&gt;
&lt;li&gt;It doesn't compress images.&lt;/li&gt;
&lt;li&gt;It doesn't reduce file sizes.&lt;/li&gt;
&lt;li&gt;It doesn't improve your hosting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yet it helps browsers identify the single most important image on your page and prioritize it accordingly.&lt;/p&gt;

&lt;p&gt;If your Lighthouse report recommends adding &lt;code&gt;fetchpriority="high"&lt;/code&gt;, don't ignore it.&lt;/p&gt;

&lt;p&gt;Take a few minutes to identify your LCP image, verify whether it's already preloaded, and make sure the browser also knows that it's your highest-priority visual element.&lt;/p&gt;

&lt;p&gt;When combined with proper image optimization, modern formats like WebP or AVIF, responsive image sizes, caching, and intelligent preloading, this small attribute becomes another piece of the performance puzzle.&lt;/p&gt;

&lt;p&gt;And as every performance engineer eventually discovers, websites rarely become faster because of one huge optimization.&lt;/p&gt;

&lt;p&gt;They become faster because dozens of small optimizations work together.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>seo</category>
      <category>performance</category>
      <category>webdev</category>
    </item>
    <item>
      <title>PHP ile Güvenli Bir Giriş Sistemi Nasıl Oluşturulur? (Ve Sık Yapılan Güvenlik Hataları)</title>
      <dc:creator>Kaan Hanoğlu</dc:creator>
      <pubDate>Mon, 16 Jun 2025 18:05:33 +0000</pubDate>
      <link>https://dev.to/kaan_hanoglu/php-ile-guvenli-bir-giris-sistemi-nasil-olusturulur-ve-sik-yapilan-guvenlik-hatalari-312</link>
      <guid>https://dev.to/kaan_hanoglu/php-ile-guvenli-bir-giris-sistemi-nasil-olusturulur-ve-sik-yapilan-guvenlik-hatalari-312</guid>
      <description>&lt;p&gt;Web projelerinde kullanıcı giriş sistemi (login system), saldırıya en açık bölümlerden biridir. Özellikle PHP ile geliştirilen sistemlerde güvenliğe dikkat edilmediğinde XSS, SQL Injection, Session Hijacking gibi ataklar sisteminizi tehdit eder.&lt;/p&gt;

&lt;p&gt;Bu yazıda, sıfırdan güvenli bir PHP giriş sistemi kurmanın temel prensiplerini ve dikkat edilmesi gereken noktaları paylaşacağım.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;En Yaygın Saldırılar ve Önlemleri&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SQL Injection&lt;/strong&gt;
Kullanıcının girdiği veriler doğrudan SQL sorgusuna aktarılırsa, saldırgan veritabanınızı silebilir veya kullanıcı bilgilerine erişebilir.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Çözüm:&lt;/strong&gt;&lt;br&gt;
Her zaman prepared statements (PDO veya MySQLi) kullanın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$stmt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$pdo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;prepare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"SELECT * FROM users WHERE email = :email"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$stmt&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. XSS (Cross-Site Scripting)&lt;/strong&gt;&lt;br&gt;
Formlardan gelen veriler filtrelenmeden ekrana yazılırsa, saldırgan kötü amaçlı JavaScript kodları çalıştırabilir.&lt;/p&gt;

&lt;p&gt;Basit Çözüm:&lt;br&gt;
formdan gelen verileri bir clean funcksiyondan geçirdikten sonra, Çıktıları &lt;code&gt;htmlspecialchars()&lt;/code&gt; ile güvenli hale getirin: &lt;code&gt;echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Session Hijacking&lt;/strong&gt;&lt;br&gt;
Kullanıcı oturumu ele geçirilirse, saldırgan tüm işlemleri onun adına gerçekleştirebilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Çözüm:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;session_regenerate_id(true)&lt;/code&gt; ile her login işleminden sonra session ID yenileyin.&lt;br&gt;
HTTPS zorunluluğu ve &lt;code&gt;SameSite&lt;/code&gt;, &lt;code&gt;HttpOnly&lt;/code&gt;, &lt;code&gt;Secure&lt;/code&gt; cookie ayarlarını kullanın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Güvenli Giriş Sistemi İçin Ekstra İpuçları&lt;/strong&gt;&lt;br&gt;
Şifreleri daima &lt;code&gt;password_hash()&lt;/code&gt; türlerinden biri ile şifreleyin.&lt;br&gt;
&lt;strong&gt;Brute force&lt;/strong&gt; saldırılarına karşı giriş deneme limiti koyun.&lt;br&gt;
&lt;strong&gt;CSRF&lt;/strong&gt; token kullanın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gerçek Hayatta Kullanım Örneği:&lt;/strong&gt;&lt;br&gt;
PHP ile geliştirilmiş bir ulaşım hizmeti sistemi olan &lt;a href="https://mavitaksi.com/" rel="noopener noreferrer"&gt;İstanbul Korsan Taksi&lt;/a&gt;, kullanıcı deneyimini ve güvenliği ön planda tutarak php pdo ile geliştirilmiştir. Bu sistemde hem müşteri paneli hem de yönetici girişleri için güvenlik önlemleri titizlikle uygulanmıştır.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>php</category>
      <category>pdo</category>
      <category>mysql</category>
    </item>
  </channel>
</rss>
