• User

    Sono un principiante in panne

    Ciao a tutti,
    volevo imparare a usare php, ma è più difficile di quanto pensassi.... :arrabbiato:

    In particolare non riesco a risolvere questo strano errore:

    Nome di directory non valido.

    Che mi dà sia quando aggiorno(F5) una pagina che ho appena visualizzato, sia quando chiamo la stessa pagina scrivendo direttamente l'ìindirizzo nell'url, sia quando chiamo una pag. inesistente. 😮 😮 😮

    Non sò se mi sono spiegato bene () lo spiego meglio:

    Ho una pagina index.php con un form per il login, facendo il login passo i dati a una pagina login.php che dopo i controlli manda l'utente a index.php in caso di login errato, altrimenti a home.php.
    Fino a qui funziona tutto, il problema è che se aggiorno la pagina home.php con F5 mi dà quell'errore e mi dà lo stesso errore anche se, appena aperto il browser, scrivo l'url (http://lockit/BackPhp/gestione/home.php) .... :mmm: :mmm: :mmm:

    e mi dà lo stesso errore pure se scrivo una qualsiasi URL http://lockit/BackPhp/gestione/fileInesistente.php

    mentre se scrivo http://lockit/BackPhp/gestione/fileInesistente.asp mi dà il solito errore del server (HTTP 404)

    INVECE
    http://lockit/BackPhp/gestione/index.php
    http://lockit/BackPhp/gestione/login.php
    Non danno alcun problema........ 😢 😢

    :bho: :bho: :bho:

    Qualcuno mi sà aiutare

    grazie

    Lockit


  • User

    Aiutooooooooooo 😢 😢 😢

    Non c'è nessuno che mi sà aiutare ????

    è un problema bloccante


  • User Newbie

    non è che ho capito molto bene,
    ma sembrerebbe giusto non poter accedere a home.php (pagina che vuoi proteggere tramite login.php) senza immettere i dati da index.php e stessa cosa se aggiorni (poichè richiami la pagina direttamente dal server e non ha checkato i parametri di login).
    per una risposta più esauriente dovresti almeno postare il codice per capire se setti bene le variabili di sessione.


  • User

    Ecco il codice:

    Home.php

    <?php
    	$strTitle = "Home";
    
    	session_start&#40;&#41;;
    	
    	if &#40;isset&#40;$_SESSION&#91;"lingua"&#93;&#41;&#41;&#123;
    		$_SESSION&#91;"lingua"&#93; = "ITA";
    	&#125;
    	$RootFolder = "http://" . $HTTP_SERVER_VARS&#91;'HTTP_HOST'&#93; . "/BackPhp";
    	$login = $RootFolder . "gestione/default.asp";
    	function apri_conn&#40;&#41;&#123;
    		$dbServer = "localhost";
    		$dbUser = "lockit";
    		$dbPass = "";
    		$dbName = "modello";
    		$conn = mysql_connect&#40;$dbServer, $dbUser, $dbPass&#41;;
    		if&#40;! $conn&#41;
    		die &#40;"Errore nella connessione. Verificare i parametri nel file global.php"&#41;;
    		mysql_select_db&#40;$dbName, $conn&#41; 
    		or die &#40;"Errore nella selezione del database. Verificare i parametri nel file global.php"&#41;;
    		return $conn;
    	&#125;
    	
    	function redirect&#40;$url&#41;&#123;
    		header&#40;"Location&#58; $url"&#41;;
    	&#125;
    	//include&#40;"control.php"&#41;;
    ?>
    <html>
    <SCRIPT LANGUAGE="JavaScript">
    
    <!-- Begin&#58; Fullscreen
    self.moveTo&#40;0,0&#41;
    self.resizeTo&#40;screen.availWidth,screen.availHeight&#41;
    //  End -->
    </script>
    <head>
    <title><? echo $strTitle; ?></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="<? echo "$RootFolder/css/stile.css"; ?>" rel="stylesheet" type="text/css">
    </head>
    <body>
    <table width="750" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td><table width="100%" border="0">
      <tr>
        <td>[url="home.php"]Home</td>
      </tr>
      <tr>
        <td>[url="profilo.php"]Profilo</td>
      </tr>
      <tr>
        <td>[url="storico.php"]Storico</td>
      </tr>
    </table>
    </td><td>
    				
    
       
    
    **Buongiorno<?php echo $_SESSION&#91;"user"&#93; ?>
    
    </td>
      </tr>
            <tr> 
              <td align="center" colspan="2"><? echo date &#40;"d-M-Y", time&#40;&#41;&#41;; ?></td>
            </tr>
     </table>
    
    </body>
    </html>
    

    login.php:

    <html>
    <head>
    <title>login</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    <?php
    
    function apri_conn&#40;&#41;&#123;
    	$dbServer = "localhost";
    	$dbUser = "lockit";
    	$dbPass = "";
    	$dbName = "modello";
    	$conn = mysql_connect&#40;$dbServer, $dbUser, $dbPass&#41;;
    	if&#40;! $conn&#41;
    	die &#40;"Errore nella connessione. Verificare i parametri nel file global.php"&#41;;
    	mysql_select_db&#40;$dbName, $conn&#41; 
    	or die &#40;"Errore nella selezione del database. Verificare i parametri nel file global.php"&#41;;
    	return $conn;
    &#125;
    
    function redirect&#40;$url&#41;&#123;
    	header&#40;"Location&#58; $url"&#41;;
    &#125;
    	$RootFolder = "http&#58;//" . $HTTP_SERVER_VARS&#91;'HTTP_HOST'&#93; . "/BackPhp";
    	$login = $RootFolder . "gestione/index.php";
    
    $query = "SELECT * FROM accessi WHERE user = '$_POST&#91;user&#93;' AND pass = '$_POST&#91;pass&#93;'";
    
    $rs = mysql_query&#40;$query, apri_conn&#40;&#41;&#41;;
    
    
    $user = "undefined";
    $pass = "";
    
    while&#40;$row = mysql_fetch_array&#40;$rs&#41;&#41;&#123;
    	$user = $row&#91;user&#93;;
    	$pass = $row&#91;pass&#93;;
    &#125;
    if&#40;$user == "undefined"&#41;&#123;
    	redirect&#40;"$login"&#41;;
    &#125;else&#123;
    	$_SESSION&#91;"user"&#93; = $user;
    	redirect&#40;"$RootFolder/Gestione/home.php"&#41;;
    &#125;
    ?>
    </body>
    </html>
    

    Naturalmente ci sono un po' di include, ma ho unito tutto il codice assieme per semplicità... e la pagina index.php è uno stupido form con due campi user e pass che vengono passati al login....

    :mmm: Come vedi però non c'è alcun tipo di controllo, sarebbe stato il passaggio successivo, ma ora sono bloccato 😢


  • User Newbie

    allora, mi sembra che ci siano diverse cose..
    uno, io preferisco confrontare nella query invece che la variabile $_POST
    la variabile di sessione

    if &#40;isset&#40;$_POST&#91;'username'&#93;&#41;&#41; &#123;
     $Username=$_POST&#91;'username'&#93;;
     $password=$_POST&#91;'password'&#93;;
    

    poi dichiarare una variabile di sessione

    $_SESSION&#91;'Username'&#93; = $Username;
    

    e usare questa nella query sql

    [code]$[code]query = "SELECT * FROM accessi WHERE user = '$_POST[user]' AND pass = '$_POST[pass]'";[/code]
    diventa
    [code]$query = "SELECT * FROM accessi WHERE user = '$_SESSION[username]' AND pass ='$_SESSION[password']";[/code]

    questo dovrebbe rivelarsi utile nell'aggiornamento della pagina home.php, ma non risolve l'errore del file inesistente..

    e mi dà lo stesso errore pure se scrivo una qualsiasi URL http://lockit/BackPhp/gestione/fileInesistente.php

    mentre se scrivo http://lockit/BackPhp/gestione/fileInesistente.asp mi dà il solito errore del server (HTTP 404)

    e qusti file esistono sul server?


  • User

    Ok grazie ho risolto.....

    Erano problemi di permessi sul server :sbonk: :sbonk:

    :yuppi: :yuppi: