[risolto][php] Header location redirect errato

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
minat09
Prode Principiante
Messaggi: 87
Iscrizione: domenica 12 maggio 2013, 11:32

[risolto][php] Header location redirect errato

Messaggio da minat09 »

Sto cercando di realizzare una sessione di login. Il file login.php si trova all'interno di una cartella, mentre le altre (tra cui quella dove dev'essere fatto il redirect) si trovano nella parent folder. Aprendo direttamente il file login.php il redirect funziona correttamente. Accedendo però dal sito il redirect viene effettuato ma si rimane sempre sul file login.php senza poter muoversi ulteriormente (visto che le altre pagine non si trovano nella stessa cartella).

Codice: Seleziona tutto

<?php

include("dbconnection");

 $email = mysql_real_escape_string($_POST['email']);
 $password = mysql_real_escape_string($_POST['password']);

 $ris_news= mysql_query("SELECT * FROM user,contact_info WHERE contact_info.data = '$email' AND user.password = '$password'");


    if (mysql_num_rows($ris_news) == 1) {
    // Set username session variable
    $_SESSION['email'] = $email;

    // Jump to secured page
     header('Location: ../logsucc.html');
    }
    else {
    // Jump to login page
    header('Location: ../logwr.html');
    }
    mysqli_close($db);
    ?>
Ultima modifica di minat09 il lunedì 22 gennaio 2018, 22:55, modificato 1 volta in totale.
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: [php] Header location redirect errato

Messaggio da Eresia »

Codice: Seleziona tutto

<?php
function loggedIn()
{
   if (!isset($_SESSION["loggedField"]))
   {
       header("Location: login.php");
       exit;
   }
}
richiami la funzione in tutte le pagine dove devi essere loggato, esclusa la pagina login

qui un tutorial completo: https://www.formget.com/login-form-in-php/
emerge --auD --oneshot life/lucky-*
minat09
Prode Principiante
Messaggi: 87
Iscrizione: domenica 12 maggio 2013, 11:32

Re: [php] Header location redirect errato

Messaggio da minat09 »

Eresia [url=https://forum.ubuntu-it.org/viewtopic.php?p=5036469#p5036469][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:

Codice: Seleziona tutto

<?php
function loggedIn()
{
   if (!isset($_SESSION["loggedField"]))
   {
       header("Location: login.php");
       exit;
   }
}
richiami la funzione in tutte le pagine dove devi essere loggato, esclusa la pagina login

qui un tutorial completo: https://www.formget.com/login-form-in-php/
ho seguito passo passo la guida. Ora non è più una questione di redirect sbagliato, semplicemente rimane sempre nella pagina index.php (sarebbe la pagina di login) sia se le credenziale sono esatte, sia se non lo sono.

index.php

Codice: Seleziona tutto

<?php
include('http://localhost/parents/prg/login.php'); // Includes Login Script

if(isset($_SESSION['login_user'])){
	header("location: http://localhost/parents/1.php");
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
        
    
<link rel="stylesheet" href="css/my.css" /> 
<link rel="stylesheet" href="css/jquery.mobile.icons-1.4.5.min.css" />    	
<link rel="stylesheet" href="css/jquery.mobile.structure-1.4.5.min.css" />	


<style type="text/css">
/* delete dot for ul and li */
ul { list-style: none; }
li { list-style: none; }

/* Setting hight for header and footer*/
.ui-header-fixed {height:50px} 
.ui-footer-fixed {height:60px} /*Important*/
body {
  margin: 0;
  background-color: #f1f1f1;
}

#navbar {
  background-color: #333;
  position: fixed;
  top: -50px;
  width: 100%;
  display:block;
  transition: top 0.3s;
}

#navbar a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 15px;
  text-decoration: none;
  font-size: 17px;
}

#navbar a:hover {
  background-color: #ddd;
  color: black;
}

nav ul{overflow:hidden; overflow-y:scroll;}
ul { display: inline-block; }

</style>

<script src="js/jquery-1.11.3.min.js"></script> 
<script src="js/jquery.mobile-1.4.5.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <meta name="msapplication-tap-highlight" content="no" />
        <title>Inserimento</title>
		
		
        
<script>



  </script>        
        
       
    </head>

<body>

<div data-role="page" id="page1" >
        <div id="header" data-role="header" data-position="fixed" data-theme="a" data-tap-toggle="false"> 
            
        </div><!-- /header -->


    	<div data-role="content">


<form action="" method="post">



<input type="text"  tabindex="1" placeholder="Email" required="required" id ="email" name="email" autocomplete="off"></input>
<br>								
			
<input type="password"  tabindex="1" placeholder="Password" required="required" id ="password" name="password" autocomplete="off"></input
	
<br>				
<br>				



						 <button type="submit">Accedi</button>
						

</form>

<div id="risultato"></div>

		</div>
		
    <div data-role="footer" data-theme="a" data-position="fixed" data-id="footer" data-tap-toggle="false"> 
      <div data-role="navbar" data-theme="b">
                <ul>
                    <li><a href="index.php" data-icon="home" data-iconpos="top" class="ui-btn-active ui-state-persist" data-ajax="false">Home</a></li>
					<li><a onclick="window.location.reload();" data-icon="refresh" data-iconpos="top" class="ui-btn-active ui-state-persist"  >Refresh</a></li>
                    
                </ul>
            </div><!-- /navbar -->
    </div>
  </div>

    
	<script>

  </script>  
