Jump to content
php.lv forumi

Pāris jautājumi


x000x01

Recommended Posts

Lieta tāda, sen jau programmēju, bet šodien izlēmu pamācīties PHP. Kā, nekā vajadzīga lieta mūsdienu programmētājam. Nokačāju visu, sastādīju un sāku kodēt. Bet ir pāris jautājumi.

 

1. Kāds PHP editors ir pietiekoši labs un populārs. Pašlaik lietoju VS.PHP kas ir kā komponents Visual Studio 2008. Man pierastā vidē vienkārši gribējās kodēt. Bet vatbūt ir kādi daudz labāki par šo? Vairāk: http://www.jcxsoftware.com/vs.php

 

2. Šo daļu es nevarēju izdomāt un uzprasīju draugam. Viņš kaut kur aizskrēja un nepaskaidroja kāpēc viņš izmantoja mysql_real_escape_string. Kāpēc? :)

		$result = mysql_query('SELECT * FROM users WHERE login = "'.mysql_real_escape_string($login) .'" OR email = "'.mysql_real_escape_String($email) .'"');
	if (mysql_num_rows($result) == true)

 

3. Vai šāds kods ir derīgs? Itkā jau ir kā ir, bet varbūt kaut kur ir pielaistas rupjas kļūdas vai arīto pašu var izdarīt daudz ērtāk un produktīvāk? Lūdzu.

 

db_config.php

<?php

////////////////
//Database info
$db_host = "localhost";
$db_user = "mansjuzeris";
$db_pass = "manaparolle";
$db_name = "manadatubaze;

/////////////
//Connection
$connection = mysql_connect($db_host, $db_user, $db_pass) or die("Cannot connect to Database!");
mysql_select_db($db_name, $connection) or die("Cannot open Database!");

?>

 

register.php

<?php
require("db_config.php");

////////////////////
//Writing variables
$date = date('Ymd');
$login = $_POST["username"];
$password = $_POST["password"];
$email = $_POST["email"];
$first_name = $_POST["first_name"];
$last_name = $_POST["last_name"];
$form_submitted = $_POST["form_submitted"];

////////////////////////////////
//Checking if form is submitted
if ($form_submitted == true)
{
//////////////////////////////////////
//Checking if the variables are empty
if ($login && $password && $email && $first_name && $last_name != "")
{
	/////////////////////////////
	//Checking if the username/email already exists
	$result = mysql_query('SELECT * FROM users WHERE login = "'.mysql_real_escape_string($login) .'" OR email = "'.mysql_real_escape_String($email) .'"');
	if (mysql_num_rows($result) == true)
	{
		echo "User/Email already exists!";
	}
	else
	{
		///////////////////
		//Registering user
		$query = "INSERT INTO users VALUES ('NULL', '$login', '$password', '$email', '$first_name', '$last_name', '$date')";
		$result = mysql_query($query, $connection) or die(mysql_error());
	}

}
}

?>

<form action="register.php" method="POST">
Username: <input type="text" name="login"> <br>
Password: <input type="password" name="password"> <br>
Email:	<input type="text" name="email"> <br>
Name:	 <input type="text" name="first_name"> <br>
Surname:  <input type="text" name="last_name"> <br>
		  <input type="submit" value="Register">
		  <input type="hidden" name="form_submitted" value="yes">
</form>

 

index.php

<?php
require("db_config.php");

////////////////////
//Writing variables
$login = $_POST["username"];
$password = $_POST["password"];
$form_submitted = $_POST["form_submitted"];

////////////////////////////////////
//Checking if the form is submitted
if ($form_submitted == true)
{
/////////////////////////////////////////
//Checking if there is something entered
if ($login && $password != "")
{
	///////////////////////////////////////////
	//Checking if the values exist in database
	$result = mysql_query("SELECT * FROM users WHERE login='" . $login . "' AND password='" . $password . "'");
	if (mysql_num_rows($result) == true)
		echo "You are logged in!";	
	else
		echo "Login or/and Password are incorrect!";		
}	
}


?>

<form action="index.php" method="POST">
Username: <input type="text" name="username"> <br>
Password: <input type="password" name="password"> <br>
		  <input type="submit" value="Login">
		  <input type="hidden" name="form_submitted" value="yes">
</form>

 

 

Ceru, ka palīdzēsiet.

Link to comment
Share on other sites

1) Editoru katrs lieto tādu, kāds viņam liekas visērtākais. Labu laiku lietoju RapidPHP, tad Eclipse PDT, tagad esmu pārgājis uz Netbeans 6.5 for PHP. Ja VS tev ir pierasta vide, tad nedomāju, ka ir kādi būtiski trūkumi attiecīgajam php editoram.

 

2) mysql_real_escape_string ir pat ļoti vajadzīgs. Turklāt ne tikai vienā vietā kodā, bet visur, kur tu vērsies pie datubāzes ar lietotāja ievadītajiem datiem. Lai labāk saprastu, pameklē google pēc SQL injection.

 

3) vairākās vietās kur tiek rakstīti SQL query ir aizmirsts par mysql_real_escape_string un būtībā tavs kods ir ļoti nedrošs. Atkal ieteiktu palasīt par SQL injection.

Link to comment
Share on other sites

1) Editoru katrs lieto tādu, kāds viņam liekas visērtākais. Labu laiku lietoju RapidPHP, tad Eclipse PDT, tagad esmu pārgājis uz Netbeans 6.5 for PHP. Ja VS tev ir pierasta vide, tad nedomāju, ka ir kādi būtiski trūkumi attiecīgajam php editoram.

 

2) mysql_real_escape_string ir pat ļoti vajadzīgs. Turklāt ne tikai vienā vietā kodā, bet visur, kur tu vērsies pie datubāzes ar lietotāja ievadītajiem datiem. Lai labāk saprastu, pameklē google pēc SQL injection.

 

3) vairākās vietās kur tiek rakstīti SQL query ir aizmirsts par mysql_real_escape_string un būtībā tavs kods ir ļoti nedrošs. Atkal ieteiktu palasīt par SQL injection.

 

Kas ir SQLinj es jau zinu, bet vai tad tas, ka salieku mysql_real_escape_string visos kverijos padara to drošu? Parasti taču ir kāds skripts kurš kontrolē SQLinj un viņš tiek uncludēts visos failos, kuros notiek darbība ar SQL. Vai ar mysql_real_escape_string pietiek?

Link to comment
Share on other sites

escape_string ir vajadzīgs

Teiksim profila lapā tev ir dzivesvieta.

Kad saglabā datus tad notiek update table SET dzivesvieta = $dzivesvieta (dzivesvieta = kautkas)

a, ja tajā dvieta ieliek ' WHERE kautkas = kautkas, tad tev viss kverijs nobrūk.

 

Oke. Tagad zināšu un visos kverijos likšu.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...