Wątek przeniesiony 2014-07-13 17:42 z PHP przez dzek69.

Undefinided index - podstawy tworzenia sesji

0

Witajcie cwicze sobie php , jestem praktycznie nowicjuszem, mam taki problem:

w lini 62 i 63

($login=filter_var($_POST['login'],FILTER_SANITIZE_STRING);
		    $haslo=filter_var($_POST['haslo'],FILTER_SANITIZE_STRING);

wyskakuje mi undefinided index. a dzieje sie tak w tym momencie kiedy probuje wpisac linie

 if((!empty($_POST['login'])    and !empty($_POST['haslo'])) or $_SESSION['zalogowany'] == 1)

(a dokladniej od 'or' do "1)")
jednak nie wiem w czym tkwi problem, prosze o pomoc i wyrozumialosc pozdrawiam :)

<?php 

session_start();

?>



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>oskar</title>
		<meta name="author" content="Oscar" />
		<!-- Date: 2014-06-16 -->
	</head>
	<body>

<form action="" enctype="multipart/form-data" method="post">
	
 	Login:<input type="text" name="login" value="">
	Haslo:<input type="password" name="haslo" value="">
	<input type="submit"  value="Wyslij">

</form>


<?php	
	
	/* Sesja czy zalogowany */
	
	if ((isset($_POST['login']) and isset($_POST['haslo'])) or $_SESSION['zalogowany'] == 1){

		if((!empty($_POST['login'])    and !empty($_POST['haslo'])) or $_SESSION['zalogowany'] == 1){

			$login=filter_var($_POST['login'],FILTER_SANITIZE_STRING);
		    $haslo=filter_var($_POST['haslo'],FILTER_SANITIZE_STRING);
	
		if(($login=="dissio"and $haslo=="abc" or $_SESSION['zalogowany'] == 1))
		
		{
			echo "zalogowales sie!";
			$_SESSION['zalogowany'] = 1;
		}
		else {
		echo "bledny login lub haslo".""."sprobuj ponownie <a href=sesje2.php> tutaj </a>";
			
		}
		}

		else{
			echo "nie podales loginu lub hasla!";
		}
	} 

?>

usunięcie pustych przestrzeni z kodu i dodanie znacznika <code class="html">- furious programming

1

isset($_SESSION['zalogowany'])?

0

nie pomogło :/

0

Wrzuć zmodyfikowany kod.

0
<?php 

session_start();

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>oskar</title>
		<meta name="author" content="Oscar" />
		<!-- Date: 2014-06-16 -->
	</head>
	<body>

<form action="sesje2.php" enctype="multipart/form-data" method="post">
	
 	Login:<input type="text" name="login" value="">
	Haslo:<input type="password" name="haslo" value="">
	<input type="submit"  value="Wyslij">

</form>


<?php	
	
	/* Sesja czy zalogowany */
	
	if ((isset($_POST['login']) && isset($_POST['haslo'])) ||  isset($_SESSION['zalogowany'])){
		
		
		/* Sesja czy zalogowany */
		
		if((!empty($_POST['login']) && !empty($_POST['haslo'])) || isset($_SESSION['zalogowany'])){

			$login=filter_var($_POST['login'],FILTER_SANITIZE_STRING);
		    $haslo=filter_var($_POST['haslo'],FILTER_SANITIZE_STRING);
			
	 /* Sesja czy zalogowany */
		if(($login=="dissio" && $haslo=="abc") || isset($_SESSION['zalogowany']))
		{
			echo "zalogowales sie!";
			$_SESSION['zalogowany'] = 1;
		}
		else {
		echo "bledny login lub haslo".""."sprobuj ponownie <a href=sesje2.php> tutaj </a>";
		}
		}
		else{
			echo "nie podales loginu lub hasla!";
		}
	   } 
?>

usunięcie pustych przestrzeni z kodu - furious programming

0

Jeżeli $_SESSION['zalogowany'] będzie istnieć, błąd wystąpi tutaj:

$login=filter_var($_POST['login'],FILTER_SANITIZE_STRING);
$haslo=filter_var($_POST['haslo'],FILTER_SANITIZE_STRING);

Ponieważ $_POST['login'] i $_POST['haslo'] nie będą istnieć (w warunkach wyżej masz, że albo istnieją, albo użytkownik jest zalogowany -> czyli gdy jest już zalogowany, otrzymasz właśnie undefined index w tym miejscu - chyba że formularz został wysłany, ale zakładamy, że tak nie jest, ponieważ nie musi).

0

w takim razie jak to naprawic? da sie cokolwiek zrobic oprocz calkowitej modyfikacji kodu? blad wyskakuje po odswiezaniu rowniez.

0
if (isset($_SESSION["zalogowany"]))
{
 // jakiś redirect
} else

if (isset($_POST["login"]) && isset($_POST["haslo"]))
{
 // reszta kodu
}

Ale to co tworzysz to jakiś potworek i najchętniej wyrzuciłbym to do kosza (caaaały kod, a nie tylko ten konkretny plik) i napisał od nowa, obiektowo, szablonowo (...).

Lekturka: http://ferrante.pl/frontend/php/mamo-umiem-php/

0

wiem. na razie to parodia, ale jestem dobrej mysli :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1