Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 62 odgovora
  • 12.908 pregleda

Najnovija ↓

Šta ovde ne valja? 05.09.2012. u 09:57 · pre 172 meseca #1
Nov sam u PHP programiranju i imam neke probleme...

Trenutno pravim neki veći dinamički sajt čisto radi vežbanja svega onog što sam do sada naučio...

Problem je da mi php ne reaguje na button klik događaj pri prostoj registraciji... verovatno je problem u php-u jer prvi put i bez ikakvog kopiranja radim registracionu formu, daću ceo kod PHP i HTML register strane, pa vi vidite, verujem da ima mnogo grešaka...

znaci ne reaguje na button klik, konektovati se moze i ubaciti vrednosti, ali bez $_POST-a...
register.php
Code (php):

<?php
$host_name = "localhost:3307";
$db_username = "root";
$password = "123";
$db_name = "vezba";

if(!$_POST['btn'])  
{
     //ako button nije pritisnut ne radi nista...
}
else
{
$con = mysql_connect("$host_name", "$db_username", "$password");
//ako jeste konektuj se...
if(!$con)
{
     echo 'Could not connect...';
     //ako se ne moze konektovati ispisi...
}
mysql_select_db("$db_name") or die("No Database"); //selektuj bazu vezba
if($_POST['txt1']!=0 & $_POST['txt2'] !=0 & $_POST['txt3'] !=0 & $_POST['txt4'] !=0 & $_POST['txt3'] == $POST['txt4'])
{
$ubaci = mysql_query("insert into useri(username, email, pass) values("$_POST["txt1"]","$_POST["txt2"]","$_POST["txt3"]")");
//ako je vrednost tekst polja rzlicita od nula, i password polje jednako confirm pass polju ubaci vrednosti iz polja u bazu
$selektuj = mysql_query('select '$_POST["txt1"]' from useri');
//selektuj vrednost text polja username iz baze...
while($red = mysql_fetch_array($selektuj)) //dok citas podatke iz baze smesti ih u varijablu '$red'..
  {
  echo 'Thank you'. " " . $red['username'] . 'for registration...';
  }
}
else{die("password is not same, or text values are null...")}
mysql_close($con); //
}
?>
 


register.html
Code (html):

<html !DOCTYPE html lang="en">
<head>
<meta name="google-site-verification" content="6kwmiqZvj-FJfGuyK8biPc-H8MXuZvxcd6xWsdhwxL4" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Content-Language" content="en">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>vezba.com</title>
<script language="JavaScript" type="text/javascript">
function Prikazi()
        {
          var headerTitle = document.getElementById('id');
          var initialColor = document.body.style.color;
          var newColor = '#FFFFFF';
          setInterval(function()
          {
             if (headerTitle.style.color == initialColor) {
         headerTitle.style.color = newColor;
     } else {
         headerTitle.style.color = initialColor;
     }
          }
          ,1000);
        }
 </script>
<link rel="stylesheet" a href="stil.css">
</head>
<body onLoad="Prikazi()">
<div id="header">
<header>
<a href="index.html" id='id' class="header">vezba.com</a>
</header>
</div>
<div id="nav">
<nav>
<a href="index.html" class="home">Home</a> &nbsp | &nbsp <a href="about.html" class="home">About</a> &nbsp | &nbsp <a href="tutorials.html" class="home">Tutorials</a>&nbsp | &nbsp <a href="exercises" class="home">Exercises</a> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp <a href="login.php" class="home">Log In</a> | <a href="register.html" class="home">Register</a> </div>
</nav>
<aside id="aside">
<div id="side1"><a href="http://w3schools.com/html5/default.asp" target="blank"><img src="http://www.wikinoticia.com/ima...ia.com/files/2011/01/HTML5.jpg" width="245" height="195"></img></a></div>
<p id="side2"><a href="http://w3schools.com/css3/default.asp" target="blank"><img src="http://blogs.microsoft.co.il/blogs/gilf/CSS3Logo_406A9E5E.jpg" width="245" height="195"></img>
</a></p>
<p id="side3"><a href="http://w3schools.com/js/default.asp" target="blank"><img src="http://2.bp.blogspot.com/-9vrJ...1600/best-javascript-sites.jpg" width="245" height="195"></img>
</a></p>
<p id="side4"><a href="http://w3schools.com/php/default.asp" target="blank"><img src="http://drupal.org/files/project-images/php.png" width="245" height="195"></img>
</a></p>
<p id="side5"><a href="http://w3schools.com/asp/default.asp" target="blank"><img src="http://blog.monitor.us/wp-content/uploads/2012/04/LogoAspNet2.png" width="245" height="185"></img>
</a></p>
</aside>
<div id="register-content">
<content id="text2">
<form action="register.php" method="post">
User Name:
<p></p>
<input type="text" name="txt1" id="textbox">
<p></p>
E-mail:
<p></p>
<input type="text" name="txt2" id="textbox">
<p></p>
Password:
<p></p>
<input type="password" name="txt3" id="textbox">
<p></p>
Confirm Password:
<p></p>
<input type="password" name="txt4" id="textbox">
<p></p>
<p></p>
<p></p>
<center><input type="button" value="Register" id="btn"></center>
</form>
</content>
</div>
</body>
</html>
 
Re: Šta ovde ne valja? 05.09.2012. u 11:04 · pre 172 meseca #2
Code:

<input type="button" value="Register" id="btn" name="btn">


Propustio si name.

Code:

<?php
$host_name = "localhost:3307";
$db_username = "root";
$password = "123";
$db_name = "vezba";

if($_POST['btn'])  { // samo ako se klikne
$con = mysql_connect("$host_name", "$db_username", "$password");
//ako jeste konektuj se...
if(!$con)
{
     echo 'Could not connect...';
     //ako se ne moze konektovati ispisi...
}
mysql_select_db("$db_name") or die("No Database"); //selektuj bazu vezba
if($_POST['txt1']!=0 & $_POST['txt2'] !=0 & $_POST['txt3'] !=0 & $_POST['txt4'] !=0 & $_POST['txt3'] == $POST['txt4'])
{
$ubaci = mysql_query("insert into useri(username, email, pass) values("$_POST["txt1"]","$_POST["txt2"]","$_POST["txt3"]")");
//ako je vrednost tekst polja rzlicita od nula, i password polje jednako confirm pass polju ubaci vrednosti iz polja u bazu
$selektuj = mysql_query('select '$_POST["txt1"]' from useri');
//selektuj vrednost text polja username iz baze...
while($red = mysql_fetch_array($selektuj)) //dok citas podatke iz baze smesti ih u varijablu '$red'..
  {
  echo 'Thank you'. " " . $red['username'] . 'for registration...';
  }
}
else{die("password is not same, or text values are null...")}
mysql_close($con); //
}
?>
Potpis
When you say "I wrote a program
that crashed Windows", people
just stare at
you blankly and say "Hey, I got
those with the system, *for
free*".
-- Linus Torvalds
Sviđa mi se1
Re: Šta ovde ne valja? 05.09.2012. u 11:24 · pre 172 meseca #3
ne reaguje opet...

ne mogu da verujem da sam zaboravio name :O
Re: Šta ovde ne valja? 05.09.2012. u 11:33 · pre 172 meseca #4
Za button stavi type="submit", a ne button.

Imaš i četiri elementa sa istim id (textbox) - id mora da bude jedinstven.
Sviđa mi se1
Re: Šta ovde ne valja? 05.09.2012. u 11:33 · pre 172 meseca #5
Code:

<input type="submit" value="Register" id="btn" name="btn" />


submit, ne button. Sry, nisam video. :)
Potpis
When you say "I wrote a program
that crashed Windows", people
just stare at
you blankly and say "Hey, I got
those with the system, *for
free*".
-- Linus Torvalds
Re: Šta ovde ne valja? 05.09.2012. u 11:44 · pre 172 meseca #6
Pre svega
Code (php):

if(!$_POST['btn'])  
{
     //ako button nije pritisnut ne radi nista...
}
 


ovo ti je nepotrebno.
Probaj da kreneš sa if(isset($_POST['btn'])) { ... } ili if(!empty($_POST)) { ... } ..

Problem koji ti imaš je sličan kao problem u ovoj temi.
http://www.elitesecurity.org/p3130173
Potpis
about:networking
Re: Šta ovde ne valja? 05.09.2012. u 12:08 · pre 172 meseca #7
Zamenio sam button sa submit i napokon uđe u php fajl, ali sa errorom na liniji 23

error: "Parse error: syntax error, unexpected '$_POST' (T_VARIABLE) in C:\wamp\www\vezba.com\register.php on line 23"

linija 23 je ova:
Code (php):
$ubaci = mysql_query("insert into useri(username, email, pass) values("$_POST["txt1"]","$_POST["txt2"]","$_POST["txt3"]")");


Je l' to error u navodnicima možda?
Re: Šta ovde ne valja? 05.09.2012. u 12:14 · pre 172 meseca #8
Uzmi i pre nego što ubaciš u bazu..

kao na linkovanom primeru..

Code (php):


$txt1 = htmlentities($_POST['txt1'], ENT_QUOTES, "UTF-8");

$txt2 = htmlentities($_POST['txt2'], ENT_QUOTES, "UTF-8");

$txt3 = htmlentities($_POST['txt3'], ENT_QUOTES, "UTF-8");

 


Dakle, $txt1, 2, 3 su bile prazne, a nakon pritiskanja dugmeta, te promenjive su preuzele vrednosti korisnika...
spremne za upis.
Potpis
about:networking
Sviđa mi se1
Re: Šta ovde ne valja? 05.09.2012. u 12:23 · pre 172 meseca #9
Zamenio sam, ali opet isti error...

evo izmenjenog koda..

Code (php):

<?php
$host_name = "localhost:3307";
$db_username = "root";
$password = "123";
$db_name = "vezba";

$txt1 = htmlentities($_POST['txt1'], ENT_QUOTES, "UTF-8");
$txt2 = htmlentities($_POST['txt2'], ENT_QUOTES, "UTF-8");
$txt3 = htmlentities($_POST['txt3'], ENT_QUOTES, "UTF-8");

if(!$_POST['btn'])  
{
     //ako button nije pritisnut ne radi nista...
}
else
{
$con = mysql_connect("$host_name", "$db_username", "$password");
//ako jeste konektuj se...
if(!$con)
{
     echo 'Could not connect...';
     //ako se ne moze konektovati ispisi...
}
mysql_select_db("$db_name") or die("No Database"); //selektuj bazu vezba
if($txt1!=0 & $txt2!=0 & $txt3 !=0 & $txt4!=0 & $txt3 == $txt4)
{
$ubaci = mysql_query("insert into useri(username, email, pass) values("$txt1","$txt2","$txt3")");
//ako je vrednost tekst polja rzlicita od nula, i password polje jednako confirm pass polju ubaci vrednosti iz polja u bazu
$selektuj = mysql_query('select '$txt1' from useri');
//selektuj vrednost text polja username iz baze...
while($red = mysql_fetch_array($selektuj)) //dok citas podatke iz baze smesti ih u varijablu '$red'..
  {
  echo 'Thank you'. " " . $red['username'] . 'for registration...';
  }
}
else{die("password is not same, or text values are null...")}
mysql_close($con); //
}
?>
 
Re: Šta ovde ne valja? 05.09.2012. u 12:46 · pre 172 meseca #11
Zaboga, potrudi se bar da prepišeš primer kako treba.
I uzmi neku finu knjigu pre nego što počneš da bombarduješ forum (pogrešan) početničkim pitanjima. Imaš forum PHP za početnike

STRINGOVI SE KONKATENIRAJU OPERATOROM "." (tačka)
Tekst vrednosti kod inserta u bazu se stavljaju između ' (single quote)

"insert into useri(username, email, pass) values("$txt1","$txt2","$txt3")"

"insert into useri(username, email, pass) values('"$txt1"','" . $txt2 . "','" . $txt3 . "')"
Sviđa mi se1
Re: Šta ovde ne valja? 05.09.2012. u 13:23 · pre 172 meseca #12
yap, but error is still there... :S

