- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form di login non visualizzato
-
Form di login non visualizzato
Mi scuso se la discussione risulta inutile o già stata postata, ma a parer mio é un caso abbastanza particolare... e facendo una breve ricerca non ho trovato nulla (non so bene neanche cosa cercare).
Seguendo un tutorial ho creato un form login per il mio sito collegato al mio forum di phpbb...
In pratica collegandosi tramite il mio form, l'utente si collega automaticamente anche sul forum (stenno username, stessa psw, stesso database).Dopo un paio di errori tecnici riguardanti la connessione al database, ecco che la pagina non mi presenta più errori, ma non mi mostra nemmeno il form login... che separato in una pagina html funziona correttamente!!
Il codice della pagina login.php é questo:[php]
<?php
//ob
ob_start();
//session
session_start();
if (isset($SESSION['username']))
{
header("Location: main.php");
exit();
}
//connect
$error = 'Could not connect to the database';
mysql_connect('localhost','**','') or die($error);
mysql_select_db('my****') or die ($error);
//include functions.php phpbb script
require 'forum/includes/functions.php';
if ($_POST['login'])
{
//get form data
$username = addslashes(strip_tags(strtolower($_POST['username'])));
$password = addslashes(strip_tags($_POST['password']));if (!$username||!$password)
echo "Please enter a username and password<p />";
else
{
//find username
$find = mysql_query("SELECT * FROM avphpbb_users WHERE username_clean='$username'");
if (mysql_num_rows($find)==0)
echo "Username not found";
else
{
while ($find_row = mysql_fetch_assoc($find))
{
//grab password hash for user
$password_hash = $find_row['user_password'];
}$check = phpbb_check_hash($password, $password_hash);
if ($check==FALSE)
echo "Incorrect password<p />";
else if ($check==TRUE)
{
$_SESSION['username']=$username;
header("Location: main.php");
exit();
}
}
}
}
?>
<form action="login.php" method="POST">
Username:<br />
<input type="text" name="username"><p />
Password:<br />
<input type="password" name="password"><p />
<input type="submit" name"login" value="Log in">
</form>
[/php]Poi ci sono rispettivamente la pagina main.php che dovrebbe riportare, se collegato, un messaggio di benvenuto all'utente... anche in questa non si vede niente...
[php]
<?php
//ob
ob_start();
//session
session_start();
$session_username = $_SESSION['username'];
if (!isset($_SESSION_username))
{
header("Location: login.php");
exit();
}
else
{
echo "Hello, ".$session_username.". <a href='logout.php'>Log out</a>";
}?>
[/php]E una pagina di logout, logout.php:
[php]
<?php
session_start();
session_destroy();
header("Location: login.php");
?>
[/php]Ho notato che le tabelle del phpbb, su altervista, anziché chiamasri per esempio phpbb_users si chiamano avphpbb_users... è un possibile problema?
Grazie anticipatamente.
-
Ciao Marinski,
se stai provando su altervista, di default la visualizzazione degli errori è nascosta, devi abilitarla.
-
Fino ad ora si visualizzavano... ma comunque come potrei abilitarla?
-
Prova ad aggiungere in cima al file:
[php]
ini_set('error_reporting', 6143);
[/php]
Per abilitare la visualizzazione degli errori.
-
stesso risultato.... il fatto é che
<form action="login.php" method="POST">
Username:<br />
<input type="text" name="username"><p />
Password:<br />
<input type="password" name="password"><p />
<input type="submit" name"login" value="Log in">
</form>in una pagina html si visualizza, ma in login.php mi da pagina vuota...
-
C'è qualche errore di sintassi, la cosa migliore è che provi lo script in locale con il php.ini configurato in modo da mostrare tutti gli errori, notice compresi. Non è possibile controllarsi 50 righe di codice ogni volta per individuare un errore, perdi moltissimo tempo inutilmente.
-
Ok cos'é php.ini? XD scusa
devo scaricarmi qualche programma?
-
È il file di configurazione di php, devi solamente installarti un server locale, puoi usare pacchetti già completi come xampp.
-
xampp c'é l'ho già, ma non ho capito cosa dovrei fare!!! poi mi sembra inutile... il codice non é molto lungo e soprattutto é un errore talmente banale che mi sembra impossibile non trovarlo >.<
infondo l'errore sta qui:
[php]
<?php
//ob
ob_start();
//session
session_start();
if (isset($SESSION['username']))
{
header("Location: main.php");
exit();
}
//connect
$error = 'Could not connect to the database';
mysql_connect('localhost','**','') or die($error);
mysql_select_db('my****') or die ($error);
//include functions.php phpbb script
require 'forum/includes/functions.php';
if ($_POST['login'])
{
//get form data
$username = addslashes(strip_tags(strtolower($_POST['username'])));
$password = addslashes(strip_tags($_POST['password']));if (!$username||!$password)
echo "Please enter a username and password<p />";
else
{
//find username
$find = mysql_query("SELECT * FROM avphpbb_users WHERE username_clean='$username'");
if (mysql_num_rows($find)==0)
echo "Username not found";
else
{
while ($find_row = mysql_fetch_assoc($find))
{
//grab password hash for user
$password_hash = $find_row['user_password'];
}$check = phpbb_check_hash($password, $password_hash);
if ($check==FALSE)
echo "Incorrect password<p />";
else if ($check==TRUE)
{
$_SESSION['username']=$username;
header("Location: main.php");
exit();
}
}
}
}
?>
[/php]provo a guardarci ancora 1 po' semmai lascio perdere, grazie comunque
EDIT: può essere un problema di chmod e permessi? no perché lavoro su altervista, e non é consentito modificare i permessi a 777...