PHP hjálp


Höfundur
B.Ingimarsson
Ofur-Nörd
Póstar: 290
Skráði sig: Sun 08. Ágú 2010 22:08
Reputation: 0
Staðsetning: 600 Akureyri
Staða: Ótengdur

Re: PHP hjálp

Pósturaf B.Ingimarsson » Sun 30. Jan 2011 18:43

intenz skrifaði:<input type="submit" name="button" value="Halda áfram">

type="button" submittar ekki formið og því sendist breytan aldrei.

oki svona er þetta núna:

Kóði: Velja allt

<?php

$name=$_POST[name];
$username=$_POST[username];
$email=$_POST[email];
$email2=$_POST[email2];
$password=$_POST[password];
$password2=$_POST[password2];
$terms=$_POST[accept];
$confirm_code=md5(uniqid(rand()));

//see if password is correct
if ($password==$password2)
{

}
else
{
header("location:villa/incorrectpassword.html");
break;
}

//see if email is correct
if ($email==$email2)
{

}
else
{
header("location:villa/incorrectemail.html");
break;
}

//see if username is alphanumberic
if (!eregi(("[^A-Za-z0-9.^]"),$username))
{

}
else
{
header("location:villa/incorrectusername.html");
break;
}

//see if name is alpharic
if (!eregi(("[^A-Z a-z^]"),$name))
{

}
else
{
header("location:villa/incorrectname.html");
break;
}

if (isset($terms))
{
}
else
{
header("location:villa/terms.html");
break;
}

if ($name=="")
    {header("location:villa/empty.html"); break;}
elseif ($username=="")
    {header("location:villa/empty.html"); break;}
elseif ($email=="")
    {header("location:villa/empty.html"); break;}
elseif ($password=="")
    {header("location:villa/empty.html"); break;}
   
include('connect.php');   
   
$query=sprintf("SELECT * FROM users WHERE username ='%s'",
mysql_real_escape_string($username));

$result=mysql_query($query);
$num=mysql_num_rows($result);

if ($num==0)
{}
else
{header('location:villa/nameinuse.html');}

$query=sprintf("SELECT * FROM users WHERE username ='%s'",
mysql_real_escape_string($email));

$result=mysql_query($query);
$num=mysql_num_rows($result);

if ($num==0)
{}
else
{header('location:villa/emailinuse.html');}

mysql_query(sprintf("INSERT INTO `b.ingimarsson`.`temp` (`code`, `username`, `email`, `password`) VALUES ('%s', '%s', '%s', '%s')",
mysql_real_escape_string($confirm_code),
mysql_real_escape_string($username),
mysql_real_escape_string($email),
mysql_real_escape_string($password)));
?>



<body bgcolor="#252525">
<font color="white" face="arial" >
<b>
     <h2>Nýskráning</h2>
     <h2>______________________________</h2>
</b>
</font>
</body>
<body bgcolor="#252525">
<font color="white" face="arial" >
<b>


<?php

?>

<body bgcolor="#252525">
<font color="white" face="arial" >
<b>

<?php

echo "fullt nafn: ".$name."<br/>" ;
echo "notendanafn: ".$username."<br/>" ;
echo "netfang: ".$email."<br/>" ;
echo "lykilorð: ";

?>

<input type="button" value="sýna lykilorð" onclick="alert('<?php echo ($password); ?>')">
<br/>
<br/>

<?php

echo $confirm_code;

?>

<br/>
<br/>

<form name="form" method="post">
<input type="submit" name="button" value="Halda áfram">
</form>

<?php

if(isset($_POST['button']))
{
mysql_query(sprintf("INSERT INTO `b.ingimarsson`.`users` (`name`, `username`, `email`, `password`) VALUES ('%s', '%s', '%s', '%s')",
mysql_real_escape_string($name),
mysql_real_escape_string($username),
mysql_real_escape_string($email),
mysql_real_escape_string($password)));
echo "echo";
}
else
{}

?>

</b>
</font>
</body>

þegar ég ýti á takkann fer ég yfir á villa/terms.html, wtf :catgotmyballs



Skjámynd

Revenant
</Snillingur>
Póstar: 1034
Skráði sig: Fim 24. Jún 2004 12:36
Reputation: 132
Staða: Ótengdur

Re: PHP hjálp

Pósturaf Revenant » Sun 30. Jan 2011 18:45

B.Ingimarsson skrifaði:ætlaði að láta upplýsingarnar sendast í mysql þegar notandi ýtir á takka, er ekki viss um að þetta sé rétti kóðinn en hvernig gæti ég gert þetta
(echo 'echo' er þarna bara til prófunar)

Kóði: Velja allt

<form name="form" method="post">
<input type="button" name="button" value="Halda áfram">
</form>

<?php

if(isset($_POST['button']))
{
mysql_query(sprintf("INSERT INTO `b.ingimarsson`.`users` (`name`, `username`, `email`, `password`) VALUES ('%s', '%s', '%s', '%s')",
mysql_real_escape_string($name),
mysql_real_escape_string($username),
mysql_real_escape_string($email),
mysql_real_escape_string($password)));
echo "echo";
}
else
{}

?>


Þú verður að keyra mysql_real_escape_string áður en þú kallar á mysql_query()

Dæmi

Kóði: Velja allt


// Athugar hvort að nafn, username, password og email er sett
if ($_POST['name'] && $_POST['username'] && $_POST['password'] && $_POST['email']) {
// Verum viss um að öll field eru örugg
$name = mysql_real_escape_string($_POST['name']);
$user = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);

// Setjum inn í grunninn
mysql_query("INSERT INTO tafla (user,pass,name,email) VALUES('$user', '$pass', '$name', '$email')") or die ( "Villa kom upp í SQL fyrirspurn );
echo 'tókst að setja inn færslu';

} else {
// eitthvað field var ekki sett
echo "Villa, svæði tómt"

}




Skjámynd

intenz
Besserwisser
Póstar: 3337
Skráði sig: Mið 08. Okt 2008 22:07
Reputation: 35
Staðsetning: /dev/null
Staða: Ótengdur

Re: PHP hjálp

Pósturaf intenz » Sun 30. Jan 2011 18:55

Revenant skrifaði:Þú verður að keyra mysql_real_escape_string áður en þú kallar á mysql_query()

Taktu eftir að hann er með sprintf() þarna og mysql_real_escape_string() er í sömu skipun nema bara í nýrri línu. :)

En ég er hlynntari eins og þú gerir þetta.


i7 920 @ 2.8 GHz | Gigabyte EX58-UD3R | CSX 3x2 GB DDR3 @ 1600 MHz | Gigabyte ATi Radeon HD 5850 | Sileo 500 | RealPower 600W | Corsair Force 3 120 GB | 27" FullHD | W7 x64

Skjámynd

dori
Besserwisser
Póstar: 3606
Skráði sig: Fim 12. Feb 2009 10:46
Reputation: 142
Staða: Ótengdur

Re: PHP hjálp

Pósturaf dori » Sun 30. Jan 2011 19:11

B.Ingimarsson skrifaði:oki svona er þetta núna:

Kóði: Velja allt

...

þegar ég ýti á takkann fer ég yfir á villa/terms.html, wtf :catgotmyballs

Það er af því að þegar þú ýtir á þennan takka þá er gert HTTP POST á þetta script. Í öðrum orðum, þú keyrir þetta script frá byrjun og allt sem er fyrir framan er líka keyrt (þar á meðal tékkið hvort það sé búið að samþykkja skilmála). Þú vilt annað hvort setja þetta betur upp. Eða setja þetta síðasta í sér script og benda á það með <form action="annadscript.php" method="post">.




starionturbo
Gúrú
Póstar: 542
Skráði sig: Mán 24. Des 2007 11:23
Reputation: 8
Staðsetning: localhost
Staða: Ótengdur

Re: PHP hjálp

Pósturaf starionturbo » Mán 14. Feb 2011 12:20

:shock: Hvað er málið með ykkur að vera kenna tækni frá því fyrir aldarmót !?

Ef þú vilt ekki nota framework (t.d. Kohana, Yii, CakePHP, Zend, etc.) þá er lágmark að nota mysqli hvort sem Object Orientated eður ey.

Hér er smá sýnishorn hvernig á að nota venjulega mysqli í OOP.

https://gist.github.com/825759

Hér er sama query í Kohana (mitt favorite):

https://gist.github.com/825797


Foobar

Skjámynd

dori
Besserwisser
Póstar: 3606
Skráði sig: Fim 12. Feb 2009 10:46
Reputation: 142
Staða: Ótengdur

Re: PHP hjálp

Pósturaf dori » Mán 14. Feb 2011 13:44

Það var nú enginn sem var að kenna honum tækni frá því fyrir aldamót. Hann var með kóðabút sem hann fékk ekki til að virka og ég benti honum bara alltaf á það hvað það var sem var að hjá honum og hvernig hann gæti lagað vandamálið sem hann var með.

Ég hef sjálfur bara ekki notað PHP svo lengi að ég man ekkert hver munurinn á einhverjum gagnagrunnsdriverum er. Þetta er samt allt svo mikil smáatriði. Það sem menn ættu miklu frekar að einbeita sér að er að læra að nota tungumálið sjálft (og þá er PHP kannski ekki besti kostur í heimi) og svo er hægt að beita því í það sem maður vill. T.d. að tala við gagnagrunn eða skrifa út html.




starionturbo
Gúrú
Póstar: 542
Skráði sig: Mán 24. Des 2007 11:23
Reputation: 8
Staðsetning: localhost
Staða: Ótengdur

Re: PHP hjálp

Pósturaf starionturbo » Mán 14. Feb 2011 15:19

dori; ég er nú kannski ekki beint að segja að menn eigi að sleppa því að hjálpa, meira að beina mínum svörum á það að nota prepared statements því gamla aðferðin mysql_real_escape_string er orðin svo löngu vulnerible fyrir t.d. hex sql injection og öðrum advanced injection technique.

Svona skemmtilegra að beina nýja liðinu í rétta átt


Foobar