Znam da se spajaju sa ".", programirao sam ranije u C#.net-u i uvek sam izbegavao nepotrebne navodnike, u C#-u je to islo ovako:

skracena verzija
Code (csharp):

SqlCommand com = new SqlCommand();
com.CommandText = "insert into ime_baze(bla bla) values(@bla_bla)";
com.Parameters.AddWithValue("@bla_bla", odakle);
 


ti navodnici samo zbunjuju i prave kod ne citljivim...

Ovo je Php podforum nisam ni video da postoji deo za pocetnike...
Ja mislim da forum sluzi da se sticu nova znanja i resavaju problemi, na tebi je da li ces nekome pomoci ili ne, ono gore isto kao i pre sa istim Exception-om na istoj liniji ne radi.....
Re: Šta ovde ne valja? 05.09.2012. u 13:32 · pre 172 meseca #13
Uzmi ti i lepo sve pročitaj ovde za početak → http://de2.php.net/manual/en/language.types.string.php, a c sintaksa, to jest, php sintaksa je jako slična sa c sintaksom, međutim, što si i sam video, definitivno postoje razlike. Parser ti je rekao.. djoka_l ti je rekao.. ja pokušavam da ti dam hint, jer ako ti sve kažemo, od tebe će ispasti - ništa.. i tako. :)
Potpis
about:networking
Sviđa mi se1
Re: Šta ovde ne valja? 05.09.2012. u 14:41 · pre 172 meseca #14
Ma ok, ne volim ni ja kad mi je sve na tanjiru, ali mi nije jasno kako pokazuje samo jednu istu liniju koda kao pogresnu..

Code (php):

$ubaci = mysql_query("insert into useri(username, email, pass) values('"$txt1 . "','" . $txt2 . "','" . $txt3 . "')";
 
Re: Šta ovde ne valja? 05.09.2012. u 14:52 · pre 172 meseca #15
Nedostaje ti tačka pre $txt1 i zatvorena zagrada pre ;
Re: Šta ovde ne valja? 05.09.2012. u 15:13 · pre 172 meseca #16
O Bože ahhaa koja glupost :S
Evo zbog toga nikako ne volim navodnike, totalno se pogubim...

Hvala Vam puno, radi sve normalno, sada radim login stranu... moraću ovu registraciju još malo dopuniti sa ajax proverama i captcha generatorom, još jednom hvalaaa :)

Uy ovo je bilo jos par sličnih problema..
Re: Šta ovde ne valja? 05.09.2012. u 15:29 · pre 172 meseca #17
U ovom kodu lakse je naci sta nije dobro nego sta je dobro :D

<?php
$host_name = "localhost:3307"; // verovatno ti port ni ne treba ali ajde
$db_username = "root";
$password = "123";
$db_name = "vezba";

if(!$_POST['btn']) // ovdje treba da bude !isset($_POST['btn'])
{
//ako button nije pritisnut ne radi nista...
}
else
{
$con = mysql_connect("$host_name", "$db_username", "$password"); //stace ti " na promenjivoj??? Brisi to
//ako jeste konektuj se...
if(!$con)
{
echo 'Could not connect...';
//ako se ne moze konektovati ispisi...
}
mysql_select_db("$db_name") or die("No Database"); //selektuj bazu vezba ( i ovdje stace ti " na promenjivoj, isto brisi
if($_POST['txt1']!=0 & $_POST['txt2'] !=0 & $_POST['txt3'] !=0 & $_POST['txt4'] !=0 & $_POST['txt3'] == $POST['txt4']) // zar nije lakse i bolje koristiti !empty($_POST['txt1']) && ...
{
$ubaci = mysql_query("insert into useri(username, email, pass) values("$_POST["txt1"]","$_POST["txt2"]","$_POST["txt3"]")"); //query ne valja nikako treba da bude
// "INSERT INTO useri (username, email, pass) VALUES ('".$_POST['txt1']."', '".$_POST['txt1']."', '".$_POST['txt1']."')"

//ako je vrednost tekst polja rzlicita od nula, i password polje jednako confirm pass polju ubaci vrednosti iz polja u bazu
$selektuj = mysql_query('select '$_POST["txt1"]' from useri'); //ovdje "select".$_POST['txt1']."from useri"
//selektuj vrednost text polja username iz baze...
while($red = mysql_fetch_array($selektuj)) //dok citas podatke iz baze smesti ih u varijablu '$red'..
{
echo 'Thank you'. " " . $red['username'] . 'for registration...';
}
}
else{die("password is not same, or text values are null...")}
mysql_close($con); //
}
?>

