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

php - ankieta na najladniejsze imie

0 głosów
99 wizyt
pytanie zadane 2 marca 2021 w PHP przez domkub12 Początkujący (480 p.)
<?php
session_start();
$imie = $_GET['imie'];


	setcookie($imie, '1', time() + 3); // 86400 = 1 day	
	

		
?>

<!DOCTYPE HTML>
<html lang = "pl">
<head>
<meta charset = "utf-8"/>
</head>
<header>
<?php
			echo "<h1>Witaj w głosowaniu: $imie</h1> ";
?>
</header>
<body>
<main>
 
     <form method="post">
            
            <label for="pierwsza"> Twoja odpowiedź: </label>
            <input type="text" size="10" id="text" name="text">
            </br></br>
            <input type="submit" id="przeslij" name="przeslij" value="Sprawdź"/>
			<?php 			
			echo '<br><a href="usun.php">Wyloguj</a>';
			?>
</br></br>


<?php
		if(isset($_POST['text'])){
			$text = $_POST['text'];}
                 
        if(isSet($_COOKIE)){
                if(count($_COOKIE)==1) {
                        echo("</br>");
                        $plik =  fopen('plik1.txt','a+');
                        fwrite($plik, $text);
                        fwrite($plik, ", ");
                        readfile('plik1.txt');  
                        fclose($plik);
                }else{
                        print("Oddałeś już głos!");
                        print("Cookies are disabled.");
                        session_destroy();
                }
       
        }else{
                print("sesja skończona");
                session_destroy();
        }
?>

Mam problem ze cały czas pokazuje mi ze uzytkownik oddal juz gos. Staralem sie zrobic program w ktorym uzytkownik moze oddac głos tylko 1 raz + brakuje mi skryptu na wyrzucenie z sessji kiedy uzytkownik nie jest aktywny , z gory dziekuje za kazda pomoc

komentarz 2 marca 2021 przez Michał Kazula Pasjonat (19,300 p.)
Moim zdaniem logika PHP jest w złym miejscu. Przeżyć ją wyżej przed HTML.

Po drugie pewny jesteś że session_destroy usuwa twój cookies?

Po trzecie staramy się nie mieszać kodu PHP i HTML

1 odpowiedź

0 głosów
odpowiedź 3 marca 2021 przez niezalogowany
edycja 3 marca 2021

Funkcja session_destroy() niszczy aktualną sesję a do przechowywania odpowiedzi używasz cookie. Żeby wyczyścić cookie możesz użyć setcookie($imie, null, 1).

pozatym:

Znacznik <br> jest nieparzysty (nie ma otwarcia i zamknięcia) czyli powinno być <br> lub <br /> zamiast </br>

Zamiast

echo "<h1>Witaj w głosowaniu: $imie</h1> ";

jeżeli do h1 doszły by jakieś atrybuty było by coraz mniej czytelne. Można użyć na przykład:

<h1>Witaj w głosowaniu: <?= $imie ?></h1> 

jeżeli używasz cookie a nie sesi to nie ma potrzeby iniciowania sesi (session_start())

Podobne pytania

+1 głos
1 odpowiedź 78 wizyt
pytanie zadane 9 maja 2021 w PHP przez Filipczak Gaduła (3,690 p.)
0 głosów
0 odpowiedzi 92 wizyt
pytanie zadane 27 stycznia 2020 w PHP przez veryape Użytkownik (580 p.)
0 głosów
1 odpowiedź 479 wizyt
pytanie zadane 4 listopada 2019 w PHP przez jared Gaduła (3,620 p.)

88,328 zapytań

136,921 odpowiedzi

305,575 komentarzy

58,599 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...