• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

php nie działający submit

VPS Starter Arubacloud
0 głosów
2,439 wizyt
pytanie zadane 19 lutego 2017 w PHP przez koczo21 Początkujący (450 p.)

Cześć,

Mam problem z "submitem" w PHP. Po wciśnięciu nie wywołuje się żadna akcja.

<?php
	
	echo '<input type = "submit" name="submit" value="wróć do logowania" />';
	if(isset($S_POST['submit']))
	{
		echo 'sukces';
		//unset($_SESSION['zalogowanyadmin']);
		//header ('adminz.php');
	}
	else
	{
	echo "blad";	
	}	
?>

Nie do końca chyba też rozumiem funkcjonowanie takiego przycisku. Czemu ma w takim przypadku służyć "else"? Przecież nie da się "nie kliknąć" przycisku. U mnie cały czas wyświetla komunikat "blad", kliknięcie submita nie wywołuje żadnej reakcji. Dodam, że jestem początkujący i proszę o wyrozumiałość :) będę bardzo wdzięczny za pomoc.

5 odpowiedzi

+2 głosów
odpowiedź 19 lutego 2017 przez TheBan Obywatel (1,400 p.)
edycja 19 lutego 2017 przez TheBan

Nie pisze się:

$S_POST['submit']

tylko

 $_POST['submit']

DODATKOWO musisz dać form,aby wysłać żądanie :)

0 głosów
odpowiedź 19 lutego 2017 przez misiek.sz Bywalec (2,050 p.)

wyświetla komunikat "błąd" bo wykonuje sie blok else bo zmienne super globalne jak kolega wyżej zauważył pisze sie $_POST, $_GET bez żadnych znaków dodatkowych, po za tym nie wiem czy ten kod, który dałeś to cały kod jeśli tak to żeby zainstniała jakakolwiek akcja to trzeba dać:

<form method="POST" action="">
<input type="submit" name="submit" value="Zaloguj">
</form>

 

0 głosów
odpowiedź 20 lutego 2017 przez Wilczu Mądrala (5,190 p.)

Cześć

wyświetla się "błąd" ponieważ zmienna $_POST['submit'] nie jest ustawiona 

ok a wracając do problemu napisałem tutaj prosty kod na szybko sprawdzałem działa

<?php


    echo '<form method="POST">
            <input type="submit" value="wyloguj sie !" name="submit" />
          </form>';

    if(isset($_POST['submit']))
    {
        unset($_POST['submit']);
        header('Location: admin.php');
    }
    else
    {
        echo "Zmienna submit nie jest ustawiona !";
    }

?>

nie dałem tutaj action bo sprawdzanie if odbywa się w tym samym dokumencie 

Pozdrawiam

komentarz 20 lutego 2017 przez koczo21 Początkujący (450 p.)

Dzięki za wskazówki. Wprowadziłem poprawki, ale nadal mam pewien problem. Całość kodu wygląda tak: 


<form action="adminz.php"><input type = "submit"  value="wróć do logowania" /></form>

	<br /><br />
	<form method="POST">
	<input type = "submit" name="submit" value="wróć do strony głównej" />
	</form>
	<?php
	if(isset($_POST['submit']))
	{
		unset($_SESSION['zalogowanyadmin']);
		header ('Location: index.php');
	}
	?>

Jak widać są dwa przyciski. Pierwszy przekierowuje mnie do adminz.php i tu wszystko działa. Drugi ma mnie przekierować do index.php, z tym że aby tak się stało musi być nie ustawiona zmienna $_SESSION['zalogowanyadmin']. W przeciwnym razie z automatu przekieruje do aminz.php(w index.php jest warunek, że jeśli jest ustawiona zmienna $_SESSION['zalogowanyadmin'] to przekieruj do adminz.php). W instrukcji if dałem warunek, że jeśli naciśniemy submit to "wyłączamy" $_SESSION['zalogowanyadmin'] i przekierowujemy do index.php. Problem w tym, że mimo to dalej przekierowuje do adminz.php zamiast do index.php. Żeby było ciekawiej to nawet w przypadku takiego kodu:

<form method="POST">
	<input type = "submit" name="submit" value="wróć do strony głównej" />
	</form>
	<?php
	if(isset($_POST['submit']))
	{
	echo "test";
	}
	?>

 nie wiedzieć czemu dalej przekierowuje mnie do adminz.php

0 głosów
odpowiedź 20 lutego 2017 przez koczo21 Początkujący (450 p.)

Daje jeszcze raz odpowiedź pod głównym wątkiem, bo skomentowałem tylko jeden z komentarzy:

 

Dzięki za wskazówki. Wprowadziłem poprawki, ale nadal mam pewien problem. Całość kodu wygląda tak: 

<form action="adminz.php"><input type = "submit"  value="wróć do logowania" /></form>
 
    <br /><br />
    <form method="POST">
    <input type = "submit" name="submit" value="wróć do strony głównej" />
    </form>
    <?php
    if(isset($_POST['submit']))
    {
        unset($_SESSION['zalogowanyadmin']);
        header ('Location: index.php');
    }
    ?>

