Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP: Pankin viitenumero

woocommerce2019 [23.03.2019 19:01:05]

#

Hei,

jos teen verkkokaupan ja muodostan siinä tilausnumerosta jäsennumeron:

<span><?php printf( __( 'Jäsennumero: %s', 'woocommerce-pdf-invoices' ), $this->order->get_order_number() ); ?></span>

Miten saan samaa numeroa hyödyntäen luotua viitenumeron ja tulostettua sen?

Mod. lisäsi kooditagit!

walkout_ [24.03.2019 10:59:12]

#

Googlettamalla voisi löytyä valmis php-funktio viitenumeron laskemiseen.

Itse ainakin jostain kerran sellaisen löysin ja jos muistan oikein niin Mureakuhasta löysin. Php:ssa siis viietumero on kokonaisluku mutta jos teen näin:

echo (integer) $viitenumero;

Niin tulee sellainen ongelma sitten vastaan, että (integer) PHP:ssa on lyhyempi kokonaisluku mitä viitenumero voi olla maksimissaan pituudeltaan. Ekä ole varma onko oikein koodata allaolvevasti:

echo (string) $viitenumero;

Tässä kuitenkin yksi viitenumrolaskin-funktio Githubissa:
https://github.com/ninjami/viitenumerolaskuri/blob/master/viitenumero.php

Metabolix [24.03.2019 15:52:35]

#

Ohjelmointiputkastakin löytyy useampi epämääräinen viitenumerolaskuri PHP:llä ja yksi parempi Pythonilla – ja nyt myös upouudet PHP-koodit. Eli tämän jälkimmäisen vinkin koodia mukaillen:

<?php
function viitenumero($alku, $ryhmittely = true) {
	# Poistetaan muut kuin numerot.
	$alku = preg_replace("/[^0-9]*/s", "", $alku);

	# Tarkastusmerkin laskenta.
	$summa = 0;
	$l = strlen($alku);
	for ($i = 0; $i < $l; ++$i) {
		$summa += substr($alku, -1 - $i, 1) * [7, 3, 1][$i % 3];
	}
	$merkki = (10 - $summa % 10) % 10;
	$viite = $alku . $merkki;

	# Ryhmittely viiden numeron joukkoihin.
	if ($ryhmittely) {
		return strrev(trim(chunk_split(strrev($viite), 5, " ")));
	}
	return $viite;
}
$lasku = $this->order->get_order_number();
$viitenumero = viitenumero($lasku);
?>

<span>Viitenumerosi: <?= $viitenumero ?></span>

walkout_, Mureakuhaan ohjaaminen ei nykyään paljon auta, kun Mureakuha sulkeutui vuosia sitten. Esittämiesi tyypinmuunnosten ideaa en tajua. Ensimmäinen muunnos rikkoo pitkät viitenumerot (sekä sellaiset, jotka on välilyönnillä ryhmitelty viiden numeron sarjoiksi, kuten kuuluu). Jälkimmäinen muunnos on yksinkertaisesti turha, koska muuttuja sisältää jo tekstiä. Jos ideana olisi suojautua esimerkiksi XSS-hyökkäyksiltä, htmlspecialchars-funktio auttaisi. Jos kuitenkin viitenumero tulee omasta lähteestä ja on tunnetusti turvallinen, sen voi tulostaa ihan suoraan.

woocommerce2019 [24.03.2019 18:47:52]

#

Kiitos! Nämä auttoivat.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta