Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 10:39 Der er 11 kommentarer og
2 løsninger

Program til debugging af PHP

Hej eksperter,

jeg anvender et program der hedder PHP designer 2005. Da jeg er nylig startet med at skrive lidt PHP anvender jeg det.

Dog, når jeg prøver at debugge min scripts for fejl så står programmet af i en stor røgsky.

Derfor kunne jeg godt tænke mig at vide om der findes et godt program til at kode PHP i?


Helst et der kan highlighte eventuele fejl (godt til newbie)!



mvh
Mads
Avatar billede jakobdo Ekspert
27. oktober 2005 - 11:08 #1
God debug er at bruge
echo $value;
$value = minFunktion($value);
echo $value;
Så kan du altid teste, og kommer der fejl i linie 24, så kigger du på linie 24! :o)
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 11:21 #2
jeg prøver at debugge denne her:



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
<head>
<title> Tilmelding Ledelseslinien </title>
</head>
<style type="text/css">

body{
  font-family:verdana;
  background-color="grey";
}

</style>

<body>
<?
$error = array();
if(!preg_match("/^\\d{6}-\\d{4}$/", $_POST['cpr'])) {
  $error[] = "Du har fejl i cpr-nr.";
  }
 
if (!preg_match('/\\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\\.[A-Z0-9._%-]{2,4}\\b/', $_POST["email"])) {
  echo "Emailen er forkert";
} elseif("detter er en test" ) {
  echo "Fejl i cpr-nr";
} elseif (empty($_POST['navn'])) {
  echo "Navnet kan ikke være blankt!";
} else {
  mail( "test igen");
}



elseif(empty($_POST['efternavn'])) {
  $error[] = "Du har fejl i efternavn-feltet";
}
elseif(empty($_POST['navn'])) {
  $error[] = "Du har fejl i navn-feltet";
  }
elseif(empty($_POST['adresse'])) {
  $error[] = "Du har fejl i adresse feltet";
}
elseif(empty($_POST['postnr'])) {
  $error[] = "Du har fejl i postnr feltet";
}
elseif(empty($_POST['by'])) {
  $error[] = "Du har fejl i by feltet";
  }
if(count($error) > 0) {
  foreach($error as $v) {
    echo $v . "<br />";
  }
} else {
  //OK!
}


$besked .= "cpr: ".$_POST['cpr']."\n\n";
echo "cpr nr: ".$_POST['cpr']."<br />";

$besked .= "Efternavn: ".$_POST['efternavn']."\n\n";
echo "Efternavn: ".$_POST['efternavn']."<br />";

$besked .= "Navn: ".$_POST['navn']."\n\n ";
echo "Navn: ".$_POST['navn']."<br />";

$besked .= "Adresse: ".$_POST['adresse']."\n\n ";
echo "Adresse: ".$_POST['adresse']."<br />";

$besked .= "Postnr: ".$_POST['postnr']."\n\n ";
echo "postnr: ".$_POST['postnr']."<br />";


$besked .= "by: ".$_POST['by']."\n\n ";
echo "By: ".$_POST['by']."<br />";



$besked .= "Telefon privat: ".$_POST['tlfPrivat']."\n\n ";
echo "Telefon Privat: ".$_POST['tlfPrivat']."<br />";


$besked .= "Telefon Firma: ".$_POST['tlfFirma']."\n\n ";
echo "telefon Firma: ".$_POST['tlfFirma']."<br />";

$besked .= "E-mail: ".$_POST['email']."\n\n ";
echo "E-mail: ".$_POST['email']."<br />";

$besked .= "Firma betaler: ".$_POST['firmabetaler']."\n\n ";
echo "Frima betaler: ".$_POST['firmabetaler']."<br />";


$besked .= "CVR nr.: ".$_POST['cvrnr']."\n\n ";
echo "CVR nr.: ".$_POST['cvrnr']."<br />";


$besked .= "Adresse: ".$_POST['adressefirma']."\n\n ";
echo "Adresse: ".$_POST['adressefirma']."<br />";


$besked .= "Post nr.: ".$_POST['postnrfirma']."\n\n ";
echo "Post Nr.: ".$_POST['postnrfirma']."<br />";


$besked .= "By: ".$_POST['byfirma']."\n\n ";
echo "By: ".$_POST['byfirma']."<br />";

mail("madsns@gmail.com", "Tilmelding_Ledelse", $besked, "From: mail@domain.dk");
?>


</body>
</html>
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 11:21 #3
den giver en fejl i linie 35:


Parse error: parse error, unexpected T_ELSEIF in /var/www/www.netau.dk/www/tilmelding_ledelse.php on line 35


men jeg kan ikke se fejlen!
Avatar billede justask Nybegynder
27. oktober 2005 - 11:30 #4
Hej

Du glemmer at starte din "elseif" med en "if". Hvis du kigger på udtrykket ovenover linie 35 slutter den med en "else", så din "elseif(empty($_POST['efternavn']))" skal blot rettes til en "if(empty($_POST['efternavn']))".

Mht. debugging værktøjer har jeg prøvet en del efterhånden. De eneste seriøse udviklingsværktøjer til php jeg har fundet og som virker godt er Zend Studio og et plugin til MS Visual Studio (kan ikke lige huske hvad det hedder). Men de er begge kommercielle så man skal betale for dem.

./ask
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 11:37 #5
hej just ask det var fint den "virker nu"


Mht. til min email validering er den ikke forkert den validering, idet jeg indtaster en valid email (min egen) men når den sendes til PHP delen siger den "email er forkert".




Findes der ikke en smartere måde at validere en email på.?
Avatar billede net-base.dk Nybegynder
27. oktober 2005 - 11:48 #6
Hvis du søger et program som er godt at kode i som nystartet så er det klart Zend Studio... Det har Hilite på koden. samt includere du en fil med functionen f.eks. så kan den fortælle dig hvilke functioner du har til rådighed, samt den fortæller dig også hvilke parameter der er til de forskellige functioner... det er faktisk et godt stykke værktøj...

MEN det har den ulempe at det er kodet i java og bliver meget hurtigt tungt at arbejde med, og man føler computeren bliver langsommmere...
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 12:01 #7
Findes der ikke er gratis software til at kode PHP og debugge?
Avatar billede justask Nybegynder
27. oktober 2005 - 13:12 #8
Hej

Der findes et hav af måder til at validere emails på. En af dem er via "regular expressions", de kan være noget kryptiske, men her er en funktion der fungerer (med 99,99% af alle mails):

// return false if mail is NOT valid, else returning the mail
function checkMail($email)
{
    if ( eregi("^([a-zA-Z0-9_\.\-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([æøåäöü鯨ÅÄÖÜÉa-zA-Z0-9\^1-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", $email, $match ) )
        return $match[0];
    else
        return false;
}

Mht. gratisk debugging-software vil jeg meget gerne høre om det hvis du finder noget, men jeg kender ikke til noget jeg vil anbefale andre. Syntakshiglight findes i rigtig mange editorer (HTML-kit, phpEditor, Eclipse, AdobeGoLive...), bedre i nogle end i andre. På http://www.php-editors.com/ kan man vidst finde en del forskellige.
Avatar billede justask Nybegynder
27. oktober 2005 - 13:14 #9
hmm... udtrykket er vidst lige skåret lidt af!? Flg. tekst skal bruges i funktionen "eregi(...)" ovenfor:

"^
([a-zA-Z0-9_\.\-]+)
@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)
|(([æøåäöü鯨ÅÄÖÜÉa-zA-Z0-9\^1-]+\.)+))
([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)
$"
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 13:35 #10
det virker ikke!

Du kan selv prøve at udfylde formularen. Der er en fejl i din email validering.

Parse error: parse error, unexpected '\"' in /var/www/www.netau.dk/www/tilmelding_ledelse.php on line 26



Linie 26 er:


if ( eregi"^([a-zA-Z0-9_\.\-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([æøåäöü鯨ÅÄÖÜÉa-zA-Z0-9\^1-]+\.)+))([a-zA-Z]{2,4}|[0-9]1 3})(\]?)$" $email, $match ) )
        return $match[0];
    else
        return false;
}
Avatar billede justask Nybegynder
27. oktober 2005 - 13:43 #11
brug flg.:


// return false if mail is NOT valid, else returning the mail
function checkMail($email)
{
$reg = "^([a-zA-Z0-9_\.\-]+)@".
"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)".
"|(([æøåäöü鯨ÅÄÖÜÉa-zA-Z0-9\^1-]+\.)+))".
"([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

if ( eregi ( $reg, $email, $match ) )
  return $match[0];
else
  return false;
}
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 13:50 #12
he he nu validerer den alt også selvom mailen er forkert og ikke indeholder @

Men det er lige meget!

Jeg accepterer svar nu, du har hjulpet mig meget!
Avatar billede justask Nybegynder
27. oktober 2005 - 13:54 #13
ok - held og lykke...  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester