Gå til innhold

Samle post på alle PHP sps jeg har, rundt brukersystemet mitt


Anbefalte innlegg

<?php
//This is the directory where images will be saved
$target = "./images/";
$target .= basename($_FILES['photo']['name']); 

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
?>
<div id="innhold">
<?php
//Tells you if its all ok
echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
// Connects to your Database
mysql_connect("localhost", "root", "***") or die(mysql_error());
mysql_select_db("blogg") or die(mysql_error());

//Writes the information to the database
$photo=($_FILES['photo']['name']);
mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'") or die(mysql_error());

?>

 

Tror kansje jeg fant feilen, men har ikke fått testet selv, men du kan jo prøve koden over istedenfor den du postet i den siste posten din.

Lenke til kommentar
Videoannonse
Annonse
Legg til

 

echo "<pre>";
print_r($_REQUEST);

 

før sql spørringen..

 

Da vil det du jobber med, printes ut. Hvilken values forskjellige ting har.

 

 

Nå gjorde jeg som du sa Rematusen, men da fikk jeg opp dette:

Array
(
 [PHPSESSID] => f4ea461528ecf5e72b34c5f844afc888
)

 

:hmm:

 

Men hva returnerer spørringen din?

Prøv å bare skrive echo i steden for mysql_query..

 

Altså, bytt dette:

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'") or die(mysql_error());

 

Til:

echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'");

Lenke til kommentar

Sjark, den koden din fungerte i teorien, og den laster opp bilde, men igjen ikke informasjon til databasen.

 

Meldingen jeg får etter dette:

The file stygg.JPG has been uploaded, and your information has been added to the directory

 

Rematusen, det ser ut for meg som at den ikke klarer og fange opp brukernavnet til bruker. For nå prøvde jeg det du sa, og da får jeg dette:

Array
(
[PHPSESSID] => e8a7530a3ba2d03b06a69572a4e624a5
)
UPDATE brukere SET `photo` = 'stygg.JPG' WHERE `brukernavn` = ''
The file  has been uploaded, and your information has been added to the directory

Lenke til kommentar

URL'n = index.php?side=endrebruker

 

Så hvis jeg nå legger inn $_POST['brukernavn'] istedet, så må jeg vel også legge inn en input i formen da?

 

Gammel form:

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> 
Bilde: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Ny form?

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> 
Ditt brukernavn: <input type="tekst" name="brukernavn"><br> 
Bilde: <input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

Lenke til kommentar

Nå prøvet jeg ut hva du sa Sjark, men det fungerte ikke.. Den legger ennå ikke inn i databasen.

 

Formen er nå:

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> 
Brukernavn:<br> <input type="text" name="brukernavn"><br> 
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Add.php er nå:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Og meldingen etter UPDATE'N er:

Array
(
[brukernavn] => admin
[PHPSESSID] => 613fcab01a30e17721c901befbd6626c
)
UPDATE brukere SET `photo` = 'opel.PNG' WHERE `brukernavn` = 'admin'
The file  has been uploaded, and your information has been added to the directory

 

edit: redigert vekk passord. var samme som til brukeren :p

Endret av djwawa
Lenke til kommentar

Nå er URL'en slik når jeg er i formen:

index.php?side=endrebruker&brukernavn=julius

 

Og formen ser slik ut:

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST">  
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Som dere sikkert ser, så er ikke URL'en til add.php slik: index.php?side=add&brukernavn=*julius* Men den er bare /profilbilder/add.php

Kan dette ha noe å si? Er det her feilen ligger? For hvis jeg lager formen med en "brukernavn" input, så vil jo "julius", kunne skrive "admin" og bytte bildet hans.. Eller er jeg helt på jordet nå?

 

Og add filen ser slik ut:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Prøvd denne også:

echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

 

Men skal jeg nå bytte til:

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET/POST['brukernavn']."'");

???

 

Takker iallefall for masse god hjelp!

Endret av djwawa
Lenke til kommentar

Nå ser formen slik ut:

262819.jpeg

<form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST">  
Brukernavn: <br><input type="text" name="brukernavn"><br> 
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" value="Add"> 
</form>

 

Da taster man inn brukernavnet sitt i den øverste, og finner filen i den nederste.

Og da fungerer det.

 

Add.php ser nå slik ut:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Men jeg tenkte på en ting. Hvis jeg MÅ bruke det sånn, at man MÅ taste inn brukernavnet sitt, så kan jeg jo prøve med at de må taste passord også? Eller lage ett hidden felt med _GET[brukernavn], fordi jeg har jo index.php?side=endrebruker&brukernavn=julius. Og da henter vel ut "julius" og legger det i det skjult feltet, og senere legger bildet på plass?

 

Men måtte bare prøve å teste om det fungerte og skrive ?side=endrebruker&brukernavn=** altså at julius kan skrive admin istedenfor julius, og da endrer jo han brukeren til admin.

 

Off, dette ble mye det :p

Lenke til kommentar

Nå vet jeg ikke hvordan innlogginen din fungerer osv, men hvis du feks lagrer brukernavnet i en SESSION når personen logger inn, kan du bruke det, da blir det feks $_SESSION['brukernavn'] i steden for $_POST['brukernavn'], er vel ca de samme som Jonas sa.

 

Du kan også endre mysql_queryen til

$query = "UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'";
if(mysql_query($query)) {
echo "Queryen fungerte!";
}
else {
echo mysql_error();
}

Da vil du få opp en feilmelding hvis det er noe galt me selve mysql oppdateringen, og hva som er galt.

Lenke til kommentar

Sjark, prøvde å endre mysql_queryen til det du sa og da fikk jeg beskjed om at Queryen fungerte!

 

Add.php ser nå slik ut:

<?php

//This is the directory where images will be saved 
$target = "./images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "***") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

//Writes the information to the database 
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_SESSION['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<div id="innhold">
<?php
//Tells you if its all ok 
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?>

 

Men ennå så legger den ikke inn informasjonen i databasen. Slenger også med config filen, som flere filer henter informajson fra:

<?php
session_start();
ob_start();

$host = "localhost"; // Vanligvis 'localhost'
$brukernavn = "root"; // hva du logger inn med i database
$passord = "***"; // Hva du har som passord når du logger inn
$database = "blogg"; // Navnet på databasen

$con = mysql_connect("$host", "$brukernavn", "$passord");
$con = mysql_select_db("$database");


if($_SESSION[id]) {
$l = mysql_query("SELECT * From `brukere` WHERE `id`='$_SESSION[id]'");
$l = mysql_fetch_array($l);
}
?>

 

 

Slenger også ved login.php filen:

<?php
if(!$_SESSION[id]) {
if(!$_GET[brukernavn]) {
$check = mysql_query("SELECT * FROM `brukere`");
$check2 = mysql_num_rows($check);

if(isset($_POST[logginn])) {

$brukernavn = $_POST[email];
				  $passord = sha1($_POST[passord]);

				  $select = mysql_query("SELECT * FROM `brukere` WHERE `email`='$brukernavn'");
				  $select = mysql_fetch_array($select);

				  if($passord == $select[passord]) {
				  echo ("Riktig, Du er nå logget inn");				
				  $_SESSION[id] = $select[id];
				  header("Location: index.php");
				  }
				  else
				  {
				  echo ("Feil e-post adresse og/eller passord!");
				  }

}
else
{
?>
<h1>
 <form method="POST" action="">
		E-post:<br>
		<input type="text" name="email">
		<br>
		Passord:<br>
		<input type="password" name="passord">
		<br>
		<input type="submit" name="logginn" value="Logg Inn" id="logginn">
		<br>
		<a href="?side=registrer">Registrer</a> - <a href="?side=glemtpassord">Glemt Passord?</a>
  </form>
  </h1>
<?php
}
}
}
else
{

if($_POST[logut]) {
session_destroy();
echo ("Du er logget ut!<br>Velkommen tilbake!<p><a href='?side=hoved'>Tilbake</a>");
}
else
{
echo("
Brukernavn: <b>$l[brukernavn] </b><br>
<a href='?side=bruker&brukernavn=$l[brukernavn]'>Se din profil</a><p>
<a href='?side=endrebruker&brukernavn=$l[brukernavn]'>Endre profil!</a><br>
<a href=\"?side=bruker\">Se brukere</a><br>
<form method=\"POST\" action=\"\"><input type=\"submit\" name=\"logut\" value=\"Logg ut\"></form>
");
}
}
?>

Lenke til kommentar

Prøv denne:

<?php

//This is the directory where images will be saved
$target = "./images/";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$photo=($_FILES['photo']['name']);

// Connects to your Database
mysql_connect("localhost", "root", "***") or die(mysql_error());
mysql_select_db("blogg") or die(mysql_error());

//Writes the information to the database
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET photo = '$photo' WHERE `id` = '".$_SESSION['id']."'");

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
?>
<div id="innhold">
<?php
//Tells you if its all ok
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

 

Tror den skal fungere ;-)

Endret av Sjark
Lenke til kommentar

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'");

 

ang denne så har jeg opplevt til tider at den ikke liker POST i SQLen. prøv å putt den i en variabel først og deretter i UPDATE.

 

eks:

 

$_brukernavn = $_POST['brukernavn'];

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '$_brukernavn'");

Lenke til kommentar

Wabby: Det gir jo egentlig ingen mening, for jeg skal jo ikke bruke $_POST, men $_SESSION, fordi login.php lager en session, men jeg forstår ikke hvordan jeg kan få den add.php til å hente den session id'n som ble laget når brukeren logget på..

 

Det er vel det jeg må gjøre, tror jeg?! :p

 

Takk til alle som hjelper til!

Lenke til kommentar

Nå har jeg endelig fått det til :) Med MYE om og men og hjelp fra mange! Jeg la iallefall inn hele upload/add.php i formen min, fordi den er includet i endrebruker siden min, og adressen der er: index.php?side=endrebruker&bruker=BRUKERNAVN. Så brukte jeg $_GET for å få brukernavnet, og da klarte den det!

 

Her er koden, hvis noen vil ha:)

<?php

//This is the directory where images will be saved 
$target = "./inc/images/"; 
$target = $target . basename( $_FILES['photo']['name']); 

//This gets all the other information from the form 
$photo=($_FILES['photo']['name']); 

// Connects to your Database 
mysql_connect("localhost", "root", "**") or die(mysql_error()); 
mysql_select_db("blogg") or die(mysql_error()); 

if($_POST[endreprofilbilde]) {
$pb = ($_POST[photo]);
$q = mysql_query("UPDATE `brukere` SET `photo`='$photo' WHERE `id`='$_SESSION[id]'");
//Writes the information to the database 

mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'");

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 
?>
<?php
//Tells you if its all ok 
echo "Profilbildet er blitt endret!<br>Ditt nye bilde:<p>"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
}
?>
<?php
include("./inc/view.php");
?>
<form enctype="multipart/form-data" action="" method="POST">  
Bilde: <br><input type="file" name="photo"><br> 
<input type="submit" name="endreprofilbilde" value="Bytt profilbilde"> 
</form>

Lenke til kommentar
Prøv denne:
Klikk for å se/fjerne innholdet nedenfor
<?php

//This is the directory where images will be saved
$target = "./images/";
$target = $target . basename( $_FILES['photo']['name']);

//This gets all the other information from the form
$photo=($_FILES['photo']['name']);

// Connects to your Database
mysql_connect("localhost", "root", "***") or die(mysql_error());
mysql_select_db("blogg") or die(mysql_error());

//Writes the information to the database
echo "<pre>";
print_r($_REQUEST);
mysql_query("UPDATE brukere SET photo = '$photo' WHERE `id` = '".$_SESSION['id']."'");

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{
?>
<div id="innhold">
<?php
//Tells you if its all ok
echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

 

Tror den skal fungere ;-)

 

Den fungerer! - Du har bare glemt session_start(); i toppen!

 

Prøv det djwawa, sett session_start(); i toppen av scriptet som ligger i spoiler taggen...

 

EDIT: Pluss at du har seriøse sikkerhets feil med det scriptet du fikk til og fungere, burde helst ikke bruke $_GET i en query, da en bruker kan lett endre selve koden, og hvis du må bruke det, så burde du strippe $_GET variebelen for html tagger, og all slags slashes, osv...

Endret av Famen
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...