Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [PHP] Undefined index

  1. #1

    [PHP] Undefined index

    Sto diventando matto....

    ho questo errore:

    Notice: Undefined index: nick in D:\xxxxxxx\login\ctr.php on line 3

    Notice: Undefined index: pw in D:\xxxxxxx\login\ctr.php on line 4
    questo nick non risulta registrato


    Ho cercato molto, sembra che si possa risolvere con isset, ho provato ma non ho risolto....

    posto il codice magari riuscite a illuminarmi :

    Questo è il file con cui faccio dei controlli (ctr.php):

    Codice PHP:
    <?php

    $nick
    =$_POST['nick'];
    $pw=$_POST['pw'];

    if(!
    file_exists("$p_a/nick/$nick.txt")){
    echo 
    "questo nick non risulta registrato

    <a href=\"
    $p_u/registra.php\">registrati</a>";
    exit;
    }

    if((
    $nick=="") || ($pw=="")){
    echo 
    "non hai inserito il nick o la pssword

    <a href=\"javascript:history.back(1)\">Torna indietro</a>"
    ;
    exit;
    }

    $cn=fopen("$p_a/nick/$nick.txt","r");
    $cnk=fgets($cn);
    fclose($cn);

    $fp=fopen("$p_a/db/$cnk/pw.txt","r");
    $fpk=fgets($fp);
    fclose($fp);

    if(
    $fpk!=$pw){
    echo 
    "password errata

    <a href=\"javascript:history.back(1)\">Torna indietro</a>"
    ;
    exit;
    }

    ?>

    Questo è la pagina dove faccio login inserendo user e password (login.php):

    Codice PHP:
    <?php
    include("config.php");

    echo 
    "<html>
    <head>
    <link rel=stylesheet type=\"text/css\" href=\"style.css\">
    </head>
    <body>

    <DIV ID=\"idElement25\" style=\"position:absolute; top:10px; left:15px; width:165px; height:239px;\"><TABLE BORDER=1 CELLSPACING=2 CELLPADDING=9 WIDTH=165 bordercolor=blue>
    <TR VALIGN=\"top\" ALIGN=\"left\"><TD WIDTH=165 HEIGHT=239 BGCOLOR=\"#ffffff\">

    <div class=a>
    <form action=\"
    $p_u/[B]log.php[/B]\" method=\"post\">
    Nick:

    <input type=\"text\" size=\"12\" name=\"nick\" class=form>

    Password:

    <input type=\"password\" name=\"pw\" class=form size=\"12\">


    <input type=\"submit\"  value=\"   entra   \" class=form>
    </div>
    <div class=link>Hai perso i tuoi dati?<a href=\"
    $p_u/recupera.php\" class=link>Recuperali</a></div>
    <div class=link>Non sei iscritto?<a href=\"
    $p_u/registra.php\" class=link>Iscriviti subito</a></div>

    <div class=cp><a href=\"http://www.jarkless.it\">powered by jarkless</a></div>
    </td></tr></table>
    </body>
    </html>"
    ;
    ?>
    Nella file log.php c'è l' include("ctr.php");

    La variabile nick e pw sono definite perchè allora mi da quell'errore.
    Non capisco, chiedo lumi.

    Un saluto a tutti e grazie in anticipo
    Lordras

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    no che non sono definite. Quando tu includi crt.php, la 3° e 4° riga citano
    $_POST['nick'] e $_POST['pw'], quindi il parser va a vedere se effettivamente quei due elementi dell'array $_POST esistano e infatti non avendo acora postato il form, non trova gli indici. Quindi, dovresti aggiungere qualcosa del genere:
    codice:
    <?php
      if (isset($_POST[nick']) && isset($_POST['pw'])) {
      ...
      }
      else {
      ...
      }
    ?>
    Dentro il pezzo in if potresti infilarci il tuo sorgente attuale, nell'else potresti anche non metterci niente (omettilo tranquillamente)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3

    Vediamo se ho capito..

    Il nuovo codice di ctr.php è il seguente:


    Codice PHP:
    <?php

    $nick
    =$_POST['nick'];
    $pw=$_POST['pw'];  

    if (isset(
    $_POST['nick']) && isset($_POST['pw'])) {   [B]//Se nick e pw sono true allora fai.. giusto?[/B]

      
    if(!file_exists("$p_a/nick/$nick.txt")){
        echo 
    "questo nick non risulta registrato

        <a href=\"
    $p_u/registra.php\">registrati</a>";
        exit;
    }

      if((
    $nick=="") || ($pw=="")){
        echo 
    "non hai inserito il nick o la pssword

        <a href=\"javascript:history.back(1)\">Torna indietro</a>"
    ;
        exit;
    }

    $cn=fopen("$p_a/nick/$nick.txt","r");
    $cnk=fgets($cn);
    fclose($cn);

    $fp=fopen("$p_a/db/$cnk/pw.txt","r");
    $fpk=fgets($fp);
    fclose($fp);

    if(
    $fpk!=$pw){
    echo 
    "password errata

    <a href=\"javascript:history.back(1)\">Torna indietro</a>"
    ;
    exit;
    }
      }
    ?>
    Succede che lo script va avanti però il notice me lo da lo stesso...
    Ho scritto correttamente l'if isset?

    Se tolgo:
    Codice PHP:
    $nick=$_POST['nick'];
    $pw=$_POST['pw']; 
    si blocca tutto.

    Pensavo di creare un file (tipo nick_ps.php) dove valorizzo una volta per tutte queste due variabili e poi l'includo dove serve... E' una buona idea? è da poco che studio php.

    Grazie ancora!
    Lordras

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    PErché non hai capito niente di quel che ho detto
    Codice PHP:
    <?php 

    if (isset($_POST['nick']) && isset($_POST['pw'])) {
      
    $nick=$_POST['nick']; 
      
    $pw=$_POST['pw'];   

      if(!
    file_exists("$p_a/nick/$nick.txt")){ 
        echo 
    "questo nick non risulta registrato
     
        <a href=\"
    $p_u/registra.php\">registrati</a>"
        exit; 


      if((
    $nick=="") || ($pw=="")){ 
        echo 
    "non hai inserito il nick o la pssword
     
        <a href=\"java-script:history.back(1)\">Torna indietro</a>"

        exit; 


    $cn=fopen("$p_a/nick/$nick.txt","r"); 
    $cnk=fgets($cn); 
    fclose($cn); 

    $fp=fopen("$p_a/db/$cnk/pw.txt","r"); 
    $fpk=fgets($fp); 
    fclose($fp); 

    if(
    $fpk!=$pw){ 
    echo 
    "password errata
     
    <a href=\"java-script:history.back(1)\">Torna indietro</a>"

    exit; 


    ?>
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Originariamente inviato da Andrea1979
    PErché non hai capito niente di quel che ho detto

    Infatti... Avevo il dubbio...
    Non da più errori!
    Ora vado avanti, devo farlo funzionare tutto!

    GRAZZZZIEE MILLE!
    Lordras

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.