if έλεγχος προσπέραση

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 22 Φεβ 2011 00:16

Καλησπέρα παιδιά.
Σε αυτόν τον κώδικα

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
include&#40;"connect.php"&#41;; // Σύνδεση με mysql server

// username and password sent from form 
$username=$_POST&#91;'username'&#93;; 
$email=$_POST&#91;'email'&#93;; 

// To protect MySQL injection &#40;more detail about MySQL injection&#41;
$username = stripslashes&#40;$username&#41;;
$username = mysql_real_escape_string&#40;$username&#41;;
$email = stripslashes&#40;$email&#41;;
$email = mysql_real_escape_string&#40;$email&#41;;



$sql="SELECT * FROM members WHERE username='$username'";
$result=mysql_query&#40;$sql&#41;;

// Mysql_num_row is counting table row
$count=mysql_num_rows&#40;$result&#41;;
// If result matched $myusername and $mypassword, table row must be 1 row

if&#40;$count==1&#41;&#123;
header&#40;"location&#58;reg.php?r=1"&#41;;
&#125;


$sql2="SELECT * FROM members WHERE email='$email'";
$result2=mysql_query&#40;$sql2&#41;;

$count2=mysql_num_rows&#40;$result2&#41;;

if&#40;$count2==1&#41;&#123;
header&#40;"location&#58;reg.php?r=2"&#41;;
&#125;


$confirm_code=md5&#40;uniqid&#40;rand&#40;&#41;&#41;&#41;;
// Επιλογή ώρας ζώνης.
$sign = "+"; // Θέτεις GMT + ή - ανάλογα με την τοπική ώρα που θες. 
$h = "3"; // Θέτεις πόσες ώρες πάνω η κάτω από το GMT ανάλογα με την τοπική ώρα που θες.
$dst = "true"; // Βάζεις true εάν η τοπική ώρα υποστηρίζει χειμερινή και καλοκαιρινή ώρα
// ή βάζεις false αν όχι.

// Ανιχνεύει και ρυθμίζει καλοκαιρινή η χειμερινή ώρα.
if &#40;$dst&#41; &#123;
    $daylight_saving = date&#40;'I'&#41;;
    if &#40;$daylight_saving&#41;&#123;
        if &#40;$sign == "-"&#41;&#123; $h=$h-1;  &#125;
        else &#123; $h=$h+1; &#125;
    &#125;
&#125;

// Βρίσκει διαφορά από  GMT
$hm = $h * 60;
$ms = $hm * 60;

// Θέτει την σωστή ώρα σε πραγματικό χρόνο.
if &#40;$sign == "-"&#41;&#123; $timestamp = time&#40;&#41;-&#40;$ms&#41;; &#125;
else &#123; $timestamp = time&#40;&#41;+&#40;$ms&#41;; &#125;

// Τελικό αποτέλεσμα.
$time = gmdate&#40;"l, jS F Y, G&#58;i", $timestamp&#41;;


$firstname=$_POST&#91;"firstname"&#93;;
$lastname=$_POST&#91;"lastname"&#93;;
$email=$_POST&#91;"email"&#93;;
$birthday=$_POST&#91;"datepicker"&#93;;
$username=$_POST&#91;"username"&#93;;
$password=$_POST&#91;"password"&#93;;
$address=$_POST&#91;"address"&#93;;
$city=$_POST&#91;"city"&#93;;
$phone=$_POST&#91;"phone"&#93;;



	
// Eισαγωγή δεδομένων στον πίνακα members.
	$sql3="INSERT INTO temp &#40;confirm_code,userid,username,password,firstname,lastname,birthday,email,address,city,phone,time&#41; values&#40;'$confirm_code','','$username','$password','$firstname','$lastname','$birthday','$email','$address','$city','$phone','$time'&#41;";
	
	$result3=mysql_query&#40;$sql3&#41;or die&#40;"Λάθος στην db"&#41;;

	$to=$email;
   
   $subject="Confirmation email&#58;";
   
   $body = "Ο σύνδεσμος ενεργοποίησης <br /><br />Παρακαλώ κάντε κλικ στον παρακάτω σύνδεσμο για να ενεργοποιήσετε τον λογαριασμό σας<br /><br /><a href='http&#58;//localhost/confirmation.php?passkey=$confirm_code'>http&#58;//localhost/confirmation.php?passkey=$confirm_code</a>";
   
   if&#40;mail&#40;$to, $subject, $body, "From&#58; me@gmail.com\nContent-Type&#58; text/html; charset=UTF-8"&#41;&#41;&#123; 
   header&#40;"location&#58;reg.php?r=3"&#41;;
	
&#125;

else &#123;
header&#40;"location&#58;reg.php?r=4"&#41;;
&#125;
	

			
?>
</body>
</html>

