Ξέρει κανείς πως να πάρω τα δεδομένα από ένα url ?

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

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

Απάντηση
Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Ξέρει κανείς πως να πάρω τα δεδομένα από ένα url ?

Δημοσίευση από _Invisible_ » 02 Απρ 2008 17:35

Ελα dpa,

το \n στην PHP είναι για την εκτύπωση μιας νέα γραμμής (μην περιμένεις να σου βγει στην σελίδα μια νέα γραμμή, καθώς δεν είναι το <br />, αλλά βάζει μια νέα γραμμή στον κώδικα). Το \r κάνει ακριβώς το ίδιο, αλλά είναι για τα UNIX-based συστήματα και δεν θα δούλευε στα Windows. Οπότε βάζουμε \n\r για μία νέα γραμμή.

Φιλικά,
_Invisible_

P.S.: Χαίρομαι που έχεις αρχίσει να ρωτάς και να προσπαθείς να μπεις στο κλίμα, αλλά να ξέρεις ότι θα ήταν πολύ χρήσιμο να κάνεις μια αναζήτηση στο forum του freestuff.gr καθώς υπάρχουν πολλά topics με πολλές απαντήσεις και ίσως κάποια ερώτησή σου έχει απαντηθεί εκεί. Επίσης και το Google παρέχει πολλές πληροφορίες οπότε καλό είναι να κάνεις μια mini-έρευνα πρώτα και μετά να στρέφεσαι σε αυτούς που γνωρίζουν την απάντηση, καθώς έτσι θα γίνεις καλύτερος στον προγραμματισμό. Αν δεν το κουράσεις το θέμα και πάρεις έτοιμη την απάντηση τότε δεν έχει νόημα. Εντάξει, αυτά είναι απλά πράγματα και επειδή είσαι στην αρχή στα λένε τα παιδιά, αλλά όταν φτάσεις σε ένα επίπεδο θα πρέπει να βρίσκεις τις λύσεις μόνος σου. Αυτό είναι απλά μια συμβουλή.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Ξέρει κανείς πως να πάρω τα δεδομένα από ένα url ?

Δημοσίευση από cpulse » 02 Απρ 2008 19:09

Το \n είναι ένας ειδικός χαρακτήρας που χρησιμεύει στα text files και συμβολίζει την αλλαγή γραμμής. Στα unix/linux/mac συστήματα είναι απλά το \n ενώ στα windows χρειάζεται να το βάζεις σαν ζευγάρι με το \r. Η σωστή σειρά για μια αλλαγή γραμμής είναι \r\n.

Για καλύτερη συμβατότητα καλύτερα ακολούθα την μορφή των windows, δηλαδή \r\n.

Όταν γράφεις headers αν προσέξεις στα παραδείγματα που έχει σε εκείνο το link, σε κάποια σημεία που ένας header πρέπει να συνεχίζει σε επόμενη γραμμή χρειάζεται να μπαίνει και το tab (\t).

Γενικά πάντως το θέμα των emails είναι τεράστιο, κι ας φαίνεται απλό. Αν βγάλεις άκρη μέσα από εκείνο το link στο php.net καλώς. Αν όχι, θα σου πρότεινα να χρησιμοποιήσεις την βιβλιοθήκη phpmailer.

Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Ξέρει κανείς πως να πάρω τα δεδομένα από ένα url ?

Δημοσίευση από _Invisible_ » 02 Απρ 2008 22:06

Thanks cpulse που με διόρθωσες, δεν το θυμόμουν πολύ καλά.
dpa έγραψε:Φίλε cpulse μήπως ξέρεις εσύ πως μπορώ όταν στέλνω ένα email να του εμφανίζει μια ιστοσελίδα που θα του ορίσω?
dpa, δες αν αυτό κάνει την δουλειά σου: (html_email.php)

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

<?php

error_reporting&#40;E_ALL&#41;;
ini_set&#40;'display_errors', true&#41;;

function getRemoteFile&#40;$url&#41; &#123;
   // get the host name and url path
   $parsedUrl = parse_url&#40;$url&#41;;
   $host = $parsedUrl&#91;'host'&#93;;
   if &#40;isset&#40;$parsedUrl&#91;'path'&#93;&#41;&#41; &#123;
      $path = $parsedUrl&#91;'path'&#93;;
   &#125; else &#123;
      // the url is pointing to the host like http&#58;//www.mysite.com
      $path = '/';
   &#125;

   if &#40;isset&#40;$parsedUrl&#91;'query'&#93;&#41;&#41; &#123;
      $path .= '?' . $parsedUrl&#91;'query'&#93;;
   &#125;

   if &#40;isset&#40;$parsedUrl&#91;'port'&#93;&#41;&#41; &#123;
      $port = $parsedUrl&#91;'port'&#93;;
   &#125; else &#123;
      // most sites use port 80
      $port = '80';
   &#125;

   $timeout = 10;
   $response = '';

   // connect to the remote server
   $fp = @fsockopen&#40;$host, '80', $errno, $errstr, $timeout &#41;;

   if&#40; !$fp &#41; &#123;
      echo "Cannot retrieve $url";
   &#125; else &#123;
      // send the necessary headers to get the file
      fputs&#40;$fp, "GET $path HTTP/1.0\r\n" .
                 "Host&#58; $host\r\n" .
                 "User-Agent&#58; Mozilla/5.0 &#40;Windows; U; Windows NT 5.1; en-US; rv&#58;1.8.0.3&#41; Gecko/20060426 Firefox/1.5.0.3\r\n" .
                 "Accept&#58; */*\r\n" .
                 "Accept-Language&#58; en-us,en;q=0.5\r\n" .
                 "Accept-Charset&#58; ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
                 "Keep-Alive&#58; 300\r\n" .
                 "Connection&#58; keep-alive\r\n" .
                 "Referer&#58; http&#58;//$host\r\n\r\n"&#41;;

      // retrieve the response from the remote server
      while &#40; $line = fread&#40; $fp, 4096 &#41; &#41; &#123;
         $response .= $line;
      &#125;

      fclose&#40; $fp &#41;;

      // strip the headers
      $pos      = strpos&#40;$response, "\r\n\r\n"&#41;;
      $response = substr&#40;$response, $pos + 4&#41;;
   &#125;

   // return the file content
   return $response;
&#125;

if &#40;!isset&#40;$_POST&#91;'submit'&#93;&#41;&#41; &#123;
?>
<html><head><title>Send an HTML email</title></head><body><form action="html_email.php" method="POST">Site URL&#58; <input type="text" name="URL" value="" /><br />Encoding&#58; <input type="text" name="encoding" value="" /><br /><input type="submit" name="submit" value="Send HTML Email!" /></form></body></html>
<?php
&#125;
else &#123;
	$URL = &#40;isset&#40;$_POST&#91;'URL'&#93;&#41; && !empty&#40;$_POST&#91;'URL'&#93;&#41;&#41; ? trim&#40;$_POST&#91;'URL'&#93;&#41; &#58; '';
	$encoding = &#40;isset&#40;$_POST&#91;'encoding'&#93;&#41; && !empty&#40;$_POST&#91;'encoding'&#93;&#41;&#41; ? trim&#40;$_POST&#91;'encoding'&#93;&#41; &#58; '';

	if &#40;empty&#40;$URL&#41;&#41; &#123;
		die&#40;'Please enter page URL.'&#41;;
	&#125;
	else &#123;
		if &#40;ini_get&#40;'allow_url_fopen'&#41; == '1'&#41; &#123;
			// get HTML code from page
			$page_contents = file_get_contents&#40;$URL&#41;;
		&#125; else &#123;
			$page_conetnts = getRemoteFile&#40;$URL&#41;;
		&#125;

		if &#40;empty&#40;$encoding&#41;&#41; &#123;
			$encoding = 'iso-8859-1';
		&#125;

		// change this to your email.
		$to = "reciever@example.com"; // reciever
		$from = "sender@example.com"; // sender
		$subject = "Hello! This is an HTML email"; // message subject

		$message = $page_contents;

		$headers  = "From&#58; ".$from."\r\n";
		$headers = "MIME-Version&#58; 1.0\r\n";
		$headers .= "Content-type&#58; text/html; charset=".$encoding."\r\n"; 

		// now let's send the email.
		mail&#40;$to, $subject, $message, $headers&#41;;

		echo "Message has been sent....!";
	&#125;
&#125;

?>

Απάντηση

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

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

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