url validation

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

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

Απάντηση
Serghio
Δημοσιεύσεις: 451
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

url validation

Δημοσίευση από Serghio » 29 Οκτ 2013 20:34

gvre έγραψε:Αφού χρησιμοποιείς το jquery validation μπορείς να πάρεις το pattern του και να το χρησιμοποιήσεις στην php. Έτσι κι αλλίως, δεν έχει νόημα να έχεις άλλο pattern στον client και άλλο στον server.
To pattern του plugin είναι δυσκολο να "δουλευτεί". Εϊναι πολύς κώδικας και αμα βγαίνει σφάλμα ο εντοπισμός του καθίσταται δύσκολος.
Τώρα για παράδειγμα εμφανίζει σφάλμα του τύπου:
Compilation failed: range out of order in character class at offset 153 in
Αντε βρες το.
Επιπλέον στο netbeans που δουλεύω δεν υπάρχει δυνατότητα να διευκρινιστεί ακριβώς μέσα στο pattern που είναι τα διάφορα char classes. Η όλη η δουλειά γίνεται με το μάτι-πράγμα επίπονο. Δεν ξέρω αν αξίζει να πάω με αυτήν την λύση ή ίσως ψάξω κάτι απλούστερο.

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

url validation

Δημοσίευση από gvre » 29 Οκτ 2013 22:12

Μια άλλη λύση (αν ο server που θα φιλοξενήσει τον κώδικα έχει σύνδεση με το internet) είναι να μη χρησιμοποιήσεις patterns κλπ και να κάνεις ένα http head request στο url. Αν σου γυρίσει 200 ΟΚ τότε λογικά είσαι εντάξει. Μπορείς να ξεκινήσεις με τον παρακάτω κώδικα και να τον επεκτείνεις σύμφωνα με τις ανάγκες σου. Καλό είναι να αποκλείσεις τις private ips (να προσθέσεις δηλαδή κάποιους επιπλέον ελέγχους) για λόγους ασφαλείας.

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

function fixUrl($url)
{
	if (!preg_match('#^[a-z]+://#i', $url))
		$url = 'http://' . $url;
	return $url;
}

function isUrlValid($url)
{
	stream_context_set_default(
		array(
			'http' => array(
				'method' => 'HEAD',
				'user_agent' => 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/123.45 (KHTML, like Gecko) Chrome/127.0.0.1 Safari/123.45'
			)
		)
	);

	$headers = @get_headers($url);
	if ($headers === false)
		return false;

	foreach($headers as $h)
	{
		if (strpos($h, 'HTTP') === 0)
		{
			list($proto, $code, $descr) = explode(' ', $h);
			if ($code == 200)
				return true;
		}
	}
	return false;
}

$url = 'in.gr';
$url = fixUrl($url);
var_dump(isUrlValid($url));

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

url validation

Δημοσίευση από alou » 29 Οκτ 2013 23:06

Δεν είναι κακή ιδέα το response check, ούτε το ajax / server side only κατά περίπτωση αλλά δεν
κατάλαβα αλλά γιατί θεωρούμε ότι είναι δύσκολο ένα custom function για το jquery validate?

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

$.validator.addMethod(
        "enaMethodName",
        function()...);
και τη χρησιμοποιείς όπως τους έλεγχους (required, number klp) που ήδη υπάρχουν. Κάπου είχα φτιάξει κάτι παρόμοιο που έπαιρνε σαν παράμετρο το regex που ήθελες να χρησιμοποιήσεις, αν θες να το βρω.

Επίσης, υπάρχει και ένας έλεγχος που αν θυμάμαι καλά λέγεται patterns και είναι φτιαγμένος για παρόμοια χρήση, να κάνει match κάποιο regex, είναι στο additional-methods.js ή κάτι τέτοιο που θα βρείς στο πακέτο του validate.

Στα url τι ακριβώς θες να ελέγξεις? μια λογική είναι να υπάρχουν http:// ή https:// και τουλάχιστον 2 αλφαριθμητικά (+ παύλα) κομμάτια χωρισμένα με . και από εκεί και πέρα δυσκολεύει. Όλη η ουσία είναι να σκεφτείς τι θα ελέγξεις σαν λογική για να φτιαχτεί το αντίστοιχο pattern.

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

url validation

Δημοσίευση από gvre » 30 Οκτ 2013 09:32

alou έγραψε:Δεν είναι κακή ιδέα το response check, ούτε το ajax / server side only κατά περίπτωση αλλά δεν
κατάλαβα αλλά γιατί θεωρούμε ότι είναι δύσκολο ένα custom function για το jquery validate?
Validation στον server θέλει να κάνει. Στον client το κάνει ήδη με jquery.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

url validation

Δημοσίευση από alou » 30 Οκτ 2013 09:50

ΟΚ το έχασα μάλλον σε κάποιο σημείο :D

Απάντηση

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

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

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