κάνω 2 ελέγχους αν υπάρχει to username η/και το email στον πίνακα members και του λέω header(πάνε εκεί) αν όχι βάλε στον πίνακα temp αυτά και στείλε email confirm.Ολα
καλά μέχρι εδώ όταν όμως αφαιρώ το κομάτι από

Κώδικας: Επιλογή όλων

$confirm_code=md5&#40;uniqid&#40;rand&#40;&#41;&#41;&#41;;
εως το τέλος οι έλεγχοι δουλέυουν κανονικά. Mόλις το βάζω δεν δουλέυει ο έλεγχος τα προσπερνάει και στέλνει email. Mήπως κάνω κάπου λάθος στις if και else?
[/code]

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

if έλεγχος προσπέραση

Δημοσίευση από Akina » 22 Φεβ 2011 14:01

δεν έχω πολυκαταλάβει το πρόβλημα αλλα ο header πρέπει να στέλνετε πριν από οποιδήποτε html

http://php.net/manual/en/function.header.php

Κώδικας: Επιλογή όλων

<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header&#40;&#41; call */
header&#40;'Location&#58; http&#58;//www.example.com/'&#41;;
?>
προσωπική μου γνώμη είναι να δοκιμάσεις ή να το στειλεις πριν εκτέλεσις οποιοδήποτε html η να το κανεις με javascript

https://developer.mozilla.org/en/DOM/window.location

Κώδικας: Επιλογή όλων

echo'<script>window.location = "http&#58;//www.example.com/"; </script>';

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

if έλεγχος προσπέραση

Δημοσίευση από gvre » 22 Φεβ 2011 14:52

Δοκίμασε μετά από κάθε header να βάλεις μια exit; Αν δε δουλέψει, στείλε χωριστά τον κώδικα για τις 2 περιπτώσεις. Βάλε και το παρακάτω στην 1η γραμμή του script.

Κώδικας: Επιλογή όλων

<?php ob_start&#40;&#41;; ?>

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 22 Φεβ 2011 15:00

gvre ενοείς έτσι?

if($count==1){
header("location:reg.php?r=1");
ob_start();
}

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 22 Φεβ 2011 15:04

akina δουλεύει και μέσα.
Να τα κάνω σε άλλο php Αρχείο να βάλω μεσα έλεγχο και headers π.χ. elegxos.php ?
Όμως θα το καλέσω στον κώδικα που έστειλα με include('elegxos.php'); δεν θα συνεχίσει ο παρακάτω κώδικας και θα στείλει email και να βρει ιδιο username η/και email?

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

if έλεγχος προσπέραση

Δημοσίευση από gvre » 22 Φεβ 2011 15:55

Όχι, δεν εννοώ αυτό. Ξαναδιάβασε τι σου έγραψα.

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 22 Φεβ 2011 16:03

Το έκανα με javascript έβαλα hover funtion στο κουμπί δημιουργία λογαριασμού και ελέγχει με ajax την βάση και σου πετάει alret μήνυμα οπότε δεν πατιέται το κουμπί δημιουργία λογαριασμού αν δεν αλάξεις username η/και email.
και δεν σβήνονται τα πεδία που είχε γράψει μέχρι τότε ο χρήστης γιατί με τα header έκανε και ανανέωση σελίδας και έπρεπε όλα από την αρχή.
Τι λέτε καλύτερα?

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 22 Φεβ 2011 16:37

Tο θέμα με την javascript που δοκίμασα αν την έχει απενεργοποιημένη ο χρήστης περνάει τους ελέγχους έιναι ένα θέμα ασφάλειας αυτό.
Υπάρχει λύση?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

if έλεγχος προσπέραση

Δημοσίευση από dva_dev » 22 Φεβ 2011 17:09

Η javascript παρέχει ευκολία όχι ασφάλεια. Ο,τι ελέγχους κάνεις στη javascript πρέπει να τους κάνεις και στην php σαν να μην υπήρχαν καθόλου.

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 23 Φεβ 2011 11:16

Mπορεί να μου πεί κανείς π.χ πως θα κάνω αυτό σε php?

Κώδικας: Επιλογή όλων

function Validate&#40;&#41;
&#123;
	 if &#40;document.registration_form.firstname.value == ''&#41; 
    &#123;
        alert&#40;'Παρακαλώ συμπληρώστε το όνομα σας!'&#41;;
        return false;
    &#125;
	re = /^&#91;Α-Ωα-ωA-Za-z&#93;+$/;
	if&#40;!re.test&#40;document.registration_form.firstname.value&#41;&#41;
	&#123;

	alert&#40;'Μόνο γράμματα επιτρέπονται στο όνομα!'&#41;;
	return false;

	&#125;
    if &#40;document.registration_form.lastname.value == ''&#41; 
    &#123;
       alert&#40;'Παρακαλώ συμπληρώστε το επώνυμο σας!'&#41;;
       return false;
    &#125;
	re = /^&#91;Α-Ωα-ωA-Za-z&#93;+$/;
	if&#40;!re.test&#40;document.registration_form.lastname.value&#41;&#41;
	&#123;

	alert&#40;'Μόνο γράμματα επιτρέπονται στο επώνυμο!'&#41;;
	return false;

	&#125;
    if &#40;document.registration_form.datepicker.value == ''&#41; 
    &#123;
        alert&#40;'Παρακαλώ συμπληρώστε την ημερομηνία γέννηση σας!'&#41;;
        return false;
    &#125;
	if &#40;document.registration_form.username.value == ''&#41; 
    &#123;
        alert&#40;'Παρακαλώ συμπληρώστε ένα όνομα χρήστη!'&#41;;
        return false;
    &#125;
	
    if &#40;document.registration_form.password.value == ''&#41; 
    &#123;
       alert&#40;'Παρακαλώ συμπληρώστε έναν κωδικό της αρεσκέια σας!'&#41;;
      return false;
    &#125;
    if &#40;document.registration_form.Passwordconfirm.value == ''&#41; 
    &#123;
       alert&#40;'Παρακαλώ συμπληρώστε ξανά τον κωδικό για επιβεβαίωση!'&#41;;
      return false;
    &#125;
    if &#40;document.registration_form.password.value != 
    document.registration_form.Passwordconfirm.value&#41; 
    &#123;
        alert&#40;"Οι 2 κωδικοί που γράψατε δεν ταιριάζουν! "+
        "Παρακαλώ συμπληρώστε ξανά τον κωδικό ώστε να ταιριάζει με τον πρώτο!"&#41;;
        return false;
    &#125;
	var x=document.forms&#91;"registration_form"&#93;&#91;"email"&#93;.value
var atpos=x.indexOf&#40;"@"&#41;;
var dotpos=x.lastIndexOf&#40;"."&#41;;
if &#40;atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length&#41;
  &#123;
  alert&#40;"Μη έγκυρο email Συμπληρώστε ξανά!"&#41;;
  return false;
  &#125;

	return true;
&#125;// JavaScript Document




gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

if έλεγχος προσπέραση

Δημοσίευση από gvre » 23 Φεβ 2011 11:26

Για αρχή μπορείς να διαβάσεις το manual της php.

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 23 Φεβ 2011 13:05

Μπορεί να μου πει κανείς που είναι το λάθος?


bool ctype_alpha($text);

if(ctype_alpha($_POST['firstname'])){
echo " This is alphabetic ";
}else{ echo "this is not alphabetic";}

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

if έλεγχος προσπέραση

Δημοσίευση από gvre » 23 Φεβ 2011 13:13

Από το How To Ask Questions The Smart Way.

Don't ask others to debug your broken code without giving a hint what sort of problem they should be searching for. Posting a few hundred lines of code, saying "it doesn't work", will get you ignored. Posting a dozen lines of code, saying "after line 7 I was expecting to see <x>, but <y> occurred instead" is much more likely to get you a response.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

if έλεγχος προσπέραση

Δημοσίευση από korgr » 23 Φεβ 2011 13:22

Αυτό:

Κώδικας: Επιλογή όλων

bool ctype_alpha&#40;$text&#41;; 
δεν πρέπει να υπάρχει στον κώδικα σου. Είναι η αναφορά της σύνταξης από το php manual.

Η εντολή δουλεύει στο τρέχον LOCALE (εκτός αν ορίσεις κάποιο άλλο) και από όσο ξέρω δεν λειτουργεί με ελληνικά σε utf-8
Δοκίμασε ένα string με αγγλικούς χαρακτήρες για επιβεβαίωση...

Το

Κώδικας: Επιλογή όλων

if&#40;ctype_alpha&#40;"Νότης"&#41;&#41;&#123;
echo " This is alphabetic ";
&#125;else&#123; echo "this is not alphabetic";&#125;
επιστρέφει false
ενώ το

Κώδικας: Επιλογή όλων

if&#40;ctype_alpha&#40;"Notis"&#41;&#41;&#123;
echo " This is alphabetic ";
&#125;else&#123; echo "this is not alphabetic";&#125;
επιστρέφει true

abeautifulmind
Δημοσιεύσεις: 319
Εγγραφή: 02 Μάιος 2010 18:04

if έλεγχος προσπέραση

Δημοσίευση από abeautifulmind » 02 Μαρ 2011 13:59

thanks korg

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες