PHP Kullanıcı Adına Göre Ayrı Sayfaya Yönlendirme

Mustafa Ka.

Decapat
Katılım
12 Temmuz 2019
Mesajlar
66
Çözümler
1
Arkadaşlar merhaba, ben yeni PHP'ye başlayan biriyim ve yapmak istediğim şey tam olarak şöyle: Mesela ben Mustafa kullanıcı adı ve şifremle giriş yapınca bana mustafa.php, başka bir kullanıcının adı da Mahmut olsun, Mahmut'ta kullanıcı adı ve şifresini girince mahmut.php'ye yönlendirsin istiyorum.

İnternetten bulduğum kod parçacıklarıyla şu anda altta verdiğim kod çalışmakta fakat doğru bir şekilde login olanı dashboard.php alanına atıyor, ne kadar değiştirsem de etsem de düzeltemedim.

Aşağıdaki kodu biraz değiştirip bunu yapabilirsek memnun olurum çünkü tema paketi kullanıyorum. Sizlere sadece logini kontrol eden kodları gösterdim. Teşekkürler.

[CODE lang="php" title="Kodlama"]<?php
require('db.php');
session_start();

if (isset($_POST['username'])) {
$username = stripslashes($_REQUEST['username']);
$username = mysqli_real_escape_string($con, $username);
$password = stripslashes($_REQUEST['password']);
$password = mysqli_real_escape_string($con, $password);

$query = "SELECT * FROM `users` WHERE username='$username'
AND password='" . md5($password) . "'";
$result = mysqli_query($con, $query) or die(mysql_error());
$rows = mysqli_num_rows($result);

if ($rows == 1) {
$_SESSION['username'] = $username;
// Redirect to user dashboard page
header("Location: dashboard.php");
} else {

echo "<div class='container-login100'>
<h3> <i class='fa fa-address-card-o' aria-hidden='true'></i> Kullanıcı Adı veya Şifre Hatalı </h3> <br>
<h3> <a class='link' href='login.php'> Ana Sayfaya Dönmek İçin Tıklayın</a> </h3>
</div>";
}
} else {
?>[/CODE]
 
[CODE lang="php" title="PHP"]header("Location: ".$_SESSION['username'].".php");[/CODE]

Bu şekilde her kullanıcının adına özel sayfaya gider. Örnek olarak giriş yapan kullanıcı Mahmut ise, mahmut.php adresine gider. İstediğin bu sanırım yanlış anlamadıysam.
 
Sanırım olayı kafanda yanlış kurgulamışsın. Sisteme giren kullanıcıların her biri için ayrı sayfa yok. Hepsi aynı sayfaya erişiyor ancak kullanıcı bilgisine göre sayfa veri tabanından kendi bilgilerini getiriyor.

Yani tek bir dashboard.php olacak sen kullanıcı bilgisini SESSION ile dashboard sayfasına aktarıp orada kullanıcı bilgisi ile işlem yapacaksın.
 
Sanırım olayı kafanda yanlış kurgulamışsın. Sisteme giren kullanıcıların her biri için ayrı sayfa yok. Hepsi aynı sayfaya erişiyor ancak kullanıcı bilgisine göre sayfa veri tabanından kendi bilgilerini getiriyor.

Yani tek bir dashboard.php olacak sen kullanıcı bilgisini SESSION ile dashboard sayfasına aktarıp orada kullanıcı bilgisi ile işlem yapacaksın.

Sizin dediğiniz olay daha güzel aslında ama nasıl yapılır bilmiyorum benim bunu yapma amacım her kullanıcıya adını şifresini vereceğim onlar kendi günlük raporlarını görücekler. Bunu da HTML içinde gösteriyorum aslında dashboard.php de zaten kodda kullanıcı adı neyse ona göre hoş geldin Mahmut veya Mustafa olarak giren kişiye göre değiştirip gösteriyor. Ben problemi aşağıdaki şekilde çözdüm. Fakat Şu anda da şöyle bir problemim var eğer direkt URL olarak www.url.com/mahmut.php yazarsam direkt giriyor mahmutun kullanıcısı girilimi değil mi kontrol etmiyor. Bunu nasıl yapabilirim?

[CODE title="Şuanda yönlendiren kod"] $_SESSION['username'] = $username;switch($username){
case 'mahmut':
header('location: dashboard.php');
break;
case 'mustafa':
header('location: mustafa.php');
break;
case 'can':
header('location: can.php');
break;
}
}else{
echo "<div class='login100-form validate-form'>
<h3> <i class='fa fa-address-card-o' aria-hidden='true'></i> Kullanıcı Adı veya Şifre Hatalı </h3> <br>
</div>";
echo "<div class='login100-form validate-form'>
<h3> <a class='link' href='login.php'> Ana Sayfaya Dönmek İçin Tıklayın</a> </h3>
</div>";
}
} else {[/CODE]
 
Sizin dediğiniz olay daha güzel aslında ama nasıl yapılır bilmiyorum benim bunu yapma amacım her kullanıcıya adını şifresini vereceğim onlar kendi günlük raporlarını görücekler. Bunu da HTML içinde gösteriyorum aslında dashboard.php de zaten kodda kullanıcı adı neyse ona göre hoş geldin Mahmut veya Mustafa olarak giren kişiye göre değiştirip gösteriyor. Ben problemi aşağıdaki şekilde çözdüm. Fakat Şu anda da şöyle bir problemim var eğer direkt URL olarak www.url.com/mahmut.php yazarsam direkt giriyor mahmutun kullanıcısı girilimi değil mi kontrol etmiyor. Bunu nasıl yapabilirim?

[CODE title="Şuanda yönlendiren kod"] $_SESSION['username'] = $username;switch($username){
case 'mahmut':
header('location: dashboard.php');
break;
case 'mustafa':
header('location: mustafa.php');
break;
case 'can':
header('location: can.php');
break;
}
}else{
echo "<div class='login100-form validate-form'>
<h3> <i class='fa fa-address-card-o' aria-hidden='true'></i> Kullanıcı Adı veya Şifre Hatalı </h3> <br>
</div>";
echo "<div class='login100-form validate-form'>
<h3> <a class='link' href='login.php'> Ana Sayfaya Dönmek İçin Tıklayın</a> </h3>
</div>";
}
} else {[/CODE]
Yani mantıklı bir iş yapmıyorsun dostum. Üst mesajdaki arkadaşın bahsettiği gibi tek bir dashboard olur içinde kullanıcı kontrolü yapar kendi verisini gösterirsin. Böyle sayfalama işlerine falan da girmemiş olursun.
 
Sizin dediğiniz olay daha güzel aslında ama nasıl yapılır bilmiyorum benim bunu yapma amacım her kullanıcıya adını şifresini vereceğim onlar kendi günlük raporlarını görücekler. Bunu da HTML içinde gösteriyorum aslında dashboard.php de zaten kodda kullanıcı adı neyse ona göre hoş geldin Mahmut veya Mustafa olarak giren kişiye göre değiştirip gösteriyor. Ben problemi aşağıdaki şekilde çözdüm. Fakat Şu anda da şöyle bir problemim var eğer direkt URL olarak www.url.com/mahmut.php yazarsam direkt giriyor mahmutun kullanıcısı girilimi değil mi kontrol etmiyor. Bunu nasıl yapabilirim?

[CODE title="Şuanda yönlendiren kod"] $_SESSION['username'] = $username;switch($username){
case 'mahmut':
header('location: dashboard.php');
break;
case 'mustafa':
header('location: mustafa.php');
break;
case 'can':
header('location: can.php');
break;
}
}else{
echo "<div class='login100-form validate-form'>
<h3> <i class='fa fa-address-card-o' aria-hidden='true'></i> Kullanıcı Adı veya Şifre Hatalı </h3> <br>
</div>";
echo "<div class='login100-form validate-form'>
<h3> <a class='link' href='login.php'> Ana Sayfaya Dönmek İçin Tıklayın</a> </h3>
</div>";
}
} else {[/CODE]





Şu anda yapmış olduğun best practice bir çözüm değil. Anladığım kadarı ile her kullanıcı için ayrı sayfa da yapmışsın.
Eğer sayfalara doğrudan erişim istemiyorsan her sayfanın başında session kontrolü yapabilirsin.

[CODE lang="php" title="login kontrol"]session_start();

if(isset($_SESSION['username']) && !empty($_SESSION['username'])) {

header('location: login.php');

}else{

// mustafa.php sayfa kodları

}[/CODE]



@dgknbzglu nun da belirttiği gibi bu şekilde bir tasarım mantıklı değil. Bu sebeple PHP 'de session ve dinamik sayfa oluşturma konularını biraz daha araştırmanı öneririm.
 
Şu anda yapmış olduğun best practice bir çözüm değil. Anladığım kadarı ile her kullanıcı için ayrı sayfa da yapmışsın.
Eğer sayfalara doğrudan erişim istemiyorsan her sayfanın başında session kontrolü yapabilirsin.

[CODE lang="php" title="login kontrol"]session_start();

if(isset($_SESSION['username']) && !empty($_SESSION['username'])) {

header('location: login.php');

}else{

// mustafa.php sayfa kodları

}[/CODE]

@dgknbzglunun da belirttiği gibi bu şekilde bir tasarım mantıklı değil. Bu sebeple PHP'de session ve dinamik sayfa oluşturma konularını biraz daha araştırmanı öneririm.

Yani mantıklı bir iş yapmıyorsun dostum. Üst mesajdaki arkadaşın bahsettiği gibi tek bir dashboard olur içinde kullanıcı kontrolü yapar kendi verisini gösterirsin. Böyle sayfalama işlerine falan da girmemiş olursun.

@00EGNR00 Evet tasarım mantıklı değil bende farkındayım ama dediğim gibi fazla bir bilgim yok bu yüzden elimden geldiği kadar araştırıp yapmaya çalışıyorum. Dinamik sayfa mantığına baktım ama benim sayfaların içinde her kişi için farklı javasctript çalışıyor o yüzden ayrı ayrı sayfa yazdım mecburen. En azından şimdilik elimden geleni yapmaya çalışacağım ilerledikçe sayfa düzenini değiştirir daha pratik bir hale getiririm diye düşünüyorum.

@dgknbzglu size de teşekkür ederim inşallah dediğiniz mantığı kavrayıp ilerledikçe bu şekilde bir düzenleme yaparım.
 
Hocam anladığım kadarıyla biraz kafanız karışmış durumda. Her bir kullanıcı için ayriyeten bir panel yapmanıza gerek yok. Arkadaşların da dediği gibi giriş yapan kullanıcı hakkında veri çekmek istiyorsanız SESSION metodunu kullanmanız gerekiyor. Yukarıda arkadaşlar nasıl kullanıldığını örnekle gösterdiler fakat yeni başlamış birisi olarak biraz daha araştırma yapmanız gerektiğini düşünüyorum. Mantığını kavramanız için.
 
Hocam anladığım kadarıyla biraz kafanız karışmış durumda. Her bir kullanıcı için ayrıyeten bir panel yapmanıza gerek yok. Arkadaşların da dediği gibi giriş yapan kullanıcı hakkında veri çekmek istiyorsanız SESSION metodunu kullanmanız gerekiyor. Yukarıda arkadaşlar nasıl kullanıldığını örnekle gösterdiler fakat yeni başlamış birisi olarak biraz daha araştırma yapmanız gerektiğini düşünüyorum. Mantığını kavramanız için.

Tam olarak giriş yapan kullanıcı hakkında veri değil şöyle OneDrive'dan Excel tablosu çekiyorum bu da her kullanıcıya özel onedrivedanda JavaScript olarak alıyorum ekleme kodunu bunu da HTML içinde gösteriyorum şimdi OneDrive'daki JavaScript kodunu veri tabanında kullanıcıya tanımlama yaparım o basit ama ben bu kodu nasıl HTML içine nasıl dökeceğim bununla ilgili hiçbir fikrim yok. Dinamik sayfalarla ilgili baktım fakat bunlarda PHP kodu içerisindeyken adamın mesela adını şehrini çekiyor.
Hadi diyelim çektim adama özel olan Drive kodunu PHP ile ben bunu HTML'e nasıl döküp düzgün göstereceğim.
Koduda şöyle kısaltılmış halini gösteriyim

[CODE title="Rapor Sayfası HTML dökümü" highlight="6"]<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
<head>

<script type="text/javascript" src="https://onedrive.live.com/embed?resid=862D2B7D%21110&authkey=%21AHnfCdHElC8LdAQ&em=3&wdItem=%22'%C5%9Fb%20sat%C4%B"></script>
?>
</body>
</html>[/CODE]

Şimdi burada sadece kişiden kişiye 6. satırın içerisinde olan src içerisindeki link değişiyor diğer her şey standart. Şimdi o linki veri tabanında her kişininkini kullanıcıya özel tanımlasam o kısma çekebilir miyim?

Biraz daha araştırma yapıyorum ilerledim ama sizin dediğinizi yapabilsem çok daha güzel olur tabii ki de.

Çok yeniyim kusuruma bakmayın.
 

Geri
Yukarı