Moguce da sam negde i ja pogresio. Sad ti to sve fino prepravi kako sam u komentarima napisao i onda javi radi li.

Edit:

Nemoj ovo da koristis na nekom sajtu slucajno...I koristi PDO za pristup bazi
Re: Šta ovde ne valja? 05.09.2012. u 15:51 · pre 172 meseca
izmenjeno 2 puta, poslednji put Boyka 05.09.2012. u 16:18
  1. Boyka05.09.2012. u 16:18zapis iz teksta poruke
  2. Boyka05.09.2012. u 16:12zapis iz teksta poruke
#18
localhost:3307 nije default port, ako bih stavio localhost on b trazio samo 3306, na kom je MS SQL Server, a ne MySQL ;)
Ostalo nisam ni citao jer je nemoguce, koristi code:php tagove molim te :)

evo ga kod...
Code (php):

<?php
$host_name = "localhost:3307";
$db_username = "root";
$password = "123";
$db_name = "vezba";

$txt1 = htmlentities($_POST['txt1'], ENT_QUOTES, "UTF-8");
$txt2 = htmlentities($_POST['txt2'], ENT_QUOTES, "UTF-8");
$txt3 = htmlentities($_POST['txt3'], ENT_QUOTES, "UTF-8");
$txt4 = htmlentities($_POST['txt3'], ENT_QUOTES, "UTF-8");

if(isset($_POST['btn']))
{
$error = array();
     
     //username
if(empty($txt1))
{
     $error[] = 'Please enter a username. ';
}
else if( ctype_alnum($txt1) )
{
     $username = $txt1;
}
else
{
     $error[] = 'Username must consist of letters and numbers only. ';
}
     
//email
if(empty($_POST[$txt2]))
{
    $error[] = 'Please enter your email. ';
}
else if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $txt2))
{
     $email = mysql_real_escape_string($txt2);
}
else
{
     $error[] = 'Your e-mail address is invalid. ';
}    
     //password
if(empty($txt3))
{
     $error[] = 'Please enter a password. ';
}
else if($txt3<=6)
{
     $error[] = 'Password must contain minimum 6 character..';
}
else if($txt3!=$txt4)
{
     $error[] = 'Confirm password';
}
else
{
     $password = mysql_real_escape_string($txt3);
}
     
$con = mysql_connect("$host_name", "$db_username", "$password");
//ako jeste konektuj se...
if(!$con)
{
     echo 'Could not connect...';
     //ako se ne moze konektovati ispisi...
}
mysql_select_db("$db_name") or die("No Database"); //selektuj bazu vezba

$ubaci = mysql_query("insert into useri(username, email, pass) values('" . $txt1 . "','" . $txt2 . "','" . $txt3 . "')") or die('Could not insert values into database' . " " . mysql_error());
//ako je vrednost tekst polja rzlicita od nula, i password polje jednako confirm pass polju ubaci vrednosti iz polja u bazu
echo 'Thank you for registration!';
mysql_close($con);
}
?>
 


EDIT: Zasto ne treba da koristim u pravom sajtu, ovo je sad vezba, ali sam uskoro mislio jedan pravi sajt da napravim... Mislio sam i ovo kriptovati u MD5
Re: Šta ovde ne valja? 05.09.2012. u 16:50 · pre 172 meseca #20
da izmeniću sada...

hvala na savetima...
ne znam ni sam zašto sam greške proveravao if-om :O
lakše mi je bilo da sam ovako:

switch($txt3)
case empty:
case <= 6:
itd...
Tema je zaključana, nove poruke nisu moguće.

Premeštanje teme