Heim  >  Artikel  >  Backend-Entwicklung  >  Die Idee und Implementierung der PHP-Generierung von SessionID und Bildverifizierungscode

Die Idee und Implementierung der PHP-Generierung von SessionID und Bildverifizierungscode

高洛峰
高洛峰Original
2016-12-02 10:22:111577Durchsuche

Für die Backend-Anmeldung ist ein Bestätigungscode erforderlich, und für die Benutzerverfolgung im Frontend ist eine Sitzungs-ID erforderlich. Natürlich verfügt das Standard-PHP nach dem Öffnen der Sitzung über eine Sitzungs-ID, aber ich benötige meine eigene, in der sie gespeichert werden kann Dann habe ich es ausprobiert und die folgende Funktion erstellt.

/****** Sitzungs-ID generieren ******/
Die Grundidee besteht darin, die aktuelle Mikrosekundenzeit zu ermitteln, dann eine Zufallszahl zu generieren, die Zufallszahl zur aktuellen Zeit zu addieren und zu verschlüsseln und schließlich abzufangen die erforderliche Länge
/*
Funktionsname: create_sess_id()
Funktionsfunktion: Generieren einer zufälligen Sitzungs-ID
Parameter: $len: Die Länge der Sitzungszeichenfolge ist erforderlich, der Standardwert beträgt 32 Ziffern , nicht weniger als 16 Ziffern
Rückgabewert: Sitzungs-ID zurückgeben
Function heiyeluren
*/
function create_sess_id($len=32)
{
// Überprüfen Sie, ob das übermittelte Ergebnis vorliegt Länge zulässig?
if( !is_numeric($len) || ($len>32) || ($len<16)) { return; }
// Die Mikrosekunden der aktuellen Zeit abrufen
list ($u, $s) = explosion('', microtime());
$time = (float)$u (float)$s;
// Eine Zufallszahl generieren
$rand_num = rand(100000, 999999);
$rand_num = rand($rand_num, $time);
mt_srand($rand_num);
$rand_num = mt_rand();
// Sitzungs-ID generieren
$sess_id = md5( md5($time). md5($rand_num) );
//Intercept the SessionID der angegebenen erforderlichen Länge
$sess_id = substr($sess_id, 0, $len);
return $sess_id;
}


/****** Bestätigungscode generieren ******/
Idee: Diese Idee ist relativ einfach, da unser Verifizierungscode unter Berücksichtigung von Einzigartigkeit und Zufälligkeit Session ist ID Fangen Sie einfach eine Zeichenfolge darin ab, da unsere SessionID vollständig als eindeutig gilt.

/*
Funktionsname: create_check_code()
Funktionsfunktion: Einen zufälligen Prüfcode generieren
Parameter: $len: Die Länge des erforderlichen Prüfcodes, bitte nicht länger als 16 Ziffern, der Standardwert ist 4 Ziffern
Rückgabewert: Gibt den Prüfcode der angegebenen Länge zurück
Funktion heiyeluren
*/
Funktion create_check_code($len=4)
{
if ( !is_numeric($len) || ($len>6) || ($len<1)) { return; }

$check_code = substr(create_sess_id(), 16, $len ); 🎜 >return strtoupper($check_code);
}


/****** Bild der Generierung des Bestätigungscodes ******/

Das ist ein relativ einfacher PHP-Bildprogrammierungskram, ich habe daraus Bilder gemacht und Einfachheit.

/*
Funktionsname: create_check_image()
Funktionsfunktion: Prüfcodebild generieren
Parameter: $check_code: Prüfcodezeichenfolge, wird im Allgemeinen von der Funktion „create_check_code()“ verwendet, um die zu erhalten
Rückgabewert: das Bild zurückgeben
Funktion heiyeluren
*/
Funktion create_check_image( $check_code )
{
// Ein Bild generieren
$im = imagecreate( 65, 22);
$black = ImageColorAllocate($im, 0,0,0); // Hintergrundfarbe
$white = ImageColorAllocate($im, 255,255,255); // Vordergrundfarbe
$gray = ImageColorAllocate ($im, 200,200,200);
imagefill($im,68,30,$gray);

// Zeichne den vierstelligen ganzzahligen Bestätigungscode in das Bild
imagestring($im, 5, 8, 3, $check_code, $white);
//Interferenzpixel hinzufügen
for($i=0;$i<200;$i )
{
$randcolor = ImageColorallocate ($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()p , rand()0 , $randcolor> / / Ausgabebild
Header("Content-type: image/PNG");
ImagePNG($im);
ImageDestroy($im); Es ist zu beachten, dass beim Verweisen auf die Funktion create_check_image() diese in einer separaten Datei vorliegen muss, da das Ausgabeformat bei der Ausgabe des Dateiheaders ein Bildformat ist und das Bild nicht mit anderen Inhalten gemischt angezeigt wird. Darüber hinaus können Sie die Bildgenerierungsfunktion ändern. Wenn Sie beispielsweise die Farbe ändern möchten, ändern Sie die Generierungspositionen der Vordergrundfarbe und der Hintergrundfarbe. Gleichzeitig sind auch die Farben unterschiedlich Sie müssen die Farbe des Prüfcodes ändern, da sonst der Hintergrund und der Prüfcode schwarz sind und nicht angezeigt werden. Bitte geben Sie beim Nachdruck die Quelle an: Die Idee und Implementierung der PHP-Generierung von SessionID und Bildverifizierungscode

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn