Hey ben yani gerçekten de bir oturum sorunu için bir çözüm ile geliyor sorun yaşıyorum ben programlama ve ben nasıl sizin fikir istiyorum PHP yeniyim.
Ben (LETS) bir takas ve Yerel Ticaret Sistemi için bir komut dosyası yapıyorum ve kullanıcı sunulan tüm ürünler / hizmetleri görmek ve daha sonra bir ürün / hizmet üzerine tıklayın nerede ben şu anda teklif sayfa kodlama ediyorum Daha fazla bilgi almak için. Ürün / hizmet tıklayarak üzerine bir teklif yapabilir. Bir sistem üyeleri, diğer insanlarla ticaret yaparak kazanabilirsiniz Zaman / Yaşam Dolar var YAPALIM. Yani oldukça fazla alternatif para (hükümetler kullandığımız mevcut fiat para sisteminin aksine) işi kişiden oluşturulduğu. Yani bir kullanıcı Yaşam Dolar varsa onların ürün / hizmet sunan diğer kullanıcı için bir teklif yapabilirsiniz.
Aradım bir PHP sayfada tüm bu yapıyorum offers.php
. Basitçe söylemek gerekirse offers.php
yapılmış 4 sayfa olacak. Bir kullanıcı başlangıçta (offers.php
) hepsi teklifleri görürsünüz teklif görünümler bölümü, o zaman onlar (offers.php?id=X
) daha sonra bir teklifi ({[yapmak için tıklayın bir teklif üzerine tıklayınız (4)]}) ve daha sonra teklifi onaylamak (offers.php?id=X&action=confirm
).
Tamam bu yüzden benim oturumlar ile sorun şudur: kullanıcı sonuna kadar offers.php?id=X
kadar kapalı başladığında oturumları çalışır. Onlar yol giderseniz orada hiçbir sorun olmalı ve onlar benim doğrulamasını atlayabilir mümkün olmayacaktır varsayalım ediyoruz. Kullanıcı söz sahibi offers.php?id=100
tıklar ve sonra tarayıcınızın adres çubuğuna URL offers.php?id=200&confirm
girerse zaten yapılmış Ancak, onlar (iki kez girilmesi için bir teklif neden benim doğrulama atlayabilir bir ) sunuyoruz. Kullanıcının diğer offers.php?etc
URL doğrudan gider ama o kadar bir sorun olmadığı zaman aynı olmuyor. Sonra oturumları alışkanlık düzgün çalışmayabilir çünkü ben hala bir ürün / hizmet sayfası başka bir web sitesinde Yapıştırılan ne zaman endişeliyim çünkü bu düzeltmek istiyorum. Ben mantıklı ne diyorum mu? Gerekirse ben daha açıklayabilirim. Ben programlama yüzden size herhangi bir ipucu / zorlukları dışarı atmak seviyorum. Zaman ayırdığınız için teşekkür ederiz :)
İşte benim offers.php
kodu:
<?php
require_once('startsession.php');
require_once('dbconnect.php');
if (!isset($_SESSION['user_id'])) {
echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>';
exit();
}
require_once('navmenu.php');
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (isset($_GET['id']) && $_GET['action'] == 'confirm') {
$adid = $_GET['id'];
$userid = $_SESSION['user_id'];
$cost = $_SESSION['cost'];
$sellerid = $_SESSION['seller_id'];
//Check if bid was already made
$query = "SELECT * FROM transactions WHERE ad_id = '$adid' AND buyer_id = '$userid'";
$data = mysqli_query($dbc, $query);
$row = mysqli_num_rows($data);
if ($row == 1) {
echo '<p>Bid has been made</p>';
} else {
//If bid doesnt already exist insert bid
$query = "INSERT INTO transactions (ad_id, buyer_id, seller_id, cost, status) VALUES ('$adid', '$userid', '$sellerid', '$cost', 'O')";
$data = mysqli_query($dbc, $query);
}
} else if (isset($_GET['id']) && $_GET['action'] == 'makeoffer') {
$adid = $_GET['id'];
$userid = $_SESSION['user_id'];
//Check if bid was already made
$query = "SELECT * FROM transactions WHERE ad_id = '$adid' AND buyer_id = '$userid'";
$data = mysqli_query($dbc, $query);
$row = mysqli_num_rows($data);
if ($row == 1) {
echo '<p>You have already made a bid on this..</p>';
} else {
echo '<form method="post" action="offers.php?id=' . $adid . '&action=confirm">';
echo '<p>You are about to bid 5 Life Dollars.';
echo '<input type="submit" value="Confirm" name="submit" /></p>';
echo '</form>';
}
} else if (isset($_GET['id'])) {
$userid = $_SESSION['user_id'];
//Get ad details
$adid = $_GET['id'];
$query = "SELECT * from ads WHERE id = '$adid'";
$data = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($data);
//echo ad details
echo '<p>' . $row['ad_name'] . '<br>' . $row['ad_desc'] . '<br>' . 'Cost: ' . $row['timedollars']
. ' Time Dollars . ' . '<br>';
//Set session seller and cost
$sellerid = $row['seller_id'];
$_SESSION['seller_id'] = $sellerid;
$_SESSION['cost'] = $row['timedollars'];
//Check to see if a bid was already made
$query = "SELECT * FROM transactions WHERE ad_id = '$adid' and buyer_id = '$userid'";
$data = mysqli_query($dbc, $query);
$row = mysqli_num_rows($data);
if ($row == 0 && $userid != $sellerid) {
echo '<a href="offers.php?id=' . $adid . '&action=makeoffer">Make Bid</a></p>';
} else if ($row == 1) {
echo 'Already bidded';
}
} else {
//Get all ads/offers
$query = "SELECT * FROM ads WHERE ad_type = 'O'";
$data = mysqli_query($dbc, $query);
//echo all ads
while ($row = mysqli_fetch_array($data)) {
echo '<p>' . '<a href="offers.php?id=' . $row['id'] . '">' . $row['ad_name'] . '</a>' . '<br>' . $row['ad_desc'] . '</p>';
}
}
mysqli_close($dbc);
?>
enter code here