Autor Zpráva
Martin21000
Profil
Zdravím,
dneska jsem hodil databázi na server Forpsi ale. Vyskytl se záhadný problém. Ze začátku, když jsem si ještě zapomněl přepsat údaje z localhost na jejich atd. mi to vypisovalo chybové hlášky, že se nedá připojit k db. Jenomže když jsem to celé napravil a zkusil se lognout tak se mi vypisuje hláška, že mám nevalidní heslo a email. Když jsem zkoušel ze srandy registraci, nezapsaly se mi žádné údaje. Tudíž z toho vyplývá že i když se mi nezobrazuje chybová hláška tak se pořád nemůžu k té dané databázi připojit.

Jen nevím, kdy by mohl být zakopaný pes?
Tori
Profil
Není to tohle? Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals)
Martin21000
Profil
Netuším, ale vypadá to na to. Nevíte, kde bych to .htaccess mohl najít a upravit? Děkuji
Tori
Profil
Martin21000:
Je to normální textový soubor, který uložíte do hlavního adresáře webu. Ale doporučuju spíš nezvykat si na tohle nastavení a důsledně používat pole $_GET a/nebo $_POST. register_globals už současná verze PHP nepodporuje, takový kód vám bude zlobit na více serverech.
Martin21000
Profil
Tori:
Všude používám pole GET a POST. Jsem právěže myslel, že ten kód je speciálně pro ně, aby chodil. (?)
-------------------------------------------------------
Přesto mi to stále nefunguje. :(
Tori
Profil
Martin21000:
Všude používám pole GET a POST. Jsem právěže myslel, že ten kód je speciálně pro ně, aby chodil.
Aha. Ne, to jsme se špatně pochopili. :) register_globals = On je k tomu, aby proměnná $_GET['neco'] byla dostupná i jako $neco.

Jak vypadá ta registrace - escapujete údaje z formuláře? Zkusil jste ověřovat, jestli se SQL dotaz provedl a pokud neprovedl, tak zjistit chybu? (Nechcete sem poslat relevantní kus kódu z registrace? Ukázku formuláře + ukládání dat. Dalo by se radit konkrétně.)
Martin21000
Profil
Ano, to jsem opomenul.

Doufám, že mi z toho kódu vyčtete nějakou chybičku, která to všechno zapříčiňuje. :-)

registrace.php
<html> 
<head> 
<meta http-equiv='Content-Type' content='text/html; charset=cp1250' /> 
</head> 
<body> 

<h1>REGISTRACE</h1>


<form action="pridavani.php" method="POST">
<div><label for="jmeno">Jméno:</label></div>
<div><input type="text" size="25" name="jmeno"></div>

<div><label for="prijmeni">Příjmení:</label></div>
<div><input type="text" size="25" name="prijmeni"></div>

<div><label for="email">E-mail:</label></div>
<div><input type="text" size="25" name="email"></div>

<div><label for="heslo">Heslo:</label></div>
<div><input type="password" size="25" name="heslo"></div>

<div><label for="heslo1">Heslo:</label></div>
<div><input type="password" size="25" name="heslo1"></div>

<div><label for="mesto">Město:</label></div>
<div><input type="text" size="25" name="mesto"></div>

<div><label for="ulice">Ulice:</label></div>
<div><input type="text" size="25" name="ulice"></div>



<input type="submit"  value="ODESLAT"   name="jdi">

</form> 

</body>  
</html>



pridavani.php

<?php
require_once 'db.php';


// POKUD UŽIVATEL ODESLAL DATA
if(isset($_POST['jdi']))
{
      // POKUD ZADAL JMÉNO
      if(isset($_POST['jmeno']))
      {
      $jmeno = (trim($_POST['jmeno']));      
      }
      
      // POKUD ZADAL PŘIJMENÍ
      if(isset($_POST['prijmeni']))
      {
      $prijmeni = trim($_POST['prijmeni']);      
      }
      
        // POKUD ZADAL EMAIL
      if(isset($_POST['email']))
      {
      $email = stripslashes(htmlspecialchars(trim($_POST['email'])));      
      }
      
      // POKUD ZADAL HESLO
      if(isset($_POST['heslo']))
      {
      $heslo = stripslashes(htmlspecialchars(trim($_POST['heslo'])));      
      }

      // POKUD ZADAL HESLO1
      if(isset($_POST['heslo1']))
      {
      $heslo1 = stripslashes(htmlspecialchars(trim($_POST['heslo'])));      
      }
      
      // POKUD ZADAL MĚSTO
      if(isset($_POST['mesto']))
      {
      $mesto = trim($_POST['mesto']);      
      }
      
      // POKUD ZADAL ULICI
      if(isset($_POST['ulice']))
      {
      $ulice = trim($_POST['ulice']);      
      }      

      //POKUD JSOU VŠECHNA POLÍČKA VYPLNĚNÁ
      if(!empty($jmeno) AND !empty($prijmeni) AND !empty($email) AND !empty($heslo) AND !empty($mesto) AND !empty($ulice))
      {   if (ereg("^.+@.+\\..+$", $email))
              {
              if($heslo == $heslo1)
              {
              mysql_query("INSERT INTO uzivatel (jmeno, prijmeni, email, heslo, mesto, ulice, prava) VALUES ('$jmeno','$prijmeni','$email','$heslo','$mesto','$ulice','0');");
              echo "Děkujeme za registraci! Nyní se můžete <a href='prihlasit.html'>přihlásit.</a> ";
              }
              else
              {echo "Hesla se neshodují.";}
      }
      else
      {
      echo "Zadal jsi špatně emailovou adresu.";
      }
      
      
      
      }    
      else
      {
      echo "Nevyplnil jste všechna pole!";

      
      }



}
?>
abc
Profil
Martin21000:
Zkus na řádku 52 v pridavani.php nahradit podminku za tuto:
if(filter_var($email, FILTER_VALIDATE_EMAIL)

S tím heslem - shodují se hesla vyplněná ve formuláři?

Případně prosím o přesné znění chybové hlášky a případně obsah souboru db.php (se smazanými přihl. údaji k DB)
Tori
Profil
Na escapování dat posílaných do DB se používá mysql_real_escape_string. Pokud na serveru není zapnutá volba magic_quotes, tak není nutné odstraňovat zpětná lomítka.
Máte (jen teď, za účelem nalezení chyby) zapnuté zobrazování chyb? (viz FAQ)
Martin21000
Profil
Teď se mi ovšem přihodilo to nejlepší. Už se nemůžu připojit ani do admin. databáze forpsi :( Nevím, jestli mají nějaký výpadek nebo co. Ale až se to spraví tak se ozvu.
Martin21000
Profil
Tori:
Nahrazeno - nefunguje.
Hesla se shodují.

db.php
<?php
$DBSERVER = 'server';
$DBUSER = 'login';
$DBPASS = 'pass';

$DB = 'databaze';

$link = mysql_connect($DBSERVER,$DBUSER,$DBPASS) or die ('I cannot connect');
mysql_select_db($DB,$link) or die ('I cannot select DB');
mysql_query("SET NAMES 'cp1250'");
?>

Teď jsem nepochopil, kde by se tedy správně to mysql_real_escape_string mělo správně používat? Nicméně jsem smazal všechny escapovací funkce a stále nefunguje.

Zapnuté zobrazování chyb jsem zkusil dát do pridavani.php a nic se neukázalo.
Použil jsem tento kód:
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);


V připojení do databáze není problém. Klidně se do ní dokážu přihlásit. Jen ta registrace jaksi vázne :(
abc
Profil
Jak se to tedy projevuje?
Vypíše se něco na stránku nebo se nestane nic?
Martin21000
Profil
Už je to funkční. Ani nevím v čem jsem měl chybu. Prostě jsem s tím zkoušel všechno až to nakonec jede. Každopádně díky za pomoc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: