Avatar billede frudi92 Nybegynder
18. februar 2007 - 15:49 Der er 10 kommentarer og
1 løsning

php strstr hjælp

Har siddet og programmeret denne kode som skulle være et opret bruger med et par funktioner som i kan se hvis i ogås kan php. men str str er lidt nyt men har forsøgt men der er fejl.

<?php

$host = "";
$user = "";
$pass = "";
$db = "";
$connection = mysql_connect($host,$user,$pass);
mysql_select_db($db);

if (!isset($_POST[opret])) {
?>
<body>

<form action="" method="post">
Brugernavn: <input type="text" name="brugernavn"><br>
Password: <input type="password" name="kodeord"><br>
Password igen: <input type="password" name="kodeord2"><br>
Email: <input type="text" name="email"><br>
Navn: <input type="text" name="navn"><br>
Alder: <input type="text" name="alder"><br>
<input type="submit" name="opret" value="Opret">
</form>
<?php
$kodeord = $_POST[kodeord];
$email = $_POST[email];
$brugernavn = $_POST[brugernavn];
$email = $_POST[email];
$navn = $_POST[navn];
$alder = $_POST[alder];

} else {
$result = mysql_query("SELECT * FROM login WHERE username LIKE $brugernavn") or die(mysql_error());
$antal = mysql_num_rows($result);
if ( strstr("$email", "@") ) {
} else {
echo "Der skal være @ i";
}
if ( strstr("$brugernavn", "a-zA-z0-9") ) {
} else {
echo "Dit brugernavn på kun indholde a-z og 0-9 ";
}
if ( strstr("$alder", "0-9") ) {
} else {
echo "Din alder på kun indholde fra 0-9 ";
}
if ( strstr("$navn", "a-zA-z") ) {
} else {
echo "Dit navn på kun indhold fra A-z";
}
if ($password1 != $password2) {

  echo "kodeord er ikke ens";
} elseif($antal > 0){
  echo "Brugernavnet er allerede optaget";
} else {
mysql_query("INSERT INTO login SET brugernavn = ‘$brugernavn’, email = ‘$email’ navn = ‘$navn’ password = ‘$password1’ alder = ‘$alder’") or die("Du kunne ikke registreres");
}
}
?>

DUMP

CREATE TABLE `login` (
  `id` int(5) unsigned NOT NULL auto_increment,
  `brugernavn` varchar(30) NOT NULL default '',
  `kodeord` varchar(32) NOT NULL default '',
  `email` varchar(100) NOT NULL,
  `online` varchar(10) NOT NULL default '',
  `aktiv` varchar(2) NOT NULL default '',
  `alder` varchar(2) NOT NULL,
  `navn` varchar(2) NOT NULL,
  PRIMARY KEY  (`id`)
)

se mysql fejlen her  http://hage-lund.dk/opret.php
Avatar billede frudi92 Nybegynder
18. februar 2007 - 15:50 #1
altså tryk på opret
Avatar billede windcape Praktikant
18. februar 2007 - 15:54 #2
du skal bruge ' eller " som quotes, ikke `´ , `` er til at escape columnames/table names med, og ´ er ikke til noget som helst.
Avatar billede windcape Praktikant
18. februar 2007 - 15:54 #3
derudover mangler du også at bruge % % tegn ved dit LIKE statement.
Avatar billede danishmale Nybegynder
18. februar 2007 - 15:54 #4
her mangler ' omkring $brugernavn: $result = mysql_query("SELECT * FROM login WHERE username LIKE $brugernavn") or die(mysql_error());
Avatar billede windcape Praktikant
18. februar 2007 - 15:54 #5
og man bruger ikke SET i et INSERT statement.
Avatar billede windcape Praktikant
18. februar 2007 - 15:56 #6
Faktisk er alt din SQL hul i hovedet. Du har bestemt brug for at læse en grundlæggende tutorial.

Vil anbefale http://www.w3schools.com/sql/default.asp
Avatar billede windcape Praktikant
18. februar 2007 - 15:58 #7
Og hvis vi så lige skal rante din PHP:

if ( strstr("$email", "@") ) {

hvorfor bruger du " " uden omkring en variabel ? Det giver INGEN MENING, og du ved ikke engang selv hvorfor gør du?

Derudover forsøger du at bruge strstr med regulare expression argumenter, hvilket igen er forkert.

Du bør kigge nærmere på www.php.net/preg_match og www.php.net/filter_var
Avatar billede windcape Praktikant
18. februar 2007 - 15:59 #8
Og du skal bruge quotes ( " eller ' ) når du bruger string keys i et array

if (!isset($_POST[opret])) {

skal altså være

if (!isset($_POST['opret'])) {

da php med en ordenlig opsætning ellers ville kaste en E_NOTICE.
Avatar billede windcape Praktikant
18. februar 2007 - 16:00 #9
og du definere aldrig $password1 og $password2.

Undskyld mig, men hvad har du tænkt på med denne kode? Der er jo knap nok noget som helst der bare er tæt på at være korrekt.
Avatar billede frudi92 Nybegynder
18. februar 2007 - 16:10 #10
Kan du prøve at ændre på koden som du mener så jeg kan lære hvad der er fejlen og kigge på det
Avatar billede frudi92 Nybegynder
22. februar 2007 - 09:10 #11
ttt
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