Pagina 1 di 2

Login

Inviato: 24/08/2013, 17:07
da Troubled
Buonasera a tutti,
sto cercando di creare un area protetta disponibile solo per gli iscritti del mio forum.
Ho quindi scritto il codice

Codice: Seleziona tutto

<html>
<head>
<title>Login</title>
</head>
<body>
<?php
if(isset($_POST['username']) and isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
}
else{echo 'Esegui il login con il tuo account';}
if((strlen($username)=='0') and (strlen($password)=='0')){echo '    <form id="login" action="login.php" method="post">
        <fieldset id="inputs">
            <input id="username" name="username" type="text" placeholder="Username" autofocus required>
            <input id="password" name="password" type="password" placeholder="Password" required>
        </fieldset>
        <fieldset id="actions">
            <input type="submit" id="submit" value="Entra">
            <a href="../index.html" id="back">Indietro</a>
        </fieldset>
    </form>';
}
else{ $connect = mysqli_connect('urldelmiohost', 'miousername', 'miapassword', 'miodb'); 

if (!$connect) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
$strSQL = "SELECT * FROM avphpbb_users WHERE username = '".$username."' AND user_password = MD5('".$password."')";
function search_escape($strSQL, $char = '\\')
{
    return ereg_replace('[%_]', $char . '\0', $strSQL);
}
		$result = mysqli_query($strSQL);
$row = mysqli_fetch_row($result);
if(strlen($row[0]) == 0){echo 'I dati sono errati';}
else{$_SESSION['logged'];
echo 'Loggato. <a href="paginaprivata.php">Clicca qui per continuare</a>';
}
}
?>
Ma non funziona in quanto considera i dati errati a prescindere.
Come posso adattare il codice perchè sia funzionante? (Credo che il problema sia nell'algoritmo di crittografia usato, infatti avevo usato il codice in precedenza e funzionava...)

Re: Login

Inviato: 24/08/2013, 17:41
da brunino
Nel wiki c'é una guida che spiega come creare una pagina personalizzata su phpbb, senza troppe complicazioni. Puoi impostare l'accesso negato agli ospiti (ai quali mostra il form di login). Leggi la guida che ti semplifichi la vita.

ps: evita doppi messaggi ;)

Re: Login

Inviato: 24/08/2013, 17:57
da Troubled
ok, la leggerò :D grazie

non mi risulta che abbia inviato un doppio messaggio, probabilmente ho cliccato due volte su invia, chiedo scusa.

Mi restituisce Fatal error: Call to a member function session_begin() on a non-object in gioca.php on line 8

Cos'ha che non va quel session_begin?

Re: Login

Inviato: 24/08/2013, 18:43
da Angolo
Sei consapevole del fatto che nativamente, puoi creare un'area protetta di un forum, utilizzando solo i permessi e se occorre le password? Dove inserire testi e allegati?

È praticamente, una modifica inutile. Almeno, tale appare.

Re: Login

Inviato: 24/08/2013, 20:19
da Troubled
Sono consapevolissimo, però quello che voglio rendere privato è un giochino in php, quindi non potrei utilizzare semplici campi di testo.
Grazie comunque.

Re: Login

Inviato: 02/09/2013, 11:34
da Troubled
Non funziona.
index.php

Codice: Seleziona tutto

<head>
<title>Fluent english</title>
</head>
<body>
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'http://altutto.altervista.org/f/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl=($user->data);
$user->setup();
if ($user->data['user_id'] == ANONYMOUS)
{
        login_box('', $user->lang['LOGIN']);
}

include('template.php');

include("{$phpbb_root_path}viewforum.$phpEx");
?>
</body>
Mi dà Fatal error: Call to a member function session_begin() on a non-object

Re: Login

Inviato: 02/09/2013, 13:43
da Barrnet
Non funziona perché le pasword salvate nelle tabelle diphpBB3 non sono in md5.
https://wiki.phpbb.com/Function.phpbb_check_hash
Ti conviete o includere il functon.php nel tuo file php o estrarre la singola funzione.

Re: Login

Inviato: 02/09/2013, 13:47
da Troubled
Ho fatto

Codice: Seleziona tutto

<head>
<title>Fluent english</title>
</head>
<body>
<?php
include('f/includes/functions.php');
include('template.php');
?>
</body>
Non mi restituisce più errore, ma dice 'Errore nel recupero dei dati'

Re: Login

Inviato: 05/09/2013, 11:57
da Troubled
Ho modificato il codice...

Codice: Seleziona tutto

<!-- INCLUDE overall_header.html -->

<h2>Fluent English</h2>
<?php
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../f/';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);

    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();

    if ($user->data['user_id'] == ANONYMOUS)
    {
       echo 'Please login!';
       die();
    }

    else
    {
       echo 'Ottimo, sei loggato';
$nomeutente="data['user_id']";
    }
$connessione=mysql_connect("localhost", "altutto", "password");
$selezione_db=mysql_select_db("my_altutto", $connessione);
$progressi = "SELECT livello_ef FROM avphpbb_users WHERE id =='$nomeutente';";
$ottieni = "SELECT inglese FROM Fluent_english WHERE livello_ef=='$progressi';";
$mostra ="mysql_query($ottieni);";
       if (!$ris_news) {
 
                   //messaggio di errore per capire il problema
           exit ('<p> Errore nel recupero dei dati' . mysql_error() . '</p>');
 
                }
 
   // loop per stampare i risultati
   while ($news= mysql_fetch_array($ris_news))  
 
   {
 
         //struttura del loop visualizzazione si ripeterà n volte
     echo "<p>Traduci: ".$news['titolo_news']."</p>" ;
 
   }//While
 
if($_POST['traduzione']==''){echo '<form action="index.php" method="POST">
<label><input type="text" id="traduzione"></label>
<input type="submit" value="Conferma">
</form>';
}
else{ $controlla = "SELECT italiano FROM Fluent_english WHERE livello_ef=='$progressi';";
$controllo_alternativo = "SELECT italiano_alt FROM Fluent_english WHERE livello_ef=='$progressi';";
if($_POST['traduzione']=='$controlla' or $_POST['traduzione']=='$controllo_alternativo'){$aggiungi = "$progressi++";
$query = "UPDATE avphpbb_users SET livello_ef='$aggiungi' WHERE id = data['user_id']"; }
else{echo 'Risposta errata!';}
}
?>
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
E in effetti se sono loggato mi dice 'ottimo, sei loggato!', però mi dice anche 'Errore nel recupero dei dati' Cosa ho sbagliato?

Re: Login

Inviato: 05/09/2013, 12:04
da Barrnet
Vuol dire che il sistema di login funziona, ma non funziona quella query al database, che restituisce l'errore definito per la mancanza di connessione.