Fatal error: Call to undefined function testNome() in C:\xampp\...\...\index.php on line 51

oscar

Nuovo Utente
17 Apr 2014
29
0
1
Buongiorno a tutti, volendo utilizzare una classe in php ho scritto un form con metodo POST e una classe che fa la validazione (approfittando di una funzione vista in w3school.com). Credo aver fatto bene ma non è cosi, da quando apro la pagina mi appare il : Fatal error: Call to undefined function testNome() in C:\xampp\...\...\index.php on line 51. Se qualcuno mi sa dire l'origine di questo errore, se c'è un concetto sbagliato, infine qualche idea, lo ringrazio in anticipo. Il form ha solo nome utente e password, il codice della classe:

class Control {
public $utente="";
public $pass="";
public function functionName() {
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$this->utente = testNome($_POST["utente"]); LINE 51 NOMINATA ERRORE
$this->pass = testPass($_POST["pass"]);
}
else {
echo 'il metodo non è post';
}
}
public function testNome($dataut) {
$dataut = trim($dataut);
$dataut = stripslashes($dataut);
return $dataut;
}
public function testPass($datapa){
$datapa = trim($datapa);
$datapa = stripslashes($datapa);
return $datapa;
}
public function stampa_data (){
echo "<p>il nome dell'utente è " . $this->utente . "<br>";
echo "<p>la psw del utente è " . $this->pass . "<br>";
}
}
$escribe=new Control();
$escribe->functionName();
$escribe->stampa_data();
 

MarcoGrazia

Utente Attivo
15 Dic 2009
798
16
18
59
Udine
www.stilisticamente.com
Semplicemente non trova testNome() e infatti nella classe ogni chiamata a membro interno va sempre usato il riferimento alla classe stessa, ovvero $this.
Le linee 51 e 52 vanno cambiate in:
PHP:
$this->utente = $this->testNome($_POST["utente"]);
$this->pass = $this->testPass($_POST["pass"]);
 

MarcoGrazia

Utente Attivo
15 Dic 2009
798
16
18
59
Udine
www.stilisticamente.com
Tra l'altro ho dato un'occhiata a quella ...roba... e penso che bisognerebbe dargli una bella aggiustatina.
Presumo sia scritta per codice PHP 4 e prego tutti i santi sperando che nessuno lo usi più.
Quindi può diventare tranquillamente:
PHP:
<?php
class Controllo {
  public $dato;

  public function __construct( $dato ) {
    return trim( $this->controllaDato ( $dato );
  }

  public function __toString() {
    return $this->dato;
  }

  private function controllaDato( $dato ) {
    $options = array ( 'flags' => array( 'FILTER_FLAG_STRIP_LOW', 'FILTER_FLAG_STRIP_HIGH' ));
    $dato = filter_var( $dato, FILTER_SANITIZE_STRING, $options );
    return $dato;
  }
}

//  Poi richiami il tutto come sai:
//  Nota però che la funzione di controllo del metodo di invio è ora esterna alla classe!
//  Non solo, ho aggiunto la funzione di controllo del carattere, perché mica puoi dare per scontato che POST è sempre scritto a lettere maiuscole ;-)
if ( strtoupper( $_SERVER["REQUEST_METHOD"] ) == "POST" ) {
  $escribe = new Controllo( $_POST['utente'] );
}
//  Non devi fare altro, in $escribe ti trovi il dato di ritorno.
//  Riferimento: http://nl1.php.net/manual/en/language.oop5.magic.php#object.tostring
?>
Poi francamente non so come hai strutturato il tuo script, ma se questa è l'unica classe che usi, io eviterei proprio di usarla :)
Se programmi in OOP allora va bene usare gli oggetti ovunque, ma se è in procedurale non conviene usare una classe qua e la, meglio usare solo la procedurale e via.
In questo caso devi fare poco:
PHP:
<?php
function controllaDato( $dato ) {
    $options = array ( 'flags' => array( 'FILTER_FLAG_STRIP_LOW', 'FILTER_FLAG_STRIP_HIGH' ));
    $dato = filter_var( $dato, FILTER_SANITIZE_STRING, $options );
    return $dato;
}
if ( strtoupper( $_SERVER["REQUEST_METHOD"] ) == "POST" ) {
  $escribe = controllaDato( $_POST['utente'] );
}
?>
Che permette di usare meno codice di quanto scritto prima.
Io non so perché controlli anche la password dato che è meglio se ci sono caratteri "strani" la funzione che ho scritto li toglie e poi perché mostrarla all'utente, lui la sa già, meglio non farlo mai, se qualcuno sbircia gliela frega :)
 

oscar

Nuovo Utente
17 Apr 2014
29
0
1
grazie marcograzia, ma ancora non sono arrivato a questo livello di programmazione, lo script era solo per vedere come funziona la classe con un suo oggetto. Comunque risultano interessanti i consigli, domani li vedrò in dettaglio. Ho iniziato da poco a vedere PHP5.
 
Discussioni simili
Autore Titolo Forum Risposte Data
C [PHP] Errore "Fatal error: Call to undefined function getTotalUsers()" PHP 2
U [PHP] Fatal error: Call to a member function Query() PHP 1
G Fatal error: Uncaught Error: Call to undefined method UserController PHP 0
JackIlPazzo Fatal error: Call to a member function execute() on a non-object PHP 2
JackIlPazzo PHP: Fatal error: Call to a member function bind_param() on a non-object PHP 0
P Fatal error: Call to undefined method SMTP::setTimeout() PHP 4
M fatal error: Call to undefined function gdrcd_filter() PHP 6
T Fatal error: Call to a member function show_crom() on a non-object PHP 1
F Fatal error: Call to undefined function PHP 9
L Fatal error: Call to undefined method Paging::listaPagine() PHP 2
L Fatal error: Call to undefined function virtual() in C:\Inetpub\wwwroot\... PHP 1
U Campo vuoto data errore Fatal error: PHP 2
D [PHP] Fatal error: Class 'COM' not found in C:\..... PHP 6
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
J [PHP] Recoverable fatal error: PHP 4
J [PHP] fatal error PHP 1
C PHP errore Fatal Error: Allowed Memory Size of ... Bytes Exhausted PHP 7
Antoyosh Fatal error con Wordpress WordPress 5
filippino Fatal error: Cannot redeclare (function) PHP 2
C errore su wordpress _ fatal error PHP 1
S [RISOLTO] Fatal error in Upload Multiplo di immagini PHP 2
F Fatal error: t3import not found object Joomla 0
Mauro Guardiani Fatal error HTML e CSS 2
T Fatal error: Cannot access empty property PHP 2
G Fatal error: Uncaught exception 'PDOException' PHP 12
LaKanka Fatal error upload immagini PHP 19
L Error Code: 1215. Cannot add foreign key constraint MySQL 3
M HTTP Status 500 - Internal Server Error. Java 0
A Uncaught Error: jQuery 1
F Uncaught (in promise) Error: 3000ms timeout exceeded Javascript 0
W ADODB.Recordset error '800a0bb9' Classic ASP 2
D error text in table HTML e CSS 11
W Microsoft OLE DB Provider for Visual FoxPro error '80040e14' Function name is missing ). Classic ASP 0
W Parse error: syntax error, unexpected '$result' (T_VARIABLE) PHP 4
W Errore di run-time di Microsoft VBScript error '800a0035' Impossibile trovare il file Classic ASP 0
G Upload file error Apache 0
A Server Apache immagine not found (ERROR 404) Apache 5
T MySQL ERROR 1064 MySQL 1
T [PHP] ...Parse error che non c'è... PHP 7
V [MySQL] You have an error in your SQL syntax MySQL 1
G PHPMailer: SMTP error Gmail PHP 8
G [WordPress] [PHP] Parse error: syntax error, unexpected '$x332cbce1' WordPress 2
I [PHP] Login Facebook SDK returned an error: No URL set! PHP 0
bubino8 [PHP] Query syntax error PHP 6
momeraths [WordPress] cURL error: problema aggiornamento/installazione plugin WordPress 4
A [PHP] FPDF error: Some data has already been output, can't send PDF file PHP 5
otto9due Error anomalo durante invio dati $.ajax Ajax 20
N [PHP] problema Parse error in file configurazione PHP 3
F Console Error jQuery 1
K [ASP] Errore: ADODB.Field error '800a0bcd' Classic ASP 1

Discussioni simili