nasıl ben PHP sayfaları arasında veri paylaşımı yapabilirsiniz?

5 Cevap php

Ben bir PHP sayfası var ve kullanıcı kimliği, parola gibi sayfaları arasında bazı verileri paylaşmak istiyorum.

Ben oturumları hakkında öğrenme yaşıyorum ve ben doğru bir şekilde kullanarak eğer ben emin değilim.

<?php
require_once('database.inc');
$kUserID = $_POST['kUserID'];
$kPassword = $_POST['kPassword'];

if (!isset($kUserID) || !isset($kPassword)) { 
    header( "Location: http://domain/index.html" ); 
}

elseif (empty($kUserID) || empty($kPassword)) { 
    header( "Location: http://domain/index.html" ); 
} 
else { 
    $user = addslashes($_POST['kUserID']); 
    $pass = md5($_POST['kPassword']); 
    $db = mysql_connect("$sHostname:$sPort", $sUsername, $sPassword) or die(mysql_error()); 
    mysql_select_db($sDatabase) or die ("Couldn't select the database."); 
    $sqlQuery = "select * from allowedUsers where UserID='" . $kUserID . "' AND passwordID='" . $kPassword . "'";
    $result=mysql_query($sqlQuery, $db);
    $rowCheck = mysql_num_rows($result); 
    if($rowCheck > 0){ 
        while($row = mysql_fetch_array($result)){
            session_start();
            session_register('kUserID'); 
            header( "Location: link.php" );
       } 
    } 
    else { 
        echo 'Incorrect login name or password. Please try again.'; 
    } 
} 
?> 

5 Cevap

Kutsal olduğu bütün sevgi için, don't use addslashes to prevent SQL injection.

Ben sadece sitenize ait:

Image sizin ownt site arasında

Edit: Daha da kötüsü.

Ben sadece addslashes aracılığıyla enjeksiyonu önleme girişimi olduğunuzu fark, hatta kullanılıyor değil!

<?php
$kUserID = $_POST['kUserID'];
$user = addslashes($_POST['kUserID']); // this isn't used
$sqlQuery = "select * from allowedUsers where UserID='"
  . $kUserID . "' AND passwordID='" . $kPassword . "'";

Session_register () $ _SESSION, örneğin atama değerler lehine önerilmiyor farkında olun

<?php
    $_SESSION['hashedValue']= '437b930db84b8079c2dd804a71936b5f';
?>

Ayrıca, özellikle paylaşılan bir sunucu ortamında, bir oturumda saklanan şey, adil bir oyun olduğunu unutmayın. Ne olursa olsun, karma ya da şifreli olsun, bir parola saklamak asla. Ben de bir adı depolamak önlemek olacaktır. Eğer bir oturum değişkeni kullanarak sayfaları arasında bazı kimlik doğrulama mekanizmasını kullanmak gerekiyorsa, ben, ikinci bir arama tablosu kullanarak tavsiye ediyorum örn logins, ve bu tablodaki zaman, vs giriş, adını depolar. Bu tablodan bir karma değer oturumda saklanan ve her sayfa isteği tabloda zaman ve veritabanına karşı karma değerini denetler edilir. Isteği çok eski ya veya karma uymuyorsa, yeniden giriş zorlar.

Bütün bu ve daha PHP manual section on sessions sizin için kullanılabilir.

Ayrıca istiyorsun PHP gibi "database.inc" için "database.inc.php", ya da düzgün kurulum tedavi için host ". Inc" yeniden adlandırabilirsiniz:

http://www.namemybabyboy.com/database.inc

<?php
    $sDatabase = 'shayaanpsp';
    $sHostname = 'mysql5.brinkster.com';
    $sPort     = 3306;
    $sUsername = 'shayaanpsp';
    $sPassword = 'XXXX';
    $sTable    = 'allowedUsers';
?>

İlk olarak, senaryonun başında session_start() koymak gerekir. Ayrıca oturum verilerini kullanan her yazısının başında gitmek gerekiyor. Bu yüzden de babyRegistration.php üstündeki gitmek istiyorum.

Güvenlik nedenleriyle varsayılan olarak kapalı olan kayıt defterindeki İkinci olarak, ben şiddetle session_register() kullanarak karşı öneriyoruz. Daha fazla burada okuyabilirsiniz: http://php.net/manual/en/security.globals.php. Siz kullanarak / erişim oturum değişkenleri eklemek $_SESSION superglobal yapabilirsiniz:

$_SESSION['kUserID'] = $kUserID;

Son gerçekten ilgili oturum, sadece bir gözlem, üstündeki isset çek gereksiz değildir; Boş Tahmin edebileceğiniz gibi, bir tanımsız / null değişken için doğru dönecektir.

Bir sayfanın üstünde

session_start();
$_SESSION['yourvarname']='some value';

sonra diğer bazı sayfada almak için

echo $_SESSION['yourvarname'];
// some value

Oh and about injection,use this on everything going into your db http://us3.php.net/manual/en/function.mysql-real-escape-string.php