</body>
</html>
login.php

Codice: Seleziona tutto

<?php
session_start(); // Starting Session
if (isset($_POST['submit'])) 
{
	if (empty($_POST['email']) || empty($_POST['password'])) 
	{
		echo 'Email or Password is invalid';
	}
	else
	{
		// Establishing Connection with Server by passing server_name, user_id and password as a parameter
		$connection = mysqli_connect("localhost","root","","miodb") or die("Errore " . mysqli_error($connection));
		$email = mysqli_real_escape_string($connection, $_POST['email']);
		$password = mysqli_real_escape_string($connection, $_POST['password']);
		// Selecting Database
		$db_select = mysqli_select_db($connection, "miodb");
		if (!$db_select) {
			die("Database selection failed: " . mysqli_error());
		}	
		// SQL query to fetch information of registerd users and finds user match.
		$query = mysqli_query($connection, "SELECT * FROM user,contact_info WHERE contact_info.data = '$email' AND user.password = '$password'");
		//if query doesn't works
		if (!$query) 
		{
		  //error message
		  exit ('<p> Error with data' . mysqli_error() . '</p>');

		}
		else
		{
		  echo 'Successful!';
		}
		$rows = mysqli_num_rows($query);
		if ($rows == 1) {
			$_SESSION['login_user']=$email; // Initializing Session
		header("location: http://localhost/parents/1.php"); // Redirecting To Other Page
		} else 
		{
			echo 'Email or Password is invalid';
		}
		mysqli_close($connection); // Closing Connection
	}
}
?>
session.php

Codice: Seleziona tutto

<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "miodb";
// 1. Create a database connection
$connection = mysqli_connect($host,$username,$password);
if (!$connection) {
    die("Database connection failed: " . mysqli_error());
}

// 2. Select a database to use 
$db_select = mysqli_select_db($connection, $database);
if (!$db_select) {
    die("Database selection failed: " . mysqli_error());
}
session_start();// Starting Session
// Storing Session
$user_check=$_SESSION['login_user'];
// SQL Query To Fetch Complete Information Of User
$ses_sql=mysqli_query($connection, "select data from contact_info where data='$user_check'");
$row = mysqli_fetch_assoc($ses_sql);
$login_session =$row['data'];
if(!isset($login_session)){
	mysqli_close($connection); // Closing Connection
	header('Location: http://localhost/parents/index.php'); // Redirecting To Home Page
}
?>
in 1.php ho semplicemente aggiunto

Codice: Seleziona tutto

<?php
include('http://localhost/parents/prg/session.php');
?>
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: [php] Header location redirect errato

Messaggio da Eresia »

Tieni conto di un database di nome "test_login" e le tabelle "id", "password" e "user_name" quanto segue è un modello di login funzionante. Prova a confrontarlo con il tuo script

Codice: Seleziona tutto

<?php
session_start();

$conn = mysqli_connect("localhost","root","","test_login");
	
$message="";

if(!empty($_POST["login"])) {
	$result = mysqli_query($conn,"SELECT * FROM users WHERE user_name='" . $_POST["user_name"] . "' and password = '". $_POST["password"]."'");
	$row  = mysqli_fetch_array($result);
	if(is_array($row)) {
		$_SESSION["id"] = $row['id']; // fai  il redirect qui 
	} else {
		$message = "Password o Username errati!";
	}
}

if(!empty($_POST["logout"])) {
	$_SESSION["id"] = "";
	session_destroy();
}

?>
<html>
	<head>
		<title>login</title>
	</head>
	<body>
		<div>
			<div>
			<?php if(empty($_SESSION["id"])) { // controlla bene questa riga di codice ?>
				<form action="" method="post" id="frmLogin">
					<div class="error-message"><?php if(isset($message)) { echo $message; } ?></div>	
					<div class="field-group">
						<div><label for="login">Username</label></div>
						<div><input name="user_name" type="text" class="input-field"></div>
					</div>
					<div class="field-group">
						<div><label for="password">Password</label></div>
						<div><input name="password" type="password" class="input-field"> </div>
					</div>
					<div class="field-group">
						<div><input type="submit" name="login" value="Login" class="form-submit-button"></span></div>
					</div>       
				</form>
				<?php 
				} else { 
					$result = mysqlI_query($conn,"SELECT * FROM users WHERE id='" . $_SESSION["id"] . "'");
					$row  = mysqli_fetch_array($result);
				?>
				<form action="" method="post" id="frmLogout">
				<div class="member-dashboard">Ciao <?php echo ucwords($row['user_name']); ?>, login effettuato con successo<br>
				Esegui il<input type="submit" name="logout" value="Logout" class="logout-button">.</div>
				</form>
			</div>
		</div>
	<?php } ?>
	</body>
</html>
emerge --auD --oneshot life/lucky-*
minat09
Prode Principiante
Messaggi: 87
Iscrizione: domenica 12 maggio 2013, 11:32

Re: [php] Header location redirect errato

Messaggio da minat09 »

il codice funziona e ti ringrazio, però è davvero troppo confuso. Preferirei mischiare il meno possibile html e php
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: [php] Header location redirect errato

Messaggio da Eresia »

per comodita' ho messo tutto in pagina singola, funziona anche con l'include di php se lo dividi, ricorda la variabile SESSION
emerge --auD --oneshot life/lucky-*
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti