Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Znikające dane z formularza
Forum PHP.pl > Forum > Przedszkole
ojs
Witam serdecznie,

mam pewien problem, w php dopiero raczkuje.

Chcę sobie zrobić skrypt przez którego moi znajomi będą mogli dodawać newsy na stronę, taki CMS wersja dla ubogich tongue.gif

Po podaniu loginu i hasła będą widzieli dodatkowy element formularza "textarea" do którego będą wpisywac treść która następnie będzie dodana do pliku który będzie "includowany" do strony głównej.

Mam pewien problem już na początku, gdyż po zalogowaniu znikają wartości pól: zaloguj i hasło sad.gif

oto kod całego skryptu, gdybyście mieli jakieś uwagi to bardzo proszę, skrypt pobrałem z jakiegoś innego serwisu i go lekko przerobiłem.
Kod
<form action="logowanie.php" METHOD="post">
Login: <input type="text" name="login"><br>
haslo: <input type="password" name="haslo"><br>
<input type="submit" name="Action" value="Zaloguj sie">
</form>
<?php
session_start();
if (@$_POST['Action']=='Zaloguj sie')
  {
  $a=file('users.txt');
  foreach ($a as $key=>$value)
    {
    $value=str_replace(array("\r", "\n"), '', $value );
    list($login, $pass)=explode(',', $value);
    if ($login==$_POST['login'] AND $pass==$_POST['haslo'])
      {
      $_SESSION['logined']=true;
      break(1);
      }
    }
  }

if (@$_POST['Action']=='Wyloguj sie')
  {
  $_SESSION['logined']=false;
  }

if (@$_SESSION['logined']===true)
  {
  
   echo "<h1>Witaj ".$login."</h1>"
    ?>
   
  
<form action="logowanie.php" METHOD="post">
<textarea name="textarea" cols="120" rows="20">Wpisz Tutaj treść newsa</textarea><br>
<input type="submit" name="Action" value="Wyslij">
<input type="submit" name="Action" value="Wyloguj sie">
</form>
  <?
  }
  else
  {
  ?>
<?php
  }

?>



P.S jak zrobić aby ten kod był wyświetlany dla php na tym forum? Kliknięcie na przycisk PHP nie działa, nawet po zaznaczeniu tekstu sad.gif



Z góry dziękuję i pozdrawiam, ojs
erix
Cytat
P.S jak zrobić aby ten kod był wyświetlany dla php na tym forum? Kliknięcie na przycisk PHP nie działa, nawet po zaznaczeniu tekstu

SOA#1: dziwne, u mnie wszystko działa.

Cytat
gdyż po zalogowaniu znikają wartości pól: zaloguj i hasło

Znikają?

  1. <?php
  2. if (@$_SESSION['logined']===true)
  3.  {
  4.  
  5.  echo "<h1>Witaj ".$login."</h1>"
  6.  ?>

A skąd ma się $login wziąć? tongue.gif
ojs
Z formularza smile.gif

Wyświetla się login, ale gdy wykonam jakąś inną operację wtedy błąd jest że niema loginu.

Notice: Undefined variable: login in sciezka\logowanie.php on line 31
Fifi209
Mnie dziwi, że używasz m.in. w If'ach "@" i to nie do funkcji a do zmiennych! Usuń to z kodu i poczytaj do czego to służy.

@erix

Kod
$a=file('users.txt');
  foreach ($a as $key=>$value)
  {
  $value=str_replace(array("\r", "\n"), '', $value );
  list($login, $pass)=explode(',', $value);
  if ($login==$_POST['login'] AND $pass==$_POST['haslo'])
  {


Chyba z tego fragmentu. haha.gif

Tego if'a zamień na:
Kod
if( ($login==$_POST['login']) && ($pass==$_POST['haslo']))
ojs
Zmieniłem lecz nic nie pomogło. Błąd wywala po naciśnięciu przycisku "Wyslij", może dlatego że niemam do niego przypisanej żadnej akcji? Po jego wciśnięciu zmienna $login się czyści, tak mi się przynajmniej wydaje. Ale co zrobić żeby tak nie było?
golaod
To się zastanów. Skoro do zmiennej sesyjnej przypisujesz wartość TRUE/FALSE i ona jest widoczna przez cały czas danej sesji to zrób to samo z login i password
$_SESSION['login'] = $_POST['login']; itd
ojs
gdy wpiszę:

Kod
echo "<h1>Witaj ".$_SESSION['login']."</h1>"


nie wyświetla się nic po "Witaj"

może źle Cię zrozumiałem sad.gif
erix
Cytat
Chyba z tego fragmentu.

No właśnie. A ta zmienna istnieje tylko przy danych formularza. Przecież ją zamknąłeś w warunku. (wskazówka dla autora)

Cytat
Zmieniłem lecz nic nie pomogło. Błąd wywala po naciśnięciu przycisku "Wyslij"

Dasz mi szklaną kulę?
ojs
Przepraszam, już wyjaśniam smile.gif

zmieniłem 

Kod
if ($login==$_POST['login'] AND $pass==$_POST['haslo'])


na

Kod
if( ($login==$_POST['login']) && ($pass==$_POST['haslo']))


I nic nie pomogło.

Więc co mam dalej robić?

Z góry dziękuję smile.gif
erix
Przeczytaj, co napisałem...

Narysuj sobie na kartce wszystkie warunki między klamrami: {}, zrób z tego okręgi zamykające instrukcje. I zrozum: nie da się odwołać do zawartości innego współrzędnego okręgu. to nie obiektówka. ;p

Nie da się odwołać do czegoś, czego nie ma, czyli: jeśli nie jest spełniony warunek dla danego okręgu, to go nie ma. Z pustego nie weźmiesz. ;]
ojs
Czyli jedynym rozwiązaniem byłby zapis do pliku tymczasowego w pierwszym warunku i potem późniejszy jego odczyt? 
erix
Przecież masz sesję. [;
ojs
Cytat(erix @ 9.06.2009, 14:53:01 ) *
Przecież masz sesję. [;




No tak, ale dalej nie wiem jak z niej korzystać, wybaczcie ale jestem naprawdę początkujący sad.gif
erix
Sesja jest pod względem kodu najzwyklejszą tablicą.
ojs
Prosze nie męczcie mnie tongue.gif

Naprawde jestem zielony, jeśli byście mogli to napiszcie co mam wpisać po echo, jaką zmienną bo próbowałem na wiele sposobów, jak dałem $_SESSION['logined'] wywalił mi wartość 1, czyli true ine próby użycia $_SESSION nie przynosiły zadowalających rezultatów.

Z góry dziekuję i pozdrawiam, Piotr
slewin
A takie coś Ci działa questionmark.gif
  1. <?php
  2. ?>
  3. <form action="zaloguj.php" METHOD="post">
  4. Login: <input type="text" name="login"><br>
  5. haslo: <input type="password" name="haslo"><br>
  6. <input type="submit" name="Action" value="Zaloguj sie">
  7. </form>
  8. <?php
  9. $_SESSION['login'] = $_POST['login'];
  10. if ($_POST['Action']=='Zaloguj sie')
  11.  {
  12.  $a=file('users.txt');
  13.  foreach ($a as $key=>$value)
  14.    {
  15.    $value=str_replace(array("r", "\n"), '', $value );
  16.    list($login, $pass)=explode(',', $value);
  17.   if( ($login==$_POST['login']) && ($pass==$_POST['haslo']))
  18.      {
  19.      $_SESSION['logined']=true;
  20.      break(1);
  21.      }
  22.    }
  23.  }
  24.  
  25. if ($_POST['Action']=='Wyloguj sie')
  26.  {
  27.  $_SESSION['logined']=false;
  28.  }
  29.  
  30. if ($_SESSION['logined']===true)
  31.  {
  32. echo 'Pod linią masz napis <i>wiataj user</i> <hr>';
  33.   echo "<p>Witaj <b>{$_SESSION['login']}</b></p>";
  34. echo '<hr>Działa questionmark.gif ';
  35. echo '<br><br>';
  36.    ?>
  37.  
  38.  
  39. <form action="zaloguj.php" METHOD="post">
  40. <textarea name="textarea" cols="120" rows="20">Wpisz Tutaj treść newsa</textarea><br>
  41. <input type="submit" name="Action" value="Wyslij">
  42. <input type="submit" name="Action" value="Wyloguj sie">
  43. </form>
golaod
Wybacz, jednak jeśli masz z tym taki problem to tym bardziej gotowca nie dostaniesz którego Ci i tak dałem kilka postów temu...
google.pl: sesje php

re @up:
No brawo smile.gif Pupkę też mu zaczniesz podcierać jak powie, że nie wie jak ma to zrobić smile.gif ?

Tak przy okazji to sam błędnie to troszkę napisałeś.
$_SESSION['login'] = $_POST['login']; nawet gdy nie ma jeszce $_POST ?
slewin
ejj poprostu mam dobry humor winksmiley.jpg pozatym wszystko skopiowałem z waszych postów (magiczna opcja kopiuj wklej ) , utworzyłem plik users.txt z user,pass wrzuciłem na serwer : patrze działa to wrzucam smile.gif) niech się chłopak cieszy . laugh.gif

-------------
trzeba było innym dać że pomogli tongue.gif ja tu nic nie zrobiłem smile.gif
ojs
Poprostu źle Was zrozumiałem. Dopiero po Twoim slewin  poście z kodem zrozumiałem że sesję miałem otworzyć przed formularzem a nie za nim. Dodatkowo zaskoczeniem dla mnie było wyświetlenie {$_SESSION['login']} ale to raczej z mojej nie wiedzy smile.gif

Dodatkowo 
Kod
$_SESSION['login'] = $_POST['login'];
umieściłem po 
Kod
$value=str_replace(array("\r", "\n"), '', $value );
    list($login, $pass)=explode(',', $value);
bo inaczej wywalał błędy.

Dziękuję wszystkim i pozdrawiam, Piotr
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.