Forumdan bir müşterimin mobil uygulaması için, kullanıcı koduyla URL Yönlendirme sistemine ihtiyacımız vardı. Bende ihtiyacı giderecek bir sistem yazdım.
Eğer ihtiyacı olan arkadaşlarımız olursa, dosyaları aşağıda açık olarak paylaşıyorum.


Özellikleri:
Yönlendirme Dosyası üzerinden Kullanıcı Kodu ve URL Eklenir SQL Kayıt Yapar.
İndex üzerinden kullanıcı kendi kodunu girince o siteye yönlendirilir. Sonraki girişlerinde ise girmesine gerek kalmaz hep o URL adreslerini açar.

Belki bir arkadaşımızın ihtiyacı olur.


SQL
CREATE DATABASE kullanici_url;
USE kullanici_url;
CREATE TABLE kullanicilar (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kullanici_adi VARCHAR(255) UNIQUE NOT NULL,
    url VARCHAR(255) NOT NULL
);
index.php
<?php
session_start();
if (isset($_SESSION['username'])) {
$servername = "localhost";
$username = "dbuser";
$password = "dbpas";
$database = "db";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Veritabanı bağlantısı başarısız: " . $conn->connect_error);
}
$username = $_SESSION['username'];
$query = "SELECT url FROM kullanicilar WHERE kullanici_adi = '$username'";
$result = $conn->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
header("Location: " . $row['url']);
exit;
} else {
unset($_SESSION['username']);
}
}
?>
<!DOCTYPE html>
<?php
session_start();
if (isset($_SESSION['username'])) {
$servername = "localhost";
$username = "dbuser";
$password = "dbpas";
$database = "db";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Veritabanı bağlantısı başarısız: " . $conn->connect_error);
}
$username = $_SESSION['username'];
$query = "SELECT url FROM kullanicilar WHERE kullanici_adi = '$username'";
$result = $conn->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
header("Location: " . $row['url']);
exit;
} else {
unset($_SESSION['username']);
}
}
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ana Ekran</title>
<style>
body{font-family:'Arial',sans-serif;background:linear-gradient(135deg,#007BFF,#0056b3);display:flex;justify-content:center;align-items:center;min-height:100vh;color:#fff;padding:10px}
.container{background:#fff;color:#333;width:100%;max-width:400px;padding:20px 30px;border-radius:15px;box-shadow:0 8px 15px rgba(0,0,0,0.2);text-align:center;margin:0 auto}
.logo img{max-width:120px;height:auto;margin-bottom:20px}
h1{font-size:1.8rem;margin-bottom:20px}
form{display:flex;flex-direction:column;gap:15px}
input[type="text"]{width:95%;padding:12px;font-size:1rem;border:1px solid #ddd;border-radius:8px;outline:none;box-shadow:inset 0 2px 4px rgba(0,0,0,0.1);transition:border-color .3s}
input[type="text"]:focus{border-color:#007BFF}
button{padding:12px;font-size:1rem;font-weight:700;color:#fff;background:#007BFF;border:none;border-radius:8px;cursor:pointer;transition:background-color .3s ease}
button:hover{background:#0056b3}
@media (max-width: 600px) {
h1{font-size:1.5rem}
input[type="text"],button{font-size:.9rem}
.container{padding:20px}
}</style>
</head>
<body>
<div class="container">
<div class="logo">
<img src="barkodlogo.png" alt="Logo">
<p>Denemek için demo yazabilirsiniz</p>
</div>
<form action="yonlendirme.php" method="post">
<input type="text" id="username" name="username" placeholder="Kullanıcı Adı" required>
<button type="submit">İlerle</button>
<p>Bu sistem barkodlu satış yapmak isteyen tüm işletmeler için uygundur.
<br><br>Detaylı Bilgi: <a href="tel:905333998629">0533 399 86 29</a></p>
</form>
</div>
</body>
</html>
yönlendirme.php
<?php
session_start();
$servername = "localhost";
$username = "dbuser";
$password = "dbpas";
$database = "db";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Veritabanı bağlantısı başarısız: " . $conn->connect_error);
}
if (isset($_SESSION['username'])) {
$username = $_SESSION['username'];
$query = "SELECT url FROM kullanicilar WHERE kullanici_adi = '$username'";
$result = $conn->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
header("Location: " . $row['url']);
exit;
} else {
unset($_SESSION['username']);
}
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['username'])) {
$username = $conn->real_escape_string($_POST['username']);
$query = "SELECT url FROM kullanicilar WHERE kullanici_adi = '$username'";
$result = $conn->query($query);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$_SESSION['username'] = $username;
header("Location: " . $row['url']);
exit;
} else {
echo "<div style='color: red; text-align: center;'>Bu kullanıcı adı için bir URL bulunamadı!</div>";
}
}
if (isset($_GET['delete'])) {
$id = intval($_GET['delete']);
$query = "DELETE FROM kullanicilar WHERE id = $id";
$conn->query($query);
header("Location: yonlendirme.php");
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kullanici_adi'], $_POST['url'])) {
$id = isset($_POST['id']) ? intval($_POST['id']) : 0;
$kullanici_adi = $conn->real_escape_string($_POST['kullanici_adi']);
$url = $conn->real_escape_string($_POST['url']);
if ($id > 0) {
$query = "UPDATE kullanicilar SET kullanici_adi = '$kullanici_adi', url = '$url' WHERE id = $id";
} else {
$query = "INSERT INTO kullanicilar (kullanici_adi, url) VALUES ('$kullanici_adi', '$url')";
}
$conn->query($query);
header("Location: yonlendirme.php");
exit;
}
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Yönetim Paneli</title>
<style>
body{font-family:Arial,sans-serif;margin:0;padding:0;background:#f4f4f9;color:#333;display:flex;justify-content:center;align-items:center;min-height:100vh}
.container{width:90%;max-width:1200px;margin:20px auto}
h1{text-align:center;margin-bottom:20px;color:#007BFF}
table{width:100%;border-collapse:collapse;margin-bottom:20px;background:#fff;box-shadow:0 4px 6px rgba(0,0,0,0.1)}
th,td{padding:15px;text-align:left;border:1px solid #ddd}
th{background:#007BFF;color:#fff}
tr:nth-child(even){background:#f9f9f9}
.btn{padding:10px 15px;text-decoration:none;color:#fff;background:#007BFF;border-radius:5px;cursor:pointer;border:none;font-size:.9rem}
.btn.edit{background:#28a745}
.btn.delete{background:#dc3545}
.btn.add{display:block;margin:20px auto;background:#007BFF;text-align:center;width:200px}
.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);justify-content:center;align-items:center;z-index:1000}
.modal.active{display:flex}
.modal-content{background:#fff;padding:20px;border-radius:10px;width:90%;max-width:500px;box-shadow:0 4px 6px rgba(0,0,0,0.2)}
.modal-header{font-size:1.5rem;margin-bottom:20px;text-align:center}
.modal-footer{text-align:center;margin-top:20px}
.modal-footer .btn{margin:0 10px}
input,textarea{width:100%;padding:10px;margin-bottom:15px;border:1px solid #ddd;border-radius:5px}
@media (max-width: 600px) {
table,th,td{font-size:.8rem}
.btn{font-size:.8rem;padding:8px 10px}
}
</style>
</head>
<body>
<div class="container">
<h1>Kullanıcı Yönetim Paneli</h1>
<button class="btn add" onclick="openModal()">Yeni Kullanıcı Ekle</button>
<table>
<thead>
<tr>
<th>ID</th>
<th>Kullanıcı Adı</th>
<th>URL</th>
<th>İşlemler</th>
</tr>
</thead>
<tbody>
<?php
$query = "SELECT * FROM kullanicilar";
$result = $conn->query($query);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "<tr>
<td>{$row['id']}</td>
<td>{$row['kullanici_adi']}</td>
<td>{$row['url']}</td>
<td>
<button class='btn edit' onclick='openModal({$row['id']}, \"{$row['kullanici_adi']}\", \"{$row['url']}\")'>Düzenle</button>
<a class='btn delete' href='yonlendirme.php?delete={$row['id']}'>Sil</a>
</td>
</tr>";
}
} else {
echo "<tr><td colspan='4'>Henüz bir kullanıcı yok.</td></tr>";
}
?>
</tbody>
</table>
</div>
<div class="modal" id="modal">
<div class="modal-content">
<div class="modal-header">Kullanıcı Ekle/Düzenle</div>
<form action="yonlendirme.php" method="post">
<input type="hidden" name="id" id="userId">
<label for="kullanici_adi">Kullanıcı Adı:</label>
<input type="text" id="kullaniciAdi" name="kullanici_adi" required>
<label for="url">URL:</label>
<input type="url" id="url" name="url" required>
<div class="modal-footer">
<button type="button" class="btn" onclick="closeModal()">İptal</button>
<button type="submit" class="btn">Kaydet</button>
</div>
</form>
</div>
</div>
<script>
function openModal(id = 0, kullaniciAdi = '', url = '') {
document.getElementById('userId').value = id;
document.getElementById('kullaniciAdi').value = kullaniciAdi;
document.getElementById('url').value = url;
document.getElementById('modal').classList.add('active');
}
function closeModal() {
document.getElementById('modal').classList.remove('active');
}
</script><a href="yonlendirme.php?logout=true" class="btn">Çıkış Yap</a>
</body>
</html>