Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] klasa do formularzy
Forum PHP.pl > Forum > PHP
hhg
piszę klasę do walidacji i obsługi formularzy
niestety działanie funkcji mysqli_real_escape_string nie działa
Cytat
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, string given in ... on line 20

oto kod pliku do połączenia z bazą danych:
  1. <?php
  2.  
  3. DEFINE ('DB_USER', 'root');
  4. DEFINE ('DB_PASSWORD', '');
  5. DEFINE ('DB_HOST', 'localhost');
  6. DEFINE ('DB_NAME', 'comicsite');
  7.  
  8. @$db = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
  9.  
  10. if (mysqli_connect_errno()) {
  11.  
  12. echo 'Error: Connection with database failed (';
  13.  
  14. switch (mysqli_connect_errno()) {
  15. case 2005:
  16. echo 'unknown host';
  17. break;
  18. case 1045:
  19. echo 'bad login or password';
  20. break;
  21. case 1049:
  22. echo 'bad database name';
  23. break;
  24. }
  25.  
  26. echo ').';
  27.  
  28. }
  29.  
  30. ?>

oto kod pliku który po wysłaniu formularza zwraca błąd:

  1. <?php
  2.  
  3. include('../../mysqli.php');
  4.  
  5. class text {
  6.  
  7. var $data;
  8.  
  9. function __construct($dat) {
  10. $this->data = $dat;
  11. }
  12.  
  13.  
  14. function EscapeData () {
  15. global $db;
  16. if (ini_get('magic_quotes_gpc')) {
  17. $this->data = stripslashes($this->data);
  18. }
  19.  
  20. return mysqli_real_escape_string($this->data, $db);
  21. }
  22.  
  23.  
  24. function CheckData () {
  25. if (empty($this->data)) {
  26. return FALSE;
  27. } else {
  28. return $this->EscapeData();
  29. }
  30. }
  31.  
  32.  
  33.  
  34. }
  35.  
  36.  
  37. if (isset($_POST['submit']))
  38. {
  39. $poll = new text($_POST['test']);
  40.  
  41. if ( $poll->CheckData() ) {
  42. echo 'yes';
  43. } else {
  44. echo 'no';
  45. }
  46.  
  47.  
  48. }
  49.  
  50.  
  51. ?>
  52.  
  53.  
  54. <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
  55. <input type="text" size="20" name="test">
  56. <br />
  57. <input type="submit" value="send" name="submit">
  58. </form>


o ile się nie mylę to źle się odwołuję do zmiennej $db wewnatrz klasy..
kosmowariat
a może wykorzystaj gotową klasę do obsługi formularzy QuickForm sleepysmiley03.gif
qoob
w
  1. <?php
  2. mysqli_real_escape_string($this->data, $db);
  3. ?>

pierwszy powinien byc $db a drugi dopiero $this->data, Ty masz na odwrot smile.gif

manual:
Cytat
Description
Procedural style:
string mysqli_real_escape_string ( mysqli $link, string $escapestr )
hhg
hmm do QuickForm2 (na php5) nie ma dokumentacji jeszcze, a dla php4 czyli QuickForm jest dokumentacja, ale ja mam na serwerze php 5.1.5 i niestety dostaje taki błędy przy próbie przejścia przez QuickStep


Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: No such file or directory in \classes\HTML\QuickForm.php on line 29

Fatal error: require_once() [function.require]: Failed opening required 'PEAR.php' (include_path='.;D:\WebServ\httpd') in \classes\HTML\QuickForm.php on line 29


o rzeczywiscie winksmiley.jpg qoob
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.