Jak widać są dwa przyciski. Pierwszy przekierowuje mnie do adminz.php i tu wszystko działa. Drugi ma mnie przekierować do index.php, z tym że aby tak się stało musi być nie ustawiona zmienna $_SESSION['zalogowanyadmin']. W przeciwnym razie z automatu przekieruje do aminz.php(w index.php jest warunek, że jeśli jest ustawiona zmienna $_SESSION['zalogowanyadmin'] to przekieruj do adminz.php). W instrukcji if dałem warunek, że jeśli naciśniemy submit to "wyłączamy" $_SESSION['zalogowanyadmin'] i przekierowujemy do index.php. Problem w tym, że mimo to dalej przekierowuje do adminz.php zamiast do index.php. Żeby było ciekawiej to nawet w przypadku takiego kodu:


<form method="POST">
    <input type = "submit" name="submit" value="wróć do strony głównej" />
    </form>
    <?php
    if(isset($_POST['submit']))
    {
    echo "test";
    }
    ?>

nie wiedzieć czemu dalej przekierowuje mnie do adminz.php

komentarz 20 lutego 2017 przez dev Nowicjusz (180 p.)

To co najprostsze jest najtrudniejsze :D

w pliku index.php

if(isset($_SESSION['zalogowanyadmin'])) {
 header('Location: ./adminz.php');
 exit; // bezsens dalej ładować kod ;)
 }

a w pliku adminz.php

if(!isset($_SESSION['zalogowanyadmin'])) {
 header('Location: ./index.php');
 exit; // bezsens dalej ładować kod ;)
 }
komentarz 20 lutego 2017 przez koczo21 Początkujący (450 p.)
dev,

Ja mam właśnie tak ustawione. Przechodząc do index.php automatycznie ląduje w adminz.php poniewać jest ustawiona zmienna $_SESSION['zalogowanyadmin']. To co chcę osiągnąć, to srobić submita(może być też przekierowania w inny sposób), który przekieruje mnie do index.php i jednocześnie wykona unset$_SESSION['zalogowanyadmin'], abym został w tym index'ie :)
komentarz 20 lutego 2017 przez dev Nowicjusz (180 p.)
Pokaż cały kod...
komentarz 20 lutego 2017 przez koczo21 Początkujący (450 p.)

To jest cały kod witamyadmin.php z którego chcę mieć możliwość przejścia do index.php i do adminz.php. W zasadzie najważniejszą część kodu już przesłałem wcześniej. Tak jak pisałem wcześniej, aby przejść do index.php musi być "wyłączona" zmienna  $_SESSION['zalogowanyadmin'], która jest domyślnie włączona

<?php
	session_start();
	
		if (!isset($_SESSION['udanarejestracjaadmin'])) 
		{
			header('Location: index.php');
			exit();
		}	
		else
		{
		unset($_SESSION['udanarejestracjaadmin']);
		}
		
		//Usuwanie zmiennych pamiętającyh wartości wpisane do wormularza
		if(isset($_SESSION['fr_imie'])) unset($_SESSION['fr_imie']);
		if(isset($_SESSION['fr_nazwisko'])) unset($_SESSION['fr_nazwisko']);
		if(isset($_SESSION['fr_login'])) unset($_SESSION['fr_login']);
		if(isset($_SESSION['fr_haslo1'])) unset($_SESSION['fr_haslo1']);
		if(isset($_SESSION['fr_haslo2'])) unset($_SESSION['fr_haslo2']);
		
		
		//Usuwanie błędów rejestracji
		if(isset($_SESSION['e_imie'])) unset($_SESSION['e_imie']);
		if(isset($_SESSION['e_nazwisko'])) unset($_SESSION['e_nazwisko']);
		if(isset($_SESSION['e_login'])) unset($_SESSION['e_login']);
		if(isset($_SESSION['e_haslo1'])) unset($_SESSION['e_haslo1']);
		
		
?>



<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset ="utf-8" />
	<title>Sklep internetowy</title>
	<meta name="description" content="Sklep internetowy oferujący media w formacie cyfrowym" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
</head>
	
<body>
	<form action="adminz.php"><input type = "submit"  value="wróć do logowania" /></form>

	<br /><br />
	<form method="POST">
	<input type = "submit" name="submit" value="wróć do strony głównej" />
	</form>
	<?php
	if(isset($_POST['submit']))
	{
		unset($_SESSION['zalogowanyadmin']);
		header ('Location: index.php');
	}
	?>

 

0 głosów
odpowiedź 21 lutego 2017 przez koczo21 Początkujący (450 p.)
Dzisiaj ponownie zacząłem walczyć i z przyzwyczajenia spróbowałem na aktualnym kodzie i okazało się, że działa jak należy o.O Nie wiem dlaczego tak się dzieje, ale wygląda na to, że  czasami przeglądarka buforuje jakieś stare dane i ignoruje zmiany w kodzie. Tak czy siak to wasze wskazówki okazały się pomocne i udało się zrobić to co zamierzałem :)

Podobne pytania

0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 10 czerwca 2017 w Nasze projekty przez xxxxxx Nowicjusz (180 p.)
0 głosów
1 odpowiedź 428 wizyt
pytanie zadane 10 czerwca 2017 w Nasze projekty przez xxxxxx Nowicjusz (180 p.)
0 głosów
1 odpowiedź 602 wizyt

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...