Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω κάνει μια φόρμα εγγραφής αλλά δεν μπορώ να ολοκληρώσω την εγγραφή...

 

ο κώδικος που τρέχει μετά το submit είναι αυτός:

><html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>

<?php

//Ορισμός των μεταβλητών και εκχώρηση τιμώνς σε αυτές
$submit = $_POST['submit'];
$username = mysql_escape_string($_POST['username']);
$password = md5(mysql_escape_string($_POST['password']));
$email = mysql_escape_string($_POST['email']);
$name = mysql_escape_string($_POST['name']);
$surname = mysql_escape_string($_POST['surname']);
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$date = date($year."-".$month."-"$day);




if($submit){
	include "connect.php";
	
	$query = mysql_query("SELECT username FROM user_data WHERE username='$username'");
	$count = mysql_num_rows($query);
	
	if(count!=0){
		die("Το ψευδώνυμο υπάρχει ήδη! Παρακάλω επιλέξτε κάποιο άλλο!");
	}
	
	mysql_query("INSERT INTO user_data(username,password,name,surname,birthdate,email) VALUES('$username','$password','$name','$surname','$date','$email')") or die("Η εγγραφή δεν μπόρεσε να ολοκληρωθεί!");
	
	$register = mysql_affected_rows();
	if($register!=0){
		echo "Η εγγραφή ολοκληρώθηκε με επιτυχία!";
	}
}

?>

</body>
</html>

 

Και το αρχέιο που κάνω include παραπάνω είναι αυτό:

><?php
$host = "localhost";
$username = "root";
$password = "";
$db_name = "curriculum_vitae";

$connect = mysql_connect($host,$username,$password) or die("Η σύνδεση με τη βάση απέτυχε!");

mysql_select_db($db_name,$connect) or die("Δεν μπόρεσε να επιλεχτεί η βάση!");
?>

 

Όταν συμπληρώσω όλα τα πεδία (κάνω ελέγχους με javascript για να μην είναι κενά κτλ) πατάω submit και μου εμφανίζει απλά μια λευκή σελίδα ούτε κάποιο μήνυμα ούτε τίποτα και ούτε η εγγραφή μπορεί γίνεται... μπορείτε να μου πείτε ποιο λάθος υπάρχει;;;;

 

 

 

εντάξει έχω κάτι μικρά λαθάκια... τώρα είναι λάθος το

>   $date = date($year."-".$month."-"$day); 

για το οποίο είχα την απορία αν είναι σωστό και μάλλον δεν είναι!!! ξέρει κάποιος πως μπορώ να το κάνω σωστό;;; :P

Δημοσ.

Τελικά παίζει με τον πιο απλο τρόπο....

$date = "$year-$month-$date";

 

Ανεξάρτητα από το πρόβλημα που είχες και έπαιξε τελικά, να σου επισημάνω μερικά "σημαντικά" πράγματα ακόμα:

 

1. Ποτέ mysql_escape_string

 

Ποτέ μα ποτέ μη χρησιμοποιείς αυτή τη συνάρτηση (γιατί δε λαμβάνει υπόψη της το connection encoding). Πάντα mysql_real_escape_string στη θέση της. Υπόψιν ότι για να δουλέψει η mysql_real_escape_string πρέπει να έχεις κάνει το database connection πρίν τη χρησιμοποιήσεις.

 

2. md5 στα τυφλά

 

>$password = md5(mysql_escape_string($_POST['password']));

 

Αυτό είναι τελείως λάθος σα λογική, παρόλο που θα λειτουργεί σωστά υπό "νορμάλ" συνθήκες. Δεν έχει κανένα νόημα να κάνεις mysql_escape_string και μετά md5, εφόσον ο ρόλος της mysql_escape_string είναι να αποτρέψει sql injections (είναι σαφές πως δεν υπάρχει περίπτωση η επιστρεφόμενη τιμή του md5 να έχει μέσα sql injection).

 

3. Επιστρεφόμενη τιμή της mysql_query

 

Είναι true αν το query πέτυχε και false αν δεν πέτυχε. Δε χρειάζεται να κοιτάς affected rows όταν κάνεις insert, ήδη έχεις την απάντηση στα χέρια σου.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...