Autor Zpráva
valocsay
Profil *
mám tento problém " Fatal error: Function name must be a string in D:\Programy\wamp\www\1\register.php on line 54"

takto to vyzerá
<?Php
    Include "Header.Php"
    ?>
<Html>
  <Head>
  </Head>
  <Body>
      <Div  Style="position:absolute;    width:550px;    top:10%;    height:40px;    left:33%;    backgrounf-color:blue;    color:black">
    <Form Id="regform" Action="" Method="post">
        <Table>
            <Tr><Center><H1>Registrácia</H1></Center></Tr>
            <Tr><H3>základné údaje</H3></Tr>
            <Tr><Td>Krstné meno</Td><Td><Input Type="text" Name="meno"></Td></Tr>
            <Tr><Td>Priezvisko</Td><Td><Input Type="text" Name="priezvisko"></Td></Tr>
            <Tr><Td>email</Td><Td><Input Type="text" Name="email"></Td></Tr>
            <Tr><Td>email znovu</Td><Td><Input Type="text" Name="email-repeat"></Td></Tr>
            <Tr><Td><H3>Prihlasovacie údaje</H3></Td></Tr>
            <Tr><Td>Nick</Td><Td><Input Type="text" Name="nick"></Td></Tr>
            <Tr><Td>Heslo</Td><Td><Input Type="password" Name="pass"></Td></Tr>
            <Tr><Td>heslo znovu</Td><Td><Input Type="password" Name="pass-repeat"></Td></Tr>
            <Tr><Td><Input type="submit" name="regme" value="Zaregistrovať sa"></Td></Tr>
        </Table>
            
        <?PHP
      function isMail($what) { if(strstr($what, '@') && strstr($what, '.')){return true;}else{return false;} }
    
        if(isset($_POST['regme']))
    {
      if($_POST['meno'])
      {
      if($_POST['priezvisko'])
      {
       if(isMail($_POST['email']))
       {
        if($_POST['email'] == $_POST['email-repeat'])
        {
         if($_POST['pass'])
         {
          if($_POST['pass-repeat'])
          {
           if($_POST['pass'] == $_POST['pass-repeat'])
           {
            if($_POST['nick'])
             {
              if(strlen($_POST['nick']) >5 && strlen($_POST['nick']) <25)
              {
               if(strlen($_POST['pass']) >5 && strlen($_POST['pass']) <25)
               {
                include "config.php";
                mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass);
                mysql_select_db($MySQL_name);
                $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'");
                
                if(mysql_num_rows($_GET(q)) <1)
                {
                   mysql_query("INSERT INTO users values(0'".$_POST['nick']."', '".$_POST['pass']."', '".$_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')");
                  echo "Registrácia prebehla úspešne.<meta http-equiv='refresh' content='2;url=index.php'>";
                }
                else echo "Zadaný uživateľ už existuje.";
               }
               else echo "Heslo musí byť dlhší ako 5 znakov a kratší ako 25 znakov.";
              }
              else echo "Nick musí byť dlhší ako 5 znakov a kratší ako 25 znakov.";
             }
             else echo "Nezadal si nick.";
            }
            else echo "Heslá sa nezhodujú.";
           }
           else echo "Nezadal si heslo znovu.";
          }
          else echo "Nezadal si heslo.";
         }
         else echo "Emaily sa nezhodujú.";
        }
        else echo "Email je neplatný.";
       }
       else echo "Nezadal si priezvisko.";        
     }
     else echo "Nezadal si krstné meno.";
    }
         ?>
    </Form>                        
    </Div>
  </Body>
</Html>
<?Php                     
    Include "Footer.Php"
    ?>



