x000x01 Posted February 20, 2009 Report Share Posted February 20, 2009 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. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted February 21, 2009 Report Share Posted February 21, 2009 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. Quote Link to comment Share on other sites More sharing options...
x000x01 Posted February 21, 2009 Author Report Share Posted February 21, 2009 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? Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 21, 2009 Report Share Posted February 21, 2009 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. Quote Link to comment Share on other sites More sharing options...
x000x01 Posted February 21, 2009 Author Report Share Posted February 21, 2009 escape_string ir vajadzīgsTeiksim 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.