Gå til innhold

Hjelp med sporingsnummer kode for eget bruk


Anbefalte innlegg

Hei!

 

Jeg holder på å lage en liten kode for meg selv, så jeg kan sjekke status på pakkene mine på posten fra lokal server istedet for å gå inn på posten.no, åpne popupen osv osv.

 

Ikke spør hvorfor jeg vil det, jeg vil det bare enkelt og greit.

 

Uansett, her er koden min.

 

 

 

<?php
$sporingsnummer = $_GET['sporingsnummer'];

if ($_GET['sporingsnummer']) {
$ch = curl_init();   

$url = "http://62.148.47.152/posten/PagesKM/KMSporingInternett.aspx?ShipmentNumber=".$sporingsnummer."";

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);

//Tidspunkt
preg_match_all("!<span id=\"SporingUserControl_lblTraceTimestamp\">(.*?)</span>!s", $out, $tidspunkt); 

//Detaljer
preg_match_all("!<TD valign=\"top\">(.*?)</TD>!s", $out, $detaljer); 

//Søkeresultat
preg_match_all("!</TR>
	</table>

	<TABLE class=\"searchResultTable\">(.*?)</table>
</TABLE>!s", $out, $resultat);

	$detaljer[1][1] = str_replace("SMARTPOST PAKKE", "<a href=\"http://www.postbutikken.no/default.asp?id=SMARTP\" target=\"_blank\">SMARTPOST PAKKE</a>", $detaljer[1][1]);

$resultat[1][0] = str_replace("INNLEVERT", "<span style=\"color: #006600;\"><b>INNLEVERT</b></span>", $resultat[1][0]);
$resultat[1][0] = str_replace("AVVIK", "<span style=\"color: #FF0000;\"><b>AVVIK</b></span>", $resultat[1][0]);
$resultat[1][0] = str_replace("Årsak:", "<b>Årsak:</b>", $resultat[1][0]);
$resultat[1][0] = str_replace("Tiltak:", "<b>Tiltak:</b>", $resultat[1][0]);

$resultat[1][0] = str_replace("<td>", "<td valign=\"top\">", $resultat[1][0]);





?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Finn pakken din</title>
<link rel="stylesheet" type="text/css" href="css/main.css" media="screen" />
<link rel="stylesheet" type="text/css" href="css/print.css" media="print" />
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="css/ie6_or_less.css" />
<![endif]-->
<script type="text/javascript" src="js/common.js"></script>
</head>
<body id="type-a">
<div id="wrap">

<div id="header">
	<div id="site-name">Finn pakken din  </div>
	<div id="search">
		<form action="" method="get">
		<label for="searchsite">Kollinummer:</label>
		<input id="sporingsnummer" name="sporingsnummer" type="text" />
		<input type="submit" value="Søk" class="f-submit" />
		</form>
  </div>
	<ul id="nav">
	<li class="first"><a href="index.php">Forsiden</a></li>
	<li class="active"><a href="#">Tjenester</a>
		<ul>
		<li class="first"><a href="posten.php">Nettsporing</a></li>
		<li><a href="http://posten.no/Portal/Produkterogtjenester/Nettspor">Om nettsporing</a></li>
		<li><a href="http://epab.posten.no/">Finn postnummer</a></li>
		<li><a href="http://www.posten.no/Portal/Privat/SavnedeJulepakker2007.htm">Bortkomne pakker</a></li>
		<li class="last"></li>
		</ul>
	</li>
	</ul>
</div>

 <div id="content-wrap">

	<div id="content">

		<div id="breadcrumb">
		<a href="index.php">Forsiden</a> / Kollinummer <?php echo $sporingsnummer; ?>			</div>



		<p>
		  <?php	


echo "<h2>Sporingsnummer ".$sporingsnummer."</h2>";

echo "<b>Søketidspunkt:</b> ".$tidspunkt[1][0]."<br />";
echo "<b>Kollinummer:</b> ".$detaljer[1][0]."<br />";
echo "<b>Produkt:</b> ".$detaljer[1][1]."<br />";
echo "<b>Vekt:</b> ".$detaljer[1][3]."<br />";
echo "<b>Volum:</b> ".$detaljer[1][5]."<br />";
echo "<b>Prisgrunnlag:</b> ".$detaljer[1][7]."<br /><br>";



echo "<table width=\"600px; padding: 5px; text-align: left;\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">".$resultat[1][0]."</table><br /><br>";

echo '
<div class="featurebox"><h3>Visste du at?</h3>
<p>
Du kan spore alle pakker og enkelte brevprodukter (swiftpost, verdipost, rekommanderte sendinger og PUM) med Postens sporingstjeneste.
<br><br><a href="http://posten.no/Portal/Produkterogtjenester/Nettspor" class="morelink" title="Nettsporing" target="_blank">Les mer</a></p></div>
';

} else echo '<h1>Finne pakka di?</h1>Du kan søke etter et sporingsnummer!<br><br>

	<form action="" method="get">
		<label for="searchsite">Kollinummer:</label>
		<input id="sporingsnummer" name="sporingsnummer" type="text" />
		<input type="submit" value="Søk" class="f-submit" />
		</form> <i>F.eks: SM118655117NO</i><br><br>

		<div class="featurebox"><h3>Visste du at?</h3>
<p>
Du kan spore alle pakker og enkelte brevprodukter (swiftpost, verdipost, rekommanderte sendinger og PUM) med Postens sporingstjeneste.
<br><br><a href="http://posten.no/Portal/Produkterogtjenester/Nettspor" class="morelink" title="Nettsporing" target="_blank">Les mer</a></p></div>

';

?>
		</p>

		<hr />

		<p> </p>
		<div id="footer">
		<p>En tjeneste av <a href="http://www.ludrio.no" target="_blank">Ludrio </a></p>
		<p> </p>
		</div>

	</div>

 </div>
</div>
</body>
</html>

 

 

 

Problemet er at selve pakkeinformasjonen kommer ikke med. Vet ikke hvorfor.

 

Altså denne biten echoer ingenting.

 

echo "<table width=\"600px; padding: 5px; text-align: left;\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">".$resultat[1][0]."</table><br /><br>";

Endret av uranus
Lenke til kommentar
Videoannonse
Annonse

Litt offtopic.

laget noe slikt i Classic asp for mange mange år siden ;) men trur nok koden min var en del mer rotete enn din da, men den fungerte nå. kom aldri til å bruke den når den var ferdig.

 

men det som hadde vært noe hvis noen hadde laget et program som kjører i bakgrunnen, og oppdaterer alle pakkesporingsnummer man har, og hvis det skjer en endring, gi et msn liknende vindu. hadde vært veldig nyttig når det gjelder utenlandspakker. for der blir sporingsnummeret først aktivt når pakken kommer inn i landet.

Lenke til kommentar

du kan gjøre print_r($detaljer) og print_r($resultat) for å se på arrayene.

 

kan hende hostene du har testet på ikke har curl.

 

prøv $out = file_get_contents($url);

 

eller

$out = '';

$f = fopen($url, 'r');

while ($line = fgets($f)) $out .= $line;

fclose($f);

Endret av grimjoey
Lenke til kommentar

Vet ikke om det er dette du er ute etter, men jeg har laget noe som funker fint. Du bare skriver inn pakkenummert og så kommer det informasjon om pakken, informasjonen kan du gjøre hva du vil med, jeg skriver den ut, men det funker fint å sende den på epost, legge den inn i database, osv.

 

La fila som vedlegg(den er i .txt format)

post.txt

Lenke til kommentar
kan jeg få spørre hva "!s" i regexp betyr? finner ingen info om den syntaksen.

! blir brukt som delimiter og s er en pattern modifier som gjør at . også inneholder newline.

ahh. diskusjon.no er uffattelig ustabil her no.

 

men har du noen linker der denne er forklart. alle referansene på regexp jeg finner har ikke forklart denne.

Lenke til kommentar

bare noen småjusteringer. fjernet litt av søketeksten din. manglet tr td en plass.(men det var kanskje som følger av jeg endret søketeksten)

ellers burde du få htmlen litt mere etter standarden. den er ikke validert sånn som den er nå.

 

 

<?php
$sporingsnummer = $_GET['sporingsnummer'];

if ($_GET['sporingsnummer']) {
$ch = curl_init();   

$url = "http://62.148.47.152/posten/PagesKM/KMSporingInternett.aspx?ShipmentNumber=".$sporingsnummer."";

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);

//Tidspunkt
preg_match_all("!<span id=\"SporingUserControl_lblTraceTimestamp\">(.*?)</span>!s", $out, $tidspunkt); 

//Detaljer
preg_match_all("!<TD valign=\"top\">(.*?)</TD>!s", $out, $detaljer); 

//Skeresultat
preg_match_all('!<TABLE class="searchResultTable">(.*?)<\/table>!s', $out, $resultat);

	$detaljer[1][1] = str_replace("SMARTPOST PAKKE", "<a href=\"http://www.postbutikken.no/default.asp?id=SMARTP\" target=\"_blank\">SMARTPOST PAKKE</a>", $detaljer[1][1]);

$resultat[0][1] = str_replace("INNLEVERT", "<span style=\"color: #006600;\"><b>INNLEVERT</b></span>", $resultat[0][1]);
$resultat[0][1] = str_replace("AVVIK", "<span style=\"color: #FF0000;\"><b>AVVIK</b></span>", $resultat[0][1]);
$resultat[0][1] = str_replace("Årsak:", "<b>Årsak:</b>", $resultat[0][1]);
$resultat[0][1] = str_replace("Tiltak:", "<b>Tiltak:</b>", $resultat[0][1]);

$resultat[0][1] = str_replace("<td>", "<td valign=\"top\">", $resultat[0][1]);

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Finn pakken din</title>
<link rel="stylesheet" type="text/css" href="css/main.css" media="screen" />
<link rel="stylesheet" type="text/css" href="css/print.css" media="print" />
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="css/ie6_or_less.css" />
<![endif]-->
<script type="text/javascript" src="js/common.js"></script>
</head>
<body id="type-a">
<div id="wrap">

<div id="header">
	<div id="site-name">Finn pakken din  </div>
	<div id="search">
		<form action="" method="get">
		<label for="searchsite">Kollinummer:</label>
		<input id="sporingsnummer" name="sporingsnummer" type="text" />
		<input type="submit" value="Sk" class="f-submit" />
		</form>
  </div>
	<ul id="nav">
	<li class="first"><a href="index.php">Forsiden</a></li>
	<li class="active"><a href="#">Tjenester</a>
		<ul>
		<li class="first"><a href="posten.php">Nettsporing</a></li>
		<li><a href="http://posten.no/Portal/Produkterogtjenester/Nettspor">Om nettsporing</a></li>
		<li><a href="http://epab.posten.no/">Finn postnummer</a></li>
		<li><a href="http://www.posten.no/Portal/Privat/SavnedeJulepakker2007.htm">Bortkomne pakker</a></li>
		<li class="last"></li>
		</ul>
	</li>
	</ul>
</div>

 <div id="content-wrap">

	<div id="content">

		<div id="breadcrumb">
		<a href="index.php">Forsiden</a> / Kollinummer <?php echo $sporingsnummer; ?>			</div>



		<p>
		  <?php	


echo "<h2>Sporingsnummer ".$sporingsnummer."</h2>";

echo "<b>Søketidspunkt:</b> ".$tidspunkt[1][0]."<br />";
echo "<b>Kollinummer:</b> ".$detaljer[1][0]."<br />";
echo "<b>Produkt:</b> ".$detaljer[1][1]."<br />";
echo "<b>Vekt:</b> ".$detaljer[1][3]."<br />";
echo "<b>Volum:</b> ".$detaljer[1][5]."<br />";
echo "<b>Prisgrunnlag:</b> ".$detaljer[1][7]."<br /><br>";



echo "<table width=\"600px; padding: 5px; text-align: left;\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\"><tr><td>".$resultat[0][1]."</td></tr></table><br /><br>";

echo '
<div class="featurebox"><h3>Visste du at?</h3>
<p>
Du kan spore alle pakker og enkelte brevprodukter (swiftpost, verdipost, rekommanderte sendinger og PUM) med Postens sporingstjeneste.
<br><br><a href="http://posten.no/Portal/Produkterogtjenester/Nettspor" class="morelink" title="Nettsporing" target="_blank">Les mer</a></p></div>
';

} else echo '<h1>Finne pakka di?</h1>Du kan søke etter et sporingsnummer!<br><br>

	<form action="" method="get">
		<label for="searchsite">Kollinummer:</label>
		<input id="sporingsnummer" name="sporingsnummer" type="text" />
		<input type="submit" value="Sk" class="f-submit" />
		</form> <i>F.eks: SM118655117NO</i><br><br>

		<div class="featurebox"><h3>Visste du at?</h3>
<p>
Du kan spore alle pakker og enkelte brevprodukter (swiftpost, verdipost, rekommanderte sendinger og PUM) med Postens sporingstjeneste.
<br><br><a href="http://posten.no/Portal/Produkterogtjenester/Nettspor" class="morelink" title="Nettsporing" target="_blank">Les mer</a></p></div>

';

?>
		</p>

		<hr />

		<p> </p>
		<div id="footer">
		<p>En tjeneste av <a href="" target="_blank">Ludrio </a></p>
		<p> </p>
		</div>

	</div>

 </div>
</div>
</body>
</html>

 

Endret av thor918
Lenke til kommentar

akkurat da trur jeg skjønner hvorfor jeg ikke fant noe om det

 

The syntax for patterns used in these functions closely resembles Perl. The expression should be enclosed in the delimiters, a forward slash (/), for example. Any character can be used for delimiter as long as it's not alphanumeric or backslash (\). If the delimiter character has to be used in the expression itself, it needs to be escaped by backslash. Since PHP 4.0.4, you can also use Perl-style (), {}, [], and <> matching delimiters. See Pattern Syntax for detailed explanation.

 

så egentlig kunne man ha skrevet:

"/ regexppattern /s"

 

takker for oppklaringen. er ikke akkurat så inne i regexp at det gjør noe. får vel legge denne til favoritter, så kan jeg se tilbake på tråden ;)

Lenke til kommentar
Takk for det, men den henter faktisk ikke ut noe som helst annet enn toppen av siden, hehe :p

 

Er ikke helt sikker på om jeg skjønner hva problemet er, når jeg bruker den så henter den ut info om pakken, og det var vel det du ville ha?

 

hvis du ser på hans kode, så henter den ut info og i tillegg kan han håndere hver enkelt informasjonskapsel, og plassere de hvor han vil.

Lenke til kommentar
Posten har API for sporingsfunksjonen, så hvis du registrerer deg hos Posten kan du langt enklere lage et slikt program.

 

Se for øvrig vedlagte dokument (det er 2 år gammelt, antagelig har enkelte ting endret seg siden den gang).

å hvor mye koster denne registreringen?

må man være firma for å registrere?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...