zeusik86
29.10.2017, 11:22:53
Witam otóż mam taki problem mam stronę która zabezpieczona jest sesją dostęp do niej jest po zalogowaniu. Na tej stronie można dodać dane do bazy które wyświetlane są na innych stronach. Problem mam z obrazkiem echo "<img src=http://localhost/domix/upload/$obrazek></img>"; gdy go napiszę na tej stronie co dostępna jest po zalogowaniu to wyświetla mi się komunikat: "Undefined variable: obrazek in C:\xampp\htdocs\domix\chata.php on line 27"
Chciałbym żeby ten obrazek był wyświetlany na tej stronie co dostępna jest po zalogowaniu.
Jak takie coś można zrobić?
pozdrawiam
Neutral
29.10.2017, 11:30:35
Czy mógłbyś podać trochę kodu? Ponieważ nie wiem, o co chodzi. Gdy się zalogujesz ustawiasz sesję tak? I później chcesz wyświetlić obrazek, więc w czym problem? Wystarczy tylko if'a napisać. Jeśli jesteś zalogowany to pokaż obrazek. Bez kodu trudno cokolwiek wywnioskować (o czym), co autor miał na myśli.
zeusik86
29.10.2017, 11:38:38
Oto kod:
<?php
echo "<p>Witaj ".$_SESSION['email'].'! [ <a href="logout.php">Wyloguj się!</a> ]</p>';
echo "<img src=http://localhost/domix/upload/$obrazek></img>"; .$_SESSION['obrazek'];
?>
Neutral
29.10.2017, 11:42:03
Po co Ci zmienna $_SESSION['obrazek'] i co ona ma robić?
A jeśli już to powinno być raczej tak:
echo "<img src=http://localhost/domix/upload/$obrazek></img>".$_SESSION['obrazek'];
zeusik86
29.10.2017, 12:00:57
Może nie zrozumiale powiedziałem na moim serwisie każdy może dodać obrazek po zalogowaniu który od razu wyświetlany jest na stronie głównej problem mam w tym gdy chcę by obrazek był wyświetlany na stronie użytkownika to wyświetla się komunikat: Notice: Undefined variable: obrazek in C:\xampp\htdocs\domix\chata.php on line 27
Neutral
29.10.2017, 12:22:53
To dlaczego chcesz użyć zmiennej, która jest niezdefiniowana? Ustaw jakiś isset, empty, czy coś i powinno hulać. Dla każdego zalogowanego powinna być możliwość dodawania i oglądania obrazków (image) bez dodatkowych zmiennych, po co Ty je tworzysz?
Cytat
Pisałeś na moim temacie "Sesja o obrazek" mógłbyś mi to rozpisać jak powinno coś takiego wyglądać. Ze użytkownik się loguje dodaje swoje zdjęcia a one wyświetlają się na stronie użytkownika. Zdjęcie jak wgrywam to zapisuje i jest dostępne na innych stronach a na stronie użytkownika jest problem.
Będę bardzo wdzięczny za pomoc
Przecież jeśli ktoś się loguje na swoje konto do serwisu i ma uprawnienia na upload image, to ... Nadal nie rozumiem w czym masz problem. Zmienną sesyjną chyba tworzysz dla każdego user'a, który zalogował się do serwisu, a nie tylko dla admina. Może podałbyś więcej kodu?
zeusik86
29.10.2017, 13:05:25
Oto mój kod:
<?php
session_start();
if (!isset($_SESSION['zalogowany']))
{
header('Location: index.php');
exit();
}
?>
<?php
echo "<p>Witaj ".$_SESSION['email'].'! [ <a href="logout.php">Wyloguj się!</a> ]</p>';
?>
<fieldset>
<a href="dom.php">Dodaj fotkę reklamującą</a>
</fieldset>
<form action="chata.php" method="POST">
<fieldset>
<legend>Podaj swoje dane</legend><input type="hidden" name="id" value="<?php echo $_SESSION['id'];?>" />
<p><strong>Imię</strong>: <input type="text" name="imie" size="30" maxlength="40"
style="position:absolute; left:150px; background-color:cornsilk; font-style: italic; color: gray "/></p>
<p><strong>Nazwisko</strong>: <input type="text" name="nazwisko" size="30" maxlength="40"
style="position:absolute; left:150px; background-color:cornsilk; font-style: italic; color: gray "/></p>
<p><strong>Adres zamieszkania</strong>: <input type="text" name="adres" size="50" maxlength="40"
style="position:absolute; left:150px; background-color:cornsilk; font-style: italic; color: gray "/></p>
<p><b>Data urodzenia(rok-miesiąc-dzień): <input type="date" name="data"></b></p>
<p><b>Podaj datę zakończenia zbiórki(rok-miesiąc-dzień): <input type="date" name="dates"></b></p>
</fieldset>
<fieldset>
<legend>Opisz dom swoich marzeń</legend>
<textarea name="wymarzony" cols="50" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Opisz wymarzony dom</textarea><br />
<p><strong>Podaj szacunkową cenę wymarzonego domu(w złotówkach)</strong>: <input type="text" name="cena" size="30" maxlength="40"
style="background-color:cornsilk; font-style: italic; color: gray "/></p>
</fieldset>
<fieldset>
<legend>Jakie dasz nagrody</legend>
<textarea name="zlotowka" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 1 zł?</textarea>
<textarea name="piec" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 5 zł?</textarea>
<textarea name="dziesiec" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 10 zł?</textarea>
<textarea name="piecdziesiat" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 50 zł?</textarea>
<textarea name="sto" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 100 zł?</textarea>
<textarea name="dwiescie" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 200 zł?</textarea>
<textarea name="piecset" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 500 zł?</textarea>
<textarea name="siedemset" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 700 zł?</textarea>
<textarea name="tysiak" cols="150" rows="10"style="background-color:cornsilk; font-style: italic; color: gray ">Co mi dasz jeśli obdaruje cię 1000 zł?</textarea>
<button type="submit" name="submit" class="co">Zbieram na dom</button>
<?php
$connection = @mysql_connect('localhost', 'root', '')
or die('Brak połączenia z serwerem MySQL');
$db = @mysql_select_db('test', $connection)
or die('Nie mogę połączyć się z bazą danych');
mysql_query('SET NAMES "utf8"');
if (isset($_POST['imie'])){
$id= $_POST['id'];
$imie= $_POST['imie'];
$nazwisko= $_POST['nazwisko'];
$adres= $_POST['adres'];
$data= $_POST['data'];
$dates= $_POST['dates'];
$wymarzony= $_POST['wymarzony'];
$cena= $_POST['cena'];
$zlotowka= $_POST['zlotowka'];
$piec= $_POST['piec'];
$dziesiec= $_POST['dziesiec'];
$piecdziesiat= $_POST['piecdziesiat'];
$sto= $_POST['sto'];
$dwiescie= $_POST['dwiescie'];
$piecset= $_POST['piecset'];
$siedemset= $_POST['siedemset'];
$tysiak= $_POST['tysiak'];
$obrazek = $_POST['obrazek'];
$artur = 'UPDATE do SET imie="'.$imie.'" , nazwisko="'.$nazwisko.'", adres="'.$adres.'" , data="'.$data.'" , dates="'.$dates.'" , wymarzony="'.$wymarzony.'", cena="'.$cena.'" , zlotowka="'.$zlotowka.'", piec="'.$piec.'" , dziesiec="'.$dziesiec.'" , piecdziesiat="'.$piecdziesiat.'" , sto="'.$sto.'" , dwiescie="'.$dwiescie.'",piecset="'.$piecset.'" , siedemset="'.$siedemset.'" , tysiak="'.$tysiak.'" where id = "'.$id.'"';
$ok = mysql_query($artur);
if ($ok == true) {
$_SESSION['imie'] = $imie;
$_SESSION['nazwisko'] = $nazwisko;
$_SESSION['adres'] = $adres;
$_SESSION['data'] = $data;
$_SESSION['dates'] = $dates;
$_SESSION['wyamrzony'] = $wymarzony;
$_SESSION['cena'] = $cena;
$_SESSION['zlotowka'] = $zlotowka;
$_SESSION['piec'] = $piec;
$_SESSION['dziesiec'] = $dziesiec;
$_SESSION['piecdziesiat'] = $piecdziesiat;
$_SESSION['sto'] = $sto;
$_SESSION['dwiescie'] = $dwiescie;
$_SESSION['piecset'] = $piecset;
$_SESSION['siedemset'] = $siedemset;
$_SESSION['tysiak'] = $tysiak;
$_SESSION['obrazek'] = $obrazek;
echo "<img src=http://localhost/do/upload/$obrazek></img>";
echo '<p>Opis zmieniony!</p>';
} else {echo mysql_error();}
}
?>
<fieldset>
<a href="zmiana.php">Zmień hasło</a>
</fieldset>
<fieldset>
<a href="usun.php">Usuń konto</a>
</fieldset>
<style>
body {
background-image: url(db.jpg);
background-attachment: fixed ;
}
.sub {
width: 10cm;
height: 5cm;
color: blue;
}
a { text-decoration: none; }
</style>
</body>
</html>
Taki kod w czym może być problem?
trzczy
29.10.2017, 13:35:49
Definicja zmiennej $obrazek jest tutaj
$obrazek = $_POST['obrazek'];
Zatem pytanie, czy w tablicy $_POST jest wartość dla klucza 'obrazek'.
Przed tą linią kodu wstaw tymczasowo funkcję odpowiadają na powyższe pytanie:
Ta funkcja wyświetli wartość i przerwie skrypt.
viking
29.10.2017, 13:42:28
Po pierwsze dane sesji zostaną zniszczone po wylogowaniu a nigdzie ich nie zapsiujesz w tym kodzie. Po drugie nigdzie nie sprawdzasz czy zmienna istnieje $x = isset($_POST['x']) ? $_POST['x'] : null; albo w PHP7 $x = $_POST['x'] ?? null; Po trzecie nie używaj @ do ukrywania błędów ani tym bardziej rozszerzenia mysql. Po czwarte sql injection. Po piąte. UPDATE może się wywalić jeśli pole jest puste.
zeusik86
5.11.2017, 13:34:12
Temat zamykam problem rozwiązany
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.