Arkiv

Arkiv för ‘Web’ Kategori

form method get eller post?

juli 26th, 2010 rejser Inga kommentarer

Om du har gjort ett formulär i html någon gång så har du säkerligen sett raden

<form method=”post” …>

Det var länge i början som jag bara skrev så och accepterade att man helt enkelt skrev så när man hade med formulär att göra. Speciellt method=”post”. Kom på idag under ett samtal med en kompis som liksom jag, gör lite för skojs skull ibland, fast lite mer sällan, att det inte är självklart. Och absolut inte självklart när man ska använda vad och varför.

Kort och gott finns det 2 alternativ när det gäller method i en form, Post och Get. Men vad är skillnaden? Vad händer när man klickar på submit-knappen på dom?

Vi har ett formulär som är väldigt enkelt.

<form method=”post” action=”dennafil.php”>
<p><label>Förnamn: </label><input type=”text” name=”fnamn” /></p>
<p><labe>Efternamn: </label><input type=”text” name=”enamn” /></p>
<p><input type=”submit” value"=”skicka” />
</form>

2 fält, förnamn och efternamn, och en skicka knapp. Jättenkelt.
Vad som sker när man klickar på skicka, lite förenklat, är att man skapar en publik post-buffert som man hanterar som en array. Därför ska vi kolla också hur dessa arrayer ser ut.
Här nedan visar jag hela min dennafil.php

<!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>Test-fil</title>
</head>

<body>
<form method="get" action="dennafil.php">
<p><label>Förnamn: </label><input type="text" name="fnamn" /></p>
<p><labe>Efternamn: </label><input type="text" name="enamn" /></p>
<p><input type="submit" value"="skicka" />
<p>
$_POST:<br>
<?php print_r ($_POST); ?>
</p>
<p>
$_GET:<br>
<?php print_r ($_GET); ?>
</p>
</form>
</body>
</html>

Som ni ser har jag 2 olika print_r. Print_r står för print array. Så den skriver ut hela arrayen.
Passande här har jag en array som heter $_POST och en som heter $_GET.
Hmmm… Jag kör nu min fil 2 gånger. 1 gång med get i method och en med post så vi kan se vad som skiljer.

get1 post

Men va fasiken, ser ju likadant ut?
Kör jag Post och echo $_POST[‘fnamn’] så får jag Olle, och om jag kör $_GET[‘fnamn’] tillsammans med method Get får jag Olle…

Det finns faktiskt en markant skillnad. Efter att jag klickat Skicka fråga i get-varianten så händer något i adress-fältet.
get2

Våra fältnamn och inmatningar hamnade där uppe.
Faktum är att $_GET hämtar alltid parametrar från adress-fältet. Oavsett om dom kommer från ett formulär eller inte. Första parametern kommer efter ? och sedan avgränsar man parametrarna med &.
Men nu är det inte parametermatning till php som är frågan. Men vi har lite föklaring vad skillnaderna är. Den ena skapar en osynlig post-buffert som är svår att skapa utan formulär. Den andra gör en “synlig” buffert kan man säga.

Är du helt klar på allt nu? Kan jag sluta skriva?

Struntar jag i, fortsätter ändå.

När ska man då använda vilken?

Vi tar två övertydliga exempel.
Vi börjar med en inloggning, tänk om man kör den med Get, kan man få följande i adress-fältet.
get3 
Kanske inte är riktigt bra om vi ska vara ärliga. Där är nog den hederliga gamla POST mycket bättre.

Typ-exempel för GET måste nog ändå vara en sökning.
Man har ett fält där man matar in sök-ord. Sedan klickar man på knappen och länken blir typ

get5

Sedan kanske man har länkar för att kunna sortera resultaten osv på olika saker. Man kanske ska kunna sortera på namn, datum osv. Då kan man helt enkelt lägga på länkar där man stoppar in några extra get-parametrar genom kod.  Som här nedan där vi söker på “Hej Hopp”, och lagt till $_GET[orderby] som säger date (kanske är ett databas-fältnamn), och sedan $_GET[sortorder] där vi här nedan har desc för descending.
get4

Detta skulle göra det väldigt enkelt att bygga en fråga till databasen, samt göra det tydligt vad dom söker på t.ex.

Så, nu är det bara att sätta igång och testa för glatta livet!

Categories: PHP, Web Taggar:

PHP array sortering och hantering

juni 9th, 2010 rejser Inga kommentarer

Jag stod häromdagen inför ett problem, och problem måste ju lösas. Jag hade en tabell i en mysql data-bas som såg ut enligt följande ungefär.

Startnr
(d_Startnr)
Namn
(d_Namn)
Klass
(d_klass)
Klubb
(d_klubb)
Res.1 (r_t1) Res.2
(r_t2)
Res.3 Res.4 Res.5 Res.6
26 Oscar Junior   34 54 23 25 54 50  

Helt enkelt en resultat-tabell från en serie tävlingar. Nu är det så att om det var 6 tävlingar så ska man bara räkna sina 4 bästa resultat, men för att spetsa till det lite så har man genomfört 5 tävlingar är det 3 resultat som räknas. Har man genomfört 4 eller mindre är det 2 som räknas.  Genomförd tävling är en tävling med poäng

Hade jag byggt tabellen annorlunda hade det ju varit en “piece of cake”. Men justeringar när folk mailar om att dom fått 1 poäng för lite på deltävling XX hade blivit lite stökigare. Smidigt att ha allt samlat på en rad tänkte jag.
t.ex.

Startnr Namn Tävling Poäng
26 Oscar 2 54

Och lagt en rad för varje tävling i tabellen. Då hade jag ju först gjort en query mot tabellen som är gruperad på startnr, sedan hade jag i den gjort en query som whileade igenom och sedan tog limit 4, nej vänta nu.  det går ju inte. Blir ju fel om dom kört 0. Man hade kunnat ställa frågan till databasen med count(startnr) where poäng >0, och sedan tagit antal rader och subtraherat gentemot antal rader som returnerats som borde vara tävlingar…. Men det är ju inte intressant för såhär såg ju inte min tabell ut.

Ännu inget om array’s tänker du nu kanske. Lugn, det kommer.

Jag gjorde en do while-loop som snurrade på mitt register som var enligt det första exemplet. Under varje varv byggde jag upp en $resultArray där jag stoppade in alla poängerna, tävlings-id (ex. res1) som nyckel och poäng kopplat. Samtidigt som jag gjorde det räknade jag samtliga poäng som var över 0. Gjorde sedan en arsort (Array Reverse Sorting) på den vilket gjorde att arrayen nu var i fallande skala i poäng-ordning. Så i nuläget om jag hade gjort en print_r på min $resultArray så hade det blivit ungefär ([res2] => 54, [res5] => 54, [res6] => 50……)

Perfekt. Nu har jag Antal tävlingar som har mer än 0. Jag har en sorterad lista.

Nu har jag en liten if-sats som skapar en ny parameter som heter $countedComp som helt enkelt beroende på antal genomförda tävlingar får ett värde hur många tävlingar som räknas.

Jag loopar igenom min array, med en räknare denna gång. När räknaren passerar $countedComp i värde så sätter jag alla värden till “-“ för att markera att efter där så är det dom tävlingar som räknas bort. Samtidigt passar jag på att addera ihop dom som räknas till en $totalPoints.

Nu har jag en array med borträknade poäng och en variabel med totalpoäng för en deltagare. Hur gör vi nu då?

Vad vi gör är att vi snabbt skapar 2 nya arrayer. En som heter resultorder som vi kopplar ihop startnummer med totalpoängen. sedan gör vi en arsort på denna.

Den andra arrayen fyller vi med startnummer och vår resultArray ($allresults).

Sedan kan vi  använda vår resultorder för att hämta ut vår andra array i rätt ordning.

Glasklart?

Då slänger vi in en brasklapp

<?php

$klass = “Junior”;

function countTavlingar($resultArray)
{
    $x = 0;
    if($resultArray["t1"] > 0)
        $x++;
    if($resultArray["t2"] > 0)
        $x++;
    if($resultArray["t3"] > 0)
        $x++;
    if($resultArray["t4"] > 0)
        $x++;
    if($resultArray["t5"] > 0)
        $x++;
    if($resultArray["t6"] > 0)
        $x++;
    if($resultArray["t7"] > 0)
        $x++;
    if($resultArray["t8"] > 0)
        $x++;
    if($resultArray["t9"] > 0)
        $x++;
    if($x == 9)
        return 7;
    else if($x == 8)
        return 6;
    else if($x == 7)
        return 5;
    else if($x == 6)
        return 4;
    else
        return 4;   
}

function adjustArray($resultArray,$antalT)
{
    $x = 0;
    $i = 0;
    arsort($resultArray);
    foreach($resultArray as $key => $val) {
        if($x<$antalHeat)
        {
            $nollArray[$i] = $key;
            $i++;   
        }
        $x++;   
    }
    foreach($nollArray as $key => $val) {
        $resultArray[$val] = "-";   
    }
    return $resultArray;
}

function TotalPoints($resultArray)
{
    foreach($resultArray as $key => $val) {
        if($val != "-")
        {
            $total = $total + $val;
        }
    }

    return $total;   
}

function printResult($klass)
{
    $x = 0;
    include ‘Connections/conn.php’;
    mysql_select_db($database_conn,$conn);
    $sql_tavlande = ""; //vår fråga mot databasen. bara för att rappla upp resultat
    $res_tavlande = mysql_query($sql_tavlande,$conn);
    $r_tavlande = mysql_fetch_assoc($res_tavlande);
    do{
        extract($r_tavlande);
        $resultArray = array("t1" => $r_t1,"t2" => $r_t2,"t3" => $r_t3,"t4" => $r_t4,"t5" => $r_t5,"t6" => $r_t6,"t7" => $r_t7,"t8" => $r_t8,"t9" => $r_t9);
        $antalT = countTavlingar($resultArray);       
        $resultArray = adjustArray($resultArray, $antalT);
        $total = TotalPoints($resultArray);
        $resultArray['tot'] = $total;
        $resultArray['d_startnr'] = $d_startnr;
        $resultArray['d_namn'] = $d_namn;
        $resultArray['d_klass'] = $d_klass;
        $resultArray['d_klubb'] = $d_klubb;
        $totalArray[$d_startnr] = $total;
        $allResults[$d_startnr] = $resultArray;

    }while($r_tavlande = mysql_fetch_array($res_tavlande));
    //array sort reverse arsort
    arsort($totalArray);
    $i = 0;
    foreach($totalArray as $key => $val)
    {
        $boll = extract($allResults[$key]);
        $x++;
        $i++;
        if($i == 2)
        {
            echo "<tr>";
            $i = 0;
        }
        else
            echo "<tr bgcolor=’#B2DFEE’>";
        if($x == 1)
            echo "<td align=’center’><span style=’color:gold;’>$x</style></td>";
        else if($x == 2)
            echo "<td align=’center’><span style=’color:silver;’>$x</style></td>";       
        else if($x == 3)       
            echo "<td align=’center’><span style=’color:#CD7F32;’>$x</style></td>";       
        else
            echo "<td align=’center’>$x</td>";
        echo "<td>$d_startnr</td>";
        echo "<td>$d_namn</td>";
        echo "<td>$d_klubb</td>";
        echo "<td>$d_klass</td>";
        echo "<td align=’center’>$t1</td>";
        echo "<td align=’center’>$t2</td>";
        echo "<td align=’center’>$t3</td>";
        echo "<td align=’center’>$t4</td>";
        echo "<td align=’center’>$t5</td>";
        echo "<td align=’center’>$t6</td>";
        echo "<td align=’center’>$t7</td>";
        echo "<td align=’center’>$t8</td>";
        echo "<td align=’center’>$t9</td>";
        echo "<td align=’center’>$tot</td>";
        echo "</tr>";
    }
}
?>

<table>
<?php printResult(“Junior”); ?>
</table>

Vad tror ni om den rotvälskan?

Reserverar mig för något småfel i koden då det är en snabb-strippad variant av vad jag använde på riktigt.

Den riktiga var lite mer omständig att varje tävling var uppdelad i 2 poänggivande moment. Man räknas som deltagande på tävlingen om man tagit poäng i 1 av 2 moment osv. Men rensade här lite för att förenkla.

Categories: Data, PHP, Web Taggar: ,

Skapa excel-fil från php

maj 25th, 2010 rejser Inga kommentarer

Det är inte jätteovanligt att man har data i databasen som någon t.ex. behöver få ut i en excel-fil.

Enklaste är ju att skapa en komma-separerad fil (csv). Så lyfter man in den i excel.

Jag har ju en del online-anmälningar till olika tävlingar på webben och klubbarna behöver på smidigt sätt få start-listor. Smidigt om man får dom för-formaterade i excel.

Nu är det så smidigt att excel efter millennium-skiftet läser vanliga table-strukturer när man skickar ut dom. Fungerar även att sedan vidare använda på alla olika sätt i excel.

Hur gör man då? Naturligtvis ska vi gå igenom detta.

Filen kommer att ge en liten varning när man öppnar den. Men ett litet pris för att behålla koden smidig och lättarbetad. Men duger ju inte i en företags-miljö med kunder.

Vi börjar med att skapa en fil i vår miljo. excel.php känns väl passande. Här kommer allt du behöver för att komma igång. Kör du den kommer webbläsaren läsa det som en fil som heter excel.xls och fråga om du vill spara eller öppna med excel/openoffice calc/spreedsheet eller vad du nu använder.

<?php
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control:  cache, must-revalidate");
header("Content-Disposition: attachment; filename=excel.xls");
header (‘Content-Length: ‘.filesize(‘excel.xls’));
header (‘Content-Transfer-Encoding: binary’);
header (‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’).’ GMT’);
header (‘Pragma: public’);

?>
<html>
<head>
<title>Excel 2010</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table border="0">
    <tr align="center" bgcolor="#FFFF00">
        <td colspan="4"><strong>Excel <?php echo date("Y"); ?></strong></td>
    </tr>
    <tr>
        <th>Förnamn</th>
        <th>Efternamn</th>
        <th>Företag</th>
        <th>Titel</th>
    </tr>
    <tr>
        <td>Olle</td>
        <td>Olsson</td>
        <td>Shady Trading Oy</td>
        <td>Konsult</td>
    </tr>
</table>
</body>
</html>

Hela hemligheten är i dom inledande header-raderna där man helt enkelt för webbläsaren deklarerar vad det är för fil som den försöker öppna så att den gör rätt. Här försöker den öppna excel.xls och inte excel.php.

På samma sätt som man gör när man t.ex. läser jpg-filer ur databas som jag avhandlat innan.

Man kan strunta i table-stilen och bara mata ut allting med \t efter som fält-bryt och \n som radbryt. Men varför inte sätta lite formatering på det om man kan?

Categories: PHP, Web Taggar:

På gång

maj 18th, 2010 rejser Inga kommentarer

Har varit lite tyst här på bloggen ett tag. Har helt enkelt haft fullt upp.

Men vad är då på gång nu?

Det som mest är i pipen är nog en nybyggd version av mitt ”cms”-system.
Istället för att justera tidigare version har jag slopat den tidigare och börjat om från grunden för att ha en lite bättre struktur. Detta innebär dock inte att jag inte var nöjd med den tidigare. Utan att förbereda mer för framtiden.

Vad fyller då mitt cms för syfte i en marknad med 3000 olika varianter på cms-system. Mitt cms är en stomme med tanken att man ska kunna bygga sin sida helt hur man vill.

Man kan bygga en layout och sedan helt dynamiskt lägga upp sidor som automatiskt justerar menyer osv. Eller så kan man lägga upp statiska sidor där man väljer vilka områden som ska vara redigerbara.

Detta kan vara smidigt t.ex. när man gör sidor för små företag som kanske är inne och vill ändra på något var 3:e månad, idrottsklubbar som inte ligger på  idrottenonline, eller varför inte den personliga hemsidan som är rolig och bygga och sedan kan man enkelt uppdatera via webbläsaren.

CMS:et är aldrig tänkt att det ska ha en stor back-office-del där man kan göra inställningar osv osv. Utan man är på sidan hela tiden.
Till den nya versionen kommer jag dock bryta den tanken lite lite lite gran. Dels är det mail-liste-funktionen för nyhetsbrev, samt sid-hanteringen om man kör dynamiska sidor.

Kommer nog komma lite info om det på bloggen också misstänker jag under tiden.

Categories: Utveckling, Web Taggar:

Installera subversion för xampp

maj 6th, 2010 rejser Inga kommentarer

Jag har ju nämnt versionshantering och subversion flera gånger dom senaste inläggen, och att installera subversion är en sådan där grej som man gör en gång i halvåret som man varje gång glömmer av lite.

Hittade dock en skitsmidig guide som hamnade direkt i favoriter som jag tänkte dela med mig av.

http://www.doitscared.com/?p=97

Riktigt bra, sedan är det bara att köra på, netbeans, dw eller vad ditt gift nu är.

Categories: Utveckling, Web Taggar:

Netbeans historik på fil

maj 5th, 2010 rejser Inga kommentarer

Finns det inga bra allternativ till “riktig” versions-hantering?

Netbeans har faktiskt en fiffig grej. “Local history”

Jag tänkte bara lägga in några skärmdumpar så får dom prata för sig själv.

image

image

image

Som sagt, ingen riktig versions-hantering, men du kan ju kolla lite bakåt. Nackdelen är att det blir en “version” varje gång man tycker ctrl+s. Istället för att man checkar in när man känner sig redo.

Categories: Mjukvara, Utveckling, Web Taggar:

Dreamweaver CS5 provkörs

maj 4th, 2010 rejser 1 kommentar

Nu kan man ladda hem demo-versionen av Dreamweaver CS5 på adobe’s hemsida, eller köpa för den delen. Jag kör ju netbeans till vardags men har haft någon tidigare version av dw, så vill veta, ska jag byta tillbaka?

För test-syfte så satte jag upp en ny vpc med XP, xampp, subversion och till slut dw cs5. En ganska normal utvecklingsmiljö för många glada amatörer.

Många är dom rabiata på forum som skriker med VERSALER och bara säger att “man klarar sig mycket bättre med notepad+ eller gimp, eller ännu hellre, kollegieblock” osv osv. Vad jag alltid innan hållt dreamweaver till försvar för när folk klagar är att många av dom inbyggda funktionerna är renare kodmässigt än många andras program, och hur mycket kontroll man än får på sidan så blir det tjatigt till slut att bygga tabell som visar data nr 682.
Du kan bygga egna mallar för hur en funktion ska funka. T.ex. en tabell som hämtar data från sql. Så man kan lägga upp ett eget funktions-bibliotek och ha det snabbt åtkomligt och man kan snabbt implementera objektet med en guide.

Det finns mängder med sidor som hanterar alla nyheter som finns i cs5, men det skiter jag i för jag vill veta vad som har hänt med det som är relevant för mig. Finns det något som motiverar att jag blir 6500:- fattigare än att använda netbeans?

Något som jag gillar med dw är site-hanteringen som är helt i en egen klass. Netbeans gör stora framsteg dock så ska inte säga för mycket. Oerhört smidigt att utifrån ett gräns-snitt hantera test-server, prod-server, subversion, synkning osv osv.

Site-hanteringen i cs5 känns ytterligare lite mer polerad. Även om man kunde defeniera en test-server och en publicerings-server innan också. Så är gräns-snittet ytterligare lite mer polerat.

image 

Något annat som jag skarpt gillar är att standard så när man kör split-läge, det vill säga ser både layout och kod, så delar den på vertikalen och inte horisontellt som innan. Plötsligt går det att använda split läget om man önskar.

image

Förra gången jag körde dw så fick jag av någon anledning inte ordning på subversion. Något som inte borde vara ett bekymmer. Nu hade jag igång subversion. knappade in http-adressen i site-inställning för versions-hanteringen och körde loss. Och det funkade på en gång!

image

image 

Något som dom skryter med i den nya versionen är hanteringen av css. Man kan testa i live-läget och inaktivera och justera. Eftersom dw använder ff-motorn om jag inte missminner mig så förstår jag inte riktigt vitsen med detta då man ändå måste ta hänsyn till alla webbläsare vid layout. Att surt hålla sig till w3c-standard håller ju inte alltid då 80% använder webbläsare som skiter i w3c-standarder. Därför är det svårmotiverat varför jag inte ska använda F12 knappen i ie eller web developer tools i ff där man har tillgång till allt som man har i ff web developer tools.
Gjorde antagligen också fel, för fick inget flyt i den inbyggda, plötsligt hoppade det till i kanten och jag såg något, sedan stod den still, sedan hoppade något till.

Många har föresten missat F12 i ie8. Här är en bild.
image

Något som dom skrutit med var kod-hjälp i php. Här är ju t.ex. netbeans väldigt långt fram.
Och vi kan väl säga att detta är något som är välkommet. Testade lite snabbt med mktime, en vanlig funktion jag använder stup i kvarten som jag alltid behöver lite hjälp med.

image

Sedan har vi ju även funktionerna för sajt-anpassad kodhjälp. Och håller man på att bygga moduler till joomla, wordpress osv så är det här ju väldigt välkommet. Men jag upptäckte också att man kan bygga sina egna strukturer och definitioner. Vilket kanske skulle underlätta att modul-basera sina projekt.

Det ska även finnas massa stöd för att använda ps och illustrator-filer direkt i dw, men sådant trams bryr jag mig inte om i dagsläget.

Vad sätter Oscar för slutsats på CS5 beroende på dom saker som jag känner berör mig lite mer såhär direkt efter release.

Klart positivt överraskad. Subversion satt som en smäck, kod-assistans för php, site-hanteringen ännu bättre. I princip allt jag har saknat satt där som en smäck. Så nu är det en net-beans med lite bättre sajt-hantering (men snart kommer netbeans 6.9).

Men!

Arbetar du med php, kanske bygger småsaker till joomla, arbetar gärna tillsammans med adobes övriga sortiment som illustrator och photoshop och har möjlighet att köpa en uppgradering så kör på det.

Om du inte använt dw hittills utan kanske kör med netbeans, notepad+,gimp eller eclipse, så ser jag kanske ingen direkt anledning till att lätta plånboken 6500:-

Nu är ju detta inte någon full produkt-specifikation utan rent för hur det är för mig. Och jag saknar ingenting direkt i dagsläget där jag är i min sandlåda i netbeans.

Vill du ladda ned test-versionen så kom ihåg att du får gå via adobes engelska sida då den svenska versionen inte är tillgänglig. Där kan man bara sätta upp sig på “meddela mig”.

Categories: Data, Mjukvara, Utveckling, Web Taggar:

Ett popup-problem

april 17th, 2010 rejser Inga kommentarer

Jag är inte direkt förtjust i popup-saker och javascript överhuvudtaget.

Men nu skulle det byggas ett administrations-gränssnitt för mail-historik som jag själv skulle använda. Vid skickandet av mailet sparar jag ned mailet’s innehåll i databas, sparar hur många mail som skickats, om det lyckats överhuvud-taget. Vilken användare som skickade mailet osv osv. Själva mailet är inte så intressant, men kan vara bra att kunna titta på dom också. Först tänkte jag bygga en sida som bara hämtar upp infon och visar den. Den kunde man sedan i princip bara köra en länk med target _blank och ett id för mailet för att öppna det i ett nytt fönster.

Men jag ville inte göra en fil till även om den bara skulle innehålla 5-6 rader.

Jag ville göra en java popup som jag matar från huvudfönstret.

<!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>
<?php
// vi skapar en sträng som kunde vara från en databas med loggade meddelanden
$mail = ”<html><body><img src=http://feministphilosophers.files.wordpress.com/2008/02/how_it_works.png alt=MX 2010 Logo Bild><p>
    Test;</p>
<p>
    Mvh. <br />
    Oscar</p>
</body></html>”;
// vi kan inte ha radbrytningar när vi skickar in det i java-funktionen
// så dom tar vi bort, man skulle kunna köra en str_replace med \r\n också
$mail = str_replace(”\n”,”",$mail);
?>
<html>
    <head>
        <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
        <title></title>
        <script type=”text/javascript”>
<!–
// Vi skapar våran funktion
function myPopup(mail) {
win = window.open( ””, ”Puppy”,
”scrollbars=yes,toolbar=no,menubar=no,status=no, height = 500, width = 500, resizable = no” );
win.document.writeln(mail);
// \ är ett bryt-tecken, hade vi stoppat in ” utan \ så hade ju strängen avslutats
win.document.writeln(”<A href=\”javascript: self.close ()\”>Stäng fönstret</A>”);
}
//–>
</script>
    </head>
    <body>
        <a onclick=”myPopup(‘<?php echo $mail; ?>’);”>Visa mail</a>
    </body>
</html>

Inte något som är korrekt eller som jag skulle använda live, men för egna själviska syften så får det absolut jobbet gjort.

Categories: Web Taggar:

Slumpade lösenord med php

april 17th, 2010 rejser 1 kommentar

När det ska skapas användare för kunder t.ex. på jobbet så är det ofta jag som har hand om det. Och varje gång blir jag lite sur att jag måste googla något ställe för att skapa lösenord smidigt.

Så nu skapar jag mina egna där jag kan bestämma själv hur många som genereras, hur långa dom är och vilka tecken som kan ingå. Tänkte visa en rensad variant på hur jag gjorde..

<?php
$res = ”;
if(isset($_POST['leangth']))
{
    extract($_POST);
    $res = "";
    // kom ihåg att inte ha med bokstäver eller siffror som kan misstas.
    // bokstaven l eller siffran 1, bokstaven O siffran 0 osv.
    $chars = "/\-[]@$<>abcdefghijkmnopqrstuvwxyz23456789ABDCDEDFHJKLMNPQRSTUVXYZ";
    $y = 0;
    while($y < $antal){
        $x = 0;
        $pass = ” ;
        $y++;
        while ($x < $leangth) {
            // nu ska vi välja ut en bokstav ur vår långa sträng. Vi väljer ett slumpmässigt nummer och tar bokstaven på den platsen.
            // rand() väljer ett slumpmässigt tal. strlen returnerar en int med längden på strängen. i detta fall antal tecken i vår $chars sträng. sedan plockar vi ut tecknet/bokstaven på den platsen.
            $num = rand() % strlen($chars);
            $tmp = substr($chars, $num, 1);
            $pass = $pass.$tmp;

            $x++;
        }     
        $res .= "L&ouml;senord ".$y.": <strong>".$pass."</strong><br/>";
    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
     <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     </head>
    <body>
        <h1>Lösenords-generering</h1>
        <form method="POST" action="<?php echo $PHP_SELF; ?>">
            <label>Antal lösenord:</label><br/>
            <input type="text" maxlength="2" name="antal" size="2" value="1"/><br/>
            <label>Längd på lösenord:</label><br>
            <input type="text" maxlength="2" name="leangth" size="2" value="6"/><br/>
            <input type="submit" value="Skapa lösenord"
        </form>
        <?php echo $res; ?>
    </body>
</html>

Så nu är det bara att köra igång och skapa lösenord på löpande band.

Gör man den till en funktion kan man ju stoppa in den bakom i konto-skapande för mail-utskick med en bekräftelsekod t.ex.

Categories: PHP, Web Taggar:

Skicka html-mail med php

april 14th, 2010 rejser Inga kommentarer

Behövde skicka lite stiliga html-mail med php, och överallt hittade jag bara referenser till pear. Men så har jag ställen där jag behöver använda det på som inte har pear. Och förvisso kan man alltid lägga till, men tänkte det hade varit trevligt med något straight out of the box i php.

Efter mycket letande kom jag slutligen fram till något som jag kände mig ganska nöjd med.

Tricket är att men får ta med Content-type: text/html; Så nedan skickar vi ett exempel-mail.

<?php
   $to     = “till@email”;
    $from     = “från@email”;
    $subject = utf8_decode("Hell&ouml; World");
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: $from\r\n";
    $message = "<html><body>";
    $message .= “<h1>Hello World</h1>";
    $message .= "</body></html>";
// Nu har vi byggt vårat meddelande, då skickar vi det
    if(mail($to, $subject, $message, $headers))
    {
        echo  "Meddelande har skickats ";
    }
    else
        echo  "Nope, något gick fel";
}
?>

I vanlig ordning så enkelt som möjligt. Nu är det bara att klä på den.

Man kan t.ex. bygga upp en snygg mall. Ha ett formulär där du fyller i vad som ska stå för meddelande och använda för t.ex. kundutskick från hemsidan för små företag eller klubbar.

Då behöver man bara en databas med e-mail adresser så kör man. (då lägger man dom som bcc (blind carbon copy) så att inte alla ser allas adresser).

Categories: PHP, Web Taggar: