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

jak sprawić by strona był dostępna po zalogowaniu w php?

0 głosów
450 wizyt
pytanie zadane 26 stycznia 2019 w PHP przez zxcc Nowicjusz (160 p.)

Witam. Na wstępie zaznaczę, że wiem o istnieniu kilku pytań na innych forach, ale żadne mi nie pomogły. To samo z yt.

Mam trzy pliki, które chcę połączyć by jedno było do zalogowania (i jest) i drugie by było dostępne po zalogowaniu. Kombinowałem i zawsze zostawałem na logowaniu. Nawet jak odpalałem ten drugi plik, to wracałem do logowania. To trzecie jet do usuwania session. I tak, korzystam z metody session.

o to co mam:

login.php

<html lang = "en">
   
   <head>
      <title>Tutorialspoint.com</title>
      <link href = "css/bootstrap.min.css" rel = "stylesheet">
      
      <style>
         body {
            padding-top: 40px;
            padding-bottom: 40px;
            background-color: #ADABAB;
         }
         
         .form-signin {
            max-width: 330px;
            padding: 15px;
            margin: 0 auto;
            color: #017572;
         }
         
         .form-signin .form-signin-heading,
         .form-signin .checkbox {
            margin-bottom: 10px;
         }
         
         .form-signin .checkbox {
            font-weight: normal;
         }
         
         .form-signin .form-control {
            position: relative;
            height: auto;
            -webkit-box-sizing: border-box;
            -moz-box-sizing: border-box;
            box-sizing: border-box;
            padding: 10px;
            font-size: 16px;
         }
         
         .form-signin .form-control:focus {
            z-index: 2;
         }
         
         .form-signin input[type="email"] {
            margin-bottom: -1px;
            border-bottom-right-radius: 0;
            border-bottom-left-radius: 0;
            border-color:#017572;
         }
         
         .form-signin input[type="password"] {
            margin-bottom: 10px;
            border-top-left-radius: 0;
            border-top-right-radius: 0;
            border-color:#017572;
         }
         
         h2{
            text-align: center;
            color: #017572;
         }
      </style>
      
   </head>
	
   <body>
      
      <h2>Enter Username and Password</h2> 
      <div class = "container form-signin">
         
         <?php

            $msg = '';
            
            if (isset($_POST['login']) && !empty($_POST['username']) 
               && !empty($_POST['password'])) {
				
               if ($_POST['username'] == 'tutorialspoint' && 
                  $_POST['password'] == '1234') {
                  $_SESSION['valid'] = true;
                  $_SESSION['timeout'] = time();
                  $_SESSION['username'] = 'tutorialspoint';
                  
                  header("location: form.php");
                  exit;
               }else {
                  $msg = 'Wrong username or password';
               }
            }
         ?>
      </div> <!-- /container -->
      
      <div class = "container">
      
         <form class = "form-signin" role = "form" 
            action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']); 
            ?>" method = "post">
            <h4 class = "form-signin-heading"><?php echo $msg; ?></h4>
            <input type = "text" class = "form-control" 
               name = "username" placeholder = "username = tutorialspoint" 
               required autofocus></br>
            <input type = "password" class = "form-control"
               name = "password" placeholder = "password = 1234" required>
            <button class = "btn btn-lg btn-primary btn-block" type = "submit" 
               name = "login">Login</button>

         </form>
			
         Click here to clean <a href = "logout.php" tite = "Logout">Session.
         
      </div> 
      
   </body>
</html>

drugie to form.php

<?php
    session_start();
    if(!isset($_SESSION['username'])) {
    die("Please login");
}

?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
<title>Formularze</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>
<body style="background-color: blue; color: white">



    
<form action="formularz.php" method="get">
Dodaj nazwisko: <input type = "text" name="zmienna1"><br>
Dodaj imie: <input type = "text" name="zmienna2"><br>
Dodaj telefon: <input type = "text" name="zmienna3"><br>
Dodaj miasto: <input type = "text" name="zmienna4"><br>
<input type = "submit" Value="send">
</form>
    
    <?php
    
if (isset($_GET['zmienna1']) && isset($_GET['zmienna2']) && isset($_GET['zmienna3']) && isset($_GET['zmienna4']) ) {
$servername = "localhost";
$username = "root";
$password = "vertrigo";
$dbname = "cw";
$przechwycona_zmianna1=$_GET['zmienna1'];
$przechwycona_zmianna2=$_GET['zmienna2'];
$przechwycona_zmianna3=$_GET['zmienna3'];
$przechwycona_zmianna4=$_GET['zmienna4'];


$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO book (surname, name, phone, city) VALUES ('$przechwycona_zmianna1', '$przechwycona_zmianna2', '$przechwycona_zmianna3', '$przechwycona_zmianna4') ";

if ($conn->query($sql) === TRUE) {
    echo "Wstawiono.";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close(); 
header('Location: formularz.php');
 }
?>
    
    <?php
$servername = "localhost";
$username = "root";
$password = "vertrigo";
$dbname = "cw";


$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, surname, name, phone, cityFROM book";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - surname: " . $row["surname"]. " name: " . $row["name"]. " phone:" . $row["phone"]. " city:". $row["city"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>


</body>
</html>

Na internecie podają właśnie taką metodę z "session start()" i pod tym m.in. "if(!isset($_SESSION['username']))", ale to nic nie daje. 

O co w tym chodzi?

1 odpowiedź

0 głosów
odpowiedź 26 stycznia 2019 przez niezalogowany

Nie ma mowy, żeby nie działało. Musiałeś coś pokopać w warunkami. Pamiętałeś o wystartowaniu sesji na każdej ze stron używających zmiennych sesyjnych?

Obejrzyj odcinek 2 programowania w PHP autorstwa MZ: tutaj

komentarz 26 stycznia 2019 przez zxcc Nowicjusz (160 p.)
nic nie zieniałem prócz tego konkretnego session tzn. to z form.php.

Niby nie ma mowy, a jednak nie działa.
komentarz 26 stycznia 2019 przez zxcc Nowicjusz (160 p.)

Teraz zrobiłem tak:

<?php
// Initialize the session
session_start();
 
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["username"]) || $_SESSION["username"] !== true){
    header("location: login.php");
    exit;
}
?>

i nadal nie działa. wtf?

komentarz 26 stycznia 2019 przez zxcc Nowicjusz (160 p.)
edycja 26 stycznia 2019 przez zxcc
ten odcienk pana zelanta jest o współpracy z mysql. Mam juz logowanie z sql i tam wszystko dziala. Teraz muszę zrobić na SAMYM session, czyli bez udziału bazy danych.

tfu, inaczej. Bez bazy w sensie, że nie utworzyłem tabeli dla logowania. W form sql jest, bo to dla czego innego.

Podobne pytania

0 głosów
2 odpowiedzi 558 wizyt
+1 głos
2 odpowiedzi 747 wizyt
0 głosów
2 odpowiedzi 1,936 wizyt

93,604 zapytań

142,526 odpowiedzi

322,991 komentarzy

63,088 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

Kursy INF.02 i INF.03
...