pozaral som video jedného týpka a tomu to fungovalo mal tento kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Můj Web - Přihlášení</title>
  <style>
    a {
      color: red;
      text-decoration: none;
    }
    body {
      text-align: center;
    }
    #regarea th 
    {
      font-weight: normal
    }
    #regarea th#nadpis
    {
      font-weight: bold;
    }
    #regarea td 
    {
      text-align: right;
    }
    #regarea {
      width: 100%;
    }  
    #regform {
      text-align: left;
      width: 350px;
      margin-left: auto;
      margin-right: auto;
      border: 1px solid red;
    }
  </style>
  </head>
  <body>
    <form id="regform" action="" method="post">  
      <table id="regarea">
        <tr><th id="nadpis">Registrace</th></tr>
        <tr><th>Nick</th><td><input type="text" name="nick"></td></tr>
        <tr><th>Email</th><td><input type="text" name="email"></td></tr> 
        <tr><th>Email znovu</th><td><input type="text" name="email-repeat"></td></tr>
        <tr><th>Heslo</th><td><input type="password" name="pass"></td></tr>
        <tr><th>Heslo znovu</th><td><input type="password" name="pass-repeat"></td></tr>
        <tr><th><input type="checkbox" name="rules"> Souhlasím s <a href="pravidla.php">pravidly</a>.</th><td><input type="submit" name="regme" value="Zaregistrovat se"></td></tr>
      </table> 
      <?php 
        function isMail($what) { if(strstr($what, '@') && strstr($what, '.')) {return true;}else{return false;} }
          
        if(isset($_POST['regme']))
        {
          if(isset($_POST['rules']))
          {
            if($_POST['nick'] && $_POST['email'] && $_POST['email-repeat'] && $_POST['pass'] && $_POST['pass-repeat'])
            {
              if($_POST['email'] == $_POST['email-repeat']) 
              {
                if($_POST['pass'] == $_POST['pass-repeat']) 
                {
                  if(isMail($_POST['email']))
                  {
                    if(strlen($_POST['nick']) > 5 && strlen($_POST['nick']) < 25)
                    {
                      if(strlen($_POST['pass']) > 5 && strlen($_POST['pass']) < 25)
                      {
                        include "config.php";
                        mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass);
                        mysql_select_db($MySQL_name); 
                        $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); 
                        if(mysql_num_rows($q) == 0)
                        {           
                          $pass = md5($_POST['pass']);
                          mysql_query("INSERT INTO users values(0,'".$_POST['nick']."','".$pass."','".$_POST['email']."')");  
                          echo "Registrace proběhla úspěšně.<meta http-equiv='refresh' content='2;url=login.php'>";
                        }
                        else echo "Zadaný uživatel jíž existuje.";
                      }
                      else echo "Tvoje heslo je kratší než 5 znaků nebo delší než 25 znaků.";   
                    }
                    else echo "Tvůj nick je kratší než 5 znaků nebo delší než 25 znaků.";
                  }
                  else echo "Neplatný email..";
                }                                  
                else echo "Hesla se neschodují..";
              }
              else echo "Emaily se neschodují.."; 
            }  
            else echo "Nezdal jsi nick/email/heslo.";
          }  
          else echo "Nesouhlasíš s pravidly? Nesouhlasíme s tvojí registrací..";
        }
      ?> 
    </form>
  </body>
</html>

podľa mňa sa to v ničom nelíši. Ale tento kód ide


a ešte potrebujem poradiť s tým že mi to ani s tým druhým kódom nevytvorí užívateľa.
config.php vyzerá takto:
<?php
    $MySQL_ip = "localhost";
    $MySQL_user = "root";
    $MySQL_pass = "";
    $MySQL_name = "test";
?>
keby ste potrebovali tak hlavička (header) vyzerá takto:
<html>
    <head>
        <title>Ahoj</title>
    </head>
    <Body style="    background-image:URL('wallpaper.jpg');        background-repeat:no-repeat;   background-attachment:fixed;        background-position:center;">
  <style>
    a {
      color: red;
    }
    H7 {
      color: red;
    }
  </style>
            <HR>
            <center>
                <a href="index.php">UVOD</a>
                <a href="cennik.php">Cennik</a>
                <a href="http://www.adridreal.sk/sk/search/go/?id_brokers=10">Miro</a>
                <a href="formular.php">furmular</a>
            </center>
        <HR>
</html>
a pätička (footer) takto:
      <center>
    <div style="position:absolute;    width:99%;    bottom:2%;    height:40px;    backgrounf-color:blue;    color:black">
                <hr>
        <center>    <H7>BY VALOCSAY</H7>    </center>
    </div>
  </center>
    </body>
</html>

vážne neviem v čom tam mám chybu pozerám na videá a na ten kód už celý víkend.
ak potrebujete ešte používam PSPad na edit, PHPMyAdmin na MySQL, WAMP SERVER, a ako server APACHE
tu je scr môjho PHPMyAdmin
[img]https://www.dropbox.com/s/9gd3bjzzwvrour2/Bez%20n%C3%A1zvu.png[/img]


fotka je tu [img]https://dl.dropboxusercontent.com/u/89084892/Bez%20n%C3%A1zvu.png[/img]


https://dl.dropboxusercontent.com/u/89084892/Bez%20n%C3%A1zvu.png


sorry za tie dva linky čo nefungujú :)
okolojsoucí
Profil
Nevím proč jsem vkládáte tucet kódu pro identifikaci chyby v jednom souboru.
Zkoušel jsi vůbec zjistit co ta hláška signalizuje, než jsi sem napsal?

