• 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?

Object Storage Arubacloud
0 głosów
219 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

+1 głos
2 odpowiedzi 462 wizyt
0 głosów
2 odpowiedzi 1,479 wizyt
0 głosów
1 odpowiedź 597 wizyt
pytanie zadane 4 stycznia 2017 w PHP przez Michał Samolewski Bywalec (2,240 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...