Vypíchnu ti zde chybnou podmínku kterou máš.
$q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'");
                
                if(mysql_num_rows($_GET(q)) <1)
                {
                   mysql_query("INSERT INTO users values(0'".$_POST['nick']."', '".$_POST['pass']."', '".$_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')");
                  echo "Registrácia prebehla úspešne.<meta http-equiv='refresh' content='2;url=index.php'>";
                }

Chybu máš u označeného místa. Zkus popřemýšlet proč jsi tam tento typ proměnné dal, co to ve zkutečnosti má dělat a co funkce mysql_num_rows dělat má, a její parametry které se do ní vkládají.

Menší nápověda. V mysql_num_rows je jeden argument jehož popis zní dle php.net: „The result resource that is being evaluated. This result comes from a call to mysql_query().
valocsay
Profil *
okolojsoucí:
toto mu už ide dik za pomoc ale prosim ťa pomôžeš mi s tým druhým čo som tam napísal?
ak sa ti to nechce celé pozerať tak aj keď mi ide registrácia tak mi to nehodí do databáze :P nerozumiem tomu :P dole som dal aj obrázok
Tori
Profil
Tady chybí čárka, v tom druhém kilometru kódu je.
 mysql_query("INSERT INTO users values(0, '".$_POST['nick']."', '".$_POST['pass']."', '".$_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')");
valocsay
Profil *
 include "config.php";
                mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass);
                mysql_select_db($MySQL_name);
                    $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'");
                    if(mysql_num_rows($q) == 0)
                {
                    mysql_query("INSERT INTO users values(0, '".$_POST['nick']."', '".$_POST['pass']."', '".
                    $_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')");
                  echo "Registrácia prebehla úspešne.<meta http-equiv='refresh' content='2;url=index.php'>";
takto to vyzerá celé už som vyrval iba to potrebné :P ale stále to nejde :(


nejde mi iba to zapísanie do databázi
anonymníí
Profil *
valocsay:
Ty dotazy proběhnou v pořádku? Co píše mysql_error (echo mysql_error(); za každým z vykonaných dotazů)?

Proč vkládáš nulu, když je to pravděpodobně ID a auto inkrement?
Proč neescapuješ data, nebojíš se, že se ti do databáze někdo nabourá (hledej escapování)
Odesíláš formulíář metodou POST?
Co vypíše echo "INSERT INTO users values(0, '".$_POST['nick']."', '".$_POST['pass']."', '". $_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')";? Je v proměnných po odeslání formuláře to, co čekáš (nejmenuje se některé políčko třeba jinak?)

A proč probůh ukládáš heslo v plain textu? šup s ním do nějakého hashe.
Fisir
Profil
Reaguji na valocsaye:
Spusť si ten dotaz v nějakém správci databází (phpMyAdmin, Adminer) a pošli výsledek (chybové hlášení). PHP rozšíření mysql_* je zastaralé, příště použij raději MySQLi a escapuj vstupní hodnoty.
valocsay
Profil *
už som vyriešil všetky problémy bol tam hlavný problém že to muselo byť takto :
$query = "INSERT INTO users(id, username, password, email, meno, priezvisko)
                    VALUES
                      ('',
                      '$_POST[nick]',
                      '$_POST[pass]',
                      '$_POST[email]',
                      '$_POST[meno]',
                      '$_POST[priezvisko]');
a následne všetko v takýchto ' ' úvodzovkách :P

ale teraz mi to robí tento problém
( ! ) Parse error: syntax error, unexpected end of file in D:\Programy\wamp\www\1\register.php on line 98

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?Php
    Include "Header.Php"
    ?>
<Html>
  <Head>
  </Head>
  <Body>
      <Div  Style="position:absolute;    width:550px;    top:10%;    height:40px;    left:33%;    backgrounf-color:blue;    color:black">
    <Form Id="regform" Action="" Method="post">
        <Table>
            <Tr><Center><H1>Registrácia</H1></Center></Tr>
            <Tr><H3>základné údaje</H3></Tr>
            <Tr><Td>Krstné meno</Td><Td><Input Type="text" Name="meno"></Td></Tr>
            <Tr><Td>Priezvisko</Td><Td><Input Type="text" Name="priezvisko"></Td></Tr>
            <Tr><Td>email</Td><Td><Input Type="text" Name="email"></Td></Tr>
            <Tr><Td>email znovu</Td><Td><Input Type="text" Name="email-repeat"></Td></Tr>
            <Tr><Td><H3>Prihlasovacie údaje</H3></Td></Tr>
            <Tr><Td>Nick</Td><Td><Input Type="text" Name="nick"></Td></Tr>
            <Tr><Td>Heslo</Td><Td><Input Type="password" Name="pass"></Td></Tr>
            <Tr><Td>heslo znovu</Td><Td><Input Type="password" Name="pass-repeat"></Td></Tr>
            <Tr><Td><Input type="submit" name="regme" value="Zaregistrovať sa"></Td></Tr>
        </Table>
            
        <?PHP
      function isMail($what) { if(strstr($what, '@') && strstr($what, '.')){return true;}else{return false;} }
    
        if(isset($_POST['regme']))
    {
      if($_POST['meno'])
      {
      if($_POST['priezvisko'])
      {
       if(isMail($_POST['email']))
       {
        if($_POST['email'] == $_POST['email-repeat'])
        {
         if($_POST['pass'])
         {
          if($_POST['pass-repeat'])
          {
           if($_POST['pass'] == $_POST['pass-repeat'])
           {
            if($_POST['nick'])
             {
              if(strlen($_POST['nick']) >5 && strlen($_POST['nick']) <25)
              {
               if(strlen($_POST['pass']) >5 && strlen($_POST['pass']) <25)
               {
                include "config.php";
                mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass);
                mysql_select_db($MySQL_name);
                    $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); 
                    if(mysql_num_rows($q) == 0)
                {
                    $query = "INSERT INTO users(id, username, password, email, meno, priezvisko)
                    VALUES
                      ('',
                      '$_POST[nick]',
                      '$_POST[pass]',
                      '$_POST[email]',
                      '$_POST[meno]',
                      '$_POST[priezvisko]');
                  echo 'Registrácia prebehla úspešne';
                  <meta http-equiv='refresh' content='2;url=index.php'>;
                  echo mysql_error();
                }
                else echo 'Zadaný uživateľ už existuje.';
               }
               else echo 'Heslo musí byť dlhší ako 5 znakov a kratší ako 25 znakov.';
              }
              else echo 'Nick musí byť dlhší ako 5 znakov a kratší ako 25 znakov.';
             }
             else echo 'Nezadal si nick.';
            }
            else echo 'Heslá sa nezhodujú.';
           }
           else echo 'Nezadal si heslo znovu.';
          }
          else echo 'Nezadal si heslo.';
         }
         else echo 'Emaily sa nezhodujú.';
        }
        else echo 'Email je neplatný.';
       }
       else echo 'Nezadal si priezvisko.';        
     }
     else echo 'Nezadal si krstné meno.';
    }

         ?>
    </Form>                        
    </Div>
  </Body>
</Html>
<?PHP
    Include 'Footer.Php'
?>                   
už ma to štve :D ale nevadí. človek sa učí na vlastných chybách ale na zaciatok je to dobré :D

a prosím mohli by ste mi vysvetliť v čom mám ukladať tie heslá??


PARDON OSPRAVEDLŇUJEM SA ja som to nemal uzavreté tam hore :D
okolojsoucí
Profil
valocsay:
a prosím mohli by ste mi vysvetliť v čom mám ukladať tie heslá??
Nejlépe v šifrované podobě. Hlavně ne v md5 které dnes je jednoduše staré a jsou již databáze na součty a sha1 také není nejnovější. Můžeš sáhnout po funkci crypt ze které si počítá Wordpress hesla nebo po třídě která je dobře propracovaná bcrypt což je jen pro ty co nemají PHP 5.5, protože je zde bcrypt již implementován.


PARDON OSPRAVEDLŇUJEM SA ja som to nemal uzavreté tam hore :D
To znamená že jsi svůj problém vyřešil?
valocsay
Profil *
skoro stále mi nejde ta databáza proste po registrácia sa mi to neuloží do databázy :(
okolojsoucí
Profil
A jak zde ti bylo doporučeno sestavený dotaz pomocí PHPMyAdmin či jiného klienta ti vypíše jakou chybu?
valocsay
Profil *
dal som do PHP kódu "echo mysql_error()" bez " a vypiísalo mi to chybu tú som opravil a už mi to nepíše nič :P


ak myslíš toto
valocsay
Profil *
opravil som si ten kód znovu :D a teraz mi to píše tento problém
( ! ) Parse error: syntax error, unexpected 'mysql_connect' (T_STRING) in D:\Programy\wamp\www\1\register.php on line 51
kód je tu:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?Php
    Include "Header.Php"
    ?>
<Html>
  <Head>
  </Head>
  <Body>
      <Div  Style="position:absolute;    width:550px;    top:10%;    height:40px;    left:33%;    backgrounf-color:blue;    color:black">
    <Form Id="regform" Action="" Method="post">
        <Table>
            <Tr><Center><H1>Registrácia</H1></Center></Tr>
            <Tr><H3>základné údaje</H3></Tr>
            <Tr><Td>Krstné meno</Td><Td><Input Type="text" Name="meno"></Td></Tr>
            <Tr><Td>Priezvisko</Td><Td><Input Type="text" Name="priezvisko"></Td></Tr>
            <Tr><Td>email</Td><Td><Input Type="text" Name="email"></Td></Tr>
            <Tr><Td>email znovu</Td><Td><Input Type="text" Name="email-repeat"></Td></Tr>
            <Tr><Td><H3>Prihlasovacie údaje</H3></Td></Tr>
            <Tr><Td>Nick</Td><Td><Input Type="text" Name="nick"></Td></Tr>
            <Tr><Td>Heslo</Td><Td><Input Type="password" Name="pass"></Td></Tr>
            <Tr><Td>heslo znovu</Td><Td><Input Type="password" Name="pass-repeat"></Td></Tr>
            <Tr><Td><Input type="submit" name="regme" value="Zaregistrovať sa"></Td></Tr>
        </Table>
            
        <?PHP
      function isMail($what) { if(strstr($what, '@') && strstr($what, '.')){return true;}else{return false;} }
    
        if(isset($_POST['regme']))
    {
      if($_POST['meno'])
      {
      if($_POST['priezvisko'])
      {
       if(isMail($_POST['email']))
       {
        if($_POST['email'] == $_POST['email-repeat'])
        {
         if($_POST['pass'])
         {
          if($_POST['pass-repeat'])
          {
           if($_POST['pass'] == $_POST['pass-repeat'])
           {
            if($_POST['nick'])
             {
              if(strlen($_POST['nick']) >5 && strlen($_POST['nick']) <25)
              {
               if(strlen($_POST['pass']) >5 && strlen($_POST['pass']) <25)
               {
                include "config.php"
                mysql_connect($mysql_ip,$mysql_user,$mysql_pass);
                mysql_select_db($MySQL_name);
                    $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'") or die ("chyba"); 
                    if(mysql_num_rows($q) == 0)
                {
                    $query = "INSERT INTO users(id, username, password, email, meno, priezvisko)
                    VALUES
                      ('',
                      '$_POST[nick]',
                      '$_POST[pass]',
                      '$_POST[email]',
                      '$_POST[meno]',
                      '$_POST[priezvisko]')" or die ("chyba 2");
                  echo "Registrácia prebehla úspešne <meta http-equiv='refresh', content='2;url=index.php'>";
                  echo mysql_error();
                }
                else echo 'Zadaný uživateľ už existuje.';
               }
               else echo 'Heslo musí byť dlhší ako 5 znakov a kratší ako 25 znakov.';
              }
              else echo 'Nick musí byť dlhší ako 5 znakov a kratší ako 25 znakov.';
             }
             else echo 'Nezadal si nick.';
            }
            else echo 'Heslá sa nezhodujú.';
           }
           else echo 'Nezadal si heslo znovu.';
          }
          else echo 'Nezadal si heslo.';
         }
         else echo 'Emaily sa nezhodujú.';
        }
        else echo 'Email je neplatný.';
       }
       else echo 'Nezadal si priezvisko.';        
     }
     else echo 'Nezadal si krstné meno.';
    }

         ?>
    </Form>                        
    </Div>
  </Body>
</Html>
<?PHP
    Include 'Footer.Php'
?>                   

config:
<?php
    $mysql_ip = "localhost";
    $mysql_user = "root";
    $mysql_pass = "";
    $mysql_name = "test";
?>

nwm či je to v configu alebo registri :(
Rfilip
Profil
50 řádek register.php má být include "config.php";
valocsay
Profil *
v tom prípade mi to nejde :(
Rfilip
Profil
valocsay:
nejde“ To znamená co?
valocsay
Profil *
nepošle to údaje do databáze proste to nezaregistruje


to my vážne nevie nikto poradiť?? :(
Tori
Profil
Protože se ani žádný dotaz neprovede, někde vám vypadlo volání funkce:
$query = "INSERT INTO users(id, username, password, email, meno, priezvisko)
                    VALUES
                      ('',
                      '$_POST[nick]',
                      '$_POST[pass]',
                      '$_POST[email]',
                      '$_POST[meno]',
                      '$_POST[priezvisko]')";
mysql_query($query) or die ("chyba 2");
okolojsoucí
Profil
valocsay:
to my vážne nevie nikto poradiť?? :(
Bez chybových hlášek, případně php, apache ne-li mysql logu to půjde dost obtížně.
valocsay
Profil *
ďakujem za pomoc už mi